From 69d6e51d1d74f5da69fe91a23004eebb2026c98f Mon Sep 17 00:00:00 2001 From: BlueWeabo Date: Mon, 5 Aug 2024 05:59:25 +0300 Subject: [PATCH] make registired be reregistered per save file --- .../java/com/gtnewhorizons/mutecore/MuTECore.java | 2 ++ .../api/registry/MultiTileEntityRegistry.java | 14 ++++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/gtnewhorizons/mutecore/MuTECore.java b/src/main/java/com/gtnewhorizons/mutecore/MuTECore.java index 22282f6..9960a11 100644 --- a/src/main/java/com/gtnewhorizons/mutecore/MuTECore.java +++ b/src/main/java/com/gtnewhorizons/mutecore/MuTECore.java @@ -14,6 +14,7 @@ import com.gtnewhorizons.mutecore.api.gui.MultiTileEntityGuiFactory; import com.gtnewhorizons.mutecore.api.registry.EventRegistry; import com.gtnewhorizons.mutecore.api.registry.MultiTileContainer.FakeEntity; +import com.gtnewhorizons.mutecore.api.registry.MultiTileEntityRegistry; import com.gtnewhorizons.mutecore.api.tile.MultiTileEntity; import com.gtnewhorizons.mutecore.api.utils.PlayerHelper; import com.gtnewhorizons.mutecore.test.TestRegistry; @@ -100,6 +101,7 @@ public void postInit(FMLPostInitializationEvent event) { @Mod.EventHandler public void serverStarting(FMLServerStartingEvent event) { proxy.serverStarting(event); + MultiTileEntityRegistry.registerForSave(); } @Mod.EventHandler diff --git a/src/main/java/com/gtnewhorizons/mutecore/api/registry/MultiTileEntityRegistry.java b/src/main/java/com/gtnewhorizons/mutecore/api/registry/MultiTileEntityRegistry.java index b2628ce..07326bc 100644 --- a/src/main/java/com/gtnewhorizons/mutecore/api/registry/MultiTileEntityRegistry.java +++ b/src/main/java/com/gtnewhorizons/mutecore/api/registry/MultiTileEntityRegistry.java @@ -17,11 +17,13 @@ import com.gtnewhorizons.mutecore.api.render.MuTERender; import com.gtnewhorizons.mutecore.api.tile.MultiTileEntity; +import it.unimi.dsi.fastutil.Pair; import it.unimi.dsi.fastutil.ints.Int2ObjectMap; import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; public class MultiTileEntityRegistry { + private static final List> TO_REGISTER = new ArrayList<>(); private static final Int2ObjectMap REGISTRY_MAP = new Int2ObjectOpenHashMap<>(); private final MultiTileEntityBlock block; @@ -32,8 +34,16 @@ public class MultiTileEntityRegistry { * Should only be called after the block has been registered */ public static void registerRegistry(MultiTileEntityBlock block, MultiTileEntityRegistry registry) { - int id = Block.getIdFromBlock(block); - REGISTRY_MAP.put(id, registry); + TO_REGISTER.add(Pair.of(block, registry)); + } + + public static void registerForSave() { + REGISTRY_MAP.clear(); + for (int i = 0; i < TO_REGISTER.size(); i++) { + Pair pair = TO_REGISTER.get(i); + int id = Block.getIdFromBlock(pair.left()); + REGISTRY_MAP.put(id, pair.right()); + } } @Internal