package openblocks.common.block; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.util.AxisAlignedBB; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; import openmods.infobook.BookDocumentation; @BookDocumentation public class BlockPath extends OpenBlock { public BlockPath() { super(Material.ground); setBlockBounds(0, 0, 0, 1f, 0.1f, 1f); } @Override public boolean isOpaqueCube() { return false; } @Override public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { return null; } @Override public boolean canPlaceBlockAt(World world, int x, int y, int z) { return isValidLocation(world, x, y, z) && super.canPlaceBlockAt(world, x, y, z); } protected boolean isValidLocation(World world, int x, int y, int z) { Block below = world.getBlock(x, y - 1, z); return below.isSideSolid(world, x, y - 1, z, ForgeDirection.UP); } @Override public void onNeighborBlockChange(World world, int x, int y, int z, Block block) { if (!world.isRemote && !isValidLocation(world, x, y, z)) { dropBlockAsItem(world, x, y, z, world.getBlockMetadata(x, y, z), 0); world.setBlockToAir(x, y, z); } } }