我正在尝试为Minecraft创建我的第一个插件,但是,我不断收到错误消息:构造函数MyFirstListener(Main)未定义 和:类型中的方法registerEvents(Listener,Plugin) 插件管理器为 不适用于参数(MyFirstListener,Main) 我不知道该放在哪里,因为我对Java和插件进行编码还很陌生,所以我就把它放在这里。
//first class
package com.courbie.helloworld;
import org.bukkit.event.EventHandler;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;
public class Main extends JavaPlugin{
@EventHandler
public void onEnable() {
getLogger().info("Hey Courbie, have a good day!");
PluginManager pm = getServer().getPluginManager();
MyFirstListener listener = new MyFirstListener();
pm.registerEvents(listener, this);
}
@Override
public void onDisable() {
getLogger().info("MyPlugin has been disabled.");
}
}
//Second class
package com.courbie.helloworld;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
public class MyFirstListener implements Listener{
//Constructor
public void FirstListener (final Main Plugin) {
}
//EventHandler
@EventHandler
public void onPlayerJoin(PlayerJoinEvent event) {
event.getPlayer().sendMessage("Hello! How are you today Courbie?");
}
}
答案 0 :(得分:0)
在第二堂课中: //构造函数 public void FirstListener(最终主插件){
} is not a valid constructor.
这就是为什么未定义MyFirstListener(Main)错误的原因。 请参考: https://docs.oracle.com/javase/tutorial/java/javaOO/constructors.html
希望这会有所帮助。
答案 1 :(得分:0)
您的构造函数不正确。首先,构造函数不应具有返回类型,其次,其名称应与类相同。更改为:
//Constructor
public MyFirstListener (final Main plugin) {
调用此构造函数的方式也有问题。您写道:
MyFirstListener listener = new MyFirstListener();
但是您的构造函数采用Main
类型的参数。您可以从构造函数中删除参数:
//Constructor
public MyFirstListener () {
或者您可以传递类型为Main
的参数:
MyFirstListener listener = new MyFirstListener(this);