我正在尝试用 java 8 制作一个 minecraft 插件,如果你被玩家杀死,你会掉落你的战利品,但如果你被暴徒杀死,你会保留它

I am trying to make a minecraft plugin with java 8 where if you get killed by an player, you drop your loot but if you get killed by a mob you keep it

enter image description here

有代码,但问题是第 14 行不起作用,我似乎找不到其他人这样做

首先,我假设您正在制作 spigot 插件。

而不是playerDead.getKiller(),而是使用playerDead.getKiller().getType()

为避免此类简单问题,请了解类型在 java 中的工作原理,并阅读 java 文档。

这很可能是类型的问题:如果您熟悉 Java,您应该知道 MCEntity(在 Tabnine 中找到的用法示例)是无法与类型 EntityType.

相媲美

因此,您将不得不使用一种方法来获取 MCEntityType(我在此上下文中指的 Type 是 MC 类型,例如, PLAYER, 不是 Java-type).

此方法存在于 MCEntity 上,是 MCEntity.getType(),它将 return 给你杀手的 MC-Type。所以你需要代码:

public void onPlayerDead(PlayerDeathEvent event) {
    Player playerDead = event.getEntity();

    // Now check for the Type of the Killer with the getType()-method
    if (playerDead.getKiller().getType() == EntityType.PLAYER) {
        event.setKeepInventory(false);
    }
}

如果您还有其他问题,请随时提出,但这个问题很难回答,因为您只提供了一张代码图片。请看一下如何 format code with markdown.

此外,编辑器中的行有一条红线。这表明您的代码中存在错误。提出这个问题,如果您能在将鼠标悬停在红线上时向我们提供显示的确切错误消息,那就太好了。这在调试(尤其是其他人的)代码时很有帮助!