aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/gregtech/common/GT_PlayerActivityLogger.java16
-rw-r--r--src/main/java/gregtech/common/GT_Proxy.java13
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:"