Как узнать состояние соседнего блока?

Версия Minecraft
1.12.2
API
Forge
39
2
0
У соседнего блока есть состояние FACING, как узнать его значение (south, north, east или west)?
 
Решение
У тебя есть позиция твоего блока: pos.
Ты двигаешь эту позицию на один блок в нужную тебе сторону: pos = pos.offset(EnumFacing.SOUTH, 1);
Затем узнаёшь у мира блокстейт в нужной тебе позиции: state = world.getBlockState(pos);
Если это нужный тебе блок, ломаешь его.
Java:
if (state.getBlock() == block) {
    world.destroyBlock(pos, false);
}
Писал вслепую, названия методов могут быть не верные.
Приведу решение для наковальни, так как это один из тех блоков, которые имеют данные свойства. К слову, это называется blockstate.
Java:
Blocks.ANVIL.getActualState(state, worldIn, pos).getValue(FACING) == EnumFacing.SOUTH
Аргументы для getActualState наверняка знаешь, исходя из того, где именно выполняется эта проверка.

Для подробного изучения, рекомендую взглянуть на ванильный класс Block.java
1669439083417.png
 
Приведу решение для наковальни, так как это один из тех блоков, которые имеют данные свойства. К слову, это называется blockstate.
world.getBlockState(pos.offset(EnumFacing.SOUTH), 1).getValue(FACING);
Не совсем понял что надо сделать. Пробовал и то и то, вылетает. Вообще я криво-косо делаю стол в два блока, и когда ломаешь правую часть блока, которая автоматически ставится с основной, должна убираться основная. Мне надо узнать состояние соседнего блока при поломке, то есть в метод onBlockHarvested(World worldIn, BlockPos pos, IBlockState state, EntityPlayer player) мне надо применить одно из ваших решений, но я не совсем понимаю как
 
У тебя есть позиция твоего блока: pos.
Ты двигаешь эту позицию на один блок в нужную тебе сторону: pos = pos.offset(EnumFacing.SOUTH, 1);
Затем узнаёшь у мира блокстейт в нужной тебе позиции: state = world.getBlockState(pos);
Если это нужный тебе блок, ломаешь его.
Java:
if (state.getBlock() == block) {
    world.destroyBlock(pos, false);
}
Писал вслепую, названия методов могут быть не верные.
 
Назад
Сверху