Add InventoryFillerCommand.gui

Closes: #27
Fix PistonCalculator movement
This commit is contained in:
2025-07-29 14:52:03 +02:00
parent 7edd72ac27
commit 2daca017c2
5 changed files with 170 additions and 11 deletions
@@ -87,25 +87,29 @@ public class PistonCalculator implements Listener {
@EventHandler
public void onBlockPistonExtend(BlockPistonExtendEvent event) {
Bukkit.getScheduler().runTaskLater(BauSystem.getInstance(), () -> {
movePistOrders(event.getDirection(), event.getBlocks());
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
public void onBlockPistonRetract(BlockPistonRetractEvent event) {
Bukkit.getScheduler().runTaskLater(BauSystem.getInstance(), () -> {
movePistOrders(event.getDirection(), event.getBlocks());
pistOrders.values().forEach(PistOrder::calculate);
}, 3);
event.getBlocks().forEach(block -> {
PistOrder pistOrder = pistOrders.remove(block.getLocation());
}
private void movePistOrders(BlockFace direction, List<Block> blocks) {
Set<PistOrder> orders = new HashSet<>();
blocks.forEach(block -> {
PistOrder pistOrder = pistOrders.get(block.getLocation());
if (pistOrder == null) return;
pistOrder.piston = pistOrder.piston.getRelative(event.getDirection());
pistOrders.remove(block.getLocation());
pistOrder.piston = pistOrder.piston.getRelative(direction);
orders.add(pistOrder);
});
orders.forEach(pistOrder -> {
pistOrders.put(pistOrder.piston.getLocation(), pistOrder);
});
}
@@ -173,7 +177,9 @@ public class PistonCalculator implements Listener {
return;
}
Piston pistonData = (Piston) piston.getBlockData();
BlockData blockData = piston.getBlockData();
if (!(blockData instanceof Piston)) return;
Piston pistonData = (Piston) blockData;
if (piston.getType() == Material.PISTON && pistonData.isExtended()) {
visualize();
return;