Fix /trace isolate {id} showing tnt from other traces

This commit is contained in:
Sakziea
2026-07-14 19:29:12 +02:00
parent 2e795aaf8e
commit b488c4ed7c
2 changed files with 15 additions and 7 deletions
@@ -153,7 +153,11 @@ public class TraceCommand extends SWCommand {
@Register(value = "isolate", description = "TRACE_COMMAND_HELP_ISOLATE") @Register(value = "isolate", description = "TRACE_COMMAND_HELP_ISOLATE")
public void isolate(@Validator Player player, Trace trace, @ErrorMessage("TRACE_RECORD_ID_INVALID") TNTPoint... records) { 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); BauSystem.MESSAGE.send("TRACE_MESSAGE_ISOLATE", player);
} }
@@ -347,9 +347,10 @@ public class TraceManager implements Listener {
* Toggles the isolated render for the given records and player * Toggles the isolated render for the given records and player
* *
* @param player the player the trace is shown to * @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); unfollow(player);
Region region = Region.getRegion(player.getLocation()); 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) { if (isolateFlag.isEmpty() && playerTraceShowData.hasViewFlagOnly(IsolateFlag.class) && records.length != 0) {
playerTraceShowData = new PlayerTraceShowData(BundleFilter.DEFAULT); playerTraceShowData = new PlayerTraceShowData(BundleFilter.DEFAULT);
showDataPerRegionPerPlayer.get(region).put(player, playerTraceShowData);
} }
PlayerTraceShowData finalPlayerTraceShowData = playerTraceShowData; PlayerTraceShowData finalPlayerTraceShowData = playerTraceShowData;
tracesByRegion.getOrDefault(region, Collections.emptyMap()).forEach((integer, trace) -> { tracesByRegion.getOrDefault(region, Collections.emptyMap()).forEach((integer, trace) -> {
trace.render(player, finalPlayerTraceShowData); if (trace.getUuid() == ptrace.getUuid()) {
followerMap.getOrDefault(player, Collections.emptySet()).forEach(follower -> { trace.render(player, finalPlayerTraceShowData);
trace.render(follower, finalPlayerTraceShowData); followerMap.getOrDefault(player, Collections.emptySet()).forEach(follower -> {
}); trace.render(follower, finalPlayerTraceShowData);
});
}
}); });
} }