Изменение баундбокса в зависимости от стейта.

Версия Minecraft
1.12.2
5,149
49
899
Народ... я тут в общем провода пилю, и на баундбоксах что то дело застопорилось. Изначальным примером был забор, но он не коннектится вверх\вниз. А сооствественно и баундбоксы под это дело взять негде. Подскажите, что сюда надо добавить чтобы работало изменение баундбокса и вверх\вних тоже?

Java:
    private static int getAABBIndex(IBlockState state)
    {
        int i = 0;

        if (((Boolean)state.getValue(NORTH)).booleanValue())
        {
            i |= 1 << EnumFacing.NORTH.getHorizontalIndex();
        }

        if (((Boolean)state.getValue(EAST)).booleanValue())
        {
            i |= 1 << EnumFacing.EAST.getHorizontalIndex();
        }

        if (((Boolean)state.getValue(SOUTH)).booleanValue())
        {
            i |= 1 << EnumFacing.SOUTH.getHorizontalIndex();
        }

        if (((Boolean)state.getValue(WEST)).booleanValue())
        {
            i |= 1 << EnumFacing.WEST.getHorizontalIndex();
        }

        return i;
    }
 
((Boolean)state.getValue(UP)).booleanValue()
((Boolean)state.getValue(DOWN)).booleanValue()

И соответствующие индексы для них
 
Так.. Вроде понял. Вопрос номер два:
Как сделать чтобы блок выдавал во все стороны сигнал красного камня только если он сам isPowered?
Я написал что то типо такого но оно не работает
Java:
public boolean canProvidePower(IBlockState state)
    {
        return true;
    }

    public int getWeakPower(IBlockState blockState, IBlockAccess blockAccess, BlockPos pos, EnumFacing side)
    {
World world = (World)blockAccess;
        System.out.println(isPower);
        if(world.isBlockPowered(pos)) {
            return 15;
        }
        return 0;
    }

    @Override
    public void updateTick(World worldIn, BlockPos pos, IBlockState state, Random rand)
    {
        if (!worldIn.isRemote)
        {
            super.updateTick(worldIn, pos, state, rand);
            if (worldIn.isBlockPowered(pos))
            {
                System.out.println("upda " + isPower);
                isPower = true;
            }
            if (!worldIn.isBlockPowered(pos))
            {
                isPower = false;
            }
        }

    }
 
Блина, походу больше 16 нельзя(((
 
Назад
Сверху