From 31c46e1e48bc6c234c5f8def3dac15f635311b98 Mon Sep 17 00:00:00 2001 From: Fireblade <3+fireblade@noreply.neolegacy.dev> Date: Mon, 6 Jul 2026 19:45:24 -0400 Subject: [PATCH] fix: zombie villager model --- Minecraft.Client/VillagerZombieModel.cpp | 48 +++++++++++++++++- .../Sound/Minecraft/fire/new_ignite.ogg | Bin 0 -> 4981 bytes Minecraft.Client/ZombieRenderer.cpp | 1 + Minecraft.World/Skeleton.cpp | 2 +- 4 files changed, 49 insertions(+), 2 deletions(-) create mode 100644 Minecraft.Client/Windows64Media/Sound/Minecraft/fire/new_ignite.ogg diff --git a/Minecraft.Client/VillagerZombieModel.cpp b/Minecraft.Client/VillagerZombieModel.cpp index 707a5d63..4217b4b8 100644 --- a/Minecraft.Client/VillagerZombieModel.cpp +++ b/Minecraft.Client/VillagerZombieModel.cpp @@ -14,15 +14,61 @@ void VillagerZombieModel::_init(float g, float yOffset, bool isArmor) } else { + delete pants0; + delete pants1; + delete jacket; + head = new ModelPart(this); head->setPos(0, 0 + yOffset, 0); head->texOffs(0, 32)->addBox(-4, -10, -4, 8, 10, 8, g); head->texOffs(24, 32)->addBox(-1, -3, -6, 2, 4, 2, g); - } + delete body; + body = new ModelPart(this, 16, 16); + body->addBox(-4, 0, -2, 8, 12, 4, g); + body->setPos(0, 0 + yOffset, 0); + + delete arm0; + arm0 = new ModelPart(this, 40, 16); + arm0->addBox(-3, -2, -2, 4, 12, 4, g); + arm0->setPos(-5, 2 + yOffset, 0); + + pants0 = new ModelPart(this, 40, 16); + pants0->addBox(0, 0, 0, 0, 0, 0, g); + pants0->setPos(0, 0 + yOffset, 0); + + pants1 = new ModelPart(this, 40, 16); + pants1->addBox(0, 0, 0, 0, 0, 0, g); + pants1->setPos(0, 0 + yOffset, 0); + + delete arm1; + arm1 = new ModelPart(this, 40, 16); + arm1->bMirror = true; + arm1->addBox(-1, -2, -2, 4, 12, 4, g); + arm1->setPos(5, 2 + yOffset, 0); + + delete leg0; + leg0 = new ModelPart(this, 0, 16); + leg0->addBox(-2, 0, -2, 4, 12, 4, g); + leg0->setPos(-1.9f, 12 + yOffset, 0); + + delete leg1; + leg1 = new ModelPart(this, 0, 16); + leg1->bMirror = true; + leg1->addBox(-2, 0, -2, 4, 12, 4, g); + leg1->setPos(1.9f, 12 + yOffset, 0); + } // 4J added - compile now to avoid random performance hit first time cubes are rendered head->compile(1.0f/16.0f); + if (!isArmor) + { + body->compile(1.0f/16.0f); + arm0->compile(1.0f/16.0f); + arm1->compile(1.0f/16.0f); + leg0->compile(1.0f/16.0f); + leg1->compile(1.0f/16.0f); + } } VillagerZombieModel::VillagerZombieModel() : HumanoidModel(0, 0, 64, 64) diff --git a/Minecraft.Client/Windows64Media/Sound/Minecraft/fire/new_ignite.ogg b/Minecraft.Client/Windows64Media/Sound/Minecraft/fire/new_ignite.ogg new file mode 100644 index 0000000000000000000000000000000000000000..2b390a48883056538fc322224e5863d2614287e2 GIT binary patch literal 4981 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 literal 0 HcmV?d00001 diff --git a/Minecraft.Client/ZombieRenderer.cpp b/Minecraft.Client/ZombieRenderer.cpp index 1ff1ec9a..289ad7aa 100644 --- a/Minecraft.Client/ZombieRenderer.cpp +++ b/Minecraft.Client/ZombieRenderer.cpp @@ -99,6 +99,7 @@ void ZombieRenderer::swapArmor(shared_ptr mob) } humanoidModel = static_cast(model); + resModel = model; } void ZombieRenderer::setupRotations(shared_ptr _mob, float bob, float bodyRot, float a) diff --git a/Minecraft.World/Skeleton.cpp b/Minecraft.World/Skeleton.cpp index dfbbc11c..d152a8cd 100644 --- a/Minecraft.World/Skeleton.cpp +++ b/Minecraft.World/Skeleton.cpp @@ -188,7 +188,7 @@ void Skeleton::dropDeathLoot(bool wasKilledByPlayer, int playerBonusLevel) { if (getSkeletonType() == TYPE_WITHER) { - // drop some arrows + // drop some coal int count = random->nextInt(3 + playerBonusLevel) - 1; for (int i = 0; i < count; i++) {