Added 64x64 skin support.

Added proper support for 64x64 slim and classic skins for default skin pack and most DLC skin packs. Overlay/Second layer is still absent.
This commit is contained in:
Langtanium 2026-03-13 12:14:50 -07:00
parent 58648c0f92
commit 7c520546ed
30 changed files with 189 additions and 49 deletions

View file

@ -259,10 +259,47 @@ void UIControl_PlayerSkinPreview::render(EntityRenderer *renderer, double x, dou
HumanoidModel *model; HumanoidModel *model;
if (m_backupTexture == TN_MOB_CHAR8) switch (m_backupTexture)
{
case TN_MOB_ALEX:
model = static_cast<HumanoidModel *>(renderer->getModelSlim()); model = static_cast<HumanoidModel *>(renderer->getModelSlim());
else break;
model = static_cast<HumanoidModel *>(renderer->getModel()); case TN_MOB_ALEX1:
model = static_cast<HumanoidModel *>(renderer->getModelSlim());
break;
case TN_MOB_ALEX2:
model = static_cast<HumanoidModel *>(renderer->getModelSlim());
break;
case TN_MOB_ALEX3:
model = static_cast<HumanoidModel *>(renderer->getModelSlim());
break;
case TN_MOB_ALEX4:
model = static_cast<HumanoidModel *>(renderer->getModelSlim());
break;
case TN_MOB_ALEX5:
model = static_cast<HumanoidModel *>(renderer->getModelSlim());
break;
case TN_MOB_ALEX6:
model = static_cast<HumanoidModel *>(renderer->getModelSlim());
break;
case TN_MOB_ALEX7:
model = static_cast<HumanoidModel *>(renderer->getModelSlim());
break;
case TN_MOB_DEVALEX:
model = static_cast<HumanoidModel *>(renderer->getModelSlim());
break;
case TN_MOB_DEVSTEVE:
model = static_cast<HumanoidModel *>(renderer->getModelCustom());
break;
default:
if (m_uiAnimOverrideBitmask&(1<<18))
model = static_cast<HumanoidModel *>(renderer->getModelCustom());
else if (m_uiAnimOverrideBitmask&(1<<19))
model = static_cast<HumanoidModel *>(renderer->getModelSlim());
else
model = static_cast<HumanoidModel *>(renderer->getModel());
break;
}
//getAttackAnim(mob, a); //getAttackAnim(mob, a);
//if (armor != nullptr) armor->attackTime = model->attackTime; //if (armor != nullptr) armor->attackTime = model->attackTime;

View file

@ -25,6 +25,15 @@ const WCHAR *UIScene_SkinSelectMenu::wchDefaultNamesA[]=
L"Cyclist Steve", L"Cyclist Steve",
L"Boxer Steve", L"Boxer Steve",
L"Alex", L"Alex",
L"Tennis Alex",
L"Tuxedo Alex",
L"Athlete Alex",
L"Swedish Alex",
L"Prisoner Alex",
L"Cyclist Alex",
L"Boxer Alex",
L"Developer Alex",
L"Developer Steve",
}; };
UIScene_SkinSelectMenu::UIScene_SkinSelectMenu(int iPad, void *initData, UILayer *parentLayer) : UIScene(iPad, parentLayer) UIScene_SkinSelectMenu::UIScene_SkinSelectMenu(int iPad, void *initData, UILayer *parentLayer) : UIScene(iPad, parentLayer)
@ -995,7 +1004,34 @@ TEXTURE_NAME UIScene_SkinSelectMenu::getTextureId(int skinIndex)
texture = TN_MOB_CHAR7; texture = TN_MOB_CHAR7;
break; break;
case eDefaultSkins_Skin8: case eDefaultSkins_Skin8:
texture = TN_MOB_CHAR8; texture = TN_MOB_ALEX;
break;
case eDefaultSkins_Skin9:
texture = TN_MOB_ALEX1;
break;
case eDefaultSkins_Skin10:
texture = TN_MOB_ALEX2;
break;
case eDefaultSkins_Skin11:
texture = TN_MOB_ALEX3;
break;
case eDefaultSkins_Skin12:
texture = TN_MOB_ALEX4;
break;
case eDefaultSkins_Skin13:
texture = TN_MOB_ALEX5;
break;
case eDefaultSkins_Skin14:
texture = TN_MOB_ALEX6;
break;
case eDefaultSkins_Skin15:
texture = TN_MOB_ALEX7;
break;
case eDefaultSkins_Skin16:
texture = TN_MOB_DEVALEX;
break;
case eDefaultSkins_Skin17:
texture = TN_MOB_DEVSTEVE;
break; break;
}; };

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.4 KiB

View file

@ -117,7 +117,7 @@ EntityRenderDispatcher::EntityRenderDispatcher()
renderers[eTYPE_PIGZOMBIE] = new ZombieRenderer(); renderers[eTYPE_PIGZOMBIE] = new ZombieRenderer();
renderers[eTYPE_SLIME] = new SlimeRenderer(new SlimeModel(16), new SlimeModel(0), 0.25f); renderers[eTYPE_SLIME] = new SlimeRenderer(new SlimeModel(16), new SlimeModel(0), 0.25f);
renderers[eTYPE_LAVASLIME] = new LavaSlimeRenderer(); renderers[eTYPE_LAVASLIME] = new LavaSlimeRenderer();
renderers[eTYPE_PLAYER] = new PlayerRenderer(true); renderers[eTYPE_PLAYER] = new PlayerRenderer();
renderers[eTYPE_GIANT] = new GiantMobRenderer(new ZombieModel(), 0.5f, 6); renderers[eTYPE_GIANT] = new GiantMobRenderer(new ZombieModel(), 0.5f, 6);
renderers[eTYPE_GHAST] = new GhastRenderer(); renderers[eTYPE_GHAST] = new GhastRenderer();
renderers[eTYPE_SQUID] = new SquidRenderer(new SquidModel(), 0.7f); renderers[eTYPE_SQUID] = new SquidRenderer(new SquidModel(), 0.7f);
@ -180,7 +180,6 @@ EntityRenderDispatcher::EntityRenderDispatcher()
EntityRenderer *EntityRenderDispatcher::getRenderer(eINSTANCEOF e) EntityRenderer *EntityRenderDispatcher::getRenderer(eINSTANCEOF e)
{ {
if( (e & eTYPE_PLAYER) == eTYPE_PLAYER) e = eTYPE_PLAYER; if( (e & eTYPE_PLAYER) == eTYPE_PLAYER) e = eTYPE_PLAYER;
else if( (e & eTYPE_PLAYER) == eTYPE_PLAYER) e = eTYPE_PLAYER;
//EntityRenderer * r = renderers[e]; //EntityRenderer * r = renderers[e];
auto it = renderers.find(e); // 4J Stu - The .at and [] accessors insert elements if they don't exist auto it = renderers.find(e); // 4J Stu - The .at and [] accessors insert elements if they don't exist

View file

@ -19,6 +19,7 @@ ResourceLocation EntityRenderer::SHADOW_LOCATION = ResourceLocation(TN__CLAMP__M
EntityRenderer::EntityRenderer() EntityRenderer::EntityRenderer()
{ {
model = nullptr; model = nullptr;
modelCustom = nullptr;
modelSlim = nullptr; modelSlim = nullptr;
tileRenderer = new TileRenderer(); tileRenderer = new TileRenderer();
shadowRadius = 0; shadowRadius = 0;

View file

@ -30,6 +30,7 @@ private:
protected: protected:
Model *model; // TODO 4J: Check why exactly this is here, it seems to get shadowed by classes inheriting from this by their own Model *model; // TODO 4J: Check why exactly this is here, it seems to get shadowed by classes inheriting from this by their own
Model *modelCustom;
Model *modelSlim; Model *modelSlim;
protected: protected:
@ -69,6 +70,7 @@ public:
public: public:
// 4J Added // 4J Added
virtual Model *getModel() { return model; } virtual Model *getModel() { return model; }
virtual Model *getModelCustom() { return modelCustom; }
virtual Model *getModelSlim() { return modelSlim; } virtual Model *getModelSlim() { return modelSlim; }
virtual void SetItemFrame(bool bSet) {} virtual void SetItemFrame(bool bSet) {}
}; };

View file

@ -58,7 +58,7 @@ ModelPart * HumanoidModel::AddOrRetrievePart(SKIN_BOX *pBox)
return pNewBox; return pNewBox;
} }
void HumanoidModel::_init(float g, float yOffset, int texWidth, int texHeight, bool slimHands) void HumanoidModel::_init(float g, float yOffset, int texWidth, int texHeight, int skinType)
{ {
this->texWidth = texWidth; this->texWidth = texWidth;
this->texHeight = texHeight; this->texHeight = texHeight;
@ -85,27 +85,39 @@ void HumanoidModel::_init(float g, float yOffset, int texWidth, int texHeight, b
arm0 = new ModelPart(this, 24 + 16, 16); arm0 = new ModelPart(this, 24 + 16, 16);
arm0->setPos(-5, 2 + yOffset, 0); arm0->setPos(-5, 2 + yOffset, 0);
arm1 = new ModelPart(this, 24 + 16, 16); if (skinType == 2)
arm1->bMirror = true; {
arm1->setPos(5, 2 + yOffset, 0); arm0->addHumanoidBox(-2, -2, -2, 3, 12, 4, g); // Arm0 Slim
if (slimHands == false) arm1 = new ModelPart(this, 16 + 16, 16 * 3);
{ arm1->addHumanoidBox(-1, -2, -2, 3, 12, 4, g); // Arm1 Slim
arm0->addHumanoidBox(-3, -2, -2, 4, 12, 4, g); }
arm1->addHumanoidBox(-1, -2, -2, 4, 12, 4, g); else
} {
else if (slimHands == true) arm0->addHumanoidBox(-3, -2, -2, 4, 12, 4, g); // Arm0
{
arm0->addHumanoidBox(-2, -2, -2, 3, 12, 4, 0); if (skinType == 1)
arm1->addHumanoidBox(-1, -2, -2, 3, 12, 4, 0); arm1 = new ModelPart(this, 16 + 16, 16 * 3); // Arm1 Custom
} else
{
arm1 = new ModelPart(this, 24 + 16, 16);
arm1->bMirror = true;
}
arm1->addHumanoidBox(-1, -2, -2, 4, 12, 4, g); // Arm1
}
arm1->setPos(5, 2 + yOffset, 0);
leg0 = new ModelPart(this, 0, 16); leg0 = new ModelPart(this, 0, 16);
leg0->addHumanoidBox(-2, 0, -2, 4, 12, 4, g); // Leg0 leg0->addHumanoidBox(-2, 0, -2, 4, 12, 4, g); // Leg0
leg0->setPos(-1.9, 12 + yOffset, 0); leg0->setPos(-1.9, 12 + yOffset, 0);
leg1 = new ModelPart(this, 0, 16); if (skinType >= 1)
leg1->bMirror = true; leg1 = new ModelPart(this, 16, 16 * 3);
else
{
leg1 = new ModelPart(this, 0, 16);
leg1->bMirror = true;
}
leg1->addHumanoidBox(-2, 0, -2, 4, 12, 4, g); // Leg1 leg1->addHumanoidBox(-2, 0, -2, 4, 12, 4, g); // Leg1
leg1->setPos(1.9, 12 + yOffset, 0); leg1->setPos(1.9, 12 + yOffset, 0);
@ -137,22 +149,22 @@ void HumanoidModel::_init(float g, float yOffset, int texWidth, int texHeight, b
HumanoidModel::HumanoidModel() : Model() HumanoidModel::HumanoidModel() : Model()
{ {
_init(0, 0, 64, 32, false); _init(0, 0, 64, 32, 0);
} }
HumanoidModel::HumanoidModel(float g) : Model() HumanoidModel::HumanoidModel(float g) : Model()
{ {
_init(g, 0, 64, 32, false); _init(g, 0, 64, 32, 0);
} }
HumanoidModel::HumanoidModel(float g, float yOffset, int texWidth, int texHeight) : Model() HumanoidModel::HumanoidModel(float g, float yOffset, int texWidth, int texHeight) : Model()
{ {
_init(g,yOffset,texWidth,texHeight, false); _init(g,yOffset,texWidth,texHeight,0);
} }
HumanoidModel::HumanoidModel(float g, float yOffset, int texWidth, int texHeight, bool slimHands) : Model() HumanoidModel::HumanoidModel(float g, float yOffset, int texWidth, int texHeight, int skinType) : Model()
{ {
_init(g,yOffset,texWidth,texHeight, slimHands); _init(g,yOffset,texWidth,texHeight,skinType);
} }
void HumanoidModel::render(shared_ptr<Entity> entity, float time, float r, float bob, float yRot, float xRot, float scale, bool usecompiled) void HumanoidModel::render(shared_ptr<Entity> entity, float time, float r, float bob, float yRot, float xRot, float scale, bool usecompiled)

View file

@ -50,11 +50,11 @@ public:
(1<<HumanoidModel::eAnim_DisableRenderHair); (1<<HumanoidModel::eAnim_DisableRenderHair);
void _init(float g, float yOffset, int texWidth, int texHeight, bool slimHands); // 4J added void _init(float g, float yOffset, int texWidth, int texHeight, int skinType); // 4J added
HumanoidModel(); HumanoidModel();
HumanoidModel(float g); HumanoidModel(float g);
HumanoidModel(float g, float yOffset, int texWidth, int texHeight); HumanoidModel(float g, float yOffset, int texWidth, int texHeight);
HumanoidModel(float g, float yOffset, int texWidth, int texHeight, bool slimHands); HumanoidModel(float g, float yOffset, int texWidth, int texHeight, int skinType);
virtual void render(shared_ptr<Entity> entity, float time, float r, float bob, float yRot, float xRot, float scale, bool usecompiled); virtual void render(shared_ptr<Entity> entity, float time, float r, float bob, float yRot, float xRot, float scale, bool usecompiled);
virtual void setupAnim(float time, float r, float bob, float yRot, float xRot, float scale, shared_ptr<Entity> entity, unsigned int uiBitmaskOverrideAnim = 0); virtual void setupAnim(float time, float r, float bob, float yRot, float xRot, float scale, shared_ptr<Entity> entity, unsigned int uiBitmaskOverrideAnim = 0);
void renderHair(float scale, bool usecompiled); void renderHair(float scale, bool usecompiled);

View file

@ -12,12 +12,11 @@
ResourceLocation LivingEntityRenderer::ENCHANT_GLINT_LOCATION = ResourceLocation(TN__BLUR__MISC_GLINT); ResourceLocation LivingEntityRenderer::ENCHANT_GLINT_LOCATION = ResourceLocation(TN__BLUR__MISC_GLINT);
int LivingEntityRenderer::MAX_ARMOR_LAYERS = 4; int LivingEntityRenderer::MAX_ARMOR_LAYERS = 4;
LivingEntityRenderer::LivingEntityRenderer(Model *model, float shadow, bool slimHands) LivingEntityRenderer::LivingEntityRenderer(Model *model, float shadow)
{ {
this->model = model; this->model = model;
this->modelCustom = new HumanoidModel(0, 0, 64, 64, 1);
if (slimHands == true) this->modelSlim = new HumanoidModel(0, 0, 64, 64, 2);
this->modelSlim = new HumanoidModel(0, 0, 64, 32, true);
shadowRadius = shadow; shadowRadius = shadow;
armor = nullptr; armor = nullptr;
@ -57,7 +56,8 @@ void LivingEntityRenderer::render(shared_ptr<Entity> _mob, double x, double y, d
glPushMatrix(); glPushMatrix();
glDisable(GL_CULL_FACE); glDisable(GL_CULL_FACE);
if (player != nullptr && modelSlim != nullptr && player->getPlayerDefaultSkin() == 9) resModel = modelSlim; if ((player != nullptr && modelCustom != nullptr && player->getPlayerDefaultSkin() == 18) || player->getAnimOverrideBitmask()&(1<<18)) resModel = modelCustom;
else if ((player != nullptr && modelSlim != nullptr && player->getPlayerDefaultSkin() >= 9) || player->getAnimOverrideBitmask()&(1<<19)) resModel = modelSlim;
else resModel = model; else resModel = model;
resModel->attackTime = getAttackAnim(mob, a); resModel->attackTime = getAttackAnim(mob, a);
@ -253,7 +253,8 @@ void LivingEntityRenderer::renderModel(shared_ptr<LivingEntity> mob, float wp, f
shared_ptr<Player> player = dynamic_pointer_cast<Player>(mob); shared_ptr<Player> player = dynamic_pointer_cast<Player>(mob);
Model *resModel; Model *resModel;
if (player != nullptr && modelSlim != nullptr && player->getPlayerDefaultSkin() == 9) resModel = modelSlim; if ((player != nullptr && modelCustom != nullptr && player->getPlayerDefaultSkin() == 18) || player->getAnimOverrideBitmask()&(1<<18)) resModel = modelCustom;
else if ((player != nullptr && modelSlim != nullptr && player->getPlayerDefaultSkin() >= 9) || player->getAnimOverrideBitmask()&(1<<19)) resModel = modelSlim;
else resModel = model; else resModel = model;
bindTexture(mob); bindTexture(mob);
@ -341,10 +342,12 @@ void LivingEntityRenderer::renderArrows(shared_ptr<LivingEntity> mob, float a)
ModelPart *modelPart; ModelPart *modelPart;
if (player != nullptr && modelSlim != nullptr && player->getPlayerDefaultSkin() == 9) if ((player != nullptr && modelCustom != nullptr && player->getPlayerDefaultSkin() == 18) || player->getAnimOverrideBitmask()&(1<<18))
modelPart = model->getRandomModelPart(random); modelPart = modelCustom->getRandomModelPart(random);
else else if ((player != nullptr && modelSlim != nullptr && player->getPlayerDefaultSkin() >= 9) || player->getAnimOverrideBitmask()&(1<<19))
modelPart = modelSlim->getRandomModelPart(random); modelPart = modelSlim->getRandomModelPart(random);
else
modelPart = model->getRandomModelPart(random);
Cube *cube = modelPart->cubes[random.nextInt(modelPart->cubes.size())]; Cube *cube = modelPart->cubes[random.nextInt(modelPart->cubes.size())];
modelPart->translateTo(1 / 16.0f); modelPart->translateTo(1 / 16.0f);

View file

@ -19,7 +19,7 @@ protected:
Model *armor; Model *armor;
public: public:
LivingEntityRenderer(Model *model, float shadow, bool slimHands); LivingEntityRenderer(Model *model, float shadow);
virtual void render(shared_ptr<Entity> mob, double x, double y, double z, float rot, float a); virtual void render(shared_ptr<Entity> mob, double x, double y, double z, float rot, float a);
virtual void setArmor(Model *armor); virtual void setArmor(Model *armor);

View file

@ -9,7 +9,7 @@
#include "..\Minecraft.World\Mth.h" #include "..\Minecraft.World\Mth.h"
#include "entityRenderDispatcher.h" #include "entityRenderDispatcher.h"
MobRenderer::MobRenderer(Model *model, float shadow) : LivingEntityRenderer(model, shadow, false) MobRenderer::MobRenderer(Model *model, float shadow) : LivingEntityRenderer(model, shadow)
{ {
} }

View file

@ -55,9 +55,10 @@ static unsigned int nametagColorForIndex(int index)
ResourceLocation PlayerRenderer::DEFAULT_LOCATION = ResourceLocation(TN_MOB_CHAR); ResourceLocation PlayerRenderer::DEFAULT_LOCATION = ResourceLocation(TN_MOB_CHAR);
PlayerRenderer::PlayerRenderer(bool slimHands) : LivingEntityRenderer( new HumanoidModel(0), 0.5f, slimHands ) PlayerRenderer::PlayerRenderer() : LivingEntityRenderer( new HumanoidModel(0), 0.5f )
{ {
humanoidModel = static_cast<HumanoidModel *>(model); humanoidModel = static_cast<HumanoidModel *>(model);
humanoidModelCustom = static_cast<HumanoidModel *>(modelCustom);
humanoidModelSlim = static_cast<HumanoidModel *>(modelSlim); humanoidModelSlim = static_cast<HumanoidModel *>(modelSlim);
armorParts1 = new HumanoidModel(1.0f); armorParts1 = new HumanoidModel(1.0f);
@ -166,7 +167,8 @@ void PlayerRenderer::render(shared_ptr<Entity> _mob, double x, double y, double
if(mob == nullptr) return; if(mob == nullptr) return;
if(mob->hasInvisiblePrivilege()) return; if(mob->hasInvisiblePrivilege()) return;
if (mob != nullptr && modelSlim != nullptr && mob->getPlayerDefaultSkin() == 9) resModel = humanoidModelSlim; if ((mob != nullptr && modelCustom != nullptr && mob->getPlayerDefaultSkin() == 18) || mob->getAnimOverrideBitmask()&(1<<18)) resModel = humanoidModelCustom;
else if ((mob != nullptr && modelSlim != nullptr && mob->getPlayerDefaultSkin() >= 9) || mob->getAnimOverrideBitmask()&(1<<19)) resModel = humanoidModelSlim;
else resModel = humanoidModel; else resModel = humanoidModel;
shared_ptr<ItemInstance> item = mob->inventory->getSelected(); shared_ptr<ItemInstance> item = mob->inventory->getSelected();
@ -272,7 +274,8 @@ void PlayerRenderer::additionalRendering(shared_ptr<LivingEntity> _mob, float a)
shared_ptr<Player> mob = dynamic_pointer_cast<Player>(_mob); shared_ptr<Player> mob = dynamic_pointer_cast<Player>(_mob);
HumanoidModel *resModel; HumanoidModel *resModel;
if (mob != nullptr && modelSlim != nullptr && mob->getPlayerDefaultSkin() == 9) resModel = humanoidModelSlim; if ((mob != nullptr && modelCustom != nullptr && mob->getPlayerDefaultSkin() == 18) || mob->getAnimOverrideBitmask()&(1<<18)) resModel = humanoidModelCustom;
else if ((mob != nullptr && modelSlim != nullptr && mob->getPlayerDefaultSkin() >= 9) || mob->getAnimOverrideBitmask()&(1<<19)) resModel = humanoidModelSlim;
else resModel = humanoidModel; else resModel = humanoidModel;
shared_ptr<ItemInstance> headGear = mob->inventory->getArmor(3); shared_ptr<ItemInstance> headGear = mob->inventory->getArmor(3);
@ -520,7 +523,8 @@ void PlayerRenderer::renderHand()
shared_ptr<Player> player = dynamic_pointer_cast<Player>(Minecraft::GetInstance()->player); shared_ptr<Player> player = dynamic_pointer_cast<Player>(Minecraft::GetInstance()->player);
HumanoidModel *resModel; HumanoidModel *resModel;
if (player != nullptr && modelSlim != nullptr && player->getPlayerDefaultSkin() == 9) resModel = humanoidModelSlim; if ((player != nullptr && modelCustom != nullptr && player->getPlayerDefaultSkin() == 18) || player->getAnimOverrideBitmask()&(1<<18)) resModel = humanoidModelCustom;
else if ((player != nullptr && modelSlim != nullptr && player->getPlayerDefaultSkin() >= 9) || player->getAnimOverrideBitmask()&(1<<19)) resModel = humanoidModelSlim;
else resModel = humanoidModel; else resModel = humanoidModel;
float brightness = 1; float brightness = 1;

View file

@ -14,13 +14,14 @@ public:
private: private:
HumanoidModel *humanoidModel; HumanoidModel *humanoidModel;
HumanoidModel *humanoidModelCustom;
HumanoidModel *humanoidModelSlim; HumanoidModel *humanoidModelSlim;
HumanoidModel *armorParts1; HumanoidModel *armorParts1;
HumanoidModel *armorParts2; HumanoidModel *armorParts2;
bool defaultSlimHands; int defaultSkinType;
public: public:
PlayerRenderer(bool slimHands); PlayerRenderer();
static unsigned int getNametagColour(int index); static unsigned int getNametagColour(int index);

View file

@ -72,7 +72,16 @@ const wchar_t *Textures::preLoaded[TN_COUNT] =
L"mob/char5", L"mob/char5",
L"mob/char6", L"mob/char6",
L"mob/char7", L"mob/char7",
L"mob/char8", L"mob/alex",
L"mob/alex1",
L"mob/alex2",
L"mob/alex3",
L"mob/alex4",
L"mob/alex5",
L"mob/alex6",
L"mob/alex7",
L"mob/DevAlex",
L"mob/DevSteve",
L"terrain/moon", L"terrain/moon",
L"terrain/sun", L"terrain/sun",
L"armor/power", L"armor/power",

View file

@ -63,7 +63,16 @@ typedef enum _TEXTURE_NAME
TN_MOB_CHAR5, TN_MOB_CHAR5,
TN_MOB_CHAR6, TN_MOB_CHAR6,
TN_MOB_CHAR7, TN_MOB_CHAR7,
TN_MOB_CHAR8, TN_MOB_ALEX,
TN_MOB_ALEX1,
TN_MOB_ALEX2,
TN_MOB_ALEX3,
TN_MOB_ALEX4,
TN_MOB_ALEX5,
TN_MOB_ALEX6,
TN_MOB_ALEX7,
TN_MOB_DEVALEX,
TN_MOB_DEVSTEVE,
TN_TERRAIN_MOON, TN_TERRAIN_MOON,
TN_TERRAIN_SUN, TN_TERRAIN_SUN,
TN_POWERED_CREEPER, TN_POWERED_CREEPER,

View file

@ -36,6 +36,15 @@ enum EDefaultSkins
eDefaultSkins_Skin6, eDefaultSkins_Skin6,
eDefaultSkins_Skin7, eDefaultSkins_Skin7,
eDefaultSkins_Skin8, eDefaultSkins_Skin8,
eDefaultSkins_Skin9,
eDefaultSkins_Skin10,
eDefaultSkins_Skin11,
eDefaultSkins_Skin12,
eDefaultSkins_Skin13,
eDefaultSkins_Skin14,
eDefaultSkins_Skin15,
eDefaultSkins_Skin16,
eDefaultSkins_Skin17,
eDefaultSkins_Count, eDefaultSkins_Count,
}; };

View file

@ -2703,7 +2703,25 @@ int Player::getTexture()
case eDefaultSkins_Skin7: case eDefaultSkins_Skin7:
return TN_MOB_CHAR7; // 4J - was L"/mob/char7.png"; return TN_MOB_CHAR7; // 4J - was L"/mob/char7.png";
case eDefaultSkins_Skin8: case eDefaultSkins_Skin8:
return TN_MOB_CHAR8; // 4J - was L"/mob/char8.png"; return TN_MOB_ALEX; // 4J - was L"/mob/alex.png";
case eDefaultSkins_Skin9:
return TN_MOB_ALEX1; // 4J - was L"/mob/alex1.png";
case eDefaultSkins_Skin10:
return TN_MOB_ALEX2; // 4J - was L"/mob/alex2.png";
case eDefaultSkins_Skin11:
return TN_MOB_ALEX3; // 4J - was L"/mob/alex3.png";
case eDefaultSkins_Skin12:
return TN_MOB_ALEX4; // 4J - was L"/mob/alex4.png";
case eDefaultSkins_Skin13:
return TN_MOB_ALEX5; // 4J - was L"/mob/alex5.png";
case eDefaultSkins_Skin14:
return TN_MOB_ALEX6; // 4J - was L"/mob/alex6.png";
case eDefaultSkins_Skin15:
return TN_MOB_ALEX7; // 4J - was L"/mob/alex7.png";
case eDefaultSkins_Skin16:
return TN_MOB_DEVALEX; // 4J - was L"/mob/DevAlex.png";
case eDefaultSkins_Skin17:
return TN_MOB_DEVSTEVE; // 4J - was L"/mob/DevSteve.png";
default: default:
return TN_MOB_CHAR; // 4J - was L"/mob/char.png"; return TN_MOB_CHAR; // 4J - was L"/mob/char.png";