Files
AkarinMC/src/main/java/net/minecraft/server/BlockCocoa.java
2019-03-04 18:16:32 +08:00

126 lines
5.4 KiB
Java

package net.minecraft.server;
import java.util.Random;
import javax.annotation.Nullable;
import org.bukkit.craftbukkit.event.CraftEventFactory; // CraftBukkit
public class BlockCocoa extends BlockFacingHorizontal implements IBlockFragilePlantElement {
public static final BlockStateInteger AGE = BlockProperties.T;
protected static final VoxelShape[] b = new VoxelShape[] { Block.a(11.0D, 7.0D, 6.0D, 15.0D, 12.0D, 10.0D), Block.a(9.0D, 5.0D, 5.0D, 15.0D, 12.0D, 11.0D), Block.a(7.0D, 3.0D, 4.0D, 15.0D, 12.0D, 12.0D)};
protected static final VoxelShape[] c = new VoxelShape[] { Block.a(1.0D, 7.0D, 6.0D, 5.0D, 12.0D, 10.0D), Block.a(1.0D, 5.0D, 5.0D, 7.0D, 12.0D, 11.0D), Block.a(1.0D, 3.0D, 4.0D, 9.0D, 12.0D, 12.0D)};
protected static final VoxelShape[] o = new VoxelShape[] { Block.a(6.0D, 7.0D, 1.0D, 10.0D, 12.0D, 5.0D), Block.a(5.0D, 5.0D, 1.0D, 11.0D, 12.0D, 7.0D), Block.a(4.0D, 3.0D, 1.0D, 12.0D, 12.0D, 9.0D)};
protected static final VoxelShape[] p = new VoxelShape[] { Block.a(6.0D, 7.0D, 11.0D, 10.0D, 12.0D, 15.0D), Block.a(5.0D, 5.0D, 9.0D, 11.0D, 12.0D, 15.0D), Block.a(4.0D, 3.0D, 7.0D, 12.0D, 12.0D, 15.0D)};
public BlockCocoa(Block.Info block_info) {
super(block_info);
this.v((IBlockData) ((IBlockData) ((IBlockData) this.blockStateList.getBlockData()).set(BlockCocoa.FACING, EnumDirection.NORTH)).set(BlockCocoa.AGE, 0));
}
public void a(IBlockData iblockdata, World world, BlockPosition blockposition, Random random) {
if (world.random.nextInt(Math.max(1, (int) (100.0F / world.spigotConfig.cocoaModifier) * 5)) == 0) { // Spigot
int i = (Integer) iblockdata.get(BlockCocoa.AGE);
if (i < 2) {
CraftEventFactory.handleBlockGrowEvent(world, blockposition, (IBlockData) iblockdata.set(BlockCocoa.AGE, i + 1), 2); // CraftBukkkit
}
}
}
public boolean canPlace(IBlockData iblockdata, IWorldReader iworldreader, BlockPosition blockposition) {
Block block = iworldreader.getType(blockposition.shift((EnumDirection) iblockdata.get(BlockCocoa.FACING))).getBlock();
return block.a(TagsBlock.JUNGLE_LOGS);
}
public boolean a(IBlockData iblockdata) {
return false;
}
public VoxelShape a(IBlockData iblockdata, IBlockAccess iblockaccess, BlockPosition blockposition) {
int i = (Integer) iblockdata.get(BlockCocoa.AGE);
switch ((EnumDirection) iblockdata.get(BlockCocoa.FACING)) {
case SOUTH:
return BlockCocoa.p[i];
case NORTH:
default:
return BlockCocoa.o[i];
case WEST:
return BlockCocoa.c[i];
case EAST:
return BlockCocoa.b[i];
}
}
@Nullable
public IBlockData getPlacedState(BlockActionContext blockactioncontext) {
IBlockData iblockdata = this.getBlockData();
World world = blockactioncontext.getWorld();
BlockPosition blockposition = blockactioncontext.getClickPosition();
EnumDirection[] aenumdirection = blockactioncontext.e();
int i = aenumdirection.length;
for (int j = 0; j < i; ++j) {
EnumDirection enumdirection = aenumdirection[j];
if (enumdirection.k().c()) {
iblockdata = (IBlockData) iblockdata.set(BlockCocoa.FACING, enumdirection);
if (iblockdata.canPlace(world, blockposition)) {
return iblockdata;
}
}
}
return null;
}
public IBlockData updateState(IBlockData iblockdata, EnumDirection enumdirection, IBlockData iblockdata1, GeneratorAccess generatoraccess, BlockPosition blockposition, BlockPosition blockposition1) {
return enumdirection == iblockdata.get(BlockCocoa.FACING) && !iblockdata.canPlace(generatoraccess, blockposition) ? Blocks.AIR.getBlockData() : super.updateState(iblockdata, enumdirection, iblockdata1, generatoraccess, blockposition, blockposition1);
}
public void dropNaturally(IBlockData iblockdata, World world, BlockPosition blockposition, float f, int i) {
int j = (Integer) iblockdata.get(BlockCocoa.AGE);
byte b0 = 1;
if (j >= 2) {
b0 = 3;
}
for (int k = 0; k < b0; ++k) {
a(world, blockposition, new ItemStack(Items.COCOA_BEANS));
}
}
public ItemStack a(IBlockAccess iblockaccess, BlockPosition blockposition, IBlockData iblockdata) {
return new ItemStack(Items.COCOA_BEANS);
}
public boolean a(IBlockAccess iblockaccess, BlockPosition blockposition, IBlockData iblockdata, boolean flag) {
return (Integer) iblockdata.get(BlockCocoa.AGE) < 2;
}
public boolean a(World world, Random random, BlockPosition blockposition, IBlockData iblockdata) {
return true;
}
public void b(World world, Random random, BlockPosition blockposition, IBlockData iblockdata) {
CraftEventFactory.handleBlockGrowEvent(world, blockposition, (IBlockData) iblockdata.set(BlockCocoa.AGE, (Integer) iblockdata.get(BlockCocoa.AGE) + 1), 2); // CraftBukkit
}
public TextureType c() {
return TextureType.CUTOUT;
}
protected void a(BlockStateList.a<Block, IBlockData> blockstatelist_a) {
blockstatelist_a.a(BlockCocoa.FACING, BlockCocoa.AGE);
}
public EnumBlockFaceShape a(IBlockAccess iblockaccess, IBlockData iblockdata, BlockPosition blockposition, EnumDirection enumdirection) {
return EnumBlockFaceShape.UNDEFINED;
}
}