From 165e5fe856df9a2acfa1017b8967cb30311f23ef Mon Sep 17 00:00:00 2001 From: Smart123s <28480228+Smart123s@users.noreply.github.com> Date: Sat, 22 May 2021 13:45:14 +0200 Subject: [PATCH] Add 'no-conflict' option to some Floodgate config entries --- .../bukkit/task/FloodgateAuthTask.java | 30 +++++++++++++++++-- 1 file changed, 28 insertions(+), 2 deletions(-) diff --git a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/task/FloodgateAuthTask.java b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/task/FloodgateAuthTask.java index 45c74a7a..0642fd03 100644 --- a/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/task/FloodgateAuthTask.java +++ b/bukkit/src/main/java/com/github/games647/fastlogin/bukkit/task/FloodgateAuthTask.java @@ -25,10 +25,15 @@ */ package com.github.games647.fastlogin.bukkit.task; +import java.io.IOException; +import java.util.Optional; + import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.geysermc.floodgate.api.player.FloodgatePlayer; +import com.github.games647.craftapi.model.Profile; +import com.github.games647.craftapi.resolver.RateLimitException; import com.github.games647.fastlogin.bukkit.BukkitLoginSession; import com.github.games647.fastlogin.bukkit.FastLoginBukkit; import com.github.games647.fastlogin.core.StoredProfile; @@ -58,7 +63,8 @@ public class FloodgateAuthTask implements Runnable { AuthPlugin authPlugin = plugin.getCore().getAuthPluginHook(); String autoLoginFloodgate = plugin.getCore().getConfig().get("autoLoginFloodgate").toString().toLowerCase(); - boolean autoRegisterFloodgate = plugin.getCore().getConfig().getBoolean("autoRegisterFloodgate"); + String autoRegisterFloodgate = plugin.getCore().getConfig().get("autoRegisterFloodgate").toString().toLowerCase(); + String allowNameConflict = plugin.getCore().getConfig().get("allowFloodgateNameConflict").toString().toLowerCase(); boolean isRegistered; try { @@ -70,7 +76,27 @@ public class FloodgateAuthTask implements Runnable { return; } - if (!isRegistered && !autoRegisterFloodgate) { + //decide if checks should be made for conflicting Java player names + if (autoLoginFloodgate.equals("no-conflict") + || !isRegistered && autoRegisterFloodgate.equals("no-conflict")) { + // check for conflicting Premium Java name + Optional premiumUUID = Optional.empty(); + try { + premiumUUID = plugin.getCore().getResolver().findProfile(player.getName()); + } catch (IOException | RateLimitException e) { + plugin.getLog().error( + "Could not check wether Floodgate Player {}'s name conflits a premium Java player's name.", + player.getName()); + return; + } + + //stop execution if player's name is conflicting + if (premiumUUID.isPresent()) { + return; + } + } + + if (!isRegistered && autoRegisterFloodgate.equals("false")) { plugin.getLog().info( "Auto registration is disabled for Floodgate players in config.yml"); return;