forked from SteamWar/SteamWar
Improve PistonCalculator
This commit is contained in:
+10
-14
@@ -55,13 +55,12 @@ public class PistonCalculator implements Listener {
|
|||||||
public void onPlayerInteract(PlayerInteractEvent event) {
|
public void onPlayerInteract(PlayerInteractEvent event) {
|
||||||
if (!Permission.BUILD.hasPermission(event.getPlayer())) return;
|
if (!Permission.BUILD.hasPermission(event.getPlayer())) return;
|
||||||
if (event.getAction() != Action.RIGHT_CLICK_BLOCK) return;
|
if (event.getAction() != Action.RIGHT_CLICK_BLOCK) return;
|
||||||
if (event.getItem() == null) {}
|
if (event.getItem() == null) {
|
||||||
else if (event.getItem() != null && event.getItem().getType() == Material.SLIME_BALL) {}
|
} else if (event.getItem() != null && event.getItem().getType() == Material.SLIME_BALL) {
|
||||||
else if (!event.getItem().getType().isBlock()) {
|
} else if (!event.getItem().getType().isBlock()) {
|
||||||
DEBOUNCE.put(event.getPlayer(), System.currentTimeMillis());
|
DEBOUNCE.put(event.getPlayer(), System.currentTimeMillis());
|
||||||
return;
|
return;
|
||||||
}
|
} else return;
|
||||||
else return;
|
|
||||||
if (event.getClickedBlock() == null) return;
|
if (event.getClickedBlock() == null) return;
|
||||||
Block clickedBlock = event.getClickedBlock();
|
Block clickedBlock = event.getClickedBlock();
|
||||||
Material blockType = clickedBlock.getType();
|
Material blockType = clickedBlock.getType();
|
||||||
@@ -92,6 +91,7 @@ public class PistonCalculator implements Listener {
|
|||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onBlockPistonExtend(BlockPistonExtendEvent event) {
|
public void onBlockPistonExtend(BlockPistonExtendEvent event) {
|
||||||
|
if (pistOrders.isEmpty()) return;
|
||||||
Bukkit.getScheduler().runTaskLater(BauSystem.getInstance(), () -> {
|
Bukkit.getScheduler().runTaskLater(BauSystem.getInstance(), () -> {
|
||||||
movePistOrders(event.getDirection(), event.getBlocks());
|
movePistOrders(event.getDirection(), event.getBlocks());
|
||||||
pistOrders.values().forEach(PistOrder::calculate);
|
pistOrders.values().forEach(PistOrder::calculate);
|
||||||
@@ -100,6 +100,7 @@ public class PistonCalculator implements Listener {
|
|||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onBlockPistonRetract(BlockPistonRetractEvent event) {
|
public void onBlockPistonRetract(BlockPistonRetractEvent event) {
|
||||||
|
if (pistOrders.isEmpty()) return;
|
||||||
Bukkit.getScheduler().runTaskLater(BauSystem.getInstance(), () -> {
|
Bukkit.getScheduler().runTaskLater(BauSystem.getInstance(), () -> {
|
||||||
movePistOrders(event.getDirection(), event.getBlocks());
|
movePistOrders(event.getDirection(), event.getBlocks());
|
||||||
pistOrders.values().forEach(PistOrder::calculate);
|
pistOrders.values().forEach(PistOrder::calculate);
|
||||||
@@ -122,6 +123,7 @@ public class PistonCalculator implements Listener {
|
|||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onBlockPlace(BlockPlaceEvent event) {
|
public void onBlockPlace(BlockPlaceEvent event) {
|
||||||
|
if (pistOrders.isEmpty()) return;
|
||||||
Bukkit.getScheduler().runTaskLater(BauSystem.getInstance(), () -> {
|
Bukkit.getScheduler().runTaskLater(BauSystem.getInstance(), () -> {
|
||||||
pistOrders.values().forEach(PistOrder::calculate);
|
pistOrders.values().forEach(PistOrder::calculate);
|
||||||
}, 1);
|
}, 1);
|
||||||
@@ -129,6 +131,7 @@ public class PistonCalculator implements Listener {
|
|||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
public void onBlockBreak(BlockBreakEvent event) {
|
public void onBlockBreak(BlockBreakEvent event) {
|
||||||
|
if (pistOrders.isEmpty()) return;
|
||||||
if (pistOrders.containsKey(event.getBlock().getLocation())) {
|
if (pistOrders.containsKey(event.getBlock().getLocation())) {
|
||||||
PistOrder pistOrder = pistOrders.remove(event.getBlock().getLocation());
|
PistOrder pistOrder = pistOrders.remove(event.getBlock().getLocation());
|
||||||
pistOrder.server.close();
|
pistOrder.server.close();
|
||||||
@@ -276,7 +279,8 @@ public class PistonCalculator implements Listener {
|
|||||||
immovableBlocks.add(block.getLocation());
|
immovableBlocks.add(block.getLocation());
|
||||||
return;
|
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);
|
if (!movedBlocks.contains(block.getLocation())) toCalc.add(block);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -372,12 +376,4 @@ public class PistonCalculator implements Listener {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean isPiston(Block block) {
|
|
||||||
BlockData blockData = block.getBlockData();
|
|
||||||
if (blockData instanceof Piston) {
|
|
||||||
return !((Piston) blockData).isExtended();
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user