From 8256c1fa7aa888faefd3db2b5b47ad0412d99227 Mon Sep 17 00:00:00 2001 From: yoyosource Date: Sat, 25 Dec 2021 23:29:41 +0100 Subject: [PATCH] Update TraceCommand.showCommand by -ticks as option Signed-off-by: yoyosource --- .../features/tracer/TraceEntity_15.java | 6 +++++- .../features/tracer/AbstractTraceEntity.java | 2 +- .../features/tracer/TraceCommand.java | 21 +++++++++++++++---- .../tracer/show/ShowModeParameter.java | 1 + .../tracer/show/ShowModeParameterType.java | 4 ++-- .../show/mode/FactoredEntityShowMode.java | 6 +++--- 6 files changed, 29 insertions(+), 11 deletions(-) diff --git a/BauSystem_15/src/de/steamwar/bausystem/features/tracer/TraceEntity_15.java b/BauSystem_15/src/de/steamwar/bausystem/features/tracer/TraceEntity_15.java index e4447ee5..72ee13d3 100644 --- a/BauSystem_15/src/de/steamwar/bausystem/features/tracer/TraceEntity_15.java +++ b/BauSystem_15/src/de/steamwar/bausystem/features/tracer/TraceEntity_15.java @@ -40,7 +40,11 @@ class TraceEntity_15 extends BaseEntity_15 implements AbstractTraceEntity { } @Override - public void display(Player player, boolean exploded) { + public void display(Player player, boolean exploded, int ticks) { + if (ticks != -1) { + this.setCustomNameVisible(true); + this.setCustomName(new ChatComponentText(ticks + "")); + } if (!this.exploded && exploded) { this.setCustomNameVisible(true); this.setCustomName(new ChatComponentText("Bumm")); diff --git a/BauSystem_API/src/de/steamwar/bausystem/features/tracer/AbstractTraceEntity.java b/BauSystem_API/src/de/steamwar/bausystem/features/tracer/AbstractTraceEntity.java index 39ee7f5b..980f511b 100644 --- a/BauSystem_API/src/de/steamwar/bausystem/features/tracer/AbstractTraceEntity.java +++ b/BauSystem_API/src/de/steamwar/bausystem/features/tracer/AbstractTraceEntity.java @@ -24,7 +24,7 @@ import org.bukkit.entity.Player; public interface AbstractTraceEntity extends AbstractEntity { - void display(Player player, boolean exploded); + void display(Player player, boolean exploded, int ticks); boolean hide(Player player, boolean always); } 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 98d99b1c..f8a5826c 100644 --- a/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceCommand.java +++ b/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/TraceCommand.java @@ -62,6 +62,7 @@ public class TraceCommand extends SWCommand { showModeParameterTypeListMap.put(ShowModeParameterType.INTERPOLATE_XZ, Arrays.asList("-interpolatex", "-interpolate-x", "-interpolate_x", "-x", "-interpolatez", "-interpolate-z", "-interpolate_z", "-z", "-interpolatexz", "-interpolate-xz", "-interpolate_xz", "-xz")); showModeParameterTypeListMap.put(ShowModeParameterType.ADVANCED, Arrays.asList("-advanced", "-a")); showModeParameterTypeListMap.put(ShowModeParameterType.EXPLODE, Arrays.asList("-explode", "-explodeonly")); + showModeParameterTypeListMap.put(ShowModeParameterType.TICKS, Arrays.asList("-ticks", "-t")); Map showModeParameterTypesMap = new HashMap<>(); showModeParameterTypeListMap.forEach((k, v) -> v.forEach(s -> showModeParameterTypesMap.put(s, k))); @@ -75,12 +76,23 @@ public class TraceCommand extends SWCommand { @Override public List tabCompletes(CommandSender commandSender, String[] strings, String s) { Set showModeParameterTypeSet = new HashSet<>(); + boolean allowTicks = true; for (String previousArgument : strings) { + try { + ShowModeType showModeType = ShowModeType.valueOf(previousArgument.toUpperCase()); + allowTicks &= showModeType.allowTicks; + } catch (IllegalArgumentException ignored) { + // Ignored + } showModeParameterTypeSet.add(showModeParameterTypesMap.get(previousArgument)); } showModeParameterTypeSet.remove(null); List tabCompletes = new ArrayList<>(); for (ShowModeParameterType showModeParameterType : showModeParameterTypeListMap.keySet()) { + if (showModeParameterType == ShowModeParameterType.TICKS && !allowTicks) { + continue; + } + if ((showModeParameterTypeSet.contains(ShowModeParameterType.INTERPOLATE_XZ) || showModeParameterTypeSet.contains(ShowModeParameterType.INTERPOLATE_Y)) && showModeParameterType == ShowModeParameterType.ADVANCED) { continue; } @@ -312,12 +324,13 @@ public class TraceCommand extends SWCommand { @AllArgsConstructor private enum ShowModeType { - ENTITY(TraceEntityShowMode::new), - RAW(RawEntityShowMode::new), - PARTICLE(ParticleShowMode::new), - BLOCK(BlockShowMode::new); + ENTITY(TraceEntityShowMode::new, true), + RAW(RawEntityShowMode::new, true), + PARTICLE(ParticleShowMode::new, false), + BLOCK(BlockShowMode::new, false); private BiFunction> showModeBiFunction; + private boolean allowTicks; } @Register({"show", "gui"}) diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/show/ShowModeParameter.java b/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/show/ShowModeParameter.java index cf84bfd3..2663d947 100644 --- a/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/show/ShowModeParameter.java +++ b/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/show/ShowModeParameter.java @@ -31,4 +31,5 @@ public class ShowModeParameter { private boolean interpolate_Y = false; private boolean interpolate_XZ = false; private boolean explodeOnly = false; + private boolean ticks = false; } diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/show/ShowModeParameterType.java b/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/show/ShowModeParameterType.java index 3908b840..b8954c7a 100644 --- a/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/show/ShowModeParameterType.java +++ b/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/show/ShowModeParameterType.java @@ -30,7 +30,8 @@ public enum ShowModeParameterType { showModeParameter.setInterpolate_Y(true); showModeParameter.setInterpolate_XZ(true); }), - EXPLODE(showModeParameter -> showModeParameter.setExplodeOnly(true)); + EXPLODE(showModeParameter -> showModeParameter.setExplodeOnly(true)), + TICKS(showModeParameter -> showModeParameter.setTicks(true)); private final Consumer showModeParameterConsumer; @@ -41,5 +42,4 @@ public enum ShowModeParameterType { ShowModeParameterType(Consumer showModeParameterConsumer) { this.showModeParameterConsumer = showModeParameterConsumer; } - } diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/show/mode/FactoredEntityShowMode.java b/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/show/mode/FactoredEntityShowMode.java index ed03c9d8..a860bb04 100644 --- a/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/show/mode/FactoredEntityShowMode.java +++ b/BauSystem_Main/src/de/steamwar/bausystem/features/tracer/show/mode/FactoredEntityShowMode.java @@ -57,7 +57,7 @@ public abstract class FactoredEntityShowMode implements ShowMode { } RoundedPosition roundedPosition = new RoundedPosition(position, factor); AbstractTraceEntity entity = tntEntityMap.computeIfAbsent(roundedPosition, pos -> createEntity(player, position.getLocation(), true)); - entity.display(player, position.isExploded()); + entity.display(player, position.isExploded(), showModeParameter.isTicks() ? position.getFuseTicks() : 0); return; } if (!showModeParameter.isWater() && position.isExploded() && checkWater(position.getLocation())) { @@ -81,12 +81,12 @@ public abstract class FactoredEntityShowMode implements ShowMode { RoundedPosition roundedPosition = new RoundedPosition(position, factor); AbstractTraceEntity entity = tntEntityMap.computeIfAbsent(roundedPosition, pos -> createEntity(player, position.getLocation(), true)); - entity.display(player, position.isExploded()); + entity.display(player, position.isExploded(), showModeParameter.isTicks() ? position.getFuseTicks() : 0); applyOnPosition(position, updatePointPosition -> { updateEntityMap.computeIfAbsent(new RoundedPosition(updatePointPosition, factor), pos -> { return createEntity(player, updatePointPosition, false); - }).display(player, false); + }).display(player, false, showModeParameter.isTicks() ? position.getFuseTicks() : 0); }); }