From d170e96542cfe05b55f5fa8bbca8ea7401db625d Mon Sep 17 00:00:00 2001 From: D4rkr34lm Date: Thu, 18 Apr 2024 16:10:15 +0200 Subject: [PATCH] Made trace clear region wise Signed-off-by: D4rkr34lm --- .../features/tracer/TraceCommand.java | 9 ++++---- .../features/tracer/TraceManager.java | 23 +++++++++---------- 2 files changed, 15 insertions(+), 17 deletions(-) diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceCommand.java b/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceCommand.java index c88adc91..5ef8c6d0 100644 --- a/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceCommand.java +++ b/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceCommand.java @@ -131,14 +131,13 @@ public class TraceCommand extends SWCommand { BauSystem.MESSAGE.send("TRACE_MESSAGE_HIDE", player); } - @Register(value = "delete", description = "TRACE_COMMAND_HELP_DELETE") @Register(value = "clear") - public void delete(@Validator Player player) { - TraceManager.instance.clear(); - BauSystem.MESSAGE.send("TRACE_MESSAGE_DELETE", player); + public void clear(@Validator Player player) { + TraceManager.instance.clear(Region.getRegion(player.getLocation())); + BauSystem.MESSAGE.send("TRACE_MESSAGE_CLEAR", player); } - @Register(value = "delete") + @Register(value = "delete", description = "TRACE_MESSAGE_DELETE") public void delete(@Validator Player player, Trace trace) { TraceManager.instance.remove(trace); BauSystem.MESSAGE.send("TRACE_MESSAGE_DELETE_SPECIFIC", player); diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceManager.java b/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceManager.java index 1eb0373c..878a1eda 100644 --- a/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceManager.java +++ b/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceManager.java @@ -131,11 +131,9 @@ public class TraceManager implements Listener { /** * Clears all traces */ - public void clear() { - showDataPerRegionPerPlayer.values() - .stream() - .flatMap(map -> map.entrySet().stream()) - .map(Map.Entry::getKey) + public void clear(Region region) { + showDataPerRegionPerPlayer.getOrDefault(region, new HashMap<>()) + .keySet() .forEach(player -> { Set players = followerMap.getOrDefault(player, Collections.emptySet()); traces.values().forEach(trace -> { @@ -143,13 +141,14 @@ public class TraceManager implements Listener { players.forEach(trace::hide); }); }); - traces.forEach((i, trace) -> { - trace.getMetadataSaveFile().delete(); - trace.getRecordsSaveFile().delete(); - }); - traces.clear(); - tracesByRegion.clear(); - nextOpenId = 0; + tracesByRegion.getOrDefault(region, new HashMap<>()) + .forEach((i, trace) -> { + if (trace.getRegion() != region) return; + traces.remove(i); + trace.getMetadataSaveFile().delete(); + trace.getRecordsSaveFile().delete(); + }); + tracesByRegion.getOrDefault(region, new HashMap<>()).clear(); } /**