forked from TuxCoding/FastLogin
Revert "Move Floodgate conflict chechking to core"
This reverts commit b0ef1a59ac
.
This commit is contained in:
@ -40,6 +40,8 @@ import java.util.Random;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.geysermc.floodgate.api.FloodgateApi;
|
||||
import org.geysermc.floodgate.api.player.FloodgatePlayer;
|
||||
|
||||
public class NameCheckTask extends JoinManagement<Player, CommandSender, ProtocolLibLoginSource>
|
||||
implements Runnable {
|
||||
@ -68,8 +70,13 @@ public class NameCheckTask extends JoinManagement<Player, CommandSender, Protoco
|
||||
@Override
|
||||
public void run() {
|
||||
try {
|
||||
boolean floodgateAvailable = Bukkit.getServer().getPluginManager().isPluginEnabled("floodgate");
|
||||
super.onLogin(username, new ProtocolLibLoginSource(packetEvent, player, random, publicKey), floodgateAvailable);
|
||||
// check if the player is connecting through Geyser
|
||||
if (!plugin.getCore().getConfig().get("allowFloodgateNameConflict").toString().equalsIgnoreCase("false")
|
||||
&& getFloodgatePlayer(username) != null) {
|
||||
plugin.getLog().info("Skipping name conflict checking for player {}", username);
|
||||
return;
|
||||
}
|
||||
super.onLogin(username, new ProtocolLibLoginSource(packetEvent, player, random, publicKey));
|
||||
} finally {
|
||||
ProtocolLibrary.getProtocolManager().getAsynchronousManager().signalPacketTransmission(packetEvent);
|
||||
}
|
||||
@ -114,4 +121,15 @@ public class NameCheckTask extends JoinManagement<Player, CommandSender, Protoco
|
||||
plugin.putSession(player.getAddress(), loginSession);
|
||||
}
|
||||
|
||||
private static FloodgatePlayer getFloodgatePlayer(String username) {
|
||||
if (Bukkit.getServer().getPluginManager().isPluginEnabled("floodgate")) {
|
||||
// the Floodgate API requires UUID, which is inaccessible at NameCheckTask.java
|
||||
for (FloodgatePlayer floodgatePlayer : FloodgateApi.getInstance().getPlayers()) {
|
||||
if (floodgatePlayer.getUsername().equals(username)) {
|
||||
return floodgatePlayer;
|
||||
}
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
@ -76,9 +76,7 @@ public class ProtocolSupportListener extends JoinManagement<Player, CommandSende
|
||||
//remove old data every time on a new login in order to keep the session only for one person
|
||||
plugin.removeSession(address);
|
||||
|
||||
boolean floodgateAvailable = Bukkit.getServer().getPluginManager().isPluginEnabled("floodgate");
|
||||
|
||||
super.onLogin(username, new ProtocolLoginSource(loginStartEvent), floodgateAvailable);
|
||||
super.onLogin(username, new ProtocolLoginSource(loginStartEvent));
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
|
@ -136,7 +136,7 @@
|
||||
<!-- Version 2.0 -->
|
||||
<dependency>
|
||||
<groupId>org.geysermc.floodgate</groupId>
|
||||
<artifactId>api</artifactId>
|
||||
<artifactId>bungee</artifactId>
|
||||
<version>2.0-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
@ -62,7 +62,7 @@ public class AsyncPremiumCheck extends JoinManagement<ProxiedPlayer, CommandSend
|
||||
plugin.getSession().remove(connection);
|
||||
|
||||
try {
|
||||
super.onLogin(username, new BungeeLoginSource(connection, preLoginEvent), false);
|
||||
super.onLogin(username, new BungeeLoginSource(connection, preLoginEvent));
|
||||
} finally {
|
||||
preLoginEvent.completeIntent(plugin);
|
||||
}
|
||||
|
14
core/pom.xml
14
core/pom.xml
@ -53,12 +53,6 @@
|
||||
<id>codemc-repo</id>
|
||||
<url>https://repo.codemc.io/repository/maven-public/</url>
|
||||
</repository>
|
||||
|
||||
<!-- Floodgate -->
|
||||
<repository>
|
||||
<id>nukkitx-snapshot</id>
|
||||
<url>https://repo.nukkitx.com/maven-snapshots/</url>
|
||||
</repository>
|
||||
</repositories>
|
||||
|
||||
<dependencies>
|
||||
@ -98,14 +92,6 @@
|
||||
<version>0.4</version>
|
||||
</dependency>
|
||||
|
||||
<!--Floodgate for Xbox Live Authentication-->
|
||||
<dependency>
|
||||
<groupId>org.geysermc.floodgate</groupId>
|
||||
<artifactId>api</artifactId>
|
||||
<version>2.0-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
|
||||
<!-- APIs we can use because they are available in all platforms (Spigot, Bungee) -->
|
||||
<dependency>
|
||||
<groupId>com.google.guava</groupId>
|
||||
|
@ -33,9 +33,6 @@ import com.github.games647.fastlogin.core.shared.event.FastLoginPreLoginEvent;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
import org.geysermc.floodgate.api.FloodgateApi;
|
||||
import org.geysermc.floodgate.api.player.FloodgatePlayer;
|
||||
|
||||
import net.md_5.bungee.config.Configuration;
|
||||
|
||||
public abstract class JoinManagement<P extends C, C, S extends LoginSource> {
|
||||
@ -48,28 +45,8 @@ public abstract class JoinManagement<P extends C, C, S extends LoginSource> {
|
||||
this.authHook = authHook;
|
||||
}
|
||||
|
||||
public void onLogin(String username, S source, boolean floodgateAvailable) {
|
||||
public void onLogin(String username, S source) {
|
||||
core.getPlugin().getLog().info("Handling player {}", username);
|
||||
|
||||
// check if the player is connecting through Geyser
|
||||
if (floodgateAvailable && getFloodgatePlayer(username) != null) {
|
||||
if (core.getConfig().get("allowFloodgateNameConflict").toString().equalsIgnoreCase("false")) {
|
||||
core.getPlugin().getLog().info(
|
||||
"Bedrock Player {}'s name conflits an existing Java Premium Player's name",
|
||||
username);
|
||||
try {
|
||||
source.kick("Your name conflits an existing Java Premium Player's name");
|
||||
} catch (Exception e) {
|
||||
e.printStackTrace();
|
||||
core.getPlugin().getLog().error("Could not kick Player {}", username);
|
||||
}
|
||||
} else {
|
||||
core.getPlugin().getLog().info("Skipping name conflict checking for player {}", username);
|
||||
return;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
StoredProfile profile = core.getStorage().loadProfile(username);
|
||||
if (profile == null) {
|
||||
return;
|
||||
@ -153,24 +130,6 @@ public abstract class JoinManagement<P extends C, C, S extends LoginSource> {
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a FloodgatePlayyer by their name.
|
||||
* This is not supported by FloodgateApi.
|
||||
* <br>
|
||||
* <b>WARNING: This method does not check if the floodgate plugin is actually installed on the server!</b>
|
||||
* @param username the name of the player
|
||||
* @return FloodgatePlayer if found, null if the player is not online
|
||||
*/
|
||||
protected static FloodgatePlayer getFloodgatePlayer(String username) {
|
||||
// the Floodgate API requires UUID, which is inaccessible at NameCheckTask.java
|
||||
for (FloodgatePlayer floodgatePlayer : FloodgateApi.getInstance().getPlayers()) {
|
||||
if (floodgatePlayer.getUsername().equals(username)) {
|
||||
return floodgatePlayer;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public abstract FastLoginPreLoginEvent callFastLoginPreLoginEvent(String username, S source, StoredProfile profile);
|
||||
|
||||
|
Reference in New Issue
Block a user