为什么会出现此错误? org.bukkit.event.EventException:空

时间:2020-05-11 18:04:48

标签: java minecraft bukkit

我尝试编码,如果我右键单击一个标牌,我会传送到一个位置。它在控制台中正常工作,但是我收到一个错误,为什么idk。这是我的代码:

public class schildJNR implements Listener {

@EventHandler
public void schildKlickEvent(PlayerInteractEvent event) {
    Player player = event.getPlayer();
    if(event.getPlayer() instanceof Player && event != null) {
        if (event.getClickedBlock().getType() == Material.SPRUCE_WALL_SIGN) {

            Sign sign = (Sign) event.getClickedBlock().getState();

            if (sign.getLine(0).equalsIgnoreCase("Die Schlucht")) {
                player.teleport(new Location(Bukkit.getWorld("world"), 295.14f, 69, 46.54f, -90.1f, 0.9f));
            } else if (sign.getLine(0).equalsIgnoreCase("Schatzsuche")) {
                player.teleport(new Location(Bukkit.getWorld("world"), 74.59f, 63, 237.51f, -91.4f, 1.3f));
            } else if (sign.getLine(0).equalsIgnoreCase("Fichtenwald")) {
                player.teleport(new Location(Bukkit.getWorld("world"), -5.43f, 78, 172.57f, 179.7f, 1.6f));
           }
        }
    } else {
        player.sendMessage("ERROR");
    }
}

错误是:org.bukkit.event.EventException:空[...]原因:java.lang.NullPointerException
我怎么了?

2 个答案:

答案 0 :(得分:2)

您在if中的表达式顺序不正确,您需要先检查它是否为null,然后再检查它是否为player实例。

if(event != null && event.getPlayer() instanceof Player) {

答案 1 :(得分:0)

好,我修复了它。我试图执行'getClickedBlock()'方法,但是如果我举个例子,将执行'PlayerInteractEvent',然后代码将尝试执行此方法:'if(event.getClickedBlock()。getType()= = Material.SPRUCE_WALL_SIGN){',但我没有踢一个方块,所以会出现错误。我添加了一个if条件,现在它可以正常工作了。

相关问题