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.
This commit is contained in:
Smart123s
2021-06-07 19:45:27 +02:00
parent ee2b3a37f8
commit af0ef2aed9
2 changed files with 12 additions and 9 deletions

View File

@ -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<Player, CommandSende
}
@Override
protected FloodgatePlayer getFloodgatePlayer(Object id) {
protected Object getFloodgatePlayer(Object id) {
if ((id instanceof String)) {
return floodgateHook.getFloodgatePlayer((String) id);
}

View File

@ -56,7 +56,7 @@ public abstract class JoinManagement<P extends C, C, S extends LoginSource> {
}
//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<P extends C, C, S extends LoginSource> {
* @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<P extends C, C, S extends LoginSource> {
}
/**
* 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
* <br> null if Floodgate is unavailable
* @return an instance of FloodgatePlayer, if Floodgate is installed and a
* player is found <br>
* 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);