This commit is contained in:
Ilya 2022-02-11 00:30:21 +03:00
parent 716bc7c9a6
commit 506bb66b13

View File

@ -12,6 +12,7 @@ import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockPistonExtendEvent;
import org.bukkit.event.block.BlockPistonRetractEvent;
import org.bukkit.event.block.BlockRedstoneEvent;
import org.bukkit.inventory.InventoryHolder;
import org.bukkit.material.PistonBaseMaterial;
import java.util.Comparator;
@ -35,14 +36,24 @@ public class WorldListener implements Listener {
Block b = block.getRelative(piston.getFacing(), i);
if (b.isLiquid() || b.isEmpty()) break;
if (b.getPistonMoveReaction().equals(PistonMoveReaction.IGNORE) || b.getPistonMoveReaction().equals(PistonMoveReaction.BLOCK)) {
if (!(b.getType() == Material.CHEST || b.getType() == Material.FURNACE || b.getType() == Material.BURNING_FURNACE)) {
if (ExtendedPistons.INSTANCE.isAllowedTime())
isMovable = false;
} else {
blocks.add(b);
}
break;
} else if (b.getPistonMoveReaction().equals(PistonMoveReaction.BREAK)) {
break;
} else if(b.getPistonMoveReaction().equals(PistonMoveReaction.MOVE)) {
if (b.getType() == Material.CHEST || b.getType() == Material.FURNACE || b.getType() == Material.BURNING_FURNACE) {
if (ExtendedPistons.INSTANCE.isAllowedTime()) {
if(b.getType() == Material.CHEST) {
Block b2 = block.getRelative(piston.getFacing(), i+2);
if(b2.getType() == Material.CHEST) {
Chest chest = (Chest) b2.getState();
InventoryHolder ih = chest.getInventory().getHolder();
if (ih instanceof DoubleChest) {
isMovable = false;
} else blocks.add(b);
} else blocks.add(b);
} else blocks.add(b);
} else isMovable = false;
}
} else {
blocks.add(b);
}
@ -146,15 +157,25 @@ public class WorldListener implements Listener {
Block b = block.getRelative(piston.getFacing(), i);
if (b.isLiquid() || b.isEmpty()) break;
if (b.getPistonMoveReaction().equals(PistonMoveReaction.IGNORE) || b.getPistonMoveReaction().equals(PistonMoveReaction.BLOCK)) {
if (!(b.getType() == Material.CHEST || b.getType() == Material.FURNACE || b.getType() == Material.BURNING_FURNACE)) {
if (ExtendedPistons.INSTANCE.isAllowedTime())
isMovable = false;
} else {
blocks.add(b);
}
break;
} else if (b.getPistonMoveReaction().equals(PistonMoveReaction.BREAK)) {
toBreak = b;
break;
} else if(b.getPistonMoveReaction().equals(PistonMoveReaction.MOVE)) {
if (b.getType() == Material.CHEST || b.getType() == Material.FURNACE || b.getType() == Material.BURNING_FURNACE) {
if (ExtendedPistons.INSTANCE.isAllowedTime()) {
if(b.getType() == Material.CHEST) {
Block b2 = block.getRelative(piston.getFacing(), i+2);
if(b2.getType() == Material.CHEST) {
Chest chest = (Chest) b2.getState();
InventoryHolder ih = chest.getInventory().getHolder();
if (ih instanceof DoubleChest) {
isMovable = false;
} else blocks.add(b);
} else blocks.add(b);
} else blocks.add(b);
} else isMovable = false;
}
} else {
blocks.add(b);
}