From 3f374cecad37fce5990e6328721d5ce751fecdde Mon Sep 17 00:00:00 2001 From: notmatthewbeshay <92357869+NotMachow@users.noreply.github.com> Date: Tue, 10 Mar 2026 07:25:29 +1100 Subject: [PATCH] Remove DWORD skin IDs from player customisation APIs --- Minecraft.Client/Player/LocalPlayer.cpp | 5 ++--- Minecraft.Client/Player/LocalPlayer.h | 5 +++-- .../Player/MultiPlayerLocalPlayer.cpp | 8 ++++---- .../Player/MultiPlayerLocalPlayer.h | 5 +++-- Minecraft.World/Player/Player.cpp | 20 +++++++++---------- Minecraft.World/Player/Player.h | 17 ++++++++-------- 6 files changed, 31 insertions(+), 29 deletions(-) diff --git a/Minecraft.Client/Player/LocalPlayer.cpp b/Minecraft.Client/Player/LocalPlayer.cpp index dee185522..7d0e68ddc 100644 --- a/Minecraft.Client/Player/LocalPlayer.cpp +++ b/Minecraft.Client/Player/LocalPlayer.cpp @@ -1139,12 +1139,12 @@ void LocalPlayer::onCrafted(std::shared_ptr item) } } -void LocalPlayer::setAndBroadcastCustomSkin(DWORD skinId) +void LocalPlayer::setAndBroadcastCustomSkin(std::uint32_t skinId) { setCustomSkin(skinId); } -void LocalPlayer::setAndBroadcastCustomCape(DWORD capeId) +void LocalPlayer::setAndBroadcastCustomCape(std::uint32_t capeId) { setCustomCape(capeId); } @@ -1613,4 +1613,3 @@ void LocalPlayer::SetPlayerAdditionalModelParts(std::vectorpAdditio { m_pAdditionalModelParts=pAdditionalModelParts; } - diff --git a/Minecraft.Client/Player/LocalPlayer.h b/Minecraft.Client/Player/LocalPlayer.h index 3a70bd4b6..cb8b5dfa1 100644 --- a/Minecraft.Client/Player/LocalPlayer.h +++ b/Minecraft.Client/Player/LocalPlayer.h @@ -1,4 +1,5 @@ #pragma once +#include #include "../../Minecraft.World/Util/SmoothFloat.h" #include "../../Minecraft.World/Headers/net.minecraft.world.entity.player.h" #include "../../Minecraft.World/Util/Pos.h" @@ -161,8 +162,8 @@ public: // 4J Stu - Added to allow callback to tutorial to stay within Minecraft.Client virtual void onCrafted(std::shared_ptr item); - virtual void setAndBroadcastCustomSkin(DWORD skinId); - virtual void setAndBroadcastCustomCape(DWORD capeId); + virtual void setAndBroadcastCustomSkin(std::uint32_t skinId); + virtual void setAndBroadcastCustomCape(std::uint32_t capeId); private: bool isSolidBlock(int x, int y, int z); diff --git a/Minecraft.Client/Player/MultiPlayerLocalPlayer.cpp b/Minecraft.Client/Player/MultiPlayerLocalPlayer.cpp index 2f6fae0e1..47ae79e61 100644 --- a/Minecraft.Client/Player/MultiPlayerLocalPlayer.cpp +++ b/Minecraft.Client/Player/MultiPlayerLocalPlayer.cpp @@ -348,9 +348,9 @@ void MultiplayerLocalPlayer::StopSleeping() } // 4J Added -void MultiplayerLocalPlayer::setAndBroadcastCustomSkin(DWORD skinId) +void MultiplayerLocalPlayer::setAndBroadcastCustomSkin(std::uint32_t skinId) { - DWORD oldSkinIndex = getCustomSkin(); + std::uint32_t oldSkinIndex = getCustomSkin(); LocalPlayer::setCustomSkin(skinId); #ifndef _CONTENT_PACKAGE wprintf(L"Skin for local player %ls has changed to %ls (%d)\n", name.c_str(), customTextureUrl.c_str(), getPlayerDefaultSkin() ); @@ -358,9 +358,9 @@ void MultiplayerLocalPlayer::setAndBroadcastCustomSkin(DWORD skinId) if(getCustomSkin() != oldSkinIndex) connection->send( std::shared_ptr( new TextureAndGeometryChangePacket( shared_from_this(), app.GetPlayerSkinName(GetXboxPad()) ) ) ); } -void MultiplayerLocalPlayer::setAndBroadcastCustomCape(DWORD capeId) +void MultiplayerLocalPlayer::setAndBroadcastCustomCape(std::uint32_t capeId) { - DWORD oldCapeIndex = getCustomCape(); + std::uint32_t oldCapeIndex = getCustomCape(); LocalPlayer::setCustomCape(capeId); #ifndef _CONTENT_PACKAGE wprintf(L"Cape for local player %ls has changed to %ls\n", name.c_str(), customTextureUrl2.c_str()); diff --git a/Minecraft.Client/Player/MultiPlayerLocalPlayer.h b/Minecraft.Client/Player/MultiPlayerLocalPlayer.h index 54c6001da..ea66686c0 100644 --- a/Minecraft.Client/Player/MultiPlayerLocalPlayer.h +++ b/Minecraft.Client/Player/MultiPlayerLocalPlayer.h @@ -1,4 +1,5 @@ #pragma once +#include #include "LocalPlayer.h" #include "../../Minecraft.World/Util/SharedConstants.h" @@ -68,6 +69,6 @@ public: virtual void StopSleeping(); // 4J Added - virtual void setAndBroadcastCustomSkin(DWORD skinId); - virtual void setAndBroadcastCustomCape(DWORD capeId); + virtual void setAndBroadcastCustomSkin(std::uint32_t skinId); + virtual void setAndBroadcastCustomCape(std::uint32_t capeId); }; diff --git a/Minecraft.World/Player/Player.cpp b/Minecraft.World/Player/Player.cpp index 0c8005ad4..d842e6ea5 100644 --- a/Minecraft.World/Player/Player.cpp +++ b/Minecraft.World/Player/Player.cpp @@ -620,7 +620,7 @@ void Player::setPlayerDefaultSkin(EDefaultSkins skin) m_skinIndex = skin; } -void Player::setCustomSkin(DWORD skinId) +void Player::setCustomSkin(std::uint32_t skinId) { #ifndef _CONTENT_PACKAGE wprintf(L"Attempting to set skin to %08X for player %ls\n", skinId, name.c_str() ); @@ -634,8 +634,8 @@ void Player::setCustomSkin(DWORD skinId) if( !GET_IS_DLC_SKIN_FROM_BITMASK(skinId) ) { // GET_UGC_SKIN_ID_FROM_BITMASK will always be zero - this was for a possible custom skin editor skin - DWORD ugcSkinIndex = GET_UGC_SKIN_ID_FROM_BITMASK(skinId); - DWORD defaultSkinIndex = GET_DEFAULT_SKIN_ID_FROM_BITMASK(skinId); + std::uint32_t ugcSkinIndex = GET_UGC_SKIN_ID_FROM_BITMASK(skinId); + std::uint32_t defaultSkinIndex = GET_DEFAULT_SKIN_ID_FROM_BITMASK(skinId); if( ugcSkinIndex == 0 && defaultSkinIndex > 0 ) { playerSkin = (EDefaultSkins) defaultSkinIndex; @@ -699,7 +699,7 @@ void Player::setCustomSkin(DWORD skinId) } -unsigned int Player::getSkinAnimOverrideBitmask(DWORD skinId) +unsigned int Player::getSkinAnimOverrideBitmask(std::uint32_t skinId) { unsigned long bitmask = 0L; if( GET_IS_DLC_SKIN_FROM_BITMASK(skinId) ) @@ -751,7 +751,7 @@ void Player::setXuid(PlayerUID xuid) #endif } -void Player::setCustomCape(DWORD capeId) +void Player::setCustomCape(std::uint32_t capeId) { #ifndef _CONTENT_PACKAGE wprintf(L"Attempting to set cape to %08X for player %s\n", capeId, name.c_str() ); @@ -801,10 +801,10 @@ void Player::setCustomCape(DWORD capeId) } } -DWORD Player::getCapeIdFromPath(const std::wstring &cape) +std::uint32_t Player::getCapeIdFromPath(const std::wstring &cape) { bool dlcCape = false; - unsigned int capeId = 0; + std::uint32_t capeId = 0; if(cape.size() >= 14) { @@ -827,7 +827,7 @@ DWORD Player::getCapeIdFromPath(const std::wstring &cape) return capeId; } -std::wstring Player::getCapePathFromId(DWORD capeId) +std::wstring Player::getCapePathFromId(std::uint32_t capeId) { // 4J Stu - This function maps the encoded DWORD we store in the player profile // to a filename that is stored as a memory texture and shared between systems in game @@ -840,8 +840,8 @@ std::wstring Player::getCapePathFromId(DWORD capeId) } else { - DWORD ugcCapeIndex = GET_UGC_SKIN_ID_FROM_BITMASK(capeId); - DWORD defaultCapeIndex = GET_DEFAULT_SKIN_ID_FROM_BITMASK(capeId); + std::uint32_t ugcCapeIndex = GET_UGC_SKIN_ID_FROM_BITMASK(capeId); + std::uint32_t defaultCapeIndex = GET_DEFAULT_SKIN_ID_FROM_BITMASK(capeId); if( ugcCapeIndex == 0 ) { swprintf(chars,256,L"defcape%08X.png",defaultCapeIndex); diff --git a/Minecraft.World/Player/Player.h b/Minecraft.World/Player/Player.h index 55159386c..408b33f6a 100644 --- a/Minecraft.World/Player/Player.h +++ b/Minecraft.World/Player/Player.h @@ -1,5 +1,6 @@ #pragma once +#include #include "../Entities/Mob.h" #include "../Util/Definitions.h" @@ -396,14 +397,14 @@ public: virtual int getTexture(); // 4J changed from std::wstring to int void setPlayerDefaultSkin(EDefaultSkins skin); EDefaultSkins getPlayerDefaultSkin() { return m_skinIndex; } - virtual void setCustomSkin(DWORD skinId); - DWORD getCustomSkin() {return m_dwSkinId; } - virtual void setCustomCape(DWORD capeId); - DWORD getCustomCape() {return m_dwCapeId; } + virtual void setCustomSkin(std::uint32_t skinId); + std::uint32_t getCustomSkin() {return m_dwSkinId; } + virtual void setCustomCape(std::uint32_t capeId); + std::uint32_t getCustomCape() {return m_dwCapeId; } - static DWORD getCapeIdFromPath(const std::wstring &cape); - static std::wstring getCapePathFromId(DWORD capeId); - static unsigned int getSkinAnimOverrideBitmask(DWORD skinId); + static std::uint32_t getCapeIdFromPath(const std::wstring &cape); + static std::wstring getCapePathFromId(std::uint32_t capeId); + static unsigned int getSkinAnimOverrideBitmask(std::uint32_t skinId); // 4J Added void setXuid(PlayerUID xuid); @@ -436,7 +437,7 @@ protected: private: EDefaultSkins m_skinIndex; - DWORD m_dwSkinId,m_dwCapeId; + std::uint32_t m_dwSkinId,m_dwCapeId; // 4J Added - Used to show which colour the player is on the map/behind their name DWORD m_playerIndex;