From 75bfcd9018746488eb9024bfee91338c29c2fa00 Mon Sep 17 00:00:00 2001 From: AlgorithmX2 Date: Fri, 22 Aug 2014 19:23:48 -0500 Subject: [PATCH] Enhanced Chunk Logger to dump out stack trace data via config option. --- core/features/AEFeature.java | 4 +++- server/subcommands/ChunkLogger.java | 21 +++++++++++++++++++++ 2 files changed, 24 insertions(+), 1 deletion(-) diff --git a/core/features/AEFeature.java b/core/features/AEFeature.java index f5debcc2..534b4bcb 100644 --- a/core/features/AEFeature.java +++ b/core/features/AEFeature.java @@ -54,7 +54,9 @@ public enum AEFeature AlphaPass("Rendering"), PaintBalls("Tools"), PacketLogging("Misc", false), CraftingLog("Misc", false), InterfaceTerminal("Crafting"), LightDetector("Misc"), - enableDisassemblyCrafting("Crafting"), MolecularAssembler("CraftingFeatures"), MeteoriteCompass("Tools"), Patterns("CraftingFeatures"); + enableDisassemblyCrafting("Crafting"), MolecularAssembler("CraftingFeatures"), MeteoriteCompass("Tools"), Patterns("CraftingFeatures"), + + ChunkLoggerTrace("Commands", false); String Category; boolean visible = true; diff --git a/server/subcommands/ChunkLogger.java b/server/subcommands/ChunkLogger.java index 6f70c202..0d99d27e 100644 --- a/server/subcommands/ChunkLogger.java +++ b/server/subcommands/ChunkLogger.java @@ -5,7 +5,9 @@ import net.minecraft.server.MinecraftServer; import net.minecraft.util.ChatComponentTranslation; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.world.ChunkEvent; +import appeng.core.AEConfig; import appeng.core.AELog; +import appeng.core.features.AEFeature; import appeng.server.ISubCommand; import cpw.mods.fml.common.eventhandler.SubscribeEvent; @@ -20,6 +22,24 @@ public class ChunkLogger implements ISubCommand if ( !load.world.isRemote ) { AELog.info( "Chunk Loaded: " + load.getChunk().xPosition + ", " + load.getChunk().zPosition ); + displayStack(); + } + } + + private void displayStack() + { + if ( AEConfig.instance.isFeatureEnabled( AEFeature.ChunkLoggerTrace ) ) + { + boolean output = false; + for (StackTraceElement e : Thread.currentThread().getStackTrace()) + { + if ( output ) + AELog.info( " " + e.getClassName() + "." + e.getMethodName() + " (" + e.getLineNumber() + ")" ); + else + { + output = e.getClassName().contains( "EventBus" ) && e.getMethodName().contains( "post" ); + } + } } } @@ -29,6 +49,7 @@ public class ChunkLogger implements ISubCommand if ( !unload.world.isRemote ) { AELog.info( "Chunk Unloaded: " + unload.getChunk().xPosition + ", " + unload.getChunk().zPosition ); + displayStack(); } }