Improve PistonCalculator

This commit is contained in:
2025-07-29 11:18:00 +02:00
parent 65cb544b64
commit e36bbfd2a7
@@ -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<Location, PistOrder> 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<Location> brokenBlocks = new ArrayList<>();
private Set<Location> immovableBlocks = new HashSet<>();
public PistOrder(Block piston) {
this.piston = piston;
}
public void calculate() {
movedBlocks.clear();
brokenBlocks.clear();