- 21
- 1
Нужно сделать так, чтобы блок при его установке был лицевой стороной направлен на игрока (как, например, печка). Пробовал всё сделать так же, как и в коде печки (BlockFurnace.java), но клиент после этого выдаёт ошибку.
Ну или же подскажите, что не так в этом коде (наверное, всё):
Ну или же подскажите, что не так в этом коде (наверное, всё):
Java:
public class KnockedPlanks extends Block
{
protected static final AxisAlignedBB FULL_BLOCK_AABB = new AxisAlignedBB(0.0D, 0.0D, 1.0D, 1.0D, 1.0D, 0.875D);
public static final PropertyDirection FACING = BlockHorizontal.FACING;
public void onBlockAdded(World worldIn, BlockPos pos, IBlockState state)
{
this.setDefaultFacing(worldIn, pos, state);
}
private void setDefaultFacing(World worldIn, BlockPos pos, IBlockState state)
{
if (!worldIn.isRemote)
{
IBlockState iblockstate = worldIn.getBlockState(pos.north());
IBlockState iblockstate1 = worldIn.getBlockState(pos.south());
IBlockState iblockstate2 = worldIn.getBlockState(pos.west());
IBlockState iblockstate3 = worldIn.getBlockState(pos.east());
EnumFacing enumfacing = (EnumFacing)state.getValue(FACING);
if (enumfacing == EnumFacing.NORTH && iblockstate.isFullBlock() && !iblockstate1.isFullBlock())
{
enumfacing = EnumFacing.SOUTH;
}
else if (enumfacing == EnumFacing.SOUTH && iblockstate1.isFullBlock() && !iblockstate.isFullBlock())
{
enumfacing = EnumFacing.NORTH;
}
else if (enumfacing == EnumFacing.WEST && iblockstate2.isFullBlock() && !iblockstate3.isFullBlock())
{
enumfacing = EnumFacing.EAST;
}
else if (enumfacing == EnumFacing.EAST && iblockstate3.isFullBlock() && !iblockstate2.isFullBlock())
{
enumfacing = EnumFacing.WEST;
}
worldIn.setBlockState(pos, state.withProperty(FACING, enumfacing), 2);
}
}
public KnockedPlanks(String name)
{
super(Material.WOOD);
this.setRegistryName("kplanks");
this.setUnlocalizedName("KnockedPlanks");
this.setCreativeTab(FirstMod.CTABBLOCKS);
this.setHardness(3);
this.setDefaultState(this.blockState.getBaseState().withProperty(FACING, EnumFacing.NORTH));
}
@Override
public boolean isOpaqueCube(IBlockState state)
{
return false;
}
@Override
public boolean isFullCube(IBlockState state)
{
return false;
}
private static final AxisAlignedBB[] KPLANKS_AABB = new AxisAlignedBB[] {
new AxisAlignedBB(0.0, 0.125, 1.0, 1.0, 1.0, 0.875)
};
@Override
public void addCollisionBoxToList(IBlockState state, World worldIn, BlockPos pos, AxisAlignedBB entityBox, List<AxisAlignedBB> collidingBoxes, @Nullable Entity entityIn, boolean isActualState) {
addCollisionBoxToList(pos, entityBox, collidingBoxes, KPLANKS_AABB[0]);
}
public AxisAlignedBB getBoundingBox(IBlockState blockState, IBlockAccess source, BlockPos position) {
return FULL_BLOCK_AABB;
}
}