From 0cdd12669f5eb41e1979a0d35a8bcf6a0e567ba4 Mon Sep 17 00:00:00 2001 From: Ilya Date: Fri, 11 Feb 2022 16:11:28 +0300 Subject: [PATCH] Fix 3th chests --- .../extendedpistons/ExtendedPistons.java | 2 +- .../redguy/extendedpistons/WorldListener.java | 31 +++++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/src/main/java/ru/redguy/extendedpistons/ExtendedPistons.java b/src/main/java/ru/redguy/extendedpistons/ExtendedPistons.java index 410b114..1a651e6 100644 --- a/src/main/java/ru/redguy/extendedpistons/ExtendedPistons.java +++ b/src/main/java/ru/redguy/extendedpistons/ExtendedPistons.java @@ -1,4 +1,4 @@ -package ru.redguy.extendedpistons; //TODO: Block 3th chests, slime sides chests move, power supply remove, refactor +package ru.redguy.extendedpistons; //TODO: slime sides chests move, power supply remove, refactor import net.milkbowl.vault.permission.Permission; import org.bukkit.Bukkit; diff --git a/src/main/java/ru/redguy/extendedpistons/WorldListener.java b/src/main/java/ru/redguy/extendedpistons/WorldListener.java index ae89991..e2dff7e 100644 --- a/src/main/java/ru/redguy/extendedpistons/WorldListener.java +++ b/src/main/java/ru/redguy/extendedpistons/WorldListener.java @@ -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.DoubleChestInventory; import org.bukkit.inventory.InventoryHolder; import org.bukkit.material.PistonBaseMaterial; @@ -128,6 +129,36 @@ public class WorldListener implements Listener { List blocks = checker.getMovedBlocksObjects(); List toBreak = checker.getBrokenBlocksObjects(); + upper: for (Block b : blocks) { + Block b2 = b.getRelative(piston.getFacing()); + ArrayList faces = new ArrayList() {{add(BlockFace.NORTH);add(BlockFace.SOUTH);add(BlockFace.WEST);add(BlockFace.EAST);}}; + faces.remove(piston.getFacing().getOppositeFace()); + int chests = 0; + for (BlockFace blockFace : faces) { + Block b3 = b2.getRelative(blockFace); + if(b3.getType() == Material.CHEST) { + chests++; + Chest chest = (Chest)b3.getState(); + if(chest.getInventory() instanceof DoubleChestInventory) { + isMovable = false; + break upper; + } + } + } + if(chests > 1) { + isMovable = false; + break; + } else { + if(b.getType() == Material.CHEST) { + Chest chest = (Chest)b.getState(); + if(chest.getInventory() instanceof DoubleChestInventory) { + isMovable = false; + break; + } + } + } + } + if (isMovable) { BlockPistonExtendedExtendEvent event = new BlockPistonExtendedExtendEvent(block, blocks, piston.getFacing()); Bukkit.getPluginManager().callEvent(event);