From 73145785d4f97a5410249a61e450da9bf716d88e Mon Sep 17 00:00:00 2001 From: Fireblade <72758695+Firebladedoge229@users.noreply.github.com> Date: Mon, 1 Jun 2026 00:34:45 -0400 Subject: [PATCH] fix: misc issues + crashes --- .../Common/UI/UIScene_JoinMenu.cpp | 1 + Minecraft.Client/LivingEntityRenderer.cpp | 2 ++ Minecraft.World/ArrayWithLength.h | 22 +++++++++++++++++-- Minecraft.World/ChestTile.cpp | 12 ++++++++++ Minecraft.World/ChestTile.h | 2 ++ Minecraft.World/Entity.cpp | 2 +- 6 files changed, 38 insertions(+), 3 deletions(-) diff --git a/Minecraft.Client/Common/UI/UIScene_JoinMenu.cpp b/Minecraft.Client/Common/UI/UIScene_JoinMenu.cpp index 48ee615e..e2daddf5 100644 --- a/Minecraft.Client/Common/UI/UIScene_JoinMenu.cpp +++ b/Minecraft.Client/Common/UI/UIScene_JoinMenu.cpp @@ -131,6 +131,7 @@ void UIScene_JoinMenu::updateTooltips() void UIScene_JoinMenu::tick() { + if (this == nullptr) return; if (!m_friendInfoRequestIssued) { ui.NavigateToScene(m_iPad, eUIScene_Timer); diff --git a/Minecraft.Client/LivingEntityRenderer.cpp b/Minecraft.Client/LivingEntityRenderer.cpp index c6e7687e..7d832cec 100644 --- a/Minecraft.Client/LivingEntityRenderer.cpp +++ b/Minecraft.Client/LivingEntityRenderer.cpp @@ -227,6 +227,7 @@ void LivingEntityRenderer::render(shared_ptr _mob, double x, double y, d { glColor4f(br, 0, 0, 0.4f); resModel->render(mob, wp, ws, bob, headRot - bodyRot, headRotx, fScale, false); + /* removed in TU24 - Fireblade for (int i = 0; i < MAX_ARMOR_LAYERS; i++) { if (prepareArmorOverlay(mob, i, a) >= 0) @@ -235,6 +236,7 @@ void LivingEntityRenderer::render(shared_ptr _mob, double x, double y, d armor->render(mob, wp, ws, bob, headRot - bodyRot, headRotx, fScale, false); } } + */ } if (((overlayColor >> 24) & 0xff) > 0) diff --git a/Minecraft.World/ArrayWithLength.h b/Minecraft.World/ArrayWithLength.h index ab491aa8..414129bb 100644 --- a/Minecraft.World/ArrayWithLength.h +++ b/Minecraft.World/ArrayWithLength.h @@ -10,8 +10,26 @@ template class arrayWithLength public: T *data; unsigned int length; - arrayWithLength() { data = nullptr; length = 0; } - arrayWithLength(unsigned int elements, bool bClearArray=true) { assert(elements!=0); data = new T[elements]; if(bClearArray){ memset( data,0,sizeof(T)*elements); } this->length = elements; } + + arrayWithLength() { + data = nullptr; + length = 0; + + } + arrayWithLength(unsigned int elements, bool bClearArray=true) { + if (elements == 0) { + data = nullptr; + length = 0; + return; + } + data = new T[elements]; + + if(bClearArray) + { + memset(data, 0, sizeof(T) * elements); + } + this->length = elements; + } // 4J Stu Added this ctor so I static init arrays in the Item derivation tree arrayWithLength( T data[], unsigned int elements) { this->data = data; this->length = elements; } diff --git a/Minecraft.World/ChestTile.cpp b/Minecraft.World/ChestTile.cpp index ff3c0b40..6f6a991b 100644 --- a/Minecraft.World/ChestTile.cpp +++ b/Minecraft.World/ChestTile.cpp @@ -39,6 +39,18 @@ int ChestTile::getRenderShape() return Tile::SHAPE_ENTITYTILE_ANIMATED; } +AABB *ChestTile::getTileAABB(Level *level, int x, int y, int z) +{ + updateShape(level, x, y, z, -1, shared_ptr()); + return Tile::getTileAABB(level, x, y, z); +} + +AABB *ChestTile::getAABB(Level *level, int x, int y, int z) +{ + updateShape(level, x, y, z, -1, shared_ptr()); + return Tile::getAABB(level, x, y, z); +} + void ChestTile::updateShape(LevelSource *level, int x, int y, int z, int forceData, shared_ptr forceEntity) { if (level->getTile(x, y, z - 1) == id) diff --git a/Minecraft.World/ChestTile.h b/Minecraft.World/ChestTile.h index 4fefeea9..974cce04 100644 --- a/Minecraft.World/ChestTile.h +++ b/Minecraft.World/ChestTile.h @@ -30,6 +30,8 @@ public: virtual bool isSolidRender(bool isServerLevel = false); virtual bool isCubeShaped(); virtual int getRenderShape(); + virtual AABB *getTileAABB(Level *level, int x, int y, int z); + virtual AABB *getAABB(Level *level, int x, int y, int z); virtual void updateShape(LevelSource *level, int x, int y, int z, int forceData, shared_ptr forceEntity = shared_ptr()); virtual void onPlace(Level *level, int x, int y, int z); virtual void setPlacedBy(Level *level, int x, int y, int z, shared_ptr by, shared_ptr itemInstance); diff --git a/Minecraft.World/Entity.cpp b/Minecraft.World/Entity.cpp index d5fdbc8c..a9d3ad37 100644 --- a/Minecraft.World/Entity.cpp +++ b/Minecraft.World/Entity.cpp @@ -372,7 +372,7 @@ Entity::Entity(Level *level, bool useSmallId) // 4J - added useSmallId parameter // resetPos(); setPos(0, 0, 0); - if (level != nullptr) + if (level != nullptr && level->dimension != nullptr) { dimension = level->dimension->id; }