From 2700b3ee0ed54c8870f2c29c95eb2ea4b230282b Mon Sep 17 00:00:00 2001 From: TechnicallyCoded Date: Wed, 12 May 2021 11:49:15 +0200 Subject: [PATCH] Implement floodgate api version 2.0 --- .../bungee/hook/floodgate/FloodgateHook.java | 9 ++++++++ .../hook/floodgate/FloodgateV1Hook.java | 14 ++++++++++++ .../hook/floodgate/FloodgateV2Hook.java | 21 ++++++++++++++++++ .../bungee/listener/ConnectListener.java | 22 ++++++++++++++----- 4 files changed, 60 insertions(+), 6 deletions(-) create mode 100644 bungee/src/main/java/com/github/games647/fastlogin/bungee/hook/floodgate/FloodgateHook.java create mode 100644 bungee/src/main/java/com/github/games647/fastlogin/bungee/hook/floodgate/FloodgateV1Hook.java create mode 100644 bungee/src/main/java/com/github/games647/fastlogin/bungee/hook/floodgate/FloodgateV2Hook.java diff --git a/bungee/src/main/java/com/github/games647/fastlogin/bungee/hook/floodgate/FloodgateHook.java b/bungee/src/main/java/com/github/games647/fastlogin/bungee/hook/floodgate/FloodgateHook.java new file mode 100644 index 00000000..c6dad54b --- /dev/null +++ b/bungee/src/main/java/com/github/games647/fastlogin/bungee/hook/floodgate/FloodgateHook.java @@ -0,0 +1,9 @@ +package com.github.games647.fastlogin.bungee.hook.floodgate; + +import java.util.UUID; + +public interface FloodgateHook { + + boolean isBedrockPlayer(UUID uuid); + +} diff --git a/bungee/src/main/java/com/github/games647/fastlogin/bungee/hook/floodgate/FloodgateV1Hook.java b/bungee/src/main/java/com/github/games647/fastlogin/bungee/hook/floodgate/FloodgateV1Hook.java new file mode 100644 index 00000000..bc41956d --- /dev/null +++ b/bungee/src/main/java/com/github/games647/fastlogin/bungee/hook/floodgate/FloodgateV1Hook.java @@ -0,0 +1,14 @@ +package com.github.games647.fastlogin.bungee.hook.floodgate; + +import org.geysermc.floodgate.FloodgateAPI; + +import java.util.UUID; + +public class FloodgateV1Hook implements FloodgateHook { + + @Override + public boolean isBedrockPlayer(UUID uuid) { + return FloodgateAPI.isBedrockPlayer(uuid); + } + +} diff --git a/bungee/src/main/java/com/github/games647/fastlogin/bungee/hook/floodgate/FloodgateV2Hook.java b/bungee/src/main/java/com/github/games647/fastlogin/bungee/hook/floodgate/FloodgateV2Hook.java new file mode 100644 index 00000000..11e5022c --- /dev/null +++ b/bungee/src/main/java/com/github/games647/fastlogin/bungee/hook/floodgate/FloodgateV2Hook.java @@ -0,0 +1,21 @@ +package com.github.games647.fastlogin.bungee.hook.floodgate; + +import org.geysermc.floodgate.api.FloodgateApi; +import org.geysermc.floodgate.api.InstanceHolder; + +import java.util.UUID; + +public class FloodgateV2Hook implements FloodgateHook { + + private FloodgateApi floodgateApi; + + public FloodgateV2Hook() { + this.floodgateApi = InstanceHolder.getApi(); + } + + @Override + public boolean isBedrockPlayer(UUID uuid) { + return floodgateApi.isFloodgatePlayer(uuid); + } + +} diff --git a/bungee/src/main/java/com/github/games647/fastlogin/bungee/listener/ConnectListener.java b/bungee/src/main/java/com/github/games647/fastlogin/bungee/listener/ConnectListener.java index dbb4fdbd..bfb526d0 100644 --- a/bungee/src/main/java/com/github/games647/fastlogin/bungee/listener/ConnectListener.java +++ b/bungee/src/main/java/com/github/games647/fastlogin/bungee/listener/ConnectListener.java @@ -28,6 +28,9 @@ package com.github.games647.fastlogin.bungee.listener; import com.github.games647.craftapi.UUIDAdapter; import com.github.games647.fastlogin.bungee.BungeeLoginSession; import com.github.games647.fastlogin.bungee.FastLoginBungee; +import com.github.games647.fastlogin.bungee.hook.floodgate.FloodgateHook; +import com.github.games647.fastlogin.bungee.hook.floodgate.FloodgateV1Hook; +import com.github.games647.fastlogin.bungee.hook.floodgate.FloodgateV2Hook; import com.github.games647.fastlogin.bungee.task.AsyncPremiumCheck; import com.github.games647.fastlogin.bungee.task.ForceLoginTask; import com.github.games647.fastlogin.core.RateLimiter; @@ -99,11 +102,21 @@ public class ConnectListener implements Listener { private final RateLimiter rateLimiter; private final Property[] emptyProperties = {}; private final String floodgateVersion; + private final FloodgateHook floodgateHook; public ConnectListener(FastLoginBungee plugin, RateLimiter rateLimiter, String floodgateVersion) { this.plugin = plugin; this.rateLimiter = rateLimiter; this.floodgateVersion = floodgateVersion; + + // Get the appropriate floodgate api hook based on the version + if (floodgateVersion.startsWith("1")) { + this.floodgateHook = new FloodgateV1Hook(); + } else if (floodgateVersion.startsWith("2")) { + this.floodgateHook = new FloodgateV2Hook(); + } else { + this.floodgateHook = null; + } } @EventHandler @@ -211,12 +224,9 @@ public class ConnectListener implements Listener { // Floodgate will set a correct UUID at the beginning of the PreLoginEvent // and will cancel the online mode login for those players // Therefore we just ignore those - if (floodgateVersion.startsWith("1")) { - return FloodgateAPI.isBedrockPlayer(correctedUUID); - } else if (floodgateVersion.startsWith("2")) { - return FloodgateAPI.isBedrockPlayer(correctedUUID); + if (floodgateHook == null) { + return false; } - - return false; + return this.floodgateHook.isBedrockPlayer(correctedUUID); } }