- 5,018
- 47
- 783
Я сделал веточки кактусу. Они должны прицеплятся к блоку с той стороны, на которую смотрит игрок
Проблема:
Код класса кактус-ветки
И блокстейт. Пробовал костылить с поворотом на 180 при соотв. стороне - не работает. Всмысле в коде работает, а модель не поворачивается
Проблема:
Код класса кактус-ветки
Код:
public class SideCactus extends BlockSide
{
public static final PropertyEnum<EnumFacing.Axis> AXIS = PropertyEnum.<EnumFacing.Axis>create("axis", EnumFacing.Axis.class);
protected static final AxisAlignedBB[] SIDE_AABB = new AxisAlignedBB[] {new AxisAlignedBB(0.375D, 0.375D, 0.375D, 0.625D, 0.625D, 0.625D), new AxisAlignedBB(0.375D, 0.375D, 0D, 0.625D, 0.625D, 1D),
new AxisAlignedBB(0D, 0.375D, 0.375D, 1D, 0.625D, 0.625D), new AxisAlignedBB(0D, 0.375D, 0.375D, 1D, 0.625D, 0.625D)};
public SideCactus(String name)
{
super(name, Material.WOOD, SIDE_AABB);
this.setHardness(1.2F);
this.setCreativeTab(Realism.tabMain);
this.setDefaultState(this.blockState.getBaseState().withProperty(FACING, EnumFacing.NORTH));
}
@Override
public void dropBlockAsItemWithChance(World worldIn, BlockPos pos, IBlockState state, float chance, int fortune)
{
super.dropBlockAsItemWithChance(worldIn, pos, state, chance, fortune);
worldIn.spawnEntity(new EntityItem(worldIn, pos.getX(), pos.getY(), pos.getZ(), new ItemStack(Items.STICK)));
}
@Override
public IBlockState getActualState(IBlockState state, IBlockAccess worldIn, BlockPos pos)
{
Block block = worldIn.getBlockState(pos.up()).getBlock();
return state;
}
@Override
protected BlockStateContainer createBlockState()
{
return new BlockStateContainer(this, new IProperty[] {FACING});
}
@Override
public IBlockState getStateFromMeta(int meta)
{
return this.getDefaultState().withProperty(FACING, EnumFacing.getHorizontal(meta & 3));
}
@Override
public void onBlockPlacedBy(World worldIn, BlockPos pos, IBlockState state, EntityLivingBase placer, ItemStack stack)
{
EnumFacing enumfacing = EnumFacing.fromAngle((double)placer.rotationYaw);
int heading = MathHelper.floor((double)(placer.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3;
if(heading == 0){
worldIn.setBlockState(pos, state.withProperty(FACING, enumfacing.rotateY()), 2);
System.out.println(enumfacing);
}
worldIn.setBlockState(pos, state.withProperty(FACING, enumfacing), 2);
// System.out.println(enumfacing);
}
@Override
public int getMetaFromState(IBlockState state)
{
int i = 0;
i = i | state.getValue(FACING).getHorizontalIndex();
i |= 8;
i |= 4;
return i;
}
}
И блокстейт. Пробовал костылить с поворотом на 180 при соотв. стороне - не работает. Всмысле в коде работает, а модель не поворачивается
Код:
{
"variants": {
"facing=east": { "model": "realism:cactusside", "y": 90 },
"facing=west": { "model": "realism:cactusside", "y": 90 },
"facing=south": { "model": "realism:cactusside", "z": 90},
"facing=north": { "model": "realism:cactusside"}
}
}