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

Версия 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
 
39
2
0
Приведу решение для наковальни, так как это один из тех блоков, которые имеют данные свойства. К слову, это называется blockstate.
world.getBlockState(pos.offset(EnumFacing.SOUTH), 1).getValue(FACING);
Не совсем понял что надо сделать. Пробовал и то и то, вылетает. Вообще я криво-косо делаю стол в два блока, и когда ломаешь правую часть блока, которая автоматически ставится с основной, должна убираться основная. Мне надо узнать состояние соседнего блока при поломке, то есть в метод onBlockHarvested(World worldIn, BlockPos pos, IBlockState state, EntityPlayer player) мне надо применить одно из ваших решений, но я не совсем понимаю как
 
4,045
63
645
У тебя есть позиция твоего блока: pos.
Ты двигаешь эту позицию на один блок в нужную тебе сторону: pos = pos.offset(EnumFacing.SOUTH, 1);
Затем узнаёшь у мира блокстейт в нужной тебе позиции: state = world.getBlockState(pos);
Если это нужный тебе блок, ломаешь его.
Java:
if (state.getBlock() == block) {
    world.destroyBlock(pos, false);
}
Писал вслепую, названия методов могут быть не верные.
 
Сверху