diff --git a/Minecraft.Client/ItemInHandRenderer.cpp b/Minecraft.Client/ItemInHandRenderer.cpp index 9faebffd..d7740072 100644 --- a/Minecraft.Client/ItemInHandRenderer.cpp +++ b/Minecraft.Client/ItemInHandRenderer.cpp @@ -228,7 +228,7 @@ void ItemInHandRenderer::renderItem(shared_ptr mob, shared_ptrid]->getColor(item, layer); float red = ((col >> 16) & 0xff) / 255.0f; @@ -240,15 +240,20 @@ void ItemInHandRenderer::renderItem(shared_ptr mob, shared_ptrid == Item::skull_Id && SkullTileRenderer::instance != nullptr) + if (dynamic_cast(item->getItem()) != nullptr && SkullTileRenderer::instance != nullptr) { - wstring extra = L""; + std::wstring extra = L""; if (item->hasTag() && item->getTag()->contains(L"SkullOwner")) extra = item->getTag()->getString(L"SkullOwner"); - SkullTileRenderer::instance->renderSkull(-0.5f, 0.0f, -0.5f, Facing::UP, 0.0f, item->getAuxValue(), extra); + glRotatef(-45, 1, 1, 0); + glRotatef(-70, 0, 1, 0); // lower = rotate left + glRotatef(5, 1, 0, 0); + glRotatef(-20, 0, 0, 1); + SkullTileRenderer::instance->renderSkull(-1.0f, -0.9f, 0.0f, Facing::UP, 0.0f, item->getAuxValue(), extra); + glScalef(0.5f, 0.5f, 0.5f); glPopMatrix(); return; - }*/ + } Tile *tile = Tile::tiles[item->id]; if ((item->getIconType() == Icon::TYPE_TERRAIN && tile != nullptr && TileRenderer::canRender(tile->getRenderShape())) && item->id != AirTile::barrier_Id) @@ -692,16 +697,18 @@ void ItemInHandRenderer::render(float a) renderItem(player, item, 1, false); } - //else if (item->id == Item::skull_Id && SkullTileRenderer::instance != nullptr) - //{ - // wstring extra = L""; - // if (item->hasTag() && item->getTag()->contains(L"SkullOwner")) - // extra = item->getTag()->getString(L"SkullOwner"); - // glEnable(GL_RESCALE_NORMAL); - // glScalef(2.0f, 2.0f, 2.0f); - // SkullTileRenderer::instance->renderSkull(-0.5f, 0.0f, -0.5f, Facing::UP, 0.0f, item->getAuxValue(), extra); - // glDisable(GL_RESCALE_NORMAL); - //} + else if (item->id == Item::skull_Id && SkullTileRenderer::instance != nullptr) + { + std::wstring extra = L""; + if (item->hasTag() && item->getTag()->contains(L"SkullOwner")) + extra = item->getTag()->getString(L"SkullOwner"); + glRotatef(-49.5f, 0.0f, 1.0f, 0.0f); + glRotatef(5.0f, 0.0f, 0.0f, 1.0f); + glRotatef(5.0f, 1.0f, 0.0f, 0.0f); + SkullTileRenderer::instance->renderSkull(-1.0f, 0.26f, 0.35f, Facing::UP, 0.0f, item->getAuxValue(), extra); + glPopMatrix(); + return; + } else { renderItem(player, item, 0, false); diff --git a/Minecraft.Client/ItemRenderer.cpp b/Minecraft.Client/ItemRenderer.cpp index 6ff0ea47..ae6e730d 100644 --- a/Minecraft.Client/ItemRenderer.cpp +++ b/Minecraft.Client/ItemRenderer.cpp @@ -2,6 +2,9 @@ #include "ItemRenderer.h" #include "TileRenderer.h" #include "EntityRenderDispatcher.h" +#include "SkullTileRenderer.h" +#include "../Minecraft.World/SkullItem.h" +#include "../Minecraft.World/Facing.h" #include "../Minecraft.World/JavaMath.h" #include "../Minecraft.World/net.minecraft.world.entity.item.h" #include "../Minecraft.World/net.minecraft.world.item.h" @@ -81,8 +84,17 @@ void ItemRenderer::render(shared_ptr _itemEntity, double x, double y, do glEnable(GL_RESCALE_NORMAL); Tile *tile = Tile::tiles[item->id]; + if (dynamic_cast(item->getItem()) != nullptr && SkullTileRenderer::instance != nullptr) + { + std::wstring extra = L""; + if (item->hasTag() && item->getTag()->contains(L"SkullOwner")) + extra = item->getTag()->getString(L"SkullOwner"); - if ((item->getIconType() == Icon::TYPE_TERRAIN && tile != nullptr && TileRenderer::canRender(tile->getRenderShape())) && item->id != Tile::barrier_Id) + glRotatef(spin, 0, 1, 0); + glScalef(0.5f, 0.5f, 0.5f); + SkullTileRenderer::instance->renderSkull(-0.5f, -0.25f, -0.5f, Facing::UP, 0.0f, item->getAuxValue(), extra); + } + else if ((item->getIconType() == Icon::TYPE_TERRAIN && tile != nullptr && TileRenderer::canRender(tile->getRenderShape())) && item->id != Tile::barrier_Id) { glRotatef(spin, 0, 1, 0); @@ -372,6 +384,25 @@ void ItemRenderer::renderGuiItem(Font *font, Textures *textures, shared_ptrgetAuxValue(); Icon *itemIcon = item->getIcon(); + if (dynamic_cast(item->getItem()) != nullptr && SkullTileRenderer::instance != nullptr) + { + std::wstring extra = L""; + if (item->hasTag() && item->getTag()->contains(L"SkullOwner")) + { + extra = item->getTag()->getString(L"SkullOwner"); + } + + glPushMatrix(); + glTranslatef(x, y, 0.0f); + glScalef(16.0f * fScaleX, 16.0f * fScaleY, 1.0f); + glTranslatef(0.5f, 0.725f, 0.0f); + glRotatef(180.0f - 30.0f, 1.0f, 0.0f, 0.0f); + glRotatef(-45.0f, 0.0f, 1.0f, 0.0f); + SkullTileRenderer::instance->renderSkull(-0.5f, 0.0f, -0.5f, Facing::UP, 0.0f, itemAuxValue, extra); + glPopMatrix(); + return; + } + if ((item->getIconType() == Icon::TYPE_TERRAIN && TileRenderer::canRender(Tile::tiles[itemId]->getRenderShape())) && itemId != Tile::barrier_Id) { PIXBeginNamedEvent(0,"3D gui item render %d\n",itemId);