From 53ada5f3a5c82fada4314da126aebdb1f7c27ad1 Mon Sep 17 00:00:00 2001 From: MCbabel Date: Sun, 8 Mar 2026 03:28:17 +0100 Subject: [PATCH] Fix horse rendering: culling when looking up + fire debug texture - 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 --- Minecraft.Client/HorseRenderer.cpp | 11 +++++++++-- Minecraft.Client/LevelRenderer.cpp | 3 ++- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/Minecraft.Client/HorseRenderer.cpp b/Minecraft.Client/HorseRenderer.cpp index e01542d5a..5bbf76616 100644 --- a/Minecraft.Client/HorseRenderer.cpp +++ b/Minecraft.Client/HorseRenderer.cpp @@ -55,8 +55,15 @@ void HorseRenderer::renderModel(shared_ptr 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) diff --git a/Minecraft.Client/LevelRenderer.cpp b/Minecraft.Client/LevelRenderer.cpp index c1b4850c9..594ff4ea9 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) )