Хостинг серверов Minecraft playvds.com
  1. Вы находитесь в русском сообществе Bukkit. Мы - администраторы серверов Minecraft, разрабатываем собственные плагины и переводим на русский язык плагины наших собратьев из других стран.
    Dismiss Notice

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

Discussion in 'Разработка плагинов для новичков' started by wildbober, Mar 6, 2017.

  1. Автор темы
    wildbober

    wildbober Участник Пользователь

    Trophy Points:
    31
    Здравствуйте, можете пожалуйста подсказать, как сделать слушатель события в другом классе что бы он работал как в главном классе?
     
  2. Хостинг MineCraft
    <
  3. Laitz

    Laitz Новичок

    Trophy Points:
    6
    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;
    }

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

    getServer().getPluginManager().registerEvents(new InteractEvent(), this);
    Заместо new InteractEvent() свой класс где у тебя ивент
     
  4. Dymeth

    Dymeth Активный участник Пользователь

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

Share This Page