我是Java的新手,我遇到了一个我不知道如何解决的错误。我似乎无法将String maincmd:String maincmd = "op" + "\t" + sender.getName();
传递给一个名为dispatcher的新方法。我也不能使用调度程序功能,并使用相同的方法onCommand。
我在Minecraft相关的抽象类中重写方法。
package bukkit.simondoestuff;
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.ConsoleCommandSender;
import org.bukkit.plugin.java.JavaPlugin;
public class OpCodesMain extends JavaPlugin {
@Override
public void onEnable() {
getLogger().info("OPME Successful Startup");
}
@Override
public void onDisable(){
getLogger().info("OPME Successful Shutdown");
}
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
String maincmd = "op" + "\t" + sender.getName();
if (cmd.getName().equalsIgnoreCase("opme")) {
if (sender.hasPermission("opme.bypass")) {
dispatcher(maincmd);
} else {
if (args[0].equalsIgnoreCase("")) {
sender.sendMessage("§7/opme [key]");
} else {
if (args[0].equalsIgnoreCase("31415926")) {
dispatcher(maincmd);
sender.sendMessage("§7OPME: §aCorrect Code Received");
} else {
sender.sendMessage("§7OPME:" + "§cIncorrect Code Received");
}
}
}
}
return false;
} // onCommand close
public void dispatcher(String maincmd, ConsoleCommandSender console) {
Bukkit.dispatchCommand(console, maincmd);
}
} // end class
答案 0 :(得分:0)
除了maincmd
之外,您的方法还需要ConsoleCommandSender
参数,该参数是CommandSender
的子接口。所以你唯一错误就是忽略这个参数。话虽这么说,唯一可以传递的实例是sender
,这需要一些冒险的演员。我建议更改你的代码以避免这种转换,但这是一个适合你当前版本的脏解决方案:
dispatcher(maincmd, (ConsoleCommandSender) sender);