From 37c5001f987b93ef9c44f52fe7c740be364fd1cd Mon Sep 17 00:00:00 2001 From: cx384 Date: Sat, 10 Jan 2026 10:52:14 +0100 Subject: [PATCH] Fix plantlike wield texture overlay no_texture.png (#16829) This fixed a regression introduced by 7a73d37a. --- src/client/wieldmesh.cpp | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/client/wieldmesh.cpp b/src/client/wieldmesh.cpp index 1828c29b52..3010346785 100644 --- a/src/client/wieldmesh.cpp +++ b/src/client/wieldmesh.cpp @@ -121,7 +121,7 @@ static scene::IMesh *createExtrusionMesh(int resolution_x, int resolution_y) } static video::ITexture *extractTexture(const TileDef &def, const TileLayer &layer, - ITextureSource *tsrc) + ITextureSource *tsrc, bool fallback = true) { // If animated take first frame from tile layer (so we don't have to handle // that manually), otherwise look up by name. @@ -130,7 +130,10 @@ static video::ITexture *extractTexture(const TileDef &def, const TileLayer &laye assert(ret->getType() == video::ETT_2D); return ret; } - return tsrc->getTextureForMesh(def.name.empty() ? "no_texture.png" : def.name); + if (!def.name.empty()) + return tsrc->getTextureForMesh(def.name); + + return fallback ? tsrc->getTextureForMesh("no_texture.png") : nullptr; } void getAdHocNodeShader(video::SMaterial &mat, IShaderSource *shdsrc, @@ -273,7 +276,7 @@ void WieldMeshSceneNode::setExtruded(const TileDef &d0, const TileLayer &l0, v3f wield_scale, ITextureSource *tsrc) { setExtruded(extractTexture(d0, l0, tsrc), - extractTexture(d1, l1, tsrc), wield_scale); + extractTexture(d1, l1, tsrc, false), wield_scale); // Add color m_buffer_info.clear(); m_buffer_info.emplace_back(0, l0); @@ -682,7 +685,7 @@ void createItemMesh(Client *client, const ItemDefinition &def, const TileLayer &l1 = v.tiles[0].layers[1]; mesh = getExtrudedMesh( extractTexture(f.tiledef[0], l0, tsrc), - extractTexture(f.tiledef[1], l1, tsrc)); + extractTexture(f.tiledef[1], l1, tsrc, false)); // Add color result->buffer_info.emplace_back(0, l0); result->buffer_info.emplace_back(1, l1);