From e36bbfd2a7a7bbe4da22f4c504ae4a3ef7126a19 Mon Sep 17 00:00:00 2001 From: YoyoNow Date: Tue, 29 Jul 2025 11:18:00 +0200 Subject: [PATCH] Improve PistonCalculator --- .../features/util/PistonCalculator.java | 20 ++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/util/PistonCalculator.java b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/util/PistonCalculator.java index 9944c549..dabb0d5c 100644 --- a/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/util/PistonCalculator.java +++ b/BauSystem/BauSystem_Main/src/de/steamwar/bausystem/features/util/PistonCalculator.java @@ -27,7 +27,6 @@ import de.steamwar.entity.REntityServer; import de.steamwar.entity.RTextDisplay; import de.steamwar.linkage.Linked; import de.steamwar.linkage.MinVersion; -import lombok.RequiredArgsConstructor; import org.bukkit.Bukkit; import org.bukkit.Location; import org.bukkit.Material; @@ -92,6 +91,12 @@ public class PistonCalculator implements Listener { Bukkit.getScheduler().runTaskLater(BauSystem.getInstance(), () -> { pistOrders.values().forEach(PistOrder::calculate); }, 3); + event.getBlocks().forEach(block -> { + PistOrder pistOrder = pistOrders.remove(block.getLocation()); + if (pistOrder == null) return; + pistOrder.piston = pistOrder.piston.getRelative(event.getDirection()); + pistOrders.put(pistOrder.piston.getLocation(), pistOrder); + }); } @EventHandler @@ -99,6 +104,12 @@ public class PistonCalculator implements Listener { Bukkit.getScheduler().runTaskLater(BauSystem.getInstance(), () -> { pistOrders.values().forEach(PistOrder::calculate); }, 3); + event.getBlocks().forEach(block -> { + PistOrder pistOrder = pistOrders.remove(block.getLocation()); + if (pistOrder == null) return; + pistOrder.piston = pistOrder.piston.getRelative(event.getDirection()); + pistOrders.put(pistOrder.piston.getLocation(), pistOrder); + }); } @EventHandler @@ -138,9 +149,8 @@ public class PistonCalculator implements Listener { private final Map pistOrders = new HashMap<>(); - @RequiredArgsConstructor private final class PistOrder { - private final Block piston; + private Block piston; private REntityServer server = new REntityServer(); private boolean pulling = false; @@ -148,6 +158,10 @@ public class PistonCalculator implements Listener { private List brokenBlocks = new ArrayList<>(); private Set immovableBlocks = new HashSet<>(); + public PistOrder(Block piston) { + this.piston = piston; + } + public void calculate() { movedBlocks.clear(); brokenBlocks.clear();