package net.glowstone.block.blocktype;
import net.glowstone.block.GlowBlock;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.inventory.ItemStack;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
public class BlockSugarCane extends BlockNeedsAttached {
private static final BlockFace[] DIRECT_FACES = new BlockFace[]{BlockFace.NORTH, BlockFace.EAST, BlockFace.WEST, BlockFace.SOUTH};
@Override
public void onNearBlockChanged(GlowBlock block, BlockFace face, GlowBlock changedBlock, Material oldType, byte oldData, Material newType, byte newData) {
updatePhysics(block);
}
@Override
public boolean canPlaceAt(GlowBlock block, BlockFace against) {
Block below = block.getRelative(BlockFace.DOWN);
Material type = below.getType();
switch (type) {
case SUGAR_CANE_BLOCK:
return true;
case DIRT:
case GRASS:
case SAND:
return isNearWater(below);
}
return false;
}
private boolean isNearWater(Block block) {
for (BlockFace face : DIRECT_FACES) {
switch (block.getRelative(face).getType()) {
case WATER:
case STATIONARY_WATER:
return true;
}
}
return false;
}
@Override
public Collection<ItemStack> getDrops(GlowBlock me, ItemStack tool) {
return Collections.unmodifiableList(Arrays.asList(new ItemStack(Material.SUGAR_CANE)));
}
}