It works!

This commit is contained in:
HaHaWTH 2023-09-30 09:02:47 +08:00
parent 5cf88f308a
commit 401933038d
4 changed files with 53 additions and 37 deletions

View File

@ -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);

View File

@ -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<? extends Player> PlayerList = Bukkit.getServer().getOnlinePlayers();
HashSet<String> PlayerSet = new HashSet<String>();
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
// }
//}

View File

@ -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;

View File

@ -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
}
}