From 515360977625de0dbf87008f142b5229b3819a9b Mon Sep 17 00:00:00 2001 From: D4rkr34lm Date: Tue, 16 Jul 2024 21:56:08 +0200 Subject: [PATCH 1/3] Added debug message for trace history map nullpointer and potential fix --- .../bausystem/features/tracer/TraceRecorder.java | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 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 0fba6df0..af796850 100644 --- a/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceRecorder.java +++ b/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceRecorder.java @@ -23,6 +23,7 @@ import de.steamwar.bausystem.BauSystem; import de.steamwar.bausystem.features.tpslimit.TPSUtils; import de.steamwar.bausystem.region.Region; import de.steamwar.linkage.Linked; +import org.bukkit.Bukkit; import org.bukkit.block.Block; import org.bukkit.entity.TNTPrimed; import org.bukkit.event.EventHandler; @@ -32,6 +33,8 @@ import org.bukkit.event.entity.EntityExplodeEvent; import org.bukkit.event.entity.EntitySpawnEvent; import java.util.*; +import java.util.logging.Level; +import java.util.logging.Logger; @Linked public class TraceRecorder implements Listener { @@ -158,14 +161,23 @@ 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()) { + if (tntPrimed == null || tntPrimed.isDead() || history.size() > 0 && history.get(history.size() - 1).getFuse() == tntPrimed.getFuseTicks()) { return null; } int tntID; if (history.size() == 0) { - historyMap.put(tntPrimed, history); + try { + historyMap.put(tntPrimed, history); + } + catch (NullPointerException e) { + Logger logger = Bukkit.getLogger(); + logger.log(Level.WARNING, "Nullpointer thrown by historyMap"); + logger.log(Level.WARNING, "TNT History: " + history); + logger.log(Level.WARNING, "History Map" + history); + throw e; + } tntID = wrappedTrace.getNextOpenRecordIdAndIncrement(); } else { tntID = history.get(0).getTntId(); From 7fc76e5e2a21016df69a1252455bca4b86f4cb5f Mon Sep 17 00:00:00 2001 From: D4rkr34lm Date: Tue, 16 Jul 2024 22:19:11 +0200 Subject: [PATCH 2/3] fixed wrong map in debug message --- .../de/steamwar/bausystem/features/tracer/TraceRecorder.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 af796850..78fb60ed 100644 --- a/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceRecorder.java +++ b/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceRecorder.java @@ -175,7 +175,7 @@ public class TraceRecorder implements Listener { Logger logger = Bukkit.getLogger(); logger.log(Level.WARNING, "Nullpointer thrown by historyMap"); logger.log(Level.WARNING, "TNT History: " + history); - logger.log(Level.WARNING, "History Map" + history); + logger.log(Level.WARNING, "History Map: " + historyMap); throw e; } tntID = wrappedTrace.getNextOpenRecordIdAndIncrement(); From 2b0b2a08d7dfbfb54f3215a26a8316d1d93d57db Mon Sep 17 00:00:00 2001 From: D4rkr34lm Date: Tue, 16 Jul 2024 22:31:09 +0200 Subject: [PATCH 3/3] Added todo for debug removal --- .../src/de/steamwar/bausystem/features/tracer/TraceRecorder.java | 1 + 1 file changed, 1 insertion(+) 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 78fb60ed..fd0274fc 100644 --- a/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceRecorder.java +++ b/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceRecorder.java @@ -173,6 +173,7 @@ public class TraceRecorder implements Listener { } catch (NullPointerException e) { Logger logger = Bukkit.getLogger(); + //TODO remove when no longer neccecary logger.log(Level.WARNING, "Nullpointer thrown by historyMap"); logger.log(Level.WARNING, "TNT History: " + history); logger.log(Level.WARNING, "History Map: " + historyMap);