From af0ef2aed970ebc3e171ae96ddbba8d65d636fdc Mon Sep 17 00:00:00 2001 From: Smart123s <28480228+Smart123s@users.noreply.github.com> Date: Mon, 7 Jun 2021 19:45:27 +0200 Subject: [PATCH] Stop ProtocolSupport from crying If I ever tried to either cast or use FloodgatePlayer as a return type when Floodgate was not installed in the server, I got this error: [19:37:46 ERROR]: [FastLogin] Plugin FastLogin v1.11-SNAPSHOT-744264d has failed to register events for class com.github.games647.fastlogin.bukkit.listener.protocolsupport.ProtocolSupportListener because org/geysermc/floodgate/api/player/FloodgatePlayer does not exist. ProtocolLib doen't have this problem. --- .../ProtocolSupportListener.java | 3 +-- .../fastlogin/core/shared/JoinManagement.java | 18 +++++++++++------- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/listener/protocolsupport/ProtocolSupportListener.java b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/listener/protocolsupport/ProtocolSupportListener.java index f9af6f0e..abed0370 100644 --- a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/listener/protocolsupport/ProtocolSupportListener.java +++ b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/listener/protocolsupport/ProtocolSupportListener.java @@ -42,7 +42,6 @@ import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; -import org.geysermc.floodgate.api.player.FloodgatePlayer; import protocolsupport.api.events.ConnectionCloseEvent; import protocolsupport.api.events.PlayerLoginStartEvent; @@ -132,7 +131,7 @@ public class ProtocolSupportListener extends JoinManagement { } //check if the player is connecting through Floodgate - FloodgatePlayer floodgatePlayer = getFloodgatePlayer(username); + Object floodgatePlayer = getFloodgatePlayer(username); if (floodgatePlayer != null) { checkFloodgateNameConflict(username, source, floodgatePlayer); @@ -149,11 +149,11 @@ public abstract class JoinManagement

{ * @param username the name of the player * @param source an instance of LoginSource */ - public void checkFloodgateNameConflict(String username, LoginSource source, FloodgatePlayer floodgatePlayer) { + public void checkFloodgateNameConflict(String username, LoginSource source, Object floodgatePlayer) { String allowConflict = core.getConfig().get("allowFloodgateNameConflict").toString().toLowerCase(); // check if the Bedrock player is linked to a Java account - boolean isLinked = floodgatePlayer.getLinkedPlayer() != null; + boolean isLinked = ((FloodgatePlayer) floodgatePlayer).getLinkedPlayer() != null; if (allowConflict.equals("false") || allowConflict.equals("linked") && !isLinked) { @@ -188,12 +188,16 @@ public abstract class JoinManagement

{ } /** - * Check if a player is connecting through Floodgate + * Gets a FloodgatePlayer based on name or UUID Note: Don't change the return + * type from Object to FloodgatePlayer, unless you want ProtocolSupport to throw + * an error if Floodgate is not installed + * * @param id UUID for BungeeCord, username for Bukkit - * @return true if the player is connecting through Floodgate - *
null if Floodgate is unavailable + * @return an instance of FloodgatePlayer, if Floodgate is installed and a + * player is found
+ * null if Floodgate is unavailable */ - protected abstract FloodgatePlayer getFloodgatePlayer(Object id); + protected abstract Object getFloodgatePlayer(Object id); public abstract FastLoginPreLoginEvent callFastLoginPreLoginEvent(String username, S source, StoredProfile profile);