aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gtPlusPlus/api/objects/minecraft
diff options
context:
space:
mode:
authorJordan Byrne <draknyte1@hotmail.com>2018-05-23 06:38:54 +1000
committerJordan Byrne <draknyte1@hotmail.com>2018-05-23 06:38:54 +1000
commit444c226688186fb6c1aef276ecf555188cbaa782 (patch)
tree428256c620c70ec6158a52732102bf7a8b71aa4d /src/Java/gtPlusPlus/api/objects/minecraft
parent68b1c0598ca52f7a5d49f56c3cb55eacd195b115 (diff)
downloadGT5-Unofficial-444c226688186fb6c1aef276ecf555188cbaa782.tar.gz
GT5-Unofficial-444c226688186fb6c1aef276ecf555188cbaa782.tar.bz2
GT5-Unofficial-444c226688186fb6c1aef276ecf555188cbaa782.zip
$ Fixed Chunk Loader initialization.
% Moved various chunk handling code to be internal in ChunkManager.java.
Diffstat (limited to 'src/Java/gtPlusPlus/api/objects/minecraft')
-rw-r--r--src/Java/gtPlusPlus/api/objects/minecraft/ChunkManager.java51
1 files changed, 35 insertions, 16 deletions
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<String> mIdToUUIDMap = new ReverseAutoMap<String>();
-
+
+ public Timer mChunkQueue;
public static ConcurrentHashMap<String, Triplet<Integer, GregtechMetaTileEntityChunkLoader, DimChunkPos>> mChunkLoaderManagerMap = new ConcurrentHashMap<String, Triplet<Integer, GregtechMetaTileEntityChunkLoader, DimChunkPos>>();
+ 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<mIdToUUIDMap.size()+1;u++) {
+ if (mIdToUUIDMap.injectCleanDataToAutoMap(u, blockposString)) {
+ Logger.INFO("Success! Cleanly injected into ChunkManager.");
+ return true;
+ }
}
- else {
- return false;
+ for (int u=0;u<50;u++) {
+ if (mIdToUUIDMap.injectCleanDataToAutoMap(MathUtils.randInt(0, 250000), blockposString)) {
+ Logger.INFO("Success! Cleanly injected into ChunkManager.");
+ return true;
+ }
}
+ return false;
+
}
}
public static int getIdFromUniqueString(String blockposString) {
if (mIdToUUIDMap.containsValue(blockposString)) {
- Logger.INFO("Found Cached ID based on blockpos UID");
return mIdToUUIDMap.get(blockposString);
}
else {
- Logger.INFO("Creating new Cached ID based on blockpos UID");
return mIdToUUIDMap.putToInternalMap(blockposString);
}
}
@@ -95,9 +108,14 @@ public class ChunkManager implements LoadingCallback, OrderedLoadingCallback, Fo
}
}
+ @EventHandler
+ public void serverStarting(final FMLServerStartingEvent event) {
+ //Chunk Loading
+ ChunkManager.getInstance().mChunkQueue = ChunkManager.createChunkQueue();
+ }
@SubscribeEvent
- public void serverTick(TickEvent.ServerTickEvent e){
+ public void serverTick(final TickEvent.ServerTickEvent e){
mInternalTickCounter++;
try {
if (mInternalTickCounter % (20*15) == 0) {
@@ -410,7 +428,8 @@ public class ChunkManager implements LoadingCallback, OrderedLoadingCallback, Fo
static Timer ChunkTimerLoader() {
Timer timer;
timer = new Timer();
- timer.schedule(new ChunkCache(), 10 * 1000);
+ timer.schedule(new ChunkCache(), 20 * 500);
+ timer.scheduleAtFixedRate(new ChunkCache(), 15000, 60000);
return timer;
}
@@ -429,7 +448,7 @@ public class ChunkManager implements LoadingCallback, OrderedLoadingCallback, Fo
T = j.getValue_2().getTicketFromForge();
C = j.getValue_3().getChunk();
ForgeChunkManager.forceChunk(T, C.getChunkCoordIntPair());
- Logger.INFO("[Chunk Loader] Trying to force load a chunk that holds a chunkloader.");
+ Logger.INFO("[Chunk Loader] Trying to force load a chunk that holds a chunkloader. [Timer]");
}
}
else {