Помогите Разделение главного класса на другие классы

wildbober

Участник
Пользователь
Баллы
31
Здравствуйте, можете пожалуйста подсказать, как сделать слушатель события в другом классе что бы он работал как в главном классе?
 
package packet;
import java.util.ArrayList;
import org.bukkit.event.Listener;


public class EventManager implements Listener{
private static ArrayList<Listener> list = new ArrayList<Listener>();

public EventManager(){
//registerNewEvent(new EventClickEntity());
}

public void loadEvents(Plugin pl){
pl.getServer().getPluginManager().registerEvents(pl, pl);
for(Listener l : getList()){
pl.getServer().getPluginManager().registerEvents(l, pl);
//ЗАГРУЖАЕШЬ В ГЛАВНОМ КЛАССЕ В onEnable
}
pl.getLogger().info("Events loaded...");
}
public void unregisterEvent(Listener lisner){
list.remove(lisner);
}
public void registerNewEvent(Listener lisner){
list.add(lisner);
}

public ArrayList<Listener> getList(){
return list;
}

}
Если конеш тебе это все не нужно (Нужно только чтобы в другом классе было)
Создаешь класс где у тебя будет EventHandler и твой ивент - и в Main классе в методе onEnable пишешь:

getServer().getPluginManager().registerEvents(new InteractEvent(), this);
Заместо new InteractEvent() свой класс где у тебя ивент
 
Bukkit.getPluginManager().registerEvents(Listener, Plugin) принимает 2 аргумента - объект слушателя и объект плагина, который "отвечает за этот слушатель".
Объект слушателя - экземпляр класса, который наследует интерфейс Listener:
Код:
public class TestingListener implements Listener {
    
}
Ну а плагин - соответственно, экземпляр класса, наследующего Plugin - проще говоря, главный класс.
Поэтому зарегистрировать слушатель можно таким образом:
Код:
@Override
public void onEnable() {
    Bukkit.getPluginManager().registerEvents(new TestingListener(), this);
}
new TestingListener() - новый объект слушателя (т.к. ранее его не создавали)
this - объект текущего класса - плагин (был создан ядром)
 
Назад
Верх