the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
1#include "stdafx.h"
2#include "EntityRenderDispatcher.h"
3#include "WitchRenderer.h"
4#include "WitchModel.h"
5#include "ModelPart.h"
6#include "..\Minecraft.World\net.minecraft.world.item.h"
7
8ResourceLocation WitchRenderer::WITCH_LOCATION = ResourceLocation(TN_MOB_WITCH);
9
10WitchRenderer::WitchRenderer() : MobRenderer(new WitchModel(0), 0.5f)
11{
12 witchModel = dynamic_cast<WitchModel*>(model);
13}
14
15void WitchRenderer::render(shared_ptr<Entity> entity, double x, double y, double z, float rot, float a)
16{
17 shared_ptr<Mob> mob = dynamic_pointer_cast<Mob>(entity);
18
19 shared_ptr<ItemInstance> item = mob->getCarriedItem();
20
21 witchModel->holdingItem = item != NULL;
22 MobRenderer::render(mob, x, y, z, rot, a);
23}
24
25ResourceLocation *WitchRenderer::getTextureLocation(shared_ptr<Entity> entity)
26{
27 return &WITCH_LOCATION;
28}
29
30void WitchRenderer::additionalRendering(shared_ptr<LivingEntity> entity, float a)
31{
32 shared_ptr<Mob> mob = dynamic_pointer_cast<Mob>(entity);
33
34 float brightness = SharedConstants::TEXTURE_LIGHTING ? 1 : mob->getBrightness(a);
35 glColor3f(brightness, brightness, brightness);
36
37 MobRenderer::additionalRendering(mob, a);
38
39 shared_ptr<ItemInstance> item = mob->getCarriedItem();
40
41 if (item != NULL)
42 {
43 glPushMatrix();
44
45 if (model->young)
46 {
47 float s = 0.5f;
48 glTranslatef(0 / 16.0f, 10 / 16.0f, 0 / 16.0f);
49 glRotatef(-20, -1, 0, 0);
50 glScalef(s, s, s);
51 }
52
53 witchModel->nose->translateTo(1 / 16.0f);
54 glTranslatef(-1 / 16.0f, 8.5f / 16.0f, 3.5f / 16.0f);
55
56 if (item->id < 256 && TileRenderer::canRender(Tile::tiles[item->id]->getRenderShape()))
57 {
58 float s = 8 / 16.0f;
59 glTranslatef(-0 / 16.0f, 3 / 16.0f, -5 / 16.0f);
60 s *= 0.75f;
61 glRotatef(20, 1, 0, 0);
62 glRotatef(45, 0, 1, 0);
63 glScalef(s, -s, s);
64 }
65 else if (item->id == Item::bow->id)
66 {
67 float s = 10 / 16.0f;
68 glTranslatef(0 / 16.0f, 2 / 16.0f, 5 / 16.0f);
69 glRotatef(-20, 0, 1, 0);
70 glScalef(s, -s, s);
71 glRotatef(-100, 1, 0, 0);
72 glRotatef(45, 0, 1, 0);
73 }
74 else if (Item::items[item->id]->isHandEquipped())
75 {
76 float s = 10 / 16.0f;
77 if (Item::items[item->id]->isMirroredArt())
78 {
79 glRotatef(180, 0, 0, 1);
80 glTranslatef(0, -2 / 16.0f, 0);
81 }
82 translateWeaponItem();
83 glScalef(s, -s, s);
84 glRotatef(-100, 1, 0, 0);
85 glRotatef(45, 0, 1, 0);
86 }
87 else
88 {
89 float s = 6 / 16.0f;
90 glTranslatef(+4 / 16.0f, +3 / 16.0f, -3 / 16.0f);
91 glScalef(s, s, s);
92 glRotatef(60, 0, 0, 1);
93 glRotatef(-90, 1, 0, 0);
94 glRotatef(20, 0, 0, 1);
95 }
96
97 glRotatef(-15, 1, 0, 0);
98 glRotatef(40, 0, 0, 1);
99
100 entityRenderDispatcher->itemInHandRenderer->renderItem(mob, item, 0);
101 if (item->getItem()->hasMultipleSpriteLayers())
102 {
103 entityRenderDispatcher->itemInHandRenderer->renderItem(mob, item, 1);
104 }
105 glPopMatrix();
106 }
107}
108
109void WitchRenderer::translateWeaponItem()
110{
111 glTranslatef(0, 3 / 16.0f, 0);
112}
113
114void WitchRenderer::scale(shared_ptr<LivingEntity> mob, float a)
115{
116 float s = 15 / 16.0f;
117 glScalef(s, s, s);
118}