diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/main/java/gregtech/common/GT_PlayerActivityLogger.java | 16 | ||||
-rw-r--r-- | src/main/java/gregtech/common/GT_Proxy.java | 13 |
2 files changed, 18 insertions, 11 deletions
diff --git a/src/main/java/gregtech/common/GT_PlayerActivityLogger.java b/src/main/java/gregtech/common/GT_PlayerActivityLogger.java index 686c066c2c..7a113bdfb3 100644 --- a/src/main/java/gregtech/common/GT_PlayerActivityLogger.java +++ b/src/main/java/gregtech/common/GT_PlayerActivityLogger.java @@ -10,20 +10,22 @@ public class GT_PlayerActivityLogger implements Runnable { @Override public void run() { try { + ArrayList<String> buffer = new ArrayList<>(); for (;;) { if (GT_Log.pal == null) { return; } - ArrayList<String> tList = GT_Mod.gregtechproxy.mBufferedPlayerActivity; - GT_Mod.gregtechproxy.mBufferedPlayerActivity = new ArrayList<>(); String tLastOutput = ""; - int i = 0; - for (int j = tList.size(); i < j; i++) { - if (!tLastOutput.equals(tList.get(i))) { - GT_Log.pal.println(tList.get(i)); + // Block on first element for efficiency + buffer.add(GT_Mod.gregtechproxy.mBufferedPlayerActivity.take()); + GT_Mod.gregtechproxy.mBufferedPlayerActivity.drainTo(buffer); + for (String output : buffer) { + if (!output.equals(tLastOutput)) { + GT_Log.pal.println(output); + tLastOutput = output; } - tLastOutput = tList.get(i); } + buffer.clear(); Thread.sleep(10000L); } } catch (Throwable e) {} diff --git a/src/main/java/gregtech/common/GT_Proxy.java b/src/main/java/gregtech/common/GT_Proxy.java index 749dea08fe..2678d01cef 100644 --- a/src/main/java/gregtech/common/GT_Proxy.java +++ b/src/main/java/gregtech/common/GT_Proxy.java @@ -25,8 +25,10 @@ import java.util.List; import java.util.Locale; import java.util.Map; import java.util.UUID; +import java.util.concurrent.BlockingQueue; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; +import java.util.concurrent.LinkedBlockingQueue; import java.util.concurrent.locks.ReentrantLock; import java.util.stream.Collectors; @@ -497,7 +499,7 @@ public abstract class GT_Proxy implements IGT_Mod, IGuiHandler, IFuelHandler, IG "redalloyInsulated", "infusedteslatiteBundled")); private final DateFormat mDateFormat = DateFormat.getInstance(); - public ArrayList<String> mBufferedPlayerActivity = new ArrayList<>(); + public final BlockingQueue<String> mBufferedPlayerActivity = new LinkedBlockingQueue<>(); public final GT_BlockMap<Boolean> mCTMBlockCache = new GT_BlockMap<>(); public boolean mHardcoreCables = false; public boolean mDisableVanillaOres = true; @@ -1188,7 +1190,10 @@ public abstract class GT_Proxy implements IGT_Mod, IGuiHandler, IFuelHandler, IG GT_Log.out.println("GT_Mod: Beginning PostLoad-Phase."); GT_Log.ore.println("GT_Mod: Beginning PostLoad-Phase."); if (GT_Log.pal != null) { - new Thread(new GT_PlayerActivityLogger()).start(); + final Thread playerActivityLogger = new Thread(new GT_PlayerActivityLogger()); + playerActivityLogger.setDaemon(true); + playerActivityLogger.setName("GT5U Player activity logger"); + playerActivityLogger.start(); } GregTech_API.sPostloadStarted = true; @@ -1487,7 +1492,7 @@ public abstract class GT_Proxy implements IGT_Mod, IGuiHandler, IFuelHandler, IG } if ((!aEvent.entityPlayer.worldObj.isRemote) && (aEvent.action != PlayerInteractEvent.Action.RIGHT_CLICK_AIR) && (GT_Log.pal != null)) { - this.mBufferedPlayerActivity.add( + this.mBufferedPlayerActivity.offer( getDataAndTime() + ";" + aEvent.action.name() + ";" @@ -1529,7 +1534,7 @@ public abstract class GT_Proxy implements IGT_Mod, IGuiHandler, IFuelHandler, IG public void onBlockHarvestingEvent(BlockEvent.HarvestDropsEvent aEvent) { if (aEvent.harvester != null) { if ((!aEvent.world.isRemote) && (GT_Log.pal != null)) { - this.mBufferedPlayerActivity.add( + this.mBufferedPlayerActivity.offer( getDataAndTime() + ";HARVEST_BLOCK;" + aEvent.harvester.getDisplayName() + ";DIM:" |