package com.Acrobot.ChestShop.Utils; import com.Acrobot.ChestShop.Listeners.blockBreak; import com.Acrobot.ChestShop.Signs.restrictedSign; import org.bukkit.Material; import org.bukkit.block.Block; import org.bukkit.block.BlockFace; import org.bukkit.block.Chest; import org.bukkit.block.Sign; /** * @author Acrobot */ public class uBlock { private static final BlockFace[] chestFaces = {BlockFace.EAST, BlockFace.NORTH, BlockFace.WEST, BlockFace.SOUTH}; private static final BlockFace[] shopFaces = {BlockFace.SELF, BlockFace.DOWN, BlockFace.UP, BlockFace.EAST, BlockFace.NORTH, BlockFace.WEST, BlockFace.SOUTH}; public static Chest findChest(Sign sign) { Block block = sign.getBlock(); return findChest(block); } public static Chest findChest(Block block) { for (BlockFace bf : shopFaces) { Block faceBlock = block.getRelative(bf); if (faceBlock.getType() == Material.CHEST) return (Chest) faceBlock.getState(); } return null; } public static void blockUpdate(Block block) { for (BlockFace bf : shopFaces) { block.getRelative(bf).getState().update(true); } } public static Sign findSign(Block block, String originalName) { for (BlockFace bf : shopFaces) { Block faceBlock = block.getRelative(bf); if (uSign.isSign(faceBlock)) { Sign sign = (Sign) faceBlock.getState(); if (uSign.isValid(sign) && !sign.getLine(0).equals(originalName) && (faceBlock.equals(block) || blockBreak.getAttachedFace(sign).equals(block))) return sign; } } for (BlockFace bf : shopFaces) { Block faceBlock = block.getRelative(bf); if (uSign.isSign(faceBlock)) { Sign sign = (Sign) faceBlock.getState(); if (uSign.isValid(sign) && (faceBlock.equals(block) || blockBreak.getAttachedFace(sign).equals(block))) return sign; } } return null; } //Well, I need to re-write this plugin... I hate to code like that - sorry! public static Sign findSign2(Block block) { for (BlockFace bf : shopFaces) { Block faceBlock = block.getRelative(bf); if (uSign.isSign(faceBlock)) { Sign sign = (Sign) faceBlock.getState(); if (uSign.isValid(sign)) return sign; } } return null; } public static Sign findRestrictedSign(Block block) { for (BlockFace bf : shopFaces) { Block faceBlock = block.getRelative(bf); if (uSign.isSign(faceBlock)) { Sign sign = (Sign) faceBlock.getState(); if (restrictedSign.isRestricted(sign) && (faceBlock.equals(block) || blockBreak.getAttachedFace(sign).equals(block))) return sign; } } return null; } public static Chest findNeighbor(Block block) { for (BlockFace blockFace : chestFaces) { Block neighborBlock = block.getRelative(blockFace); if (neighborBlock.getType() == Material.CHEST) { return (Chest) neighborBlock.getState(); } } return null; } public static Chest findNeighbor(Chest chest) { return findNeighbor(chest.getBlock()); } }