From b3feddfef372618c8a9d7a0abcaf18cfad866c18 Mon Sep 17 00:00:00 2001 From: daoge <3523206925@qq.com> Date: Tue, 3 Mar 2026 03:04:10 +0800 Subject: feat: TU19 (Dec 2014) Features & Content (#155) * try to resolve merge conflict * feat: TU19 (Dec 2014) Features & Content (#32) * December 2014 files * Working release build * Fix compilation issues * Add sound to Windows64Media * Add DLC content and force Tutorial DLC * Revert "Add DLC content and force Tutorial DLC" This reverts commit 97a43994725008e35fceb984d5549df9c8cea470. * Disable broken light packing * Disable breakpoint during DLC texture map load Allows DLC loading but the DLC textures are still broken * Fix post build not working * ... * fix vs2022 build * fix cmake build --------- Co-authored-by: Loki --- Minecraft.Client/WitchRenderer.cpp | 118 +++++++++++++++++++++++++++++++++++++ 1 file changed, 118 insertions(+) create mode 100644 Minecraft.Client/WitchRenderer.cpp (limited to 'Minecraft.Client/WitchRenderer.cpp') diff --git a/Minecraft.Client/WitchRenderer.cpp b/Minecraft.Client/WitchRenderer.cpp new file mode 100644 index 00000000..5e0f2b10 --- /dev/null +++ b/Minecraft.Client/WitchRenderer.cpp @@ -0,0 +1,118 @@ +#include "stdafx.h" +#include "EntityRenderDispatcher.h" +#include "WitchRenderer.h" +#include "WitchModel.h" +#include "ModelPart.h" +#include "..\Minecraft.World\net.minecraft.world.item.h" + +ResourceLocation WitchRenderer::WITCH_LOCATION = ResourceLocation(TN_MOB_WITCH); + +WitchRenderer::WitchRenderer() : MobRenderer(new WitchModel(0), 0.5f) +{ + witchModel = dynamic_cast(model); +} + +void WitchRenderer::render(shared_ptr entity, double x, double y, double z, float rot, float a) +{ + shared_ptr mob = dynamic_pointer_cast(entity); + + shared_ptr item = mob->getCarriedItem(); + + witchModel->holdingItem = item != NULL; + MobRenderer::render(mob, x, y, z, rot, a); +} + +ResourceLocation *WitchRenderer::getTextureLocation(shared_ptr entity) +{ + return &WITCH_LOCATION; +} + +void WitchRenderer::additionalRendering(shared_ptr entity, float a) +{ + shared_ptr mob = dynamic_pointer_cast(entity); + + float brightness = SharedConstants::TEXTURE_LIGHTING ? 1 : mob->getBrightness(a); + glColor3f(brightness, brightness, brightness); + + MobRenderer::additionalRendering(mob, a); + + shared_ptr item = mob->getCarriedItem(); + + if (item != NULL) + { + glPushMatrix(); + + if (model->young) + { + float s = 0.5f; + glTranslatef(0 / 16.0f, 10 / 16.0f, 0 / 16.0f); + glRotatef(-20, -1, 0, 0); + glScalef(s, s, s); + } + + witchModel->nose->translateTo(1 / 16.0f); + glTranslatef(-1 / 16.0f, 8.5f / 16.0f, 3.5f / 16.0f); + + if (item->id < 256 && TileRenderer::canRender(Tile::tiles[item->id]->getRenderShape())) + { + float s = 8 / 16.0f; + glTranslatef(-0 / 16.0f, 3 / 16.0f, -5 / 16.0f); + s *= 0.75f; + glRotatef(20, 1, 0, 0); + glRotatef(45, 0, 1, 0); + glScalef(s, -s, s); + } + else if (item->id == Item::bow->id) + { + float s = 10 / 16.0f; + glTranslatef(0 / 16.0f, 2 / 16.0f, 5 / 16.0f); + glRotatef(-20, 0, 1, 0); + glScalef(s, -s, s); + glRotatef(-100, 1, 0, 0); + glRotatef(45, 0, 1, 0); + } + else if (Item::items[item->id]->isHandEquipped()) + { + float s = 10 / 16.0f; + if (Item::items[item->id]->isMirroredArt()) + { + glRotatef(180, 0, 0, 1); + glTranslatef(0, -2 / 16.0f, 0); + } + translateWeaponItem(); + glScalef(s, -s, s); + glRotatef(-100, 1, 0, 0); + glRotatef(45, 0, 1, 0); + } + else + { + float s = 6 / 16.0f; + glTranslatef(+4 / 16.0f, +3 / 16.0f, -3 / 16.0f); + glScalef(s, s, s); + glRotatef(60, 0, 0, 1); + glRotatef(-90, 1, 0, 0); + glRotatef(20, 0, 0, 1); + } + + glRotatef(-15, 1, 0, 0); + glRotatef(40, 0, 0, 1); + + entityRenderDispatcher->itemInHandRenderer->renderItem(mob, item, 0); + if (item->getItem()->hasMultipleSpriteLayers()) + { + entityRenderDispatcher->itemInHandRenderer->renderItem(mob, item, 1); + } + glPopMatrix(); + } +} + +void WitchRenderer::translateWeaponItem() +{ + glTranslatef(0, 3 / 16.0f, 0); +} + +void WitchRenderer::scale(shared_ptr mob, float a) +{ + float s = 15 / 16.0f; + glScalef(s, s, s); +} \ No newline at end of file -- cgit v1.2.3