- 1,560
- 86
- 204
В этом уроке я расскажу как работать с редстоуном. Есть куча методов для манипуляций с редстоуном и я расскажу для чего они нужны и как можно их использовать
Сложность: легко
Версия: 1.8-1.12
Понадобится создать класс блока и его зарегистрировать
Скоро о компараторах и подачи сигнала с определённой стороны...
Сложность: легко
Версия: 1.8-1.12
Понадобится создать класс блока и его зарегистрировать
Есть метод canProvidePower. Если вы указываете true, то редстоун со всех сторон будет подсоединятся к вашему блоку.
Но если вы хотите сделать что-бы редстоун мог подсоединяется не ко всем сторонам, а только с некоторых.
То есть метод canConnectRedstone
Код:
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, который срабатывает есть блок-сосед поменялся, пишем следующее:
Также можно что-бы это делалось если активирована определённая сторона. Для этого есть метод isSidePowered(pos, side). Пишем следующее:
Код:
public void neighborChanged(IBlockState state, World world, BlockPos pos, Block block, BlockPos fromPos)
{
if (!world.isRemote) {
if (world.isBlockPowered(pos)) {
// Срабатывает если активировации редстоуном
}
}
}
Код:
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)) {
// Действие
}
}
}
}
Последнее редактирование: