forked from SteamWar/SteamWar
Merge pull request 'Making /trace isolate toggle the tnt on and off to normal Trace show' (#445) from BauSystem/Trace into main
Reviewed-on: SteamWar/SteamWar#445 Reviewed-by: YoyoNow <4+yoyonow@noreply.localhost>
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(TNTPoint[]::new));
|
||||||
|
} else {
|
||||||
|
TraceManager.instance.isolate(player, trace, records);
|
||||||
|
}
|
||||||
BauSystem.MESSAGE.send("TRACE_MESSAGE_ISOLATE", player);
|
BauSystem.MESSAGE.send("TRACE_MESSAGE_ISOLATE", player);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+15
-6
@@ -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());
|
||||||
@@ -374,12 +375,20 @@ public class TraceManager implements Listener {
|
|||||||
isolateFlag.toggleId(record.getTntId());
|
isolateFlag.toggleId(record.getTntId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (isolateFlag.isEmpty() && playerTraceShowData.hasViewFlagOnly(IsolateFlag.class) && records.length != 0) {
|
||||||
|
playerTraceShowData.removeViewFlag(IsolateFlag.class);
|
||||||
|
}
|
||||||
|
|
||||||
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() || finalPlayerTraceShowData.hasNoViewFlags()) {
|
||||||
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);
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
trace.hide(player);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+4
@@ -95,4 +95,8 @@ public class PlayerTraceShowData {
|
|||||||
public void addViewFlag(ViewFlag viewFlag) {
|
public void addViewFlag(ViewFlag viewFlag) {
|
||||||
viewFlags.put(viewFlag.getClass(), viewFlag);
|
viewFlags.put(viewFlag.getClass(), viewFlag);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public <T extends ViewFlag> void removeViewFlag(Class<T> clazz) {
|
||||||
|
viewFlags.remove(clazz);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+4
@@ -51,6 +51,10 @@ public class IsolateFlag extends ViewFlag {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isEmpty() {
|
||||||
|
return tntToIsolate.isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Stream<TNTPoint> filter(Stream<TNTPoint> records) {
|
public Stream<TNTPoint> filter(Stream<TNTPoint> records) {
|
||||||
if (tntToIsolate.isEmpty()) return records;
|
if (tntToIsolate.isEmpty()) return records;
|
||||||
|
|||||||
Reference in New Issue
Block a user