the game where you go into mines and start crafting! but for consoles (forked directly from smartcmd's github)
at main 118 lines 3.2 kB view raw
1#include "stdafx.h" 2#include "SkullTileRenderer.h" 3#include "SkeletonHeadModel.h" 4#include "PlayerRenderer.h" 5#include "..\Minecraft.World\SkullTileEntity.h" 6#include "..\Minecraft.World\net.minecraft.h" 7#include "..\Minecraft.World\net.minecraft.world.level.tile.h" 8 9SkullTileRenderer *SkullTileRenderer::instance = NULL; 10 11ResourceLocation SkullTileRenderer::SKELETON_LOCATION = ResourceLocation(TN_MOB_SKELETON); 12ResourceLocation SkullTileRenderer::WITHER_SKELETON_LOCATION = ResourceLocation(TN_MOB_WITHER_SKELETON); 13ResourceLocation SkullTileRenderer::ZOMBIE_LOCATION = ResourceLocation(TN_MOB_ZOMBIE); 14ResourceLocation SkullTileRenderer::CREEPER_LOCATION = ResourceLocation(TN_MOB_CREEPER); 15 16SkullTileRenderer::SkullTileRenderer() 17{ 18 skeletonModel = new SkeletonHeadModel(0, 0, 64, 32); 19 zombieModel = new SkeletonHeadModel(0, 0, 64, 64); 20} 21 22SkullTileRenderer::~SkullTileRenderer() 23{ 24 delete skeletonModel; 25 delete zombieModel; 26} 27 28void SkullTileRenderer::render(shared_ptr<TileEntity> _skull, double x, double y, double z, float a, bool setColor, float alpha, bool useCompiled) 29{ 30 shared_ptr<SkullTileEntity> skull = dynamic_pointer_cast<SkullTileEntity>(_skull); 31 renderSkull((float) x, (float) y, (float) z, skull->getData() & SkullTile::PLACEMENT_MASK, skull->getRotation() * 360 / 16.0f, skull->getSkullType(), skull->getExtraType()); 32} 33 34void SkullTileRenderer::init(TileEntityRenderDispatcher *tileEntityRenderDispatcher) 35{ 36 TileEntityRenderer::init(tileEntityRenderDispatcher); 37 instance = this; 38} 39 40void SkullTileRenderer::renderSkull(float x, float y, float z, int face, float rot, int type, const wstring &extra) 41{ 42 Model *model = skeletonModel; 43 44 switch (type) 45 { 46 case SkullTileEntity::TYPE_WITHER: 47 bindTexture(&WITHER_SKELETON_LOCATION); 48 break; 49 case SkullTileEntity::TYPE_ZOMBIE: 50 bindTexture(&ZOMBIE_LOCATION); 51 //model = zombieModel; 52 break; 53 case SkullTileEntity::TYPE_CHAR: 54 //if (!extra.empty()) 55 //{ 56 // wstring url = "http://skins.minecraft.net/MinecraftSkins/" + StringUtil.stripColor(extra) + ".png"; 57 58 // if (!instance->tileEntityRenderDispatcher->textures->hasHttpTexture(url)) 59 // { 60 // instance->tileEntityRenderDispatcher->textures->addHttpTexture(url, new MobSkinTextureProcessor()); 61 // } 62 63 // bindTexture(url, "/mob/char.png"); 64 //} 65 //else 66 { 67 bindTexture(&PlayerRenderer::DEFAULT_LOCATION); 68 } 69 break; 70 case SkullTileEntity::TYPE_CREEPER: 71 bindTexture(&CREEPER_LOCATION); 72 break; 73 case SkullTileEntity::TYPE_SKELETON: 74 default: 75 bindTexture(&SKELETON_LOCATION); 76 break; 77 } 78 79 glPushMatrix(); 80 glDisable(GL_CULL_FACE); 81 82 if (face != Facing::UP) 83 { 84 switch (face) 85 { 86 case Facing::NORTH: 87 glTranslatef(x + 0.5f, y + .25f, z + 0.74f); 88 break; 89 case Facing::SOUTH: 90 glTranslatef(x + 0.5f, y + .25f, z + 0.26f); 91 rot = 180.0f; 92 break; 93 case Facing::WEST: 94 glTranslatef(x + 0.74f, y + .25f, z + 0.5f); 95 rot = 270.0f; 96 break; 97 case Facing::EAST: 98 default: 99 glTranslatef(x + 0.26f, y + .25f, z + 0.5f); 100 rot = 90.0f; 101 break; 102 } 103 } 104 else 105 { 106 glTranslatef(x + 0.5f, y, z + 0.5f); 107 } 108 109 float scale = 1 / 16.0f; 110 glEnable(GL_RESCALE_NORMAL); 111 glScalef(-1, -1, 1); 112 113 glEnable(GL_ALPHA_TEST); 114 115 model->render(nullptr, 0, 0, 0, rot, 0, scale,true); 116 117 glPopMatrix(); 118}