Merge pull request #602 from Smart123s/fg-bungee-handshake

Fix plugin messages for Floodgate players
This commit is contained in:
games647
2021-08-23 17:17:56 +02:00
committed by GitHub
2 changed files with 22 additions and 4 deletions

View File

@ -36,6 +36,9 @@ import com.github.games647.fastlogin.core.shared.FastLoginCore;
import com.google.common.io.ByteArrayDataInput;
import com.google.common.io.ByteStreams;
import org.geysermc.floodgate.api.FloodgateApi;
import org.geysermc.floodgate.api.player.FloodgatePlayer;
import java.util.Arrays;
import net.md_5.bungee.api.CommandSender;
@ -115,7 +118,13 @@ public class PluginMessageListener implements Listener {
}
private void onSuccessMessage(ProxiedPlayer forPlayer) {
if (forPlayer.getPendingConnection().isOnlineMode()) {
//check if player is using Floodgate
FloodgatePlayer floodgatePlayer = null;
if (plugin.isPluginInstalled("floodgate")) {
floodgatePlayer = FloodgateApi.getInstance().getPlayer(forPlayer.getUniqueId());
}
if (forPlayer.getPendingConnection().isOnlineMode() || floodgatePlayer != null){
//bukkit module successfully received and force logged in the user
//update only on success to prevent corrupt data
BungeeLoginSession loginSession = plugin.getSession().get(forPlayer.getPendingConnection());

View File

@ -73,10 +73,20 @@ public abstract class FloodgateManagement<P extends C, C, L extends LoginSession
// check if the Bedrock player is linked to a Java account
isLinked = floodgatePlayer.getLinkedPlayer() != null;
profile = core.getStorage().loadProfile(username);
AuthPlugin<P> authPlugin = core.getAuthPluginHook();
try {
isRegistered = authPlugin.isRegistered(username);
//maybe Bungee without auth plugin
if (authPlugin == null) {
if (profile != null) {
isRegistered = profile.isPremium();
} else {
isRegistered = false;
}
} else {
isRegistered = authPlugin.isRegistered(username);
}
} catch (Exception ex) {
core.getPlugin().getLog().error(
"An error has occured while checking if player {} is registered",
@ -108,7 +118,6 @@ public abstract class FloodgateManagement<P extends C, C, L extends LoginSession
}
//logging in from bedrock for a second time threw an error with UUID
profile = core.getStorage().loadProfile(username);
if (profile == null) {
profile = new StoredProfile(getUUID(player), username, true, getAddress(player).toString());
}