From 875809efe0684568eac2f7ca3a6d8e705fee5a7b Mon Sep 17 00:00:00 2001 From: MagicBot Date: Sun, 18 Oct 2026 09:38:55 -0400 Subject: [PATCH] Look up resource templates at loot time instead of caching them on ResourceType ResourceType.template was filled in the enum constructor, which can run before ItemTemplate.templates is loaded, leaving it null. lootBuilding was its only reader and threw on the first non-gold resource. Co-Authored-By: Claude Opus 5.5 --- src/engine/gameManager/BuildingManager.java | 7 ++++++- src/engine/mbEnums.java | 3 --- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/engine/gameManager/BuildingManager.java b/src/engine/gameManager/BuildingManager.java index 587106f3..a57e6dea 100644 --- a/src/engine/gameManager/BuildingManager.java +++ b/src/engine/gameManager/BuildingManager.java @@ -218,7 +218,12 @@ public enum BuildingManager { for (mbEnums.ResourceType resourceType : EnumSet.allOf(mbEnums.ResourceType.class)) { - if (!player.charItemManager.hasRoomInventory(resourceType.template.item_wt)) { + ItemTemplate resourceTemplate = ItemTemplate.templates.get(resourceType.templateID); + + if (resourceTemplate == null) + continue; + + if (!player.charItemManager.hasRoomInventory(resourceTemplate.item_wt)) { ChatManager.chatSystemInfo(player, "You can not carry any more of that item."); return false; } diff --git a/src/engine/mbEnums.java b/src/engine/mbEnums.java index 3466934f..3be3dd7d 100644 --- a/src/engine/mbEnums.java +++ b/src/engine/mbEnums.java @@ -15,7 +15,6 @@ import engine.math.Vector2f; import engine.math.Vector3f; import engine.math.Vector3fImmutable; import engine.objects.AbstractCharacter; -import engine.objects.ItemTemplate; import engine.objects.Shrine; import engine.objects.Zone; import engine.powers.EffectsBase; @@ -2763,7 +2762,6 @@ public class mbEnums { public static HashMap templateHashLookup = new HashMap<>(); public static HashMap resourceHashLookup = new HashMap<>(); public int templateID; - public ItemTemplate template; public int resourceHash; public int templateHash; public int deposit_limit; @@ -2771,7 +2769,6 @@ public class mbEnums { ResourceType(int templateID, int resourceHash, int templateHash, int deposit_limit, int mine_production) { this.templateID = templateID; - this.template = ItemTemplate.templates.get(this.templateID); this.resourceHash = resourceHash; this.templateHash = templateHash; this.deposit_limit = deposit_limit;