fix: Fixed AutoLogin not working

This commit is contained in:
Adrian 2023-05-24 08:21:20 -05:00
parent 82d3592f14
commit 8641bb59f0
No known key found for this signature in database
GPG Key ID: FB8EF84DCE1BE452
2 changed files with 39 additions and 29 deletions

View File

@ -41,25 +41,21 @@ public final class MessageListener implements PluginMessageListener {
final @NotNull Player player, final @NotNull Player player,
final byte @NotNull [] bytes final byte @NotNull [] bytes
) { ) {
if (!identifier.equals("authmevelocity")) { if (identifier.equals("authmevelocity:main")) {
plugin.logDebug("PluginMessage | Not AuthMeVelocity identifier"); @SuppressWarnings("UnstableApiUsage")
return; final ByteArrayDataInput input = ByteStreams.newDataInput(bytes);
final String data = input.readUTF();
processData(player, data);
plugin.logDebug("PluginMessage | AuthMeVelocity identifier processed");
} }
}
plugin.logDebug("PluginMessage | AuthMeVelocity identifier"); private void processData(Player player, String data) {
if (MessageType.LOGIN.toString().equals(data)) {
@SuppressWarnings("UnstableApiUsage") plugin.logDebug("PluginMessage | Login Message");
final ByteArrayDataInput input = ByteStreams.newDataInput(bytes); Bukkit.getPluginManager().callEvent(new LoginByProxyEvent(player));
final String subChannel = input.readUTF(); AuthMeApi.getInstance().forceLogin(player);
if ("main".equals(subChannel)) {
plugin.logDebug("PluginMessage | Main Subchannel");
final String msg = input.readUTF();
if (MessageType.LOGIN.toString().equals(msg)) {
plugin.logDebug("PluginMessage | Login Message");
Bukkit.getPluginManager().callEvent(new LoginByProxyEvent(player));
AuthMeApi.getInstance().forceLogin(player);
}
} }
} }
} }

View File

@ -28,6 +28,7 @@ import com.velocitypowered.api.event.player.ServerPostConnectEvent;
import com.velocitypowered.api.event.player.ServerPreConnectEvent; import com.velocitypowered.api.event.player.ServerPreConnectEvent;
import com.velocitypowered.api.proxy.Player; import com.velocitypowered.api.proxy.Player;
import com.velocitypowered.api.proxy.ProxyServer; import com.velocitypowered.api.proxy.ProxyServer;
import com.velocitypowered.api.proxy.ServerConnection;
import com.velocitypowered.api.proxy.server.RegisteredServer; import com.velocitypowered.api.proxy.server.RegisteredServer;
import io.github._4drian3d.authmevelocity.common.configuration.ProxyConfiguration; import io.github._4drian3d.authmevelocity.common.configuration.ProxyConfiguration;
import io.github._4drian3d.authmevelocity.velocity.AuthMeVelocityPlugin; import io.github._4drian3d.authmevelocity.velocity.AuthMeVelocityPlugin;
@ -80,16 +81,24 @@ public final class ConnectListener {
final ServerPreConnectEvent event, final ServerPreConnectEvent event,
final Continuation continuation final Continuation continuation
) { ) {
if (!event.getResult().isAllowed() || plugin.isLogged(event.getPlayer())) { if (plugin.isLogged(event.getPlayer())) {
plugin.logDebug("ServerPreConnectEvent | Not allowed or player not logged"); plugin.logDebug("ServerPreConnectEvent | Player already logged");
continuation.resume(); continuation.resume();
return; return;
} }
final RegisteredServer server = event.getResult().getServer().orElse(null);
if (server == null) {
plugin.logDebug("ServerPreConnectEvent | Null Server");
continuation.resume();
return;
}
// this should be present, "event.getResult().isAllowed()" is the "isPresent" check // this should be present, "event.getResult().isAllowed()" is the "isPresent" check
if (!plugin.isAuthServer(event.getResult().getServer().orElseThrow())) { if (!plugin.isAuthServer(server)) {
plugin.logDebug("ServerPreConnectEvent | Server is not an auth server"); plugin.logDebug("ServerPreConnectEvent | Server "+server.getServerInfo().getName()+" is not an auth server");
event.setResult(ServerPreConnectEvent.ServerResult.denied()); event.setResult(ServerPreConnectEvent.ServerResult.denied());
} else {
plugin.logDebug("ServerPreConnectEvent | Server "+server.getServerInfo().getName()+" is an auth server");
} }
continuation.resume(); continuation.resume();
} }
@ -101,6 +110,11 @@ public final class ConnectListener {
final boolean isLogged = plugin.isLogged(player); final boolean isLogged = plugin.isLogged(player);
plugin.logDebug("ServerPostConnectEvent | Player "+player.getUsername()+" is logged: " + isLogged); plugin.logDebug("ServerPostConnectEvent | Player "+player.getUsername()+" is logged: " + isLogged);
final RegisteredServer server = player.getCurrentServer().map(ServerConnection::getServer).orElse(null);
if (server == null) {
plugin.logDebug("ServerPostConnectEvent | Player "+player.getUsername()+" is not in a server");
return;
}
final boolean isInAuthServer = plugin.isInAuthServer(player); final boolean isInAuthServer = plugin.isInAuthServer(player);
plugin.logDebug("ServerPostConnectEvent | Player "+player.getUsername()+" is in AuthServer: " + isInAuthServer); plugin.logDebug("ServerPostConnectEvent | Player "+player.getUsername()+" is in AuthServer: " + isInAuthServer);
@ -111,13 +125,13 @@ public final class ConnectListener {
plugin.logDebug("ServerPostConnectEvent | Already logged player and connected to an Auth server"); plugin.logDebug("ServerPostConnectEvent | Already logged player and connected to an Auth server");
final ByteArrayDataOutput buf = ByteStreams.newDataOutput(); final ByteArrayDataOutput buf = ByteStreams.newDataOutput();
buf.writeUTF("LOGIN"); buf.writeUTF("LOGIN");
player.getCurrentServer().ifPresent(server -> {
final byte[] byteArray = buf.toByteArray(); final byte[] byteArray = buf.toByteArray();
if (!server.sendPluginMessage(AuthMeVelocityPlugin.MODERN_CHANNEL, byteArray)) { plugin.logDebug("ServerPostConnectEvent | Sending LOGIN data");
plugin.logDebug("ServerPostConnectEvent | Failed to send on Modern Channel"); if (server.sendPluginMessage(AuthMeVelocityPlugin.MODERN_CHANNEL, byteArray)) {
final boolean legacyResult = server.sendPluginMessage(AuthMeVelocityPlugin.LEGACY_CHANNEL, byteArray); plugin.logDebug("ServerPostConnectEvent | Correctly send data");
if (!legacyResult) plugin.logDebug("ServerPostConnectEvent | Failed to send on Legacy Channel"); } else {
} plugin.logDebug("ServerPostConnectEvent | Failed to send data");
}); }
} }
} }