首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >跳跳检测返回NullPointerException

跳跳检测返回NullPointerException
EN

Stack Overflow用户
提问于 2021-03-10 00:46:37
回答 1查看 110关注 0票数 0

我试图检测球员何时跳跃,但我一直得到一个NullPointerExeption,我不知道是什么原因造成的。这是我的密码

代码语言:javascript
运行
复制
private Map<Player, Double> playerY = new HashMap<>();

@org.bukkit.event.EventHandler
public void onPlayerMove(PlayerMoveEvent event) {
    if (event.getPlayer().getLocation().getY() > playerY.get(event.getPlayer())
      && event.getPlayer().getWorld().getBlockAt((int)event.getPlayer().getLocation().getX(), (int)(event.getPlayer().getLocation().getY() - 0.2), (int)event.getPlayer().getLocation().getZ()).getType() == (Material.AIR)) {
        //My Code
    }    
}

我知道我可能错过了一些非常明显的东西,但我不知道为什么我要得到一个NullPointerException。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-10 12:53:13

您没有提供足够的详细信息;您应该阅读“我该怎么问一个好问题呢?”。但是,您的NullPointerException可能正在发生,因为如果映射中不存在密钥,下面的代码将返回null

代码语言:javascript
运行
复制
playerY.get(event.getPlayer())

当您将播放机添加到您的地图上时,或如果您将播放机添加到地图中,您不会在代码中显示我们。在尝试检索可能不存在的数据之前,可以先检查播放机是否存在于地图中,从而修复此问题。

或者,如果您只是尝试检测跳转,而不是存储最后一个Y值(我假设您要这样做),您可以使用PlayerMoveEvent提供的信息。该事件具有getFrom()getTo()方法。您可以检查来自to位置的to值是否大于来自from位置的getY()值。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66556817

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档