[1.12.2]Дверь не сохраняет состояния, но код как в ванильной

Версия Minecraft
1.12.2
API
Forge
39
2
0
В F3 показывает всё как надо, но на деле модель и коллизия отвальные, unlock не сохраняется
meta:
//UNLOCK - если false, значит дверь заперта на ключ и её никак нельзя открыть
@Override
public int getMetaFromState(IBlockState state)
    {
        int i = 0;
        if(state.getValue(HALF)==UPPER) {
            i |= 8;
            if(state.getValue(UNLOCK))
                i|=4;
        }
        else{
            if(state.getValue(OPEN))
                i|=4;
            i |= ((EnumFacing)state.getValue(FACING)).getHorizontalIndex();
        }
        return i;
    }
    @Override
    public IBlockState getStateFromMeta(int meta)
    {
        return (meta & 8) > 0 ?
                this.getDefaultState().withProperty(HALF, UPPER)
                        .withProperty(UNLOCK, (meta & 4) > 0) :
                this.getDefaultState().withProperty(HALF, LOWER)
                        .withProperty(FACING, EnumFacing.getHorizontal(meta & 3))
                        .withProperty(OPEN, (meta & 4) > 0);
    }
    @Override
    public IBlockState getActualState(IBlockState state, IBlockAccess worldIn, BlockPos pos)
    {
        if (state.getValue(HALF) == LOWER)
        {
            IBlockState iblockstate = worldIn.getBlockState(pos.up());
            if (iblockstate.getBlock() == this)
            {
                state = state.withProperty(UNLOCK, iblockstate.getValue(UNLOCK));
            }
        }
        else
        {
            IBlockState iblockstate = worldIn.getBlockState(pos.down());

            if (iblockstate.getBlock() == this)
            {
                state = state.withProperty(OPEN, iblockstate.getValue(OPEN)).withProperty(FACING,iblockstate.getValue(FACING));
            }
        }
        return state;
    }
 
39
2
0
Так и нужно что ты в getMetaFromState не учитываешь UNLOCK у LOWER, хотя используешь этот Property у нижней части?
Unlock я даю Upper, а Lower даю Facing и Lower, так как иначе если всё давать то случается рандомное состояние потом, по этому как и в коде ванильной двери я через getActualState присваиваю остальное (Unlock присваиваю Lower и т.д.), но всё работает кроме метода getActualState. (Вообще я это уже решил, закинув Unlock в тайл энтити, мб это немного костыльный вариант, но пускай уж он будет хотя бы, но всё равно было б интересно узнать почему не работает getActualState )
 
Сверху