97 lines
3.2 KiB
Java
97 lines
3.2 KiB
Java
package net.minecraft.block;
|
|
|
|
import java.util.Random;
|
|
import javax.annotation.Nullable;
|
|
import net.minecraft.block.material.MapColor;
|
|
import net.minecraft.block.material.Material;
|
|
import net.minecraft.block.state.IBlockState;
|
|
import net.minecraft.entity.player.EntityPlayer;
|
|
import net.minecraft.init.Blocks;
|
|
import net.minecraft.init.Items;
|
|
import net.minecraft.item.Item;
|
|
import net.minecraft.item.ItemStack;
|
|
import net.minecraft.stats.StatList;
|
|
import net.minecraft.tileentity.TileEntity;
|
|
import net.minecraft.util.math.AxisAlignedBB;
|
|
import net.minecraft.util.math.BlockPos;
|
|
import net.minecraft.world.IBlockAccess;
|
|
import net.minecraft.world.World;
|
|
|
|
public class BlockDeadBush extends BlockBush implements net.minecraftforge.common.IShearable
|
|
{
|
|
protected static final AxisAlignedBB DEAD_BUSH_AABB = new AxisAlignedBB(0.09999999403953552D, 0.0D, 0.09999999403953552D, 0.8999999761581421D, 0.800000011920929D, 0.8999999761581421D);
|
|
|
|
protected BlockDeadBush()
|
|
{
|
|
super(Material.VINE);
|
|
}
|
|
|
|
public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos)
|
|
{
|
|
return DEAD_BUSH_AABB;
|
|
}
|
|
|
|
/**
|
|
* Get the MapColor for this Block and the given BlockState
|
|
*/
|
|
public MapColor getMapColor(IBlockState state, IBlockAccess worldIn, BlockPos pos)
|
|
{
|
|
return MapColor.WOOD;
|
|
}
|
|
|
|
/**
|
|
* Return true if the block can sustain a Bush
|
|
*/
|
|
protected boolean canSustainBush(IBlockState state)
|
|
{
|
|
return state.getBlock() == Blocks.SAND || state.getBlock() == Blocks.HARDENED_CLAY || state.getBlock() == Blocks.STAINED_HARDENED_CLAY || state.getBlock() == Blocks.DIRT;
|
|
}
|
|
|
|
/**
|
|
* Whether this Block can be replaced directly by other blocks (true for e.g. tall grass)
|
|
*/
|
|
public boolean isReplaceable(IBlockAccess worldIn, BlockPos pos)
|
|
{
|
|
return true;
|
|
}
|
|
|
|
/**
|
|
* Returns the quantity of items to drop on block destruction.
|
|
*/
|
|
public int quantityDropped(Random random)
|
|
{
|
|
return random.nextInt(3);
|
|
}
|
|
|
|
/**
|
|
* Get the Item that this Block should drop when harvested.
|
|
*/
|
|
public Item getItemDropped(IBlockState state, Random rand, int fortune)
|
|
{
|
|
return Items.STICK;
|
|
}
|
|
|
|
/**
|
|
* Spawns the block's drops in the world. By the time this is called the Block has possibly been set to air via
|
|
* Block.removedByPlayer
|
|
*/
|
|
public void harvestBlock(World worldIn, EntityPlayer player, BlockPos pos, IBlockState state, @Nullable TileEntity te, ItemStack stack)
|
|
{
|
|
if (!worldIn.isRemote && stack.getItem() == Items.SHEARS)
|
|
{
|
|
player.addStat(StatList.getBlockStats(this));
|
|
spawnAsEntity(worldIn, pos, new ItemStack(Blocks.DEADBUSH, 1, 0));
|
|
}
|
|
else
|
|
{
|
|
super.harvestBlock(worldIn, player, pos, state, te, stack);
|
|
}
|
|
}
|
|
|
|
@Override public boolean isShearable(ItemStack item, net.minecraft.world.IBlockAccess world, BlockPos pos){ return true; }
|
|
@Override
|
|
public java.util.List<ItemStack> onSheared(ItemStack item, net.minecraft.world.IBlockAccess world, BlockPos pos, int fortune)
|
|
{
|
|
return java.util.Arrays.asList(new ItemStack(Blocks.DEADBUSH));
|
|
}
|
|
} |