From b488c4ed7cbe04836f8c2785395d285c1ce1fb4d Mon Sep 17 00:00:00 2001 From: Sakziea Date: Tue, 14 Jul 2026 19:29:12 +0200 Subject: [PATCH] Fix /trace isolate {id} showing tnt from other traces --- .../bausystem/features/tracer/TraceCommand.java | 6 +++++- .../bausystem/features/tracer/TraceManager.java | 16 ++++++++++------ 2 files changed, 15 insertions(+), 7 deletions(-) diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceCommand.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceCommand.java index cfe50f55..e63ad554 100644 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceCommand.java +++ b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceCommand.java @@ -153,7 +153,11 @@ public class TraceCommand extends SWCommand { @Register(value = "isolate", description = "TRACE_COMMAND_HELP_ISOLATE") public void isolate(@Validator Player player, Trace trace, @ErrorMessage("TRACE_RECORD_ID_INVALID") TNTPoint... records) { - TraceManager.instance.isolate(player, records); + if (records.length == 0) { + TraceManager.instance.isolate(player, trace, trace.getRecords().toArray(new TNTPoint[0])); + } else { + TraceManager.instance.isolate(player, trace, records); + } BauSystem.MESSAGE.send("TRACE_MESSAGE_ISOLATE", player); } diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceManager.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceManager.java index d4dd8fdc..ea594b9b 100644 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceManager.java +++ b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceManager.java @@ -347,9 +347,10 @@ public class TraceManager implements Listener { * Toggles the isolated render for the given records and player * * @param player the player the trace is shown to - * @param records the record for which isolation is toggled + * @param ptrace the trace for whitch isolation is toggled + * @param records the records of the trace for which isolation is toggled */ - public void isolate(Player player, TNTPoint... records) { + public void isolate(Player player, Trace ptrace, TNTPoint... records) { unfollow(player); Region region = Region.getRegion(player.getLocation()); @@ -376,14 +377,17 @@ public class TraceManager implements Listener { if (isolateFlag.isEmpty() && playerTraceShowData.hasViewFlagOnly(IsolateFlag.class) && records.length != 0) { playerTraceShowData = new PlayerTraceShowData(BundleFilter.DEFAULT); + showDataPerRegionPerPlayer.get(region).put(player, playerTraceShowData); } PlayerTraceShowData finalPlayerTraceShowData = playerTraceShowData; tracesByRegion.getOrDefault(region, Collections.emptyMap()).forEach((integer, trace) -> { - trace.render(player, finalPlayerTraceShowData); - followerMap.getOrDefault(player, Collections.emptySet()).forEach(follower -> { - trace.render(follower, finalPlayerTraceShowData); - }); + if (trace.getUuid() == ptrace.getUuid()) { + trace.render(player, finalPlayerTraceShowData); + followerMap.getOrDefault(player, Collections.emptySet()).forEach(follower -> { + trace.render(follower, finalPlayerTraceShowData); + }); + } }); }