Как сделать блок в Minecraft лицом, где игрок сталкивается? - PullRequest
0 голосов
/ 05 октября 2019

Я пишу свой первый мод Minecraft. Я сделал стальную балку, и она всегда обращена на север. Я хотел сделать так, чтобы игрок смотрел в любом направлении. Я пробовал несколько вещей, таких как:

@Override
    public IBlockState withRotation(IBlockState state, Rotation rot)
    {
        return state.withProperty(FACING, rot.rotate((EnumFacing)state.getValue(FACING)));
    }

и

@Override
    public IBlockState getStateForPlacement(World world, BlockPos pos, EnumFacing facing, float hitX, float hitY,
            float hitZ, int meta, EntityLivingBase placer, EnumHand hand) {
        return super.getStateForPlacement(world, pos, facing, hitX, hitY, hitZ, meta, placer, hand).withProperty(FACING, placer.getHorizontalFacing());
    }

Ничего из этого не помогло. Я использовал модель производителя MrCrayfish, у которой стороны направлены. Не знаю, важно ли это, но я решил включить его.

1 Ответ

0 голосов
/ 17 октября 2019

Переопределить IForgeBlock#getStateForPlacement и вернуть состояние по умолчанию блока, полученного с помощью Block#getDefaultState.

Примером этого может быть:

@Override
public IBlockState getStateForPlacement(World world, BlockPos pos, EnumFacing facing, float hitX, float hitY, float hitZ, int meta, EntityLivingBase placer) {
    return this.getDefaultState().withProperty(FACING, placer.getHorizontalFacing());
}

Youтакже необходимо переопределить Block # createBlockState, чтобы вернуть BlockStateContainer, содержащий свойство direction:

@Override
protected BlockStateContainer createBlockState() {
    return new BlockStateContainer(this, new IProperty[] {FACING});
}
...