Нет редстоуна с проводов

Версия Minecraft
1.12.2
Проблема такая: есть блок, который должен принимать сигнал редстоуна. Если поставить с ним рядом красный факел, или другой излучатель редстоуна, всё нормально, метод getWeakPower() показывает силу сигнала, но если сигнал идет по проводам (красной пыли), то этот метод всегда показывает - 0. Пробовал также getStrongPower , но и здесь такой же результат.
Код блока:
Java:
public class DeviceBlock extends Block {
    
    public static final PropertyBool POWERED = PropertyBool.create("powered");
    public static final PropertyDirection FACING = BlockHorizontal.FACING;
    
    public static final AxisAlignedBB DEVICE_AABB = new AxisAlignedBB(0.0D, 0.0D, 0.0D, 1.0D, 0.125D, 1.0D);
    
    public DeviceBlock(Material materialIn, String name, float hardness,
            float resistance, String harvLevel, int level, SoundType soundType) {
        super(materialIn);
        setRegistryName(name);
        setUnlocalizedName(name);
        setHardness(hardness);
        setResistance(resistance);
        setHarvestLevel(harvLevel, level);
        setSoundType(soundType);
        setCreativeTab(CreativeTabs.REDSTONE);
        
        setDefaultState(blockState.getBaseState().withProperty(FACING, EnumFacing.NORTH).withProperty(POWERED, false));
    }
    
    @Override
    public EnumBlockRenderType getRenderType(IBlockState state) {
        return EnumBlockRenderType.MODEL;
    }
    
    @Override
    public boolean isOpaqueCube(IBlockState state) {
        return false;
    }
    
    public AxisAlignedBB getBoundingBox(IBlockState state, IBlockAccess source, BlockPos pos) {
        return DEVICE_AABB;
    }
    
    @Override
    protected BlockStateContainer createBlockState() {
        return new BlockStateContainer(this, new IProperty[] {POWERED, FACING});
    }
    
    @Override
    public IBlockState getStateFromMeta(int meta) {
        boolean powered = false;
        if (meta > 3) {
            powered = true;
            meta -= 4;
        }
        EnumFacing facing = null;
        switch (meta) {
            case 3:
                facing = EnumFacing.EAST;
                break;
            case 2:
                facing = EnumFacing.SOUTH;
                break;
            case 1:
                facing = EnumFacing.WEST;
                break;
            case 0:
                facing = EnumFacing.NORTH;
                break;
        }
        return this.getDefaultState().withProperty(FACING, facing).withProperty(POWERED, powered);
    }
    
    @Override
    public int getMetaFromState(IBlockState state) {
        int meta = 0;
        switch (state.getValue(FACING)) {
            case NORTH:
                meta = 0;
                break;
            case WEST:
                meta = 1;
                break;
            case SOUTH:
                meta = 2;
                break;
            case EAST:
                meta = 3;
                break;
            default:
                meta = 0;
        }
        
        if (state.getValue(POWERED) == true)
            meta += 4;
        
        return meta;
    }
    
    @Override
    public IBlockState getStateForPlacement(World world, BlockPos pos, EnumFacing facing, float hitX, float hitY,
            float hitZ, int meta, EntityLivingBase placer) {
        int dir = MathHelper.floor((double)((placer.rotationYaw * 4F) / 360F) + 0.5D) & 3;
        return getDefaultState().withProperty(FACING, Tools.getFacing(dir));
    }
    
    @Override
    public boolean canConnectRedstone(IBlockState state, IBlockAccess world, BlockPos pos, EnumFacing side) {
        if (side == state.getValue(FACING) ||
                side == state.getValue(FACING).getOpposite())
            return true;
        return false;
    }
    
    @Override
    public boolean canProvidePower(IBlockState state) {
        return true;
    }
    
    @Override
    public int getWeakPower(IBlockState state, IBlockAccess blockAccess, BlockPos pos, EnumFacing side) {
        if (state.getValue(POWERED) == true) {
            if (side == state.getValue(FACING).getOpposite()) {
                return 15;
            }
        }
        return 0;
    }
    
    @Override
    public void neighborChanged(IBlockState state, World world,
            BlockPos pos, Block block, BlockPos fromPos) {
        if (!world.isRemote) {
            EnumFacing def = state.getValue(FACING);
            
            BlockPos posit = pos.offset(def.getOpposite());
            IBlockState st = world.getBlockState(posit);
            
            int energy = 0;
            
            if (st.getBlock() == Blocks.REDSTONE_WIRE) {
                energy = st.getValue(BlockRedstoneWire.POWER).intValue();
            } else {
                energy = st.getWeakPower(world, pos, def.getOpposite());
            }
            
            if (energy > 0) {
                if (!((TEDevice)world.getTileEntity(pos)).signal)
                    ((TEDevice)world.getTileEntity(pos)).block();
            } else {
                ((TEDevice)world.getTileEntity(pos)).unlock();
            }
        }
    }
    
    @Override
    public boolean hasTileEntity(IBlockState state) {
        return true;
    }
    
    @Override
    public TileEntity createTileEntity(World world, IBlockState state) {
        return new TEDevice();
    }
    
}

Я поробовал также так:
Java:
energy = st.getValue(BlockRedstoneWire.POWER).intValue();
и так работает, но если, например использовать провода из Project red , то уже не работает. Как это решить, может где-то есть еще какой-то метод, который нужен здесь?
 
7,099
324
1,510
Можно юзать в качестве примера
Это блок портала, который активируется редстоуном. С проводами из модов не пробовал, но должно работать по идее
 
В принципе тоже нашел этот метод: world.IsBlockPowered(BlockPos pos) и для моей задачи его хватило. Есть еще метод world.getRedstonePower(BlockPos pos, EnumFacing facing), но он тоже почему-то не срабатывает. Так что мой вопрос решен, но вот если кому-то надо будет не просто есть сигнал/нет сигнала , а еще и его силу, то будут сложности.
 
7,099
324
1,510
Возможно, ты его неправильно юзал. Посмотри на логику IsBlockPowered:
проверка подачи редстоуна снизу, наш блок светлоголубой
1597249117931.png
Выглядит так, будто в getRedstonePower вторым аргументом нужно передавать сторону, противоположную той, в направлении подачи которой нужно чекать редстоун
 
Сверху