Jantek Posted March 27 Report Posted March 27 I can't get a texture overlay to work on an entity texture. In vanilla code I saw texture overlays are done on blocks and items, none on entities. On the other hand the official API for CompositeTexture class doesn't state anywhere that it should be limited only to blocks and entities. A simple reproducible example, let's modify fox-adult.json (not using json patching to make it even simpler). Let's add a winter (arctic) overlay to every fox. Vanilla json (fox-adult.json): [...] client: { renderer: "Shape", shape: { base: "entity/animal/mammal/fox/fox-{gender}" }, texture: { base: "entity/animal/mammal/fox/{type}-{gender}" }, [...] a legacy-themed edit: [...] client: { renderer: "Shape", shape: { base: "entity/animal/mammal/fox/fox-{gender}" }, texture: { base: "entity/animal/mammal/fox/{type}-{gender}", overlays: [ "entity/animal/mammal/fox/arctic-{gender}" ] }, [...] a modern BlendedOverlay edit: [...] client: { renderer: "Shape", shape: { base: "entity/animal/mammal/fox/fox-{gender}" }, texture: { base: "entity/animal/mammal/fox/{type}-{gender}", blendedoverlays: [ { base: "entity/animal/mammal/fox/arctic-{gender}" } ] }, [...] And that, when loading a world (1.21.6 stable, no other mods), causes this error log: 27.3.2026 20:13:32 [Client Fatal] Caught unhandled exception in EntityTextureCollection thread. Exiting game. 27.3.2026 20:13:32 [Client Error] Exception: The given key 'game:entity/animal/mammal/fox/red-male++0~game:entity/animal/mammal/fox/arctic-male' was not present in the dictionary. at System.Collections.Generic.Dictionary`2.get_Item(TKey key) at Vintagestory.API.Datastructures.OrderedDictionary`2.get_Item(TKey key) in VintagestoryApi\Datastructures\Dictionary\OrderedDictionary.cs:line 253 at Vintagestory.Client.NoObf.EntityTextureAtlasManager.CollectTextures(List`1 entityClasses) in VintagestoryLib\Client\Render\Atlas\EntityTextureAtlasManager.cs:line 94 at Vintagestory.Client.NoObf.ClientSystemStartup.loadAsyncEntityAtlas(List`1 entityClasses) in VintagestoryLib\Client\Systems\Startup.cs:line 559 27.3.2026 20:13:32 [Client Warning] =============================================================== 27.3.2026 20:13:34 [Client Fatal] Game Version: v1.21.6 (Stable) 27.03.2026 20:13:34: Critical error occurred Loaded Mods: game@1.21.6, toomanyteeth@1.0.0, creative@1.21.6, survival@1.21.6 System.NullReferenceException: Object reference not set to an instance of an object. at Vintagestory.GameContent.EntityBehaviorTexturedClothing.GetTextureSource(EnumHandling& handling) in VSEssentials\Entity\Behavior\EntityBehaviorTexturedClothing.cs:line 63 at Vintagestory.API.Common.Entities.Entity.GetTextureSource() in VintagestoryApi\Common\Entity\Entity.cs:line 1209 at Vintagestory.GameContent.EntityShapeRenderer.GetTextureSource() in VSEssentials\EntityRenderer\EntityShapeRenderer.cs:line 297 at Vintagestory.GameContent.EntityPlayerShapeRenderer.TesselateShape() in VSEssentials\EntityRenderer\EntityPlayerShapeRenderer.cs:line 58 at Vintagestory.GameContent.EntityShapeRenderer.BeforeRender(Single dt) in VSEssentials\EntityRenderer\EntityShapeRenderer.cs:line 350 at Vintagestory.GameContent.EntityPlayerShapeRenderer.BeforeRender(Single dt) in VSEssentials\EntityRenderer\EntityPlayerShapeRenderer.cs:line 165 at Vintagestory.Client.NoObf.SystemRenderEntities.OnBeforeRender(Single dt) in VintagestoryLib\Client\Systems\Render\RenderEntities.cs:line 71 at Vintagestory.API.Client.DummyRenderer.OnRenderFrame(Single deltaTime, EnumRenderStage stage) in VintagestoryApi\Client\API\IClientEventAPI.cs:line 87 at Vintagestory.Client.NoObf.ClientEventManager.TriggerRenderStage(EnumRenderStage stage, Single dt) in VintagestoryLib\Client\Util\ClientEventManager.cs:line 257 at Vintagestory.Client.NoObf.ClientMain.TriggerRenderStage(EnumRenderStage stage, Single dt) in VintagestoryLib\Client\ClientMain.cs:line 827 at Vintagestory.Client.NoObf.ClientMain.MainRenderLoop(Single dt) in VintagestoryLib\Client\ClientMain.cs:line 879 at Vintagestory.Client.NoObf.ClientMain.MainGameLoop(Single deltaTime) in VintagestoryLib\Client\ClientMain.cs:line 751 at Vintagestory.Client.GuiScreenRunningGame.RenderToPrimary(Single dt) in VintagestoryLib\Client\MainMenu\Screens\GuiScreenRunningGame.cs:line 172 at Vintagestory.Client.ScreenManager.Render(Single dt) in VintagestoryLib\Client\ScreenManager.cs:line 719 at Vintagestory.Client.ScreenManager.OnNewFrame(Single dt) in VintagestoryLib\Client\ScreenManager.cs:line 663 at Vintagestory.Client.NoObf.ClientPlatformWindows.window_RenderFrame(FrameEventArgs e) in VintagestoryLib\Client\ClientPlatform\GameWindow.cs:line 112 at OpenTK.Windowing.Desktop.GameWindow.Run() at Vintagestory.Client.ClientProgram.Start(ClientProgramArgs args, String[] rawArgs) in VintagestoryLib\Client\ClientProgram.cs:line 347 at Vintagestory.Client.ClientProgram.<>c__DisplayClass10_0.<.ctor>b__1() in VintagestoryLib\Client\ClientProgram.cs:line 131 at Vintagestory.ClientNative.CrashReporter.Start(ThreadStart start) in VintagestoryLib\Client\ClientPlatform\ClientNative\CrashReporter.cs:line 104 at Vintagestory.Client.ClientProgram..ctor(String[] rawArgs) in VintagestoryLib\Client\ClientProgram.cs:line 131 at Vintagestory.Client.ClientProgram.Main(String[] rawArgs) in VintagestoryLib\Client\ClientProgram.cs:line 51 at Vintagestory.ClientWindows.Main(String[] args) in VintagestoryClient\Windows\ClientWindows.cs:line 11 So, am I missing something? Please help :v Thanks!
Recommended Posts