From ddb701cbd69755f585db20f5efd5cbec6773684d Mon Sep 17 00:00:00 2001 From: D4rkr34lm Date: Sun, 28 Apr 2024 12:30:07 +0200 Subject: [PATCH] Hotfixed failsafe --- .../features/tracer/TraceRecorder.java | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceRecorder.java b/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceRecorder.java index 2dcb0cdd..124bdce5 100644 --- a/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceRecorder.java +++ b/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceRecorder.java @@ -129,10 +129,18 @@ public class TraceRecorder implements Listener { private void record() { for (Region region : activeTraces.keySet()) { TraceRecordingWrapper wrappedTrace = activeTraces.get(region); - for (TNTPrimed tnt : trackedTNT.getOrDefault(region, Collections.emptyList())) { + Iterator iter = trackedTNT.getOrDefault(region, Collections.emptyList()).iterator(); + while (iter.hasNext()) { + TNTPrimed tnt = iter.next(); TNTPoint record = record(tnt, wrappedTrace, Collections.emptyList()); - if (record == null) continue; - wrappedTrace.addRecord(record); + if (record == null) { + iter.remove(); + tntSpawnRegion.remove(tnt); + historyMap.remove(tnt); + tntSpawnRegion.remove(tnt); + } else { + wrappedTrace.addRecord(record); + } } wrappedTrace.commitRecorded(); } @@ -150,12 +158,6 @@ public class TraceRecorder implements Listener { List history = historyMap.getOrDefault(tntPrimed, new ArrayList<>()); // Failsave for tnt entering unloaded chunks if (tntPrimed.isDead() || history.size() > 0 && history.get(history.size() - 1).getFuse() == tntPrimed.getFuseTicks()) { - Region region = tntSpawnRegion.get(tntPrimed); - if (region == null) return null; - trackedTNT.get(region).remove(tntPrimed); - tntSpawnRegion.remove(tntPrimed); - historyMap.remove(tntPrimed); - tntSpawnRegion.remove(tntPrimed); return null; }