diff --git a/BauSystem_15/src/de/steamwar/bausystem/world/AutoLoader_15.java b/BauSystem_15/src/de/steamwar/bausystem/world/AutoLoader_15.java index 846dd40..e0b478e 100644 --- a/BauSystem_15/src/de/steamwar/bausystem/world/AutoLoader_15.java +++ b/BauSystem_15/src/de/steamwar/bausystem/world/AutoLoader_15.java @@ -3,12 +3,15 @@ package de.steamwar.bausystem.world; import org.bukkit.Location; import org.bukkit.Material; import org.bukkit.block.Block; +import org.bukkit.block.BlockFace; import org.bukkit.block.data.BlockData; import org.bukkit.block.data.Powerable; +import org.bukkit.block.data.type.Switch; import org.bukkit.event.block.Action; import org.bukkit.event.player.PlayerInteractEvent; class AutoLoader_15 { + private AutoLoader_15() { } @@ -30,10 +33,32 @@ class AutoLoader_15 { Powerable powerable = (Powerable) data; powerable.setPowered(active); block.setBlockData(powerable); - block.getState().update(true); + + if (data instanceof Switch){ + Switch swtch = (Switch) data; + Block relative; + switch(swtch.getFace()){ + case FLOOR: + relative = block.getRelative(BlockFace.DOWN); + break; + case CEILING: + relative = block.getRelative(BlockFace.UP); + break; + default: + relative = block.getRelative(swtch.getFacing()); + break; + } + updateBlock(relative); + } return true; } + static void updateBlock(Block block) { + BlockData data = block.getBlockData(); + block.setType(Material.BARRIER, true); + block.setBlockData(data, true); + } + static void onPlayerInteract(IAutoLoader loader, PlayerInteractEvent event) { if (event.getAction() != Action.RIGHT_CLICK_BLOCK && event.getAction() != Action.PHYSICAL) return;