package tc.oc.commons.bukkit.util;
import org.bukkit.Material;
import org.bukkit.World;
import org.bukkit.block.Block;
import org.bukkit.block.BlockState;
import org.bukkit.material.MaterialData;
import org.bukkit.util.BlockVector;
public class BlockStateUtils {
@SuppressWarnings("deprecation")
public static BlockState toAir(BlockState state) {
return toAir(state.getBlock());
}
public static BlockState toAir(Block block) {
BlockState newState = block.getState(); // this creates a new copy of the state
newState.setType(Material.AIR);
newState.setRawData((byte) 0);
return newState;
}
public static BlockState cloneWithMaterial(Block block, Material material) {
return cloneWithMaterial(block, material, (byte) 0);
}
@SuppressWarnings("deprecation")
public static BlockState cloneWithMaterial(Block block, Material material, byte data) {
BlockState state = block.getState();
state.setType(material);
state.setRawData(data);
return state;
}
@SuppressWarnings("deprecation")
public static BlockState cloneWithMaterial(Block block, MaterialData materialData) {
return cloneWithMaterial(block, materialData.getItemType(), materialData.getData());
}
public static BlockState create(World world, BlockVector pos, MaterialData materialData) {
BlockState state = pos.toLocation(world).getBlock().getState();
state.setMaterialData(materialData);
return state;
}
public static String format(BlockState state) {
return "BlockState{pos=(" + state.getX() + ", " + state.getY() + ", " + state.getZ() +
") material=" + state.getMaterialData() + "}";
}
}