diff --git a/src/main/java/cc/baka9/catseedlogin/bukkit/Listeners.java b/src/main/java/cc/baka9/catseedlogin/bukkit/Listeners.java index 0c7698d..a081895 100644 --- a/src/main/java/cc/baka9/catseedlogin/bukkit/Listeners.java +++ b/src/main/java/cc/baka9/catseedlogin/bukkit/Listeners.java @@ -37,14 +37,13 @@ private boolean playerIsNotMinecraftPlayer(Player p) { @EventHandler public void onPlayerCommandPreprocess(PlayerCommandPreprocessEvent event) { - if (playerIsNotMinecraftPlayer(event.getPlayer())) return; - if (LoginPlayerHelper.isLogin(event.getPlayer().getName())) return; + Player player = event.getPlayer(); + if (playerIsNotMinecraftPlayer(player) || LoginPlayerHelper.isLogin(player.getName())) return; String input = event.getMessage().toLowerCase(); for (Pattern regex : Config.Settings.CommandWhiteList) { if (regex.matcher(input).find()) return; } event.setCancelled(true); - } @EventHandler @@ -62,34 +61,28 @@ public void onPlayerLogin(AsyncPlayerPreLoginEvent event) { } if (LoginPlayerHelper.isLogin(name)) { event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_OTHER, "玩家 " + lp.getName() + " 已经在线了!"); + return; } - int count = 0; String hostAddress = event.getAddress().getHostAddress(); - for (Player p : Bukkit.getOnlinePlayers()) { - String ip = p.getAddress().getAddress().getHostAddress(); - if (ip.equals(hostAddress)) { - count++; - } - if (count >= Config.Settings.IpCountLimit) { - event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_OTHER, "太多相同ip的账号同时在线!"); - return; - } + long count = Bukkit.getOnlinePlayers().stream() + .filter(p -> p.getAddress().getAddress().getHostAddress().equals(hostAddress)) + .count(); + if (count >= Config.Settings.IpCountLimit) { + event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_OTHER, "太多相同ip的账号同时在线!"); } - - } @EventHandler public void onPlayerChat(AsyncPlayerChatEvent event) { - if (playerIsNotMinecraftPlayer(event.getPlayer())) return; - if (LoginPlayerHelper.isLogin(event.getPlayer().getName())) return; + Player player = event.getPlayer(); + if (playerIsNotMinecraftPlayer(player) || LoginPlayerHelper.isLogin(player.getName())) return; event.setCancelled(true); } @EventHandler public void onPlayerInteract(PlayerInteractEvent event) { - if (playerIsNotMinecraftPlayer(event.getPlayer())) return; - if (LoginPlayerHelper.isLogin(event.getPlayer().getName())) return; + Player player = event.getPlayer(); + if (playerIsNotMinecraftPlayer(player) || LoginPlayerHelper.isLogin(player.getName())) return; event.setCancelled(true); } @@ -101,8 +94,7 @@ public void onInventoryOpen(InventoryOpenEvent event) { @EventHandler public void onInventoryClick(InventoryClickEvent event) { - if (!(event.getWhoClicked() instanceof Player) || LoginPlayerHelper.isLogin(event.getWhoClicked().getName())) - return; + if (!(event.getWhoClicked() instanceof Player) || LoginPlayerHelper.isLogin(event.getWhoClicked().getName())) return; event.setCancelled(true); } @@ -110,8 +102,8 @@ public void onInventoryClick(InventoryClickEvent event) { @EventHandler public void onEntityDamageByEntity(EntityDamageByEntityEvent event) { if (!(event.getDamager() instanceof Player)) return; - if (playerIsNotMinecraftPlayer((Player) event.getDamager())) return; - if (LoginPlayerHelper.isLogin(event.getDamager().getName())) return; + Player player = (Player) event.getDamager(); + if (playerIsNotMinecraftPlayer(player) || LoginPlayerHelper.isLogin(player.getName())) return; event.setCancelled(true); } @@ -119,31 +111,25 @@ public void onEntityDamageByEntity(EntityDamageByEntityEvent event) { @EventHandler public void onEntityDamage(EntityDamageEvent event) { if (Config.Settings.BeforeLoginNoDamage) { - Entity entity = event.getEntity(); - if (entity instanceof Player && !playerIsNotMinecraftPlayer((Player) entity)) { - if (!LoginPlayerHelper.isLogin(entity.getName())) { - event.setCancelled(true); - } - + if (entity instanceof Player && !playerIsNotMinecraftPlayer((Player) entity) && !LoginPlayerHelper.isLogin(entity.getName())) { + event.setCancelled(true); } - } - } @EventHandler public void onPlayerTeleport(PlayerTeleportEvent event) { - if (Config.Settings.CanTpSpawnLocation && event.getTo().equals(Config.Settings.SpawnLocation)) return; - if (playerIsNotMinecraftPlayer(event.getPlayer())) return; - if (LoginPlayerHelper.isLogin(event.getPlayer().getName())) return; + Player player = event.getPlayer(); + if ((Config.Settings.CanTpSpawnLocation && event.getTo().equals(Config.Settings.SpawnLocation)) || + playerIsNotMinecraftPlayer(player) || LoginPlayerHelper.isLogin(player.getName())) return; event.setCancelled(true); } @EventHandler public void onPlayerDropItem(PlayerDropItemEvent event) { - if (playerIsNotMinecraftPlayer(event.getPlayer())) return; - if (LoginPlayerHelper.isLogin(event.getPlayer().getName())) return; + Player player = event.getPlayer(); + if (playerIsNotMinecraftPlayer(player) || LoginPlayerHelper.isLogin(player.getName())) return; event.setCancelled(true); } @@ -151,28 +137,24 @@ public void onPlayerDropItem(PlayerDropItemEvent event) { public void onEntityPickupItem(EntityPickupItemEvent event) { if (!(event.getEntity() instanceof Player)) return; Player player = (Player) event.getEntity(); - if (playerIsNotMinecraftPlayer(player)) return; - if (LoginPlayerHelper.isLogin(player.getName())) return; + if (playerIsNotMinecraftPlayer(player) || LoginPlayerHelper.isLogin(player.getName())) return; event.setCancelled(true); } @EventHandler public void onPlayerMove(PlayerMoveEvent event) { Player player = event.getPlayer(); - if (playerIsNotMinecraftPlayer(player)) return; - if (LoginPlayerHelper.isLogin(player.getName())) return; + if (playerIsNotMinecraftPlayer(player) || LoginPlayerHelper.isLogin(player.getName())) return; Location from = event.getFrom(); Location to = event.getTo(); if (from.getBlockX() == to.getBlockX() && from.getBlockZ() == to.getBlockZ() && from.getY() - to.getY() >= 0.0D) { return; } - if (Config.Settings.CanTpSpawnLocation) { - CatScheduler.teleport(player,Config.Settings.SpawnLocation); + CatScheduler.teleport(player, Config.Settings.SpawnLocation); } else { event.setCancelled(true); } - } @EventHandler @@ -185,23 +167,22 @@ public void onPlayerQuit(PlayerQuitEvent event) { CatScheduler.runTaskLater(() -> LoginPlayerHelper.remove(player.getName()), Config.Settings.ReenterInterval); } Task.getTaskAutoKick().playerJoinTime.remove(player.getName()); - } @EventHandler public void onPlayerJoin(PlayerJoinEvent event) { - Player p = event.getPlayer(); - if (Config.Settings.BedrockLoginBypass && LoginPlayerHelper.isFloodgatePlayer(p)) { - p.sendMessage(Config.Language.BEDROCK_LOGIN_BYPASS); + Player player = event.getPlayer(); + if (Config.Settings.BedrockLoginBypass && LoginPlayerHelper.isFloodgatePlayer(player)) { + player.sendMessage(Config.Language.BEDROCK_LOGIN_BYPASS); return; } - if (Config.Settings.LoginwiththesameIP && LoginPlayerHelper.recordCurrentIP(p)) { - p.sendMessage(Config.Language.LOGIN_WITH_THE_SAME_IP); + if (Config.Settings.LoginwiththesameIP && LoginPlayerHelper.recordCurrentIP(player)) { + player.sendMessage(Config.Language.LOGIN_WITH_THE_SAME_IP); return; } - Cache.refresh(p.getName()); + Cache.refresh(player.getName()); if (Config.Settings.CanTpSpawnLocation) { - CatScheduler.teleport(p,Config.Settings.SpawnLocation); + CatScheduler.teleport(player, Config.Settings.SpawnLocation); } } @@ -209,30 +190,21 @@ public void onPlayerJoin(PlayerJoinEvent event) { @EventHandler public void onPlayerPreLogin(AsyncPlayerPreLoginEvent event) { String name = event.getName(); - if (Config.Settings.LimitChineseID) { - if (!name.matches("^\\w+$")) { - event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_OTHER, - "请使用由数字,字母和下划线组成的游戏名,才能进入游戏"); - } + if (Config.Settings.LimitChineseID && !name.matches("^\\w+$")) { + event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_OTHER, "请使用由数字,字母和下划线组成的游戏名,才能进入游戏"); + return; } if (Config.Settings.FloodgatePrefixProtect && Bukkit.getPluginManager().getPlugin("floodgate") != null) { - if (Config.Settings.BedrockLoginBypass && Bukkit.getPluginManager().getPlugin("floodgate") != null) { - String prefix = FloodgateApi.getInstance().getPlayerPrefix(); - if (event.getName().startsWith(prefix) && !FloodgateApi.getInstance().isFloodgatePlayer(event.getUniqueId())) { - event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_OTHER, - "非法的基岩版玩家名称,请非基岩版玩家的名称不要以" + prefix + "开头"); - } - } - if (name.length() < Config.Settings.MinLengthID) { - event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_OTHER, - "你的游戏名太短了,至少需要 " + Config.Settings.MinLengthID + " 个字符的长度"); - } - if (name.length() > Config.Settings.MaxLengthID) { - event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_OTHER, - "你的游戏名太长了,最长只能到达 " + Config.Settings.MaxLengthID + " 个字符的长度"); + String prefix = FloodgateApi.getInstance().getPlayerPrefix(); + if (name.startsWith(prefix) && !FloodgateApi.getInstance().isFloodgatePlayer(event.getUniqueId())) { + event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_OTHER, "非法的基岩版玩家名称,请非基岩版玩家的名称不要以" + prefix + "开头"); + return; } - } - + if (name.length() < Config.Settings.MinLengthID) { + event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_OTHER, "你的游戏名太短了,至少需要 " + Config.Settings.MinLengthID + " 个字符的长度"); + } else if (name.length() > Config.Settings.MaxLengthID) { + event.disallow(AsyncPlayerPreLoginEvent.Result.KICK_OTHER, "你的游戏名太长了,最长只能到达 " + Config.Settings.MaxLengthID + " 个字符的长度"); + } } }