From b691c43c44ff180d10e7d4a9afc83b98551ff586 Mon Sep 17 00:00:00 2001 From: daoge_cmd <3523206925@qq.com> Date: Sun, 1 Mar 2026 12:16:08 +0800 Subject: Initial commit --- Minecraft.Client/EndermanModel.cpp | 121 +++++++++++++++++++++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 Minecraft.Client/EndermanModel.cpp (limited to 'Minecraft.Client/EndermanModel.cpp') diff --git a/Minecraft.Client/EndermanModel.cpp b/Minecraft.Client/EndermanModel.cpp new file mode 100644 index 00000000..02b9a53d --- /dev/null +++ b/Minecraft.Client/EndermanModel.cpp @@ -0,0 +1,121 @@ +#include "stdafx.h" +#include "EndermanModel.h" +#include "ModelPart.h" + +EndermanModel::EndermanModel() : HumanoidModel(0, -14, 64, 32) +{ + carrying = false; + creepy = false; + + float yOffset = -14.0f; + float g = 0; + + delete hair; + hair = new ModelPart(this, 0, 16); + hair->addBox(-4.0f, -8.0f, -4.0f, 8, 8, 8, g - 0.5f); // Head + hair->setPos(0.0f, 0.0f + yOffset, 0.0f); + + delete body; + body = new ModelPart(this, 32, 16); + body->addBox(-4.0f, 0.0f, -2.0f, 8, 12, 4, g); // Body + body->setPos(0.0f, 0.0f + yOffset, 0.0f); + + + delete arm0; + arm0 = new ModelPart(this, 56, 0); + arm0->addBox(-1.0f, -2.0f, -1.0f, 2, 30, 2, g); // Arm0 + arm0->setPos(-3.0f, 2.0f + yOffset, 0.0f); + + + delete arm1; + arm1 = new ModelPart(this, 56, 0); + arm1->bMirror = true; + arm1->addBox(-1.0f, -2.0f, -1.0f, 2, 30, 2, g); // Arm1 + arm1->setPos(5.0f, 2.0f + yOffset, 0.0f); + + delete leg0; + leg0 = new ModelPart(this, 56, 0); + leg0->addBox(-1.0f, 0.0f, -1.0f, 2, 30, 2, g); // Leg0 + leg0->setPos(-2.0f, 12.0f + yOffset, 0.0f); + + delete leg1; + leg1 = new ModelPart(this, 56, 0); + leg1->bMirror = true; + leg1->addBox(-1.0f, 0.0f, -1.0f, 2, 30, 2, g); // Leg1 + leg1->setPos(2.0f, 12.0f + yOffset, 0.0f); + + // 4J added - compile now to avoid random performance hit first time cubes are rendered + 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); + hair->compile(1.0f/16.0f); + +} + +void EndermanModel::setupAnim(float time, float r, float bob, float yRot, float xRot, float scale, unsigned int uiBitmaskOverrideAnim) +{ + HumanoidModel::setupAnim(time, r, bob, yRot, xRot, scale, uiBitmaskOverrideAnim); + + head->visible = true; + + float yOffs = -14.0f; + body->xRot = 0.0f; + body->y = yOffs; + body->z = -0.0f; + + leg0->xRot -= 0.0f; + leg1->xRot -= 0.0f; + + arm0->xRot *= 0.5f; + arm1->xRot *= 0.5f; + leg0->xRot *= 0.5f; + leg1->xRot *= 0.5f; + + float max = 0.4f; + if (arm0->xRot > +max) arm0->xRot = +max; + if (arm1->xRot > +max) arm1->xRot = +max; + if (arm0->xRot < -max) arm0->xRot = -max; + if (arm1->xRot < -max) arm1->xRot = -max; + if (leg0->xRot > +max) leg0->xRot = +max; + if (leg1->xRot > +max) leg1->xRot = +max; + if (leg0->xRot < -max) leg0->xRot = -max; + if (leg1->xRot < -max) leg1->xRot = -max; + + + if (carrying) + { + arm0->xRot = -0.5f; + arm1->xRot = -0.5f; + arm0->zRot = 0.05f; + arm1->zRot = -0.05f; + } + + arm0->z = -0.0f; + arm1->z = -0.0f; + leg0->z = -0.0f; + leg1->z = -0.0f; + + arm0->y = 2.0f + yOffs; + arm1->y = 2.0f + yOffs; + + leg0->y = +9.0f + yOffs; + leg1->y = +9.0f + yOffs; + + head->z = -0.0f; + head->y = +yOffs + 1; + + hair->x = head->x; + hair->y = head->y; + hair->z = head->z; + hair->xRot = head->xRot; + hair->yRot = head->yRot; + hair->zRot = head->zRot; + + if (creepy) + { + float amt = 1; + head->y -= (float) (amt * 5); + } +} \ No newline at end of file -- cgit v1.2.3