diff --git a/src/main/java/codechicken/nei/ClientHandler.java b/src/main/java/codechicken/nei/ClientHandler.java index e8a17444..9b87bc21 100644 --- a/src/main/java/codechicken/nei/ClientHandler.java +++ b/src/main/java/codechicken/nei/ClientHandler.java @@ -299,6 +299,10 @@ public class ClientHandler lastworld = null; else if (gui instanceof GuiSelectWorld) NEIClientConfig.reloadSaves(); + else if(gui == null) { + /* prevent WorldClient reference being held in the Gui */ + NEIController.manager = null; + } } lastGui = gui; } @@ -328,6 +332,8 @@ public class ClientHandler if (!Minecraft.getMinecraft().isSingleplayer())//wait for server to initiate in singleplayer NEIClientConfig.loadWorld("remote/" + ClientUtils.getServerIP().replace(':', '~')); + + ItemMobSpawner.clearEntityReferences(world); } lastworld = world; diff --git a/src/main/java/codechicken/nei/ItemMobSpawner.java b/src/main/java/codechicken/nei/ItemMobSpawner.java index 43ccf406..87f028aa 100644 --- a/src/main/java/codechicken/nei/ItemMobSpawner.java +++ b/src/main/java/codechicken/nei/ItemMobSpawner.java @@ -96,6 +96,10 @@ public class ItemMobSpawner extends ItemBlock return e; } + public static void clearEntityReferences(World newWorld) { + entityHashMap.values().removeIf(e -> e.worldObj != newWorld); + } + private void setDefaultTag(ItemStack itemstack) { if (!IDtoNameMap.containsKey(itemstack.getItemDamage())) itemstack.setItemDamage(idPig);