【发布时间】:2019-11-19 15:26:17
【问题描述】:
我最近开始制作 Minecraft 插件,但出现了一些错误,例如此链接 https://paste.ubuntu.com/p/yHs2pQWf8t/
主要
package org.devoflua.hello;
import org.bukkit.plugin.java.JavaPlugin;
import org.devoflua.hello.commands.HelloCommand;
public class Main extends JavaPlugin {
@Override
public void onEnable() {
System.out.print("Okie");
new HelloCommand(this);
}
}
命令
package org.devoflua.hello.commands;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.devoflua.hello.Main;
public class HelloCommand implements CommandExecutor {
@SuppressWarnings("unused")
private Main plugin;
public HelloCommand(Main plugin) {
this.plugin = plugin;
plugin.getCommand("hello").setExecutor(this);
}
@Override
public boolean onCommand(CommandSender Sender, Command Command, String label, String[] arg) {
if (!(Sender instanceof Player)) {
Sender.sendMessage("Only senders can use this command");
return true;
}
Player p = (Player) Sender;
if (p.hasPermission("hello.use")) {
p.sendMessage("hi");
return true;
} else {
p.sendMessage("You do not have permission to send this message");
}
return false;
}
}
我相信错误来自第 16 行的命令类。 我在互联网上搜索,但没有发现任何东西可以帮助我解决这个问题。
【问题讨论】:
-
What is a NullReferenceException, and how do I fix it? 的可能重复第 16 行只有两件事可以为空:
plugin和plugin.getCommand("hello")。 -
首先,您应该尊重变量/参数命名等约定。此外,如果该命令未在
plugin.yml中注册,则可能会发生该错误,并且我不会让该类将自身设置为executor到命令hello。所以你应该在主课上这样做。