我想知道 Player 下面是哪个 block 。如果该 block 与另一个 block (之前选择的)相同,则执行某些操作。 我尝试过这样的事情:(但我知道它根本不起作用)。谢谢!
BlockPos PlayerIsStandingOn = player.getPosition().down();
Block PlayerIsStandingOnBlock = worldIn.getBlockState(PlayerIsStandingOn);
if (PlayerIsStandingOn == randomBlock) { }
最佳答案
您已经很接近了,但 getBlockState
返回 IBlockState
而不是 Block
。你可以这样做:
BlockPos posBelow = player.getPosition().down();
IBlockState blockStateBelow = player.world.getBlockState(posBelow);
然后你可以检查该 block 是否是特定的 Material ,就像这样,我认为这可能就是你想要的;如果 Material 不是GROUND
(污垢),则会返回:
if(blockStateBelow.getMaterial() != Material.GROUND)
return;
//your logic here
或者您可以进行比较以检查两个 block 是否相同:
if(!Block.isEqualTo(blockStateBelow.getBlock(), <your other block>))
return;
//your logic here
等等...
编辑
这个答案最初是为 1.12.2 编写的,似乎 1.15.2 中发生了一些变化
BlockPos posBelow = player.getPosition().down();
BlockState blockStateBelow = player.world.getBlockState(posBelow);
Block below = blockStateBelow.getBlock();
if(!below.equals(<your other block>))
return;
关于java - 如何将方 block 放到播放器下方?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61990379/