Eclipse表示'MyFirstListener'是未定义的,但是我已经在另一个我正在调用的类中定义了它,我不确定是什么错误

时间:2018-08-10 20:32:47

标签: java plugins

我正在尝试为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?");

    }

}

2 个答案:

答案 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);