From d96398f4a95c0e7ca3af9d8e1d5b1004d3f3a82d Mon Sep 17 00:00:00 2001 From: Frank van der Heijden Date: Sat, 24 Jul 2021 14:31:45 +0200 Subject: [PATCH] Implement velocity listeners / events --- .../bukkit/entities/BukkitPlugin.java | 4 +-- ...istener.java => BukkitPlayerListener.java} | 15 ++------- .../bungee/entities/BungeePlugin.java | 4 +-- ...istener.java => BungeePlayerListener.java} | 15 ++------- ...erverListener.java => PlayerListener.java} | 11 ++----- .../common/listeners/ServerUtilsListener.java | 8 +---- .../velocity/entities/VelocityPlugin.java | 6 ++++ .../events/VelocityPluginDisableEvent.java | 11 +++++++ .../events/VelocityPluginEnableEvent.java | 11 +++++++ .../velocity/events/VelocityPluginEvent.java | 25 +++++++++++++++ .../events/VelocityPluginLoadEvent.java | 11 +++++++ .../events/VelocityPluginUnloadEvent.java | 11 +++++++ .../listeners/VelocityPlayerListener.java | 19 ++++++++++++ .../managers/VelocityPluginManager.java | 31 +++++++++++++------ 14 files changed, 130 insertions(+), 52 deletions(-) rename Bukkit/src/main/java/net/frankheijden/serverutils/bukkit/listeners/{BukkitListener.java => BukkitPlayerListener.java} (64%) rename Bungee/src/main/java/net/frankheijden/serverutils/bungee/listeners/{BungeeServerListener.java => BungeePlayerListener.java} (57%) rename Common/src/main/java/net/frankheijden/serverutils/common/listeners/{ServerListener.java => PlayerListener.java} (71%) create mode 100644 Velocity/src/main/java/net/frankheijden/serverutils/velocity/events/VelocityPluginDisableEvent.java create mode 100644 Velocity/src/main/java/net/frankheijden/serverutils/velocity/events/VelocityPluginEnableEvent.java create mode 100644 Velocity/src/main/java/net/frankheijden/serverutils/velocity/events/VelocityPluginEvent.java create mode 100644 Velocity/src/main/java/net/frankheijden/serverutils/velocity/events/VelocityPluginLoadEvent.java create mode 100644 Velocity/src/main/java/net/frankheijden/serverutils/velocity/events/VelocityPluginUnloadEvent.java create mode 100644 Velocity/src/main/java/net/frankheijden/serverutils/velocity/listeners/VelocityPlayerListener.java diff --git a/Bukkit/src/main/java/net/frankheijden/serverutils/bukkit/entities/BukkitPlugin.java b/Bukkit/src/main/java/net/frankheijden/serverutils/bukkit/entities/BukkitPlugin.java index c55a639..e0a91cd 100644 --- a/Bukkit/src/main/java/net/frankheijden/serverutils/bukkit/entities/BukkitPlugin.java +++ b/Bukkit/src/main/java/net/frankheijden/serverutils/bukkit/entities/BukkitPlugin.java @@ -7,7 +7,7 @@ import java.util.logging.Logger; import net.frankheijden.serverutils.bukkit.ServerUtils; import net.frankheijden.serverutils.bukkit.commands.BukkitCommandPlugins; import net.frankheijden.serverutils.bukkit.commands.BukkitCommandServerUtils; -import net.frankheijden.serverutils.bukkit.listeners.BukkitListener; +import net.frankheijden.serverutils.bukkit.listeners.BukkitPlayerListener; import net.frankheijden.serverutils.bukkit.managers.BukkitPluginManager; import net.frankheijden.serverutils.bukkit.managers.BukkitTaskManager; import net.frankheijden.serverutils.common.entities.ServerUtilsPlugin; @@ -94,7 +94,7 @@ public class BukkitPlugin extends ServerUtilsPlugin< @Override protected void enablePlugin() { - Bukkit.getPluginManager().registerEvents(new BukkitListener(this), plugin); + Bukkit.getPluginManager().registerEvents(new BukkitPlayerListener(this), plugin); } @Override diff --git a/Bukkit/src/main/java/net/frankheijden/serverutils/bukkit/listeners/BukkitListener.java b/Bukkit/src/main/java/net/frankheijden/serverutils/bukkit/listeners/BukkitPlayerListener.java similarity index 64% rename from Bukkit/src/main/java/net/frankheijden/serverutils/bukkit/listeners/BukkitListener.java rename to Bukkit/src/main/java/net/frankheijden/serverutils/bukkit/listeners/BukkitPlayerListener.java index 1398128..d941a85 100644 --- a/Bukkit/src/main/java/net/frankheijden/serverutils/bukkit/listeners/BukkitListener.java +++ b/Bukkit/src/main/java/net/frankheijden/serverutils/bukkit/listeners/BukkitPlayerListener.java @@ -2,24 +2,15 @@ package net.frankheijden.serverutils.bukkit.listeners; import net.frankheijden.serverutils.bukkit.entities.BukkitCommandSender; import net.frankheijden.serverutils.bukkit.entities.BukkitPlugin; -import net.frankheijden.serverutils.common.listeners.ServerListener; -import org.bukkit.command.CommandSender; +import net.frankheijden.serverutils.common.listeners.PlayerListener; import org.bukkit.event.EventHandler; import org.bukkit.event.EventPriority; import org.bukkit.event.Listener; import org.bukkit.event.player.PlayerJoinEvent; -import org.bukkit.plugin.Plugin; -import org.bukkit.scheduler.BukkitTask; -public class BukkitListener extends ServerListener< - BukkitPlugin, - Plugin, - BukkitTask, - BukkitCommandSender, - CommandSender - > implements Listener { +public class BukkitPlayerListener extends PlayerListener implements Listener { - public BukkitListener(BukkitPlugin plugin) { + public BukkitPlayerListener(BukkitPlugin plugin) { super(plugin); } diff --git a/Bungee/src/main/java/net/frankheijden/serverutils/bungee/entities/BungeePlugin.java b/Bungee/src/main/java/net/frankheijden/serverutils/bungee/entities/BungeePlugin.java index ce8b77c..3ef7f72 100644 --- a/Bungee/src/main/java/net/frankheijden/serverutils/bungee/entities/BungeePlugin.java +++ b/Bungee/src/main/java/net/frankheijden/serverutils/bungee/entities/BungeePlugin.java @@ -7,7 +7,7 @@ import java.util.logging.Logger; import net.frankheijden.serverutils.bungee.ServerUtils; import net.frankheijden.serverutils.bungee.commands.BungeeCommandPlugins; import net.frankheijden.serverutils.bungee.commands.BungeeCommandServerUtils; -import net.frankheijden.serverutils.bungee.listeners.BungeeServerListener; +import net.frankheijden.serverutils.bungee.listeners.BungeePlayerListener; import net.frankheijden.serverutils.bungee.managers.BungeePluginManager; import net.frankheijden.serverutils.bungee.managers.BungeeTaskManager; import net.frankheijden.serverutils.common.entities.ServerUtilsPlugin; @@ -87,7 +87,7 @@ public class BungeePlugin extends ServerUtilsPlugin< @Override protected void enablePlugin() { - plugin.getProxy().getPluginManager().registerListener(plugin, new BungeeServerListener(this)); + plugin.getProxy().getPluginManager().registerListener(plugin, new BungeePlayerListener(this)); } @Override diff --git a/Bungee/src/main/java/net/frankheijden/serverutils/bungee/listeners/BungeeServerListener.java b/Bungee/src/main/java/net/frankheijden/serverutils/bungee/listeners/BungeePlayerListener.java similarity index 57% rename from Bungee/src/main/java/net/frankheijden/serverutils/bungee/listeners/BungeeServerListener.java rename to Bungee/src/main/java/net/frankheijden/serverutils/bungee/listeners/BungeePlayerListener.java index 80d31b4..1e8e0a2 100644 --- a/Bungee/src/main/java/net/frankheijden/serverutils/bungee/listeners/BungeeServerListener.java +++ b/Bungee/src/main/java/net/frankheijden/serverutils/bungee/listeners/BungeePlayerListener.java @@ -2,23 +2,14 @@ package net.frankheijden.serverutils.bungee.listeners; import net.frankheijden.serverutils.bungee.entities.BungeeCommandSender; import net.frankheijden.serverutils.bungee.entities.BungeePlugin; -import net.frankheijden.serverutils.common.listeners.ServerListener; -import net.md_5.bungee.api.CommandSender; +import net.frankheijden.serverutils.common.listeners.PlayerListener; import net.md_5.bungee.api.event.ServerConnectEvent; import net.md_5.bungee.api.plugin.Listener; -import net.md_5.bungee.api.plugin.Plugin; -import net.md_5.bungee.api.scheduler.ScheduledTask; import net.md_5.bungee.event.EventHandler; -public class BungeeServerListener extends ServerListener< - BungeePlugin, - Plugin, - ScheduledTask, - BungeeCommandSender, - CommandSender - > implements Listener { +public class BungeePlayerListener extends PlayerListener implements Listener { - public BungeeServerListener(BungeePlugin plugin) { + public BungeePlayerListener(BungeePlugin plugin) { super(plugin); } diff --git a/Common/src/main/java/net/frankheijden/serverutils/common/listeners/ServerListener.java b/Common/src/main/java/net/frankheijden/serverutils/common/listeners/PlayerListener.java similarity index 71% rename from Common/src/main/java/net/frankheijden/serverutils/common/listeners/ServerListener.java rename to Common/src/main/java/net/frankheijden/serverutils/common/listeners/PlayerListener.java index b989af4..cbdfeb6 100644 --- a/Common/src/main/java/net/frankheijden/serverutils/common/listeners/ServerListener.java +++ b/Common/src/main/java/net/frankheijden/serverutils/common/listeners/PlayerListener.java @@ -4,15 +4,10 @@ import net.frankheijden.serverutils.common.entities.ServerCommandSender; import net.frankheijden.serverutils.common.entities.ServerUtilsPlugin; import net.frankheijden.serverutils.common.tasks.UpdateCheckerTask; -public abstract class ServerListener< - U extends ServerUtilsPlugin, - P, - T, - C extends ServerCommandSender, - S - > extends ServerUtilsListener { +public abstract class PlayerListener, C extends ServerCommandSender> + extends ServerUtilsListener { - protected ServerListener(U plugin) { + protected PlayerListener(U plugin) { super(plugin); } diff --git a/Common/src/main/java/net/frankheijden/serverutils/common/listeners/ServerUtilsListener.java b/Common/src/main/java/net/frankheijden/serverutils/common/listeners/ServerUtilsListener.java index 31f10c2..c717964 100644 --- a/Common/src/main/java/net/frankheijden/serverutils/common/listeners/ServerUtilsListener.java +++ b/Common/src/main/java/net/frankheijden/serverutils/common/listeners/ServerUtilsListener.java @@ -3,13 +3,7 @@ package net.frankheijden.serverutils.common.listeners; import net.frankheijden.serverutils.common.entities.ServerCommandSender; import net.frankheijden.serverutils.common.entities.ServerUtilsPlugin; -public abstract class ServerUtilsListener< - U extends ServerUtilsPlugin, - P, - T, - C extends ServerCommandSender, - S - > { +public abstract class ServerUtilsListener, C extends ServerCommandSender> { protected final U plugin; diff --git a/Velocity/src/main/java/net/frankheijden/serverutils/velocity/entities/VelocityPlugin.java b/Velocity/src/main/java/net/frankheijden/serverutils/velocity/entities/VelocityPlugin.java index ef5ac17..cbf8730 100644 --- a/Velocity/src/main/java/net/frankheijden/serverutils/velocity/entities/VelocityPlugin.java +++ b/Velocity/src/main/java/net/frankheijden/serverutils/velocity/entities/VelocityPlugin.java @@ -11,6 +11,7 @@ import net.frankheijden.serverutils.common.entities.ServerUtilsPlugin; import net.frankheijden.serverutils.velocity.ServerUtils; import net.frankheijden.serverutils.velocity.commands.VelocityCommandPlugins; import net.frankheijden.serverutils.velocity.commands.VelocityCommandServerUtils; +import net.frankheijden.serverutils.velocity.listeners.VelocityPlayerListener; import net.frankheijden.serverutils.velocity.managers.VelocityPluginManager; import net.frankheijden.serverutils.velocity.managers.VelocityTaskManager; @@ -85,6 +86,11 @@ public class VelocityPlugin extends ServerUtilsPlugin< return this.plugin.getDataDirectory().toFile(); } + @Override + protected void enablePlugin() { + plugin.getProxy().getEventManager().register(plugin, new VelocityPlayerListener(this)); + } + @Override protected void reloadPlugin() { new VelocityCommandPlugins(this).register(commandManager); diff --git a/Velocity/src/main/java/net/frankheijden/serverutils/velocity/events/VelocityPluginDisableEvent.java b/Velocity/src/main/java/net/frankheijden/serverutils/velocity/events/VelocityPluginDisableEvent.java new file mode 100644 index 0000000..bcc456b --- /dev/null +++ b/Velocity/src/main/java/net/frankheijden/serverutils/velocity/events/VelocityPluginDisableEvent.java @@ -0,0 +1,11 @@ +package net.frankheijden.serverutils.velocity.events; + +import com.velocitypowered.api.plugin.PluginContainer; +import net.frankheijden.serverutils.common.events.PluginDisableEvent; + +public class VelocityPluginDisableEvent extends VelocityPluginEvent implements PluginDisableEvent { + + public VelocityPluginDisableEvent(PluginContainer plugin, Stage stage) { + super(plugin, stage); + } +} diff --git a/Velocity/src/main/java/net/frankheijden/serverutils/velocity/events/VelocityPluginEnableEvent.java b/Velocity/src/main/java/net/frankheijden/serverutils/velocity/events/VelocityPluginEnableEvent.java new file mode 100644 index 0000000..1796789 --- /dev/null +++ b/Velocity/src/main/java/net/frankheijden/serverutils/velocity/events/VelocityPluginEnableEvent.java @@ -0,0 +1,11 @@ +package net.frankheijden.serverutils.velocity.events; + +import com.velocitypowered.api.plugin.PluginContainer; +import net.frankheijden.serverutils.common.events.PluginEnableEvent; + +public class VelocityPluginEnableEvent extends VelocityPluginEvent implements PluginEnableEvent { + + public VelocityPluginEnableEvent(PluginContainer plugin, Stage stage) { + super(plugin, stage); + } +} diff --git a/Velocity/src/main/java/net/frankheijden/serverutils/velocity/events/VelocityPluginEvent.java b/Velocity/src/main/java/net/frankheijden/serverutils/velocity/events/VelocityPluginEvent.java new file mode 100644 index 0000000..ab84d90 --- /dev/null +++ b/Velocity/src/main/java/net/frankheijden/serverutils/velocity/events/VelocityPluginEvent.java @@ -0,0 +1,25 @@ +package net.frankheijden.serverutils.velocity.events; + +import com.velocitypowered.api.plugin.PluginContainer; +import net.frankheijden.serverutils.common.events.PluginEvent; + +public abstract class VelocityPluginEvent implements PluginEvent { + + private final PluginContainer plugin; + private final Stage stage; + + protected VelocityPluginEvent(PluginContainer plugin, Stage stage) { + this.plugin = plugin; + this.stage = stage; + } + + @Override + public PluginContainer getPlugin() { + return plugin; + } + + @Override + public Stage getStage() { + return stage; + } +} diff --git a/Velocity/src/main/java/net/frankheijden/serverutils/velocity/events/VelocityPluginLoadEvent.java b/Velocity/src/main/java/net/frankheijden/serverutils/velocity/events/VelocityPluginLoadEvent.java new file mode 100644 index 0000000..e5e976f --- /dev/null +++ b/Velocity/src/main/java/net/frankheijden/serverutils/velocity/events/VelocityPluginLoadEvent.java @@ -0,0 +1,11 @@ +package net.frankheijden.serverutils.velocity.events; + +import com.velocitypowered.api.plugin.PluginContainer; +import net.frankheijden.serverutils.common.events.PluginLoadEvent; + +public class VelocityPluginLoadEvent extends VelocityPluginEvent implements PluginLoadEvent { + + public VelocityPluginLoadEvent(PluginContainer plugin, Stage stage) { + super(plugin, stage); + } +} diff --git a/Velocity/src/main/java/net/frankheijden/serverutils/velocity/events/VelocityPluginUnloadEvent.java b/Velocity/src/main/java/net/frankheijden/serverutils/velocity/events/VelocityPluginUnloadEvent.java new file mode 100644 index 0000000..7d7937d --- /dev/null +++ b/Velocity/src/main/java/net/frankheijden/serverutils/velocity/events/VelocityPluginUnloadEvent.java @@ -0,0 +1,11 @@ +package net.frankheijden.serverutils.velocity.events; + +import com.velocitypowered.api.plugin.PluginContainer; +import net.frankheijden.serverutils.common.events.PluginUnloadEvent; + +public class VelocityPluginUnloadEvent extends VelocityPluginEvent implements PluginUnloadEvent { + + public VelocityPluginUnloadEvent(PluginContainer plugin, Stage stage) { + super(plugin, stage); + } +} diff --git a/Velocity/src/main/java/net/frankheijden/serverutils/velocity/listeners/VelocityPlayerListener.java b/Velocity/src/main/java/net/frankheijden/serverutils/velocity/listeners/VelocityPlayerListener.java new file mode 100644 index 0000000..784efa8 --- /dev/null +++ b/Velocity/src/main/java/net/frankheijden/serverutils/velocity/listeners/VelocityPlayerListener.java @@ -0,0 +1,19 @@ +package net.frankheijden.serverutils.velocity.listeners; + +import com.velocitypowered.api.event.Subscribe; +import com.velocitypowered.api.event.player.PlayerChooseInitialServerEvent; +import net.frankheijden.serverutils.common.listeners.PlayerListener; +import net.frankheijden.serverutils.velocity.entities.VelocityCommandSender; +import net.frankheijden.serverutils.velocity.entities.VelocityPlugin; + +public class VelocityPlayerListener extends PlayerListener { + + public VelocityPlayerListener(VelocityPlugin plugin) { + super(plugin); + } + + @Subscribe + public void onPlayerChooseInitialServer(PlayerChooseInitialServerEvent event) { + handleUpdate(plugin.getChatProvider().get(event.getPlayer())); + } +} diff --git a/Velocity/src/main/java/net/frankheijden/serverutils/velocity/managers/VelocityPluginManager.java b/Velocity/src/main/java/net/frankheijden/serverutils/velocity/managers/VelocityPluginManager.java index 5f6821c..516dad5 100644 --- a/Velocity/src/main/java/net/frankheijden/serverutils/velocity/managers/VelocityPluginManager.java +++ b/Velocity/src/main/java/net/frankheijden/serverutils/velocity/managers/VelocityPluginManager.java @@ -28,9 +28,14 @@ import java.util.Set; import java.util.stream.Collectors; import net.frankheijden.serverutils.common.entities.CloseableResult; import net.frankheijden.serverutils.common.entities.Result; +import net.frankheijden.serverutils.common.events.PluginEvent; import net.frankheijden.serverutils.common.managers.AbstractPluginManager; import net.frankheijden.serverutils.velocity.ServerUtils; import net.frankheijden.serverutils.velocity.entities.VelocityLoadResult; +import net.frankheijden.serverutils.velocity.events.VelocityPluginDisableEvent; +import net.frankheijden.serverutils.velocity.events.VelocityPluginEnableEvent; +import net.frankheijden.serverutils.velocity.events.VelocityPluginLoadEvent; +import net.frankheijden.serverutils.velocity.events.VelocityPluginUnloadEvent; import net.frankheijden.serverutils.velocity.reflection.RJavaPluginLoader; import net.frankheijden.serverutils.velocity.reflection.RVelocityCommandManager; import net.frankheijden.serverutils.velocity.reflection.RVelocityConsole; @@ -79,12 +84,15 @@ public class VelocityPluginManager implements AbstractPluginManager { - RVelocityEventManager.registerInternally(proxy.getEventManager(), container, instance); + container.getInstance().ifPresent(pluginInstance -> { + RVelocityEventManager.registerInternally(proxy.getEventManager(), container, pluginInstance); RVelocityEventManager.fireForPlugin( proxy.getEventManager(), new ProxyInitializeEvent(), - instance + pluginInstance ).join(); ConsoleCommandSource console = proxy.getConsoleCommandSource(); @@ -146,7 +154,7 @@ public class VelocityPluginManager implements AbstractPluginManager pluginInstanceOptional = plugin.getInstance(); + public CloseableResult unloadPlugin(PluginContainer container) { + proxy.getEventManager().fire(new VelocityPluginUnloadEvent(container, PluginEvent.Stage.PRE)); + Optional pluginInstanceOptional = container.getInstance(); if (!pluginInstanceOptional.isPresent()) return new CloseableResult(Result.INVALID_PLUGIN); Object pluginInstance = pluginInstanceOptional.get(); @@ -219,7 +231,7 @@ public class VelocityPluginManager implements AbstractPluginManager