From 16953bc7081ac644ccea1dfdd505bd29fe2e643b Mon Sep 17 00:00:00 2001 From: Colbster937 <96893162+colbychittenden@users.noreply.github.com> Date: Tue, 13 May 2025 19:15:57 -0500 Subject: [PATCH] 1.0.6 cool cool player blacklisting --- README.md | 1 + .../originblacklist/base/Base.java | 42 +++++++++++-------- .../originblacklist/base/ConfigManager.java | 6 +++ src/main/resources/config.yml | 21 +++++----- 4 files changed, 41 insertions(+), 29 deletions(-) diff --git a/README.md b/README.md index a7554f4..fa047fc 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,7 @@ basically just a reimplementation of originblacklist but for eaglerxserver ### Features - [x] Origin Blacklisting - [x] Brand Blacklisting +- [x] Username blacklisting - [x] Custom kick message - [x] Custom blacklist MOTD - [x] MiniMessage formatting for messages diff --git a/src/main/java/dev/colbster937/originblacklist/base/Base.java b/src/main/java/dev/colbster937/originblacklist/base/Base.java index 892bfc2..2acde18 100644 --- a/src/main/java/dev/colbster937/originblacklist/base/Base.java +++ b/src/main/java/dev/colbster937/originblacklist/base/Base.java @@ -4,7 +4,6 @@ import net.kyori.adventure.text.Component; import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer; import net.lax1dude.eaglercraft.backend.server.api.*; -import net.lax1dude.eaglercraft.backend.server.api.event.IEaglercraftClientBrandEvent; import net.lax1dude.eaglercraft.backend.server.api.event.IEaglercraftLoginEvent; import net.lax1dude.eaglercraft.backend.server.api.event.IEaglercraftMOTDEvent; import net.lax1dude.eaglercraft.backend.server.api.query.IMOTDConnection; @@ -14,8 +13,6 @@ import java.awt.image.BufferedImage; import java.io.*; import java.net.HttpURLConnection; import java.net.URL; -import java.nio.charset.Charset; -import java.nio.charset.StandardCharsets; import java.nio.file.Files; import java.nio.file.StandardCopyOption; import java.util.List; @@ -69,41 +66,43 @@ public class Base { IEaglerLoginConnection conn = e.getLoginConnection(); String origin = conn.getWebSocketHeader(EnumWebSocketHeader.HEADER_ORIGIN); String brand = conn.getEaglerBrandString(); + String name = conn.getUsername(); - if (origin != null && !origin.equals("null") && !config.blacklist.missing_origin) { + if (origin != null && !origin.equals("null")) { for (String origin1 : config.blacklist.origins) { if (matches(origin, origin1)) { - setKick(e, kick("origin", "website", origin, conn.getWebSocketHost())); + setKick(e, formatKickMessage("origin", "website", origin, conn.getWebSocketHost())); webhook(conn, origin, brand, "origin"); return; } } - } else if (origin != null && !origin.equals("null")) { - setKick(e, kick("origin", "website", origin, conn.getWebSocketHost())); - webhook(conn, "null", brand, "origin"); - return; } if (brand != null && !brand.equals("null")) { for (String brand1 : config.blacklist.brands) { if (matches(brand, brand1)) { - setKick(e, kick("brand", "client", brand, conn.getWebSocketHost())); + setKick(e, formatKickMessage("brand", "client", brand, conn.getWebSocketHost())); webhook(conn, origin, brand, "brand"); return; } } } + + if (name != null && !name.equals("null")) { + for (String name1 : config.blacklist.players) { + if (matches(name, name1) || (name.length() > 16 || name.length() < 3)) { + setKick(e, formatKickMessage("player", "username", name, conn.getWebSocketHost())); + webhook(conn, origin, name, "player"); + return; + } + } + } } public static void setKick(IEaglercraftLoginEvent e, Component msg) { try { - String redir = config.blacklist.blacklist_redirect; - if (redir.equals("") || redir.equals("null")) { - e.setKickMessage(msg); - } else { - e.setKickRedirect(redir); - } getLogger().info("Kicked " + e.getProfileUsername()); + e.setKickMessage(msg); } catch (Throwable ignored) { String msg1 = LegacyComponentSerializer.legacySection().serialize(msg); e.setKickMessage(msg1); @@ -124,7 +123,7 @@ public class Base { MiniMessage.miniMessage().deserialize(line))) .collect(Collectors.toList()); - if (origin != null && !origin.equals("null") && !config.blacklist.missing_origin) { + if (origin != null && !origin.equals("null")) { for (String origin1 : config.blacklist.origins) { if (matches(origin, origin1)) { setMOTD(conn, m); @@ -173,9 +172,16 @@ public class Base { return text1.toLowerCase().matches(text2.replace(".", "\\.").replaceAll("\\*", ".*").toLowerCase()); } - public static Component kick(String type, String easytype, String value, String host) { + public static Component formatKickMessage(String type, String easytype, String value, String host) { + String help = ""; + if (type != "player") { + help = config.messages.help.generic; + } else { + help = config.messages.help.player; + } return MiniMessage.miniMessage().deserialize( config.messages.kick + .replaceAll("%help%", help) .replaceAll("%blocktype%", type) .replaceAll("%easyblocktype%", easytype) .replaceAll("%blocked%", value) diff --git a/src/main/java/dev/colbster937/originblacklist/base/ConfigManager.java b/src/main/java/dev/colbster937/originblacklist/base/ConfigManager.java index f0a6268..63138d8 100644 --- a/src/main/java/dev/colbster937/originblacklist/base/ConfigManager.java +++ b/src/main/java/dev/colbster937/originblacklist/base/ConfigManager.java @@ -79,6 +79,7 @@ public class ConfigManager { public static class Messages { public String kick; public MOTD motd; + public Help help; } public static class MOTD { @@ -86,4 +87,9 @@ public class ConfigManager { public String text; public String icon; } + + public static class Help { + public String generic; + public String player; + } } diff --git a/src/main/resources/config.yml b/src/main/resources/config.yml index 6d34b2b..4021053 100644 --- a/src/main/resources/config.yml +++ b/src/main/resources/config.yml @@ -4,13 +4,21 @@ messages: # - %blocktype% - Shows what the player was blocked for # - %easyblocktype% - Shows what the player was blocked for in an eagler-kid readable form # - %host% - The IP the player pinged + # - %help% - The configured help message for the block type kick: | This %easyblocktype% is not allowed on the server! » %blocked% « + + %help% Think this is a mistake? Join our discord: discord.gg/changethisintheconfig + + # Please note that help is only supported in the kick message, not the MOTD + help: + generic: "Please switch to a different %easyblocktype%." + player: "Please change your %easyblocktype%." motd: enabled: true @@ -27,8 +35,8 @@ blacklist: brands: - "*dragonx*" - "*piclient*" - missing_origin: false - blacklist_redirect: "" + players: + - "Admin" discord: webhook: "" @@ -47,15 +55,6 @@ discord: - - - - - - - - -