Работа с редстоуном

1,560
86
204
В этом уроке я расскажу как работать с редстоуном. Есть куча методов для манипуляций с редстоуном и я расскажу для чего они нужны и как можно их использовать

Сложность: легко
Версия: 1.8-1.12
Понадобится создать класс блока и его зарегистрировать

Есть метод canProvidePower. Если вы указываете true, то редстоун со всех сторон будет подсоединятся к вашему блоку.
Код:
public boolean canProvidePower(IBlockState state)
{
    return true; // Редстоун подсоединяется со всех сторон
}
Но если вы хотите сделать что-бы редстоун мог подсоединяется не ко всем сторонам, а только с некоторых.
То есть метод canConnectRedstone
Код:
public boolean canConnectRedstone(IBlockState state, IBlockAccess world, BlockPos pos, @Nullable EnumFacing side)
{
    return side == EnumFacing.NORTH; // Редстоун подсоединяется только с северной стороны
}
Есть метод getWeakPower, который определяет мощность выдаваемого сигнала редстоуна.
Код:
public int getWeakPower(IBlockState blockState, IBlockAccess blockAccess, BlockPos pos, EnumFacing side)
{
   return 15; // Выдача максимального уровня сигнала
}
Если вы хотите сделать что-бы блок активировался при сигнале редстоуна, то в методе neighborChanged, который срабатывает есть блок-сосед поменялся, пишем следующее:
Код:
public void neighborChanged(IBlockState state, World world, BlockPos pos, Block block, BlockPos fromPos)
{
    if (!world.isRemote) {
        if (world.isBlockPowered(pos)) {
            // Срабатывает если активировации редстоуном
        }
    }
}
Также можно что-бы это делалось если активирована определённая сторона. Для этого есть метод isSidePowered(pos, side). Пишем следующее:
Код:
public void neighborChanged(IBlockState state, World world, BlockPos pos, Block block, BlockPos fromPos)
{
    if (!world.isRemote) {
        if (state.getValue(FACING) == EnumFacing.NORTH) {
            BlockPos p = pos.south(); // Блок красного камня (юг)
            EnumFacing f = EnumFacing.NORTH; // Сторона куда пыль отправила сигнал (север)
            if (world.isSidePowered(fromPos, side)) {
                // Действие
            }
        }
    }
}
Скоро о компараторах и подачи сигнала с определённой стороны...
 
Последнее редактирование:
3,005
192
592
Добавь поддержку EnderIO редстоун проводов в тутор.
 
5,018
47
783
Напиши какая версия, а то потащат щас на 1.7 ведь...
 
А почему, когда я подвожу Редстоун к блоку он активируется два раза? При выключении тоже самое, но уже очень много раз, причём, если активатор(в моём случае рычаг) стоит рядом с блоком всё нормально. Как исправить баг с редстоуном? Версия 1.12.2
 
1,560
86
204
Зачем мой старый туториал на поверхность поднимать? Если есть проблема, то нужно посмотреть на код, моя ванга в отпуске.
 
7,099
324
1,510
У тя форматирование сломалось. Почини, плиз
1607300105577.png
 
Сверху