From 401933038d24cd0efc9b3aab7a5ade6e111dad97 Mon Sep 17 00:00:00 2001 From: HaHaWTH Date: Sat, 30 Sep 2023 09:02:47 +0800 Subject: [PATCH] It works! --- src/main/java/fr/xephi/authme/AuthMe.java | 6 +-- .../listener/DoubleLoginFixListener.java | 50 +++++++++++++++++++ .../authme/listener/GuiCaptchaHandler.java | 3 -- .../authme/listener/PlayerQuitListener.java | 31 ------------ 4 files changed, 53 insertions(+), 37 deletions(-) create mode 100644 src/main/java/fr/xephi/authme/listener/DoubleLoginFixListener.java delete mode 100644 src/main/java/fr/xephi/authme/listener/PlayerQuitListener.java diff --git a/src/main/java/fr/xephi/authme/AuthMe.java b/src/main/java/fr/xephi/authme/AuthMe.java index 2ec41b63..aecbf428 100644 --- a/src/main/java/fr/xephi/authme/AuthMe.java +++ b/src/main/java/fr/xephi/authme/AuthMe.java @@ -22,7 +22,7 @@ import fr.xephi.authme.listener.PlayerListener; import fr.xephi.authme.listener.PlayerListener111; import fr.xephi.authme.listener.PlayerListener19; import fr.xephi.authme.listener.PlayerListener19Spigot; -import fr.xephi.authme.listener.PlayerQuitListener; +import fr.xephi.authme.listener.DoubleLoginFixListener; import fr.xephi.authme.listener.GuiCaptchaHandler; import fr.xephi.authme.listener.ServerListener; import fr.xephi.authme.mail.EmailService; @@ -85,7 +85,7 @@ public class AuthMe extends JavaPlugin { private BukkitService bukkitService; private Injector injector; private BackupService backupService; - private ConsoleLogger logger; + public static ConsoleLogger logger; /** * Constructor. */ @@ -207,7 +207,7 @@ public class AuthMe extends JavaPlugin { // 注册玩家退出事件监听 if (settings.getProperty(SecuritySettings.ANTI_GHOST_PLAYERS) || settings.getProperty(SecuritySettings.SMART_ASYNC_TELEPORT)/* || settings.getProperty(SecuritySettings.GUI_CAPTCHA)*/) { if (settings.getProperty(SecuritySettings.ANTI_GHOST_PLAYERS)) { - getServer().getPluginManager().registerEvents(new PlayerQuitListener((Plugin) this), this); + getServer().getPluginManager().registerEvents(new DoubleLoginFixListener((Plugin) this), this); } if (settings.getProperty(SecuritySettings.GUI_CAPTCHA) && getServer().getPluginManager().isPluginEnabled("ProtocolLib")) { getServer().getPluginManager().registerEvents(new GuiCaptchaHandler((Plugin) this), this); diff --git a/src/main/java/fr/xephi/authme/listener/DoubleLoginFixListener.java b/src/main/java/fr/xephi/authme/listener/DoubleLoginFixListener.java new file mode 100644 index 00000000..b0af3a5b --- /dev/null +++ b/src/main/java/fr/xephi/authme/listener/DoubleLoginFixListener.java @@ -0,0 +1,50 @@ +package fr.xephi.authme.listener; +//Prevent Ghost Players + +import fr.xephi.authme.AuthMe; +import org.bukkit.Bukkit; +import org.bukkit.entity.Player; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerJoinEvent; +import org.bukkit.plugin.Plugin; + +import java.util.Collection; +import java.util.HashSet; + +public class DoubleLoginFixListener implements Listener { + private final Plugin plugin; + + + + public DoubleLoginFixListener(Plugin plugin) { + this.plugin = plugin; + + } + @EventHandler + public void onPlayerJoin(PlayerJoinEvent event) { + Collection PlayerList = Bukkit.getServer().getOnlinePlayers(); + HashSet PlayerSet = new HashSet(); + for (Player ep : PlayerList) { + if (PlayerSet.contains(ep.getName().toLowerCase())) { + ep.kickPlayer("You have been disconnected due to doubled login."); + break; + } + PlayerSet.add(ep.getName().toLowerCase()); + } + } +} +// @EventHandler +// public void onPlayerQuit(PlayerQuitEvent event) { +// Player player = event.getPlayer(); +// String LastAddr = Objects.requireNonNull(player.getAddress()).getAddress().getHostAddress(); +// Bukkit.getScheduler().runTaskLater(plugin, new Runnable() { +// @Override +// public void run() { +// if (player.isOnline()) { +// player.kickPlayer("You have been disconnected."); +// } +// } +// }, 20L); // 20 ticks = 1 second +// } +//} diff --git a/src/main/java/fr/xephi/authme/listener/GuiCaptchaHandler.java b/src/main/java/fr/xephi/authme/listener/GuiCaptchaHandler.java index fc085df1..f6e3b654 100644 --- a/src/main/java/fr/xephi/authme/listener/GuiCaptchaHandler.java +++ b/src/main/java/fr/xephi/authme/listener/GuiCaptchaHandler.java @@ -1,14 +1,11 @@ package fr.xephi.authme.listener; - import com.comphenix.protocol.PacketType; import com.comphenix.protocol.ProtocolLibrary; import com.comphenix.protocol.events.ListenerPriority; import com.comphenix.protocol.events.PacketAdapter; import com.comphenix.protocol.events.PacketEvent; - import fr.xephi.authme.AuthMe; import fr.xephi.authme.api.v3.AuthMeApi; - import fr.xephi.authme.settings.properties.HooksSettings; import fr.xephi.authme.settings.properties.RestrictionSettings; import fr.xephi.authme.settings.properties.SecuritySettings; diff --git a/src/main/java/fr/xephi/authme/listener/PlayerQuitListener.java b/src/main/java/fr/xephi/authme/listener/PlayerQuitListener.java deleted file mode 100644 index f774e701..00000000 --- a/src/main/java/fr/xephi/authme/listener/PlayerQuitListener.java +++ /dev/null @@ -1,31 +0,0 @@ -package fr.xephi.authme.listener; -//Prevent Ghost Players - -import org.bukkit.Bukkit; -import org.bukkit.entity.Player; -import org.bukkit.event.EventHandler; -import org.bukkit.event.Listener; -import org.bukkit.event.player.PlayerQuitEvent; -import org.bukkit.plugin.Plugin; - -import java.util.Objects; - -public class PlayerQuitListener implements Listener { - private final Plugin plugin; - public PlayerQuitListener(Plugin plugin) { - this.plugin = plugin; - } - @EventHandler - public void onPlayerQuit(PlayerQuitEvent event) { - Player player = event.getPlayer(); - String LastAddr = Objects.requireNonNull(player.getAddress()).getAddress().getHostAddress(); - Bukkit.getScheduler().runTaskLater(plugin, new Runnable() { - @Override - public void run() { - if (player.isOnline()) { - player.kickPlayer("You have been disconnected."); - } - } - }, 20L); // 20 ticks = 1 second - } -}