diff options
author | Alkalus <3060479+draknyte1@users.noreply.github.com> | 2018-10-25 22:58:27 +0100 |
---|---|---|
committer | Alkalus <3060479+draknyte1@users.noreply.github.com> | 2018-10-25 22:58:27 +0100 |
commit | e617124ba171bdf0a5aa8165c63715634de3f3c3 (patch) | |
tree | 60ab6be780e6211217f40343ce4b2d5194d77c30 /src/Java/gtPlusPlus/preloader/ChunkDebugger.java | |
parent | 5ea5183724134c5ca6259ef7efcf46209661ecc7 (diff) | |
download | GT5-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.java | 50 |
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()); + } + +} |