aboutsummaryrefslogtreecommitdiff
path: root/src/Java/gtPlusPlus/preloader/ChunkDebugger.java
diff options
context:
space:
mode:
authorAlkalus <3060479+draknyte1@users.noreply.github.com>2018-10-25 22:58:27 +0100
committerAlkalus <3060479+draknyte1@users.noreply.github.com>2018-10-25 22:58:27 +0100
commite617124ba171bdf0a5aa8165c63715634de3f3c3 (patch)
tree60ab6be780e6211217f40343ce4b2d5194d77c30 /src/Java/gtPlusPlus/preloader/ChunkDebugger.java
parent5ea5183724134c5ca6259ef7efcf46209661ecc7 (diff)
downloadGT5-Unofficial-e617124ba171bdf0a5aa8165c63715634de3f3c3.tar.gz
GT5-Unofficial-e617124ba171bdf0a5aa8165c63715634de3f3c3.tar.bz2
GT5-Unofficial-e617124ba171bdf0a5aa8165c63715634de3f3c3.zip
+ Added a way to debug Chunk Loading via ASM injection into Forge.
+ Added new require function to TileEntityBase.java. + Added some logging to pipe generation.
Diffstat (limited to 'src/Java/gtPlusPlus/preloader/ChunkDebugger.java')
-rw-r--r--src/Java/gtPlusPlus/preloader/ChunkDebugger.java50
1 files changed, 50 insertions, 0 deletions
diff --git a/src/Java/gtPlusPlus/preloader/ChunkDebugger.java b/src/Java/gtPlusPlus/preloader/ChunkDebugger.java
new file mode 100644
index 0000000000..565617a4aa
--- /dev/null
+++ b/src/Java/gtPlusPlus/preloader/ChunkDebugger.java
@@ -0,0 +1,50 @@
+package gtPlusPlus.preloader;
+
+import java.util.LinkedHashMap;
+import java.util.Map;
+
+import gtPlusPlus.api.objects.Logger;
+import gtPlusPlus.api.objects.data.Pair;
+import net.minecraft.world.ChunkCoordIntPair;
+import net.minecraft.world.World;
+import net.minecraftforge.common.ForgeChunkManager.Ticket;
+
+public class ChunkDebugger {
+
+
+ public static final Map<Integer, Pair<String, String>> mChunkTicketsMap = new LinkedHashMap<Integer, Pair<String, String>>();
+ public static final Map<String, Pair<String, String>> mChunksLoadedByModsMap = new LinkedHashMap<String, Pair<String, String>>();
+
+ public static void storeTicketToCache(Ticket aTicket, World aWorld) {
+ mChunkTicketsMap.put(aTicket.hashCode(), new Pair<String, String>(aTicket.getModId(), ""+aTicket.world.provider.dimensionId));
+ Logger.REFLECTION("Ticket created by "+aTicket.getModId()+" for dimension "+aTicket.world.provider.dimensionId);
+ }
+
+ public static void storeLoadChunkToCache(Ticket aTicket, ChunkCoordIntPair aChunk) {
+ mChunksLoadedByModsMap.put(aChunk.toString(), new Pair<String, String>(aTicket.getModId(), aChunk.toString()));
+ Logger.REFLECTION("Chunk Loaded by "+aTicket.getModId()+" at position "+aChunk.toString()+" for dimension "+aTicket.world.provider.dimensionId);
+ }
+
+ public static void removeTicketFromCache(Ticket aTicket) {
+ Pair<String, String> aPair = mChunkTicketsMap.get(aTicket.hashCode());
+ Logger.REFLECTION("Ticket released by "+aTicket.getModId()+" for dimension "+aPair.getValue());
+ mChunkTicketsMap.remove(aTicket.hashCode());
+ }
+
+ public static void removeLoadedChunkFromCache(ChunkCoordIntPair aChunk) {
+ if (aChunk == null || aChunk.toString() == null) {
+ return;
+ }
+ Pair<String, String> aPair = mChunksLoadedByModsMap.get(aChunk.toString());
+ if (aPair == null) {
+ return;
+ }
+ String aKey = aPair.getKey();
+ String aValue = aPair.getValue();
+ if (aKey != null && aValue != null) {
+ Logger.REFLECTION("Chunk Loaded by "+aKey+" at position "+aChunk.toString()+" for dimension "+aValue);
+ }
+ mChunksLoadedByModsMap.remove(aChunk.toString());
+ }
+
+}