diff --git a/proxy/src/main/java/com/glyart/authmevelocity/proxy/event/ProxyLoginEvent.java b/proxy/src/main/java/com/glyart/authmevelocity/proxy/event/ProxyLoginEvent.java new file mode 100644 index 0000000..87aa8e4 --- /dev/null +++ b/proxy/src/main/java/com/glyart/authmevelocity/proxy/event/ProxyLoginEvent.java @@ -0,0 +1,31 @@ +package com.glyart.authmevelocity.proxy.event; + +import com.velocitypowered.api.proxy.Player; +import com.velocitypowered.api.proxy.server.RegisteredServer; + +public class ProxyLoginEvent { + + private final Player player; + private final RegisteredServer server; + + public ProxyLoginEvent(Player player, RegisteredServer server){ + this.player = player; + this.server = server; + } + + /** + * Get the player who has logged in + * @return the login player + */ + public Player getPlayer(){ + return this.player; + } + + /** + * Obtain the server to which the user is logged in. + * @return the login server + */ + public RegisteredServer getServer(){ + return this.server; + } +} diff --git a/proxy/src/main/java/com/glyart/authmevelocity/proxy/listener/ProxyListener.java b/proxy/src/main/java/com/glyart/authmevelocity/proxy/listener/ProxyListener.java index b2f2a75..943dad0 100644 --- a/proxy/src/main/java/com/glyart/authmevelocity/proxy/listener/ProxyListener.java +++ b/proxy/src/main/java/com/glyart/authmevelocity/proxy/listener/ProxyListener.java @@ -1,6 +1,7 @@ package com.glyart.authmevelocity.proxy.listener; import com.glyart.authmevelocity.proxy.AuthMeVelocityPlugin; +import com.glyart.authmevelocity.proxy.event.ProxyLoginEvent; import com.google.common.io.ByteArrayDataInput; import com.velocitypowered.api.event.Subscribe; import com.velocitypowered.api.event.command.CommandExecuteEvent; @@ -39,7 +40,11 @@ public class ProxyListener { Optional player = server.getPlayer(UUID.fromString(user)); if (!player.isPresent()) return; - plugin.loggedPlayers.add(player.get().getUniqueId()); + Player loggedPlayer = player.get(); + plugin.loggedPlayers.add(loggedPlayer.getUniqueId()); + + RegisteredServer loginServer = player.get().getCurrentServer().get().getServer(); + server.getEventManager().fireAndForget(new ProxyLoginEvent(loggedPlayer, loginServer)); } @Subscribe @@ -66,7 +71,7 @@ public class ProxyListener { @Subscribe public void onPlayerChat(final PlayerChatEvent event) { - Player player = event.getPlayer(); + final Player player = event.getPlayer(); if (plugin.loggedPlayers.contains(player.getUniqueId())) return; Optional server = player.getCurrentServer(); @@ -79,7 +84,7 @@ public class ProxyListener { @Subscribe public void onServerPreConnect(ServerPreConnectEvent event) { - Player player = event.getPlayer(); + final Player player = event.getPlayer(); if (plugin.loggedPlayers.contains(player.getUniqueId())) return; Optional server = event.getResult().getServer();