From 444c226688186fb6c1aef276ecf555188cbaa782 Mon Sep 17 00:00:00 2001 From: Jordan Byrne Date: Wed, 23 May 2018 06:38:54 +1000 Subject: $ Fixed Chunk Loader initialization. % Moved various chunk handling code to be internal in ChunkManager.java. --- .../api/objects/minecraft/ChunkManager.java | 51 +++++++++++++++------- 1 file changed, 35 insertions(+), 16 deletions(-) (limited to 'src/Java/gtPlusPlus/api/objects') diff --git a/src/Java/gtPlusPlus/api/objects/minecraft/ChunkManager.java b/src/Java/gtPlusPlus/api/objects/minecraft/ChunkManager.java index bf080424ea..77839b9ff2 100644 --- a/src/Java/gtPlusPlus/api/objects/minecraft/ChunkManager.java +++ b/src/Java/gtPlusPlus/api/objects/minecraft/ChunkManager.java @@ -14,6 +14,8 @@ import java.util.concurrent.ConcurrentHashMap; import com.google.common.collect.LinkedListMultimap; import com.google.common.collect.ListMultimap; +import cpw.mods.fml.common.Mod.EventHandler; +import cpw.mods.fml.common.event.FMLServerStartingEvent; import cpw.mods.fml.common.eventhandler.SubscribeEvent; import cpw.mods.fml.common.gameevent.TickEvent; @@ -32,6 +34,7 @@ import gtPlusPlus.api.objects.Logger; import gtPlusPlus.api.objects.data.ReverseAutoMap; import gtPlusPlus.api.objects.data.Triplet; import gtPlusPlus.core.util.Utils; +import gtPlusPlus.core.util.math.MathUtils; import gtPlusPlus.xmod.gregtech.common.tileentities.machines.basic.GregtechMetaTileEntityChunkLoader; import net.minecraftforge.common.ForgeChunkManager; import net.minecraftforge.common.ForgeChunkManager.*; @@ -43,45 +46,55 @@ import net.minecraftforge.event.entity.EntityEvent; public class ChunkManager implements LoadingCallback, OrderedLoadingCallback, ForgeChunkManager.PlayerOrderedLoadingCallback { private static final ChunkManager instance; - private static volatile long mInternalTickCounter = 0; private static ReverseAutoMap mIdToUUIDMap = new ReverseAutoMap(); - + + public Timer mChunkQueue; public static ConcurrentHashMap> mChunkLoaderManagerMap = new ConcurrentHashMap>(); + private static long mInternalTickCounter = 0; - - static { instance = new ChunkManager(); + Logger.REFLECTION("Created ChunkManager object."); } - public ChunkManager() { + private ChunkManager() { Utils.registerEvent(this); } + public static void clearInternalMaps() { + mIdToUUIDMap.clear(); + mChunkLoaderManagerMap.clear(); + } + public static boolean setIdAndUniqueString(int id, String blockposString) { if (mIdToUUIDMap.injectCleanDataToAutoMap(id, blockposString)) { Logger.INFO("Found Cached ID from NBT, cleanly injected into ChunkManager."); return true; } else { - Logger.INFO("Creating new Cached ID based on blockpos UID"); - if (mIdToUUIDMap.injectCleanDataToAutoMap(mIdToUUIDMap.getNextFreeMapID(), blockposString)) { - Logger.INFO("Success! Cleanly injected into ChunkManager."); - return true; + Logger.INFO("ID in use, best try a few times to get a free ID."); + for (int u=0;u