Remove DWORD skin IDs from player customisation APIs

This commit is contained in:
notmatthewbeshay 2026-03-10 07:25:29 +11:00
parent 62a1aea3fc
commit 3f374cecad
6 changed files with 31 additions and 29 deletions

View file

@ -1139,12 +1139,12 @@ void LocalPlayer::onCrafted(std::shared_ptr<ItemInstance> 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::vector<ModelPart *>pAdditio
{
m_pAdditionalModelParts=pAdditionalModelParts;
}

View file

@ -1,4 +1,5 @@
#pragma once
#include <cstdint>
#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<ItemInstance> 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);

View file

@ -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<TextureAndGeometryChangePacket>( 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());

View file

@ -1,4 +1,5 @@
#pragma once
#include <cstdint>
#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);
};

View file

@ -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);

View file

@ -1,5 +1,6 @@
#pragma once
#include <cstdint>
#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;