package net.glowstone.block.blocktype;
import net.glowstone.block.GlowBlock;
import net.glowstone.block.GlowBlockState;
import net.glowstone.entity.GlowPlayer;
import net.glowstone.inventory.ToolType;
import org.bukkit.Material;
import org.bukkit.block.BlockFace;
import org.bukkit.inventory.ItemStack;
import org.bukkit.material.MaterialData;
import org.bukkit.material.Stairs;
import org.bukkit.util.Vector;
import java.util.Arrays;
import java.util.Collection;
public class BlockStairs extends BlockType {
@Override
public void placeBlock(GlowPlayer player, GlowBlockState state, BlockFace face, ItemStack holding, Vector clickedLoc) {
super.placeBlock(player, state, face, holding, clickedLoc);
MaterialData data = state.getData();
if (data instanceof Stairs) {
((Stairs) data).setFacingDirection(player.getDirection());
if (face == BlockFace.DOWN || face != BlockFace.UP && clickedLoc.getY() >= 8) {
((Stairs) data).setInverted(true);
}
state.setData(data);
} else {
warnMaterialData(Stairs.class, data);
}
}
@Override
public Collection<ItemStack> getDrops(GlowBlock block, ItemStack tool) {
if (isWoodenStair(block.getType()) ||
(tool != null && ToolType.PICKAXE.matches(tool.getType()))) {
return getMinedDrops(block);
}
return BlockDropless.EMPTY_STACK;
}
@Override
public Collection<ItemStack> getMinedDrops(GlowBlock block) {
return Arrays.asList(new ItemStack(block.getType()));
}
private boolean isWoodenStair(Material type) {
switch (type) {
case ACACIA_STAIRS:
case BIRCH_WOOD_STAIRS:
case DARK_OAK_STAIRS:
case JUNGLE_WOOD_STAIRS:
case SPRUCE_WOOD_STAIRS:
case WOOD_STAIRS:
return true;
default:
return false;
}
}
}