ChestShop-3/src/main/java/com/Acrobot/Breeze/Utils/BlockUtil.java
Andrzej Pomirski e5953cd740 Speed up the isSign method
Theoretically, block.getState() returns a thread-safe instance of a
block, so getting it when not needed might have hurt performance of
ChestShop
2015-07-05 21:48:17 +02:00

72 lines
1.9 KiB
Java

package com.Acrobot.Breeze.Utils;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.Chest;
import org.bukkit.block.DoubleChest;
import org.bukkit.block.Sign;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.InventoryHolder;
import org.bukkit.material.Attachable;
/**
* @author Acrobot
*/
public class BlockUtil {
/**
* Checks if the block is a sign
*
* @param block Block to check
* @return Is this block a sign?
*/
public static boolean isSign(Block block) {
return block.getType() == Material.SIGN_POST
|| block.getType() == Material.WALL_SIGN;
}
/**
* Checks if the block is a chest
*
* @param block Block to check
* @return Is this block a chest?
*/
public static boolean isChest(Block block) {
return block.getState() instanceof Chest;
}
/**
* Checks if the InventoryHolder is a chest
*
* @param holder Inventory holder to check
* @return Is this holder a chest?
*/
public static boolean isChest(InventoryHolder holder) {
return holder instanceof Chest || holder instanceof DoubleChest;
}
/**
* Gets the block to which the sign is attached
*
* @param sign Sign which is attached
* @return Block to which the sign is attached
*/
public static Block getAttachedBlock(Sign sign) {
return sign.getBlock().getRelative(((Attachable) sign.getData()).getAttachedFace());
}
/**
* Opens the holder's inventory GUI
*
* @param holder Inventory holder
* @param player Player on whose screen the GUI is going to be shown
* @return Was the opening successful?
*/
public static boolean openBlockGUI(InventoryHolder holder, Player player) {
Inventory inventory = holder.getInventory();
player.openInventory(inventory);
return true;
}
}