package net.glowstone.block.blocktype;
import net.glowstone.block.GlowBlock;
import net.glowstone.block.GlowBlockState;
import net.glowstone.entity.GlowPlayer;
import org.bukkit.block.BlockFace;
import org.bukkit.inventory.ItemStack;
import org.bukkit.material.MaterialData;
import org.bukkit.material.TrapDoor;
import org.bukkit.util.Vector;
/**
* Helper for trapdoor blocks.
*/
public class BlockTrapDoor {
private BlockType parent;
public BlockTrapDoor(BlockType parent) {
this.parent = parent;
}
public void placeBlock(GlowPlayer player, GlowBlockState state, BlockFace face, ItemStack holding, Vector clickedLoc) {
MaterialData materialData = state.getData();
if (materialData instanceof TrapDoor) {
TrapDoor trapDoor = (TrapDoor) materialData;
trapDoor.setFacingDirection(face);
if (clickedLoc.getY() >= 7.5) {
trapDoor.setInverted(true);
} else {
trapDoor.setInverted(false);
}
state.update(true);
} else {
parent.warnMaterialData(TrapDoor.class, materialData);
}
}
public void onRedstoneUpdate(GlowBlock block) {
GlowBlockState state = block.getState();
TrapDoor trapdoor = (TrapDoor) state.getData();
boolean powered = block.isBlockIndirectlyPowered();
if (powered != trapdoor.isOpen()) {
trapdoor.setOpen(powered);
state.update();
}
}
}