forked from SteamWar/SteamWar
Fix /trace isolate {id} showing tnt from other traces
This commit is contained in:
+5
-1
@@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+6
-2
@@ -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) -> {
|
||||||
|
if (trace.getUuid() == ptrace.getUuid()) {
|
||||||
trace.render(player, finalPlayerTraceShowData);
|
trace.render(player, finalPlayerTraceShowData);
|
||||||
followerMap.getOrDefault(player, Collections.emptySet()).forEach(follower -> {
|
followerMap.getOrDefault(player, Collections.emptySet()).forEach(follower -> {
|
||||||
trace.render(follower, finalPlayerTraceShowData);
|
trace.render(follower, finalPlayerTraceShowData);
|
||||||
});
|
});
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user