java - 如何将方 block 放到播放器下方?

标签 java minecraft minecraft-forge

我想知道 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/

相关文章:

java - 无法使用 Apache Jena 运行特定的 SPARQL 查询

java - 没有明显原因的空指针异常

java - 寻求在 1.14 Minecraft 中设置粒子的帮助

java - Minecraft Forge Mod 命令不起作用?

java - REST API 的问题

java.lang.ArrayIndexOutOfBoundsException :10 异常

java - 创建对象实例而不调用父类(super class)构造函数

java - 我的世界 Forge 似乎没有调用 postInit

java - 使用 Google 和 Facebook 等身份提供商在 Keycloak 上进行 Android 身份验证

java - 光泽度错误