forked from kaboomserver/extras
Make username check stricter
This commit is contained in:
parent
6c375f0cb5
commit
9e0cc8c034
3 changed files with 29 additions and 20 deletions
|
@ -54,7 +54,7 @@ public final class CommandUsername implements CommandExecutor {
|
||||||
}
|
}
|
||||||
|
|
||||||
for (Player other : Bukkit.getOnlinePlayers()) {
|
for (Player other : Bukkit.getOnlinePlayers()) {
|
||||||
if (!other.getName().equals(name)) continue;
|
if (!other.getName().equalsIgnoreCase(name)) continue;
|
||||||
|
|
||||||
player.sendMessage(Component
|
player.sendMessage(Component
|
||||||
.text("A player with that username is already logged in."));
|
.text("A player with that username is already logged in."));
|
||||||
|
|
|
@ -1,9 +1,8 @@
|
||||||
package pw.kaboom.extras.modules.player;
|
package pw.kaboom.extras.modules.player;
|
||||||
|
|
||||||
import java.util.HashSet;
|
import com.destroystokyo.paper.event.profile.PreLookupProfileEvent;
|
||||||
import java.util.UUID;
|
import com.destroystokyo.paper.profile.ProfileProperty;
|
||||||
import java.util.concurrent.ThreadLocalRandom;
|
import com.google.common.base.Charsets;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Location;
|
import org.bukkit.Location;
|
||||||
import org.bukkit.Server;
|
import org.bukkit.Server;
|
||||||
|
@ -11,26 +10,19 @@ import org.bukkit.World;
|
||||||
import org.bukkit.configuration.file.FileConfiguration;
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.EventPriority;
|
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.player.AsyncPlayerPreLoginEvent;
|
import org.bukkit.event.player.*;
|
||||||
import org.bukkit.event.player.PlayerJoinEvent;
|
|
||||||
import org.bukkit.event.player.PlayerKickEvent;
|
|
||||||
import org.bukkit.event.player.PlayerLoginEvent;
|
|
||||||
import org.bukkit.event.player.PlayerLoginEvent.Result;
|
import org.bukkit.event.player.PlayerLoginEvent.Result;
|
||||||
import org.bukkit.event.player.PlayerQuitEvent;
|
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
import org.spigotmc.event.player.PlayerSpawnLocationEvent;
|
import org.spigotmc.event.player.PlayerSpawnLocationEvent;
|
||||||
|
|
||||||
import com.destroystokyo.paper.event.profile.PreLookupProfileEvent;
|
|
||||||
import com.destroystokyo.paper.profile.ProfileProperty;
|
|
||||||
|
|
||||||
import com.google.common.base.Charsets;
|
|
||||||
|
|
||||||
import pw.kaboom.extras.Main;
|
import pw.kaboom.extras.Main;
|
||||||
import pw.kaboom.extras.modules.server.ServerTabComplete;
|
import pw.kaboom.extras.modules.server.ServerTabComplete;
|
||||||
import pw.kaboom.extras.skin.SkinManager;
|
import pw.kaboom.extras.skin.SkinManager;
|
||||||
|
import pw.kaboom.extras.util.Utility;
|
||||||
|
|
||||||
|
import java.util.HashSet;
|
||||||
|
import java.util.UUID;
|
||||||
|
import java.util.concurrent.ThreadLocalRandom;
|
||||||
|
|
||||||
public final class PlayerConnection implements Listener {
|
public final class PlayerConnection implements Listener {
|
||||||
private static final FileConfiguration CONFIG = JavaPlugin.getPlugin(Main.class).getConfig();
|
private static final FileConfiguration CONFIG = JavaPlugin.getPlugin(Main.class).getConfig();
|
||||||
|
@ -50,8 +42,9 @@ public final class PlayerConnection implements Listener {
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
void onAsyncPlayerPreLogin(final AsyncPlayerPreLoginEvent event) {
|
void onAsyncPlayerPreLogin(final AsyncPlayerPreLoginEvent event) {
|
||||||
if (Bukkit.getPlayer(event.getName()) != null
|
final Player player = Utility.getPlayerExactIgnoreCase(event.getName());
|
||||||
&& Bukkit.getPlayer(event.getName()).isOnline()) {
|
|
||||||
|
if (player != null) {
|
||||||
event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_OTHER,
|
event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_OTHER,
|
||||||
"A player with that username is already logged in");
|
"A player with that username is already logged in");
|
||||||
}
|
}
|
||||||
|
|
16
src/main/java/pw/kaboom/extras/util/Utility.java
Normal file
16
src/main/java/pw/kaboom/extras/util/Utility.java
Normal file
|
@ -0,0 +1,16 @@
|
||||||
|
package pw.kaboom.extras.util;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
|
public final class Utility {
|
||||||
|
public static @Nullable Player getPlayerExactIgnoreCase(final String username) {
|
||||||
|
return Bukkit.getOnlinePlayers()
|
||||||
|
.stream()
|
||||||
|
.filter(p -> p.getName().equalsIgnoreCase(username))
|
||||||
|
.findFirst()
|
||||||
|
.orElse(null);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue