aboutsummaryrefslogtreecommitdiff
path: root/Minecraft.Client/ItemInHandRenderer.cpp
diff options
context:
space:
mode:
authorqwasdrizzel <145519042+qwasdrizzel@users.noreply.github.com>2026-03-16 21:44:26 -0500
committerGitHub <noreply@github.com>2026-03-16 21:44:26 -0500
commitce739f6045ec72127491286ea3f3f21e537c1b55 (patch)
treef33bd42a47c1b4a7b2153a7fb77127ee3b407db9 /Minecraft.Client/ItemInHandRenderer.cpp
parent255a18fe8e9b57377975f82e2b227afe2a12eda0 (diff)
parent5a59f5d146b43811dde6a5a0245ee9875d7b5cd1 (diff)
Merge branch 'smartcmd:main' into main
Diffstat (limited to 'Minecraft.Client/ItemInHandRenderer.cpp')
-rw-r--r--Minecraft.Client/ItemInHandRenderer.cpp55
1 files changed, 34 insertions, 21 deletions
diff --git a/Minecraft.Client/ItemInHandRenderer.cpp b/Minecraft.Client/ItemInHandRenderer.cpp
index 78253705..13d4fc20 100644
--- a/Minecraft.Client/ItemInHandRenderer.cpp
+++ b/Minecraft.Client/ItemInHandRenderer.cpp
@@ -226,9 +226,9 @@ void ItemInHandRenderer::renderItem(shared_ptr<LivingEntity> mob, shared_ptr<Ite
{
// 4J - code borrowed from render method below, although not factoring in brightness as that should already be being taken into account
// by texture lighting. This is for colourising things held in 3rd person view.
- if ( (setColor) && (item != NULL) )
+ if ( (setColor) && (item != nullptr) )
{
- int col = Item::items[item->id]->getColor(item,0);
+ int col = Item::items[item->id]->getColor(item, layer);
float red = ((col >> 16) & 0xff) / 255.0f;
float g = ((col >> 8) & 0xff) / 255.0f;
float b = ((col) & 0xff) / 255.0f;
@@ -238,7 +238,7 @@ void ItemInHandRenderer::renderItem(shared_ptr<LivingEntity> mob, shared_ptr<Ite
glPushMatrix();
Tile *tile = Tile::tiles[item->id];
- if (item->getIconType() == Icon::TYPE_TERRAIN && tile != NULL && TileRenderer::canRender(tile->getRenderShape()))
+ if (item->getIconType() == Icon::TYPE_TERRAIN && tile != nullptr && TileRenderer::canRender(tile->getRenderShape()))
{
MemSect(31);
minecraft->textures->bindTexture(minecraft->textures->getTextureLocation(Icon::TYPE_TERRAIN));
@@ -249,7 +249,7 @@ void ItemInHandRenderer::renderItem(shared_ptr<LivingEntity> mob, shared_ptr<Ite
{
MemSect(31);
Icon *icon = mob->getItemInHandIcon(item, layer);
- if (icon == NULL)
+ if (icon == nullptr)
{
glPopMatrix();
MemSect(0);
@@ -299,7 +299,7 @@ void ItemInHandRenderer::renderItem(shared_ptr<LivingEntity> mob, shared_ptr<Ite
renderItem3D(t, u0, v0, u1, v1, icon->getSourceWidth(), icon->getSourceHeight(), 1 / 16.0f, false, bIsTerrain);
- if (item != NULL && item->isFoil() && layer == 0)
+ if (item != nullptr && item->isFoil() && layer == 0)
{
glDepthFunc(GL_EQUAL);
glDisable(GL_LIGHTING);
@@ -373,6 +373,11 @@ void ItemInHandRenderer::render(float a)
float h = oHeight + (height - oHeight) * a;
shared_ptr<Player> player = minecraft->player;
+ if (player == nullptr)
+ {
+ return;
+ }
+
// 4J - added so we can adjust the position of the hands for horizontal & vertical split screens
float fudgeX = 0.0f;
float fudgeY = 0.0f;
@@ -425,7 +430,7 @@ void ItemInHandRenderer::render(float a)
glMultiTexCoord2f(GL_TEXTURE1, u / 1.0f, v / 1.0f);
glColor4f(1, 1, 1, 1);
}
- if (item != NULL)
+ if (item != nullptr)
{
int col = Item::items[item->id]->getColor(item,0);
float red = ((col >> 16) & 0xff) / 255.0f;
@@ -439,7 +444,7 @@ void ItemInHandRenderer::render(float a)
glColor4f(br, br, br, 1);
}
- if (item != NULL && item->id == Item::map->id)
+ if (item != nullptr && item->id == Item::map->id)
{
glPushMatrix();
float d = 0.8f;
@@ -481,13 +486,13 @@ void ItemInHandRenderer::render(float a)
glPushMatrix();
glTranslatef(-0.0f, -0.6f, 1.1f * flip);
- glRotatef((float)(-45 * flip), 1, 0, 0);
+ glRotatef(static_cast<float>(-45 * flip), 1, 0, 0);
glRotatef(-90, 0, 0, 1);
glRotatef(59, 0, 0, 1);
- glRotatef((float)(-65 * flip), 0, 1, 0);
+ glRotatef(static_cast<float>(-65 * flip), 0, 1, 0);
EntityRenderer *er = EntityRenderDispatcher::instance->getRenderer(minecraft->player);
- PlayerRenderer *playerRenderer = (PlayerRenderer *) er;
+ PlayerRenderer *playerRenderer = static_cast<PlayerRenderer *>(er);
float ss = 1;
glScalef(ss, ss, ss);
@@ -530,20 +535,20 @@ void ItemInHandRenderer::render(float a)
t->begin();
int vo = 7;
t->normal(0,0,-1);
- t->vertexUV((float)(0 - vo), (float)( 128 + vo), (float)( 0), (float)( 0), (float)( 1));
- t->vertexUV((float)(128 + vo), (float)( 128 + vo), (float)( 0), (float)( 1), (float)( 1));
- t->vertexUV((float)(128 + vo), (float)( 0 - vo), (float)( 0), (float)( 1), (float)( 0));
- t->vertexUV((float)(0 - vo), (float)( 0 - vo), (float)( 0), (float)( 0), (float)( 0));
+ t->vertexUV(static_cast<float>(0 - vo), static_cast<float>(128 + vo), static_cast<float>(0), static_cast<float>(0), static_cast<float>(1));
+ t->vertexUV(static_cast<float>(128 + vo), static_cast<float>(128 + vo), static_cast<float>(0), static_cast<float>(1), static_cast<float>(1));
+ t->vertexUV(static_cast<float>(128 + vo), static_cast<float>(0 - vo), static_cast<float>(0), static_cast<float>(1), static_cast<float>(0));
+ t->vertexUV(static_cast<float>(0 - vo), static_cast<float>(0 - vo), static_cast<float>(0), static_cast<float>(0), static_cast<float>(0));
t->end();
shared_ptr<MapItemSavedData> data = Item::map->getSavedData(item, minecraft->level);
PIXBeginNamedEvent(0,"Minimap render");
- if(data != NULL) minimap->render(minecraft->player, minecraft->textures, data, minecraft->player->entityId);
+ if(data != nullptr) minimap->render(minecraft->player, minecraft->textures, data, minecraft->player->entityId);
PIXEndNamedEvent();
glPopMatrix();
}
- else if (item != NULL)
+ else if (item != nullptr)
{
glPushMatrix();
float d = 0.8f;
@@ -617,7 +622,7 @@ void ItemInHandRenderer::render(float a)
glRotatef(-8, 1, 0, 0);
glTranslatef(-0.9f, 0.2f, 0.0f);
float timeHeld = (item->getUseDuration() - (player->getUseItemDuration() - a + 1));
- float pow = timeHeld / (float) (BowItem::MAX_DRAW_DURATION);
+ float pow = timeHeld / static_cast<float>(BowItem::MAX_DRAW_DURATION);
pow = ((pow * pow) + pow * 2) / 3;
if (pow > 1) pow = 1;
if (pow > 0.1f)
@@ -706,7 +711,7 @@ void ItemInHandRenderer::render(float a)
glTranslatef(5.6f, 0, 0);
EntityRenderer *er = EntityRenderDispatcher::instance->getRenderer(minecraft->player);
- PlayerRenderer *playerRenderer = (PlayerRenderer *) er;
+ PlayerRenderer *playerRenderer = static_cast<PlayerRenderer *>(er);
float ss = 1;
glScalef(ss, ss, ss);
MemSect(31);
@@ -762,7 +767,7 @@ void ItemInHandRenderer::renderScreenEffect(float a)
}
}
- if (Tile::tiles[tile] != NULL) renderTex(a, Tile::tiles[tile]->getTexture(2));
+ if (Tile::tiles[tile] != nullptr) renderTex(a, Tile::tiles[tile]->getTexture(2));
}
if (minecraft->player->isUnderLiquid(Material::water))
@@ -905,11 +910,11 @@ void ItemInHandRenderer::tick()
shared_ptr<ItemInstance> nextTile = player->inventory->getSelected();
bool matches = lastSlot == player->inventory->selected && nextTile == selectedItem;
- if (selectedItem == NULL && nextTile == NULL)
+ if (selectedItem == nullptr && nextTile == nullptr)
{
matches = true;
}
- if (nextTile != NULL && selectedItem != NULL && nextTile != selectedItem && nextTile->id == selectedItem->id && nextTile->getAuxValue() == selectedItem->getAuxValue())
+ if (nextTile != nullptr && selectedItem != nullptr && nextTile != selectedItem && nextTile->id == selectedItem->id && nextTile->getAuxValue() == selectedItem->getAuxValue())
{
selectedItem = nextTile;
matches = true;
@@ -930,6 +935,14 @@ void ItemInHandRenderer::tick()
}
+void ItemInHandRenderer::reset()
+{
+ selectedItem = nullptr;
+ lastSlot = -1;
+ height = 0.0f;
+ oHeight = 0.0f;
+}
+
void ItemInHandRenderer::itemPlaced()
{
height = 0;