aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarlian <84173858+MCbabel@users.noreply.github.com>2026-03-08 05:30:44 +0100
committerGitHub <noreply@github.com>2026-03-07 22:30:44 -0600
commitcfcec48ae1ea79fe27e40c6258cf4b7f31753209 (patch)
treecf6eeea69b4a863e9680a9b402438267e47fbfe1
parent087b7e7abfe81dd7f0fdcdea36ac9f245950df1a (diff)
Fix horse rendering: culling when looking up + fire debug texture (#899)
- Skip frustum culling for the entity the player is currently riding, preventing the horse from disappearing when looking up (fixes a bug reported on Discord) - Fix HorseRenderer::bindTexture() to delegate to base class for single textures (fire atlas, enchant glint), only using bindTextureLayers() for multi-layer horse textures Co-authored-by: MCbabel <MCbabel@users.noreply.github.com>
-rw-r--r--Minecraft.Client/HorseRenderer.cpp11
-rw-r--r--Minecraft.Client/LevelRenderer.cpp3
2 files changed, 11 insertions, 3 deletions
diff --git a/Minecraft.Client/HorseRenderer.cpp b/Minecraft.Client/HorseRenderer.cpp
index e01542d5..5bbf7661 100644
--- a/Minecraft.Client/HorseRenderer.cpp
+++ b/Minecraft.Client/HorseRenderer.cpp
@@ -55,8 +55,15 @@ void HorseRenderer::renderModel(shared_ptr<LivingEntity> mob, float wp, float ws
void HorseRenderer::bindTexture(ResourceLocation *location)
{
- // Set up (potentially) multiple texture layers for the horse
- entityRenderDispatcher->textures->bindTextureLayers(location);
+ if (location->getTextureCount() > 1)
+ {
+ // Set up multiple texture layers for the horse
+ entityRenderDispatcher->textures->bindTextureLayers(location);
+ }
+ else
+ {
+ EntityRenderer::bindTexture(location);
+ }
}
ResourceLocation *HorseRenderer::getTextureLocation(shared_ptr<Entity> entity)
diff --git a/Minecraft.Client/LevelRenderer.cpp b/Minecraft.Client/LevelRenderer.cpp
index c1b4850c..594ff4ea 100644
--- a/Minecraft.Client/LevelRenderer.cpp
+++ b/Minecraft.Client/LevelRenderer.cpp
@@ -545,7 +545,8 @@ void LevelRenderer::renderEntities(Vec3 *cam, Culler *culler, float a)
for (auto& entity : entities)
{
- bool shouldRender = (entity->shouldRender(cam) && (entity->noCulling || culler->isVisible(entity->bb)));
+ bool isPlayerVehicle = (entity == mc->cameraTargetPlayer->riding);
+ bool shouldRender = (entity->shouldRender(cam) && (entity->noCulling || isPlayerVehicle || culler->isVisible(entity->bb)));
// Render the mob if the mob's leash holder is within the culler
if ( !shouldRender && entity->instanceof(eTYPE_MOB) )