forked from SteamWar/SteamWar
Add InventoryFillerCommand.gui
Closes: #27 Fix PistonCalculator movement
This commit is contained in:
+16
-10
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user