protected BlockFace getAttachedFace(GlowBlock me) { MaterialData data = me.getState().getData(); if (data instanceof SimpleAttachableMaterialData) { return ((SimpleAttachableMaterialData) data).getAttachedFace(); } else if (data instanceof Sign) { return ((Sign) data).getAttachedFace(); } else { return BlockFace.DOWN; } } }
return getAttachedFace().getOppositeFace();
private Block getSignBlockAttached(Block signBlock) { if (!signBlock.getType().equals(Material.WALL_SIGN)) return null; return signBlock.getRelative(((org.bukkit.material.Sign) signBlock.getState().getData()).getAttachedFace()); }
return getAttachedFace().getOppositeFace();
@Override public void run() { if (id != -1 && id != 0 && subId != -1) { org.bukkit.material.Sign sign = (org.bukkit.material.Sign) location.getBlock().getState().getData(); location.getBlock().getRelative(sign.getAttachedFace()).setTypeIdAndData(id, (byte) subId, true); } } });
/** * Find a valid container block for a given sign, if it exists. * * @param sign sign to check * @return container for the sign if available, null otherwise. */ public static Block chestBlock(Sign sign) { // is sign attached to a valid vault container? Block signBlock = sign.getBlock(); org.bukkit.material.Sign signData = (org.bukkit.material.Sign) signBlock.getState().getData(); BlockFace attached = signData.getAttachedFace(); // allow either the block sign is attached to or the block below the sign as chest block. Prefer attached block. Block blockAttached = signBlock.getRelative(attached); Block blockBelow = signBlock.getRelative(BlockFace.DOWN); if (validContainer(blockAttached.getType())) { return blockAttached; } if (validContainer(blockBelow.getType())) { return blockBelow; } return null; // no valid container }