Функция при двух событиях

arkadijsaakyan

Пользователь
Сообщения
5
Как мне выполненить одну функцию при двух событиях: PlayerJoinEvent и PlayerLeaveEvent.

Я знаю и не хочу создать два отдельных класса и там выполненить одну и ту же функцию.

К примеру, я хочу выполнить одно действие при событиях PlayerJoinEvent и PlayerLeaveEvent, но в тоже время не хочу создать два отдельных класса, где один будет отвечать за приход к серверу, другой — за выход из сервера.
 
А в чем проблема? Просто помести два ивента в один класс, это никто не запрещал.
Знаю, но тогда мне нужно будет два раз вызвать одну и ту же функцию.
P.S. я хочу компактности в коде
 
Нельзя сделать так. Это два разных события. Это тоже самое, что считать мышку и монитор одним и тем же предметом.

Ты можешь тупо вызывать один и тот же метод два раза.

Код:
public void onJoin(PlayerJoinEvent e) {
    method();
}

public void onLeave(PlayerLeaveEvent e) {
    method();
}

public void method() {
//smth
}
 
Нельзя сделать так. Это два разных события. Это тоже самое, что считать мышку и монитор одним и тем же предметом.

Ты можешь тупо вызывать один и тот же метод два раза.

Код:
public void onJoin(PlayerJoinEvent e) {
    method();
}

public void onLeave(PlayerLeaveEvent e) {
    method();
}

public void method() {
//smth
}
Спасибо за ответы, но всё-таки думаю, что это возможно. Типо создать отдельный класс, который соединяет эти два события...
 
Создать класс и написать туда свою функцию

При любом из событий создаешь объект класса и вызываешь метод.

Java:
public void onLeave(PlayerLeaveEvent e) {
  SomeClass sc = new SomeClass();

  sc.method();
}
тоже самое в классе входа
Авто объединение сообщений:

Или создать суперкласс и поместить туда метод
Java:
  public class PlayerListener extends SomeClass implements Listener {

  public void onJoin(PlayerJoinEvent e) {
    super.method();
  }

  public void onLeave(PlayerLeaveEvent e) {
    super.method();
  }
}


public class SomeClass { //Супер класс
  method() {
    //Твоя функция
  }

}
 
Последнее редактирование:
1. Создаешь эвент
Java:
public class PlayerJoinAndLeave extends Event {
    private Player player;

    public HandlerList getHandlers() {
        return null;
    }

    public Player getPlayer() {
        return this.player;
    }


    public PlayerJoinAndLeave(Player player) {
        this.player = player;
       //сдесь может быть код который будет выполняться при запуске эвента
    }
}
2. Вызываешь его при входе и выходе с сервера. (Профит)
Java:
public class PlayerListener implements Listener {

  @EventHandler
  public void onJoin(PlayerJoinEvent e) {
    Bukkit.getPluginManager().callEvent(new PlayerUseChatTypeEvent(e.getPlayer)
  }

  @EventHandler
  public void onLeave(PlayerLeaveEvent e) {
    Bukkit.getPluginManager().callEvent(new PlayerUseChatTypeEvent(e.getPlayer)
  }
}

Саму функцию можешь в самом теле эвента делать или просто вызывать его так же как и букит эвенты



Но не вижу в этом особого смысла в твоей ситуации должно хватить и того что написали выше, описать бы мог и по лучше чтобы тебе подсказали как правильно сделать
 
Назад
Сверху Снизу