Improve PistonCalculator

This commit is contained in:
2025-10-02 20:41:21 +02:00
parent 84b14b8c3d
commit 9c5b7712cb
@@ -55,13 +55,12 @@ public class PistonCalculator implements Listener {
public void onPlayerInteract(PlayerInteractEvent event) {
if (!Permission.BUILD.hasPermission(event.getPlayer())) return;
if (event.getAction() != Action.RIGHT_CLICK_BLOCK) return;
if (event.getItem() == null) {}
else if (event.getItem() != null && event.getItem().getType() == Material.SLIME_BALL) {}
else if (!event.getItem().getType().isBlock()) {
if (event.getItem() == null) {
} else if (event.getItem() != null && event.getItem().getType() == Material.SLIME_BALL) {
} else if (!event.getItem().getType().isBlock()) {
DEBOUNCE.put(event.getPlayer(), System.currentTimeMillis());
return;
}
else return;
} else return;
if (event.getClickedBlock() == null) return;
Block clickedBlock = event.getClickedBlock();
Material blockType = clickedBlock.getType();
@@ -92,6 +91,7 @@ public class PistonCalculator implements Listener {
@EventHandler
public void onBlockPistonExtend(BlockPistonExtendEvent event) {
if (pistOrders.isEmpty()) return;
Bukkit.getScheduler().runTaskLater(BauSystem.getInstance(), () -> {
movePistOrders(event.getDirection(), event.getBlocks());
pistOrders.values().forEach(PistOrder::calculate);
@@ -100,6 +100,7 @@ public class PistonCalculator implements Listener {
@EventHandler
public void onBlockPistonRetract(BlockPistonRetractEvent event) {
if (pistOrders.isEmpty()) return;
Bukkit.getScheduler().runTaskLater(BauSystem.getInstance(), () -> {
movePistOrders(event.getDirection(), event.getBlocks());
pistOrders.values().forEach(PistOrder::calculate);
@@ -122,6 +123,7 @@ public class PistonCalculator implements Listener {
@EventHandler
public void onBlockPlace(BlockPlaceEvent event) {
if (pistOrders.isEmpty()) return;
Bukkit.getScheduler().runTaskLater(BauSystem.getInstance(), () -> {
pistOrders.values().forEach(PistOrder::calculate);
}, 1);
@@ -129,6 +131,7 @@ public class PistonCalculator implements Listener {
@EventHandler
public void onBlockBreak(BlockBreakEvent event) {
if (pistOrders.isEmpty()) return;
if (pistOrders.containsKey(event.getBlock().getLocation())) {
PistOrder pistOrder = pistOrders.remove(event.getBlock().getLocation());
pistOrder.server.close();
@@ -276,7 +279,8 @@ public class PistonCalculator implements Listener {
immovableBlocks.add(block.getLocation());
return;
}
if (facing != direction && (block.equals(origin) || block.getRelative(facing.getOppositeFace()).equals(origin))) return;
if (facing != direction && (block.equals(origin) || block.getRelative(facing.getOppositeFace()).equals(origin)))
return;
if (!movedBlocks.contains(block.getLocation())) toCalc.add(block);
}
}
@@ -372,12 +376,4 @@ public class PistonCalculator implements Listener {
return false;
}
}
private boolean isPiston(Block block) {
BlockData blockData = block.getBlockData();
if (blockData instanceof Piston) {
return !((Piston) blockData).isExtended();
}
return false;
}
}