Я пытаюсь переписать систему событий Bukkit, которую можно использовать следующим образом:
Bukkit.getPluginManager().registerEvents(new Listener() {
@EventHandler
public void onEvent(PlayerJoinEvent e) {
Player player = e.getPlayer();
player.sendMessage("Welcome!");
}
}, this);
Однако это отнимает много времени и требует времени для записи. Чтобы улучшить свой рабочий процесс (радикально), я пытаюсь переписать эту систему во что-то гораздо более жизнеспособное и гибкое.
Вот как будет использоваться мой идеальный метод форматирования:
EventBus.register(PlayerJoinEvent.class, e -> {
Player player = e.getPlayer();
player.sendMessage("Welcome!");
}, this);
В настоящее время у меня есть это:
public static void register(Class<? extends Event> clazz, Consumer<Event> consumer, JavaPlugin plugin) {
consumer.accept(clazz.newInstance());
// Bukkit.getPluginManager().registerEvents(e, plugin); // ???
}
Моя теория состоит в том, чтобы создать более удобный класс, который реализует Listener, как показано в текущем примере использования, чтобы я мог создать его экземпляр с предоставленным Consumer<Event>
.
Моя проблема в том, что мне нужно передать этот PlayerJoinEvent.class
в качестве параметра в public void onEvent(<here> e) {
.
Как я могу заставить это работать? С этим есть пара проблем, и я не знаю, как на этот раз превратить это из концепции в реальность.
Я не знаю, куда go сейчас, и надеюсь, что предоставил достаточно информации.