44import net .kyori .adventure .text .minimessage .MiniMessage ;
55import net .kyori .adventure .text .serializer .legacy .LegacyComponentSerializer ;
66import net .lax1dude .eaglercraft .backend .server .api .*;
7- import net .lax1dude .eaglercraft .backend .server .api .event .IEaglercraftClientBrandEvent ;
87import net .lax1dude .eaglercraft .backend .server .api .event .IEaglercraftLoginEvent ;
98import net .lax1dude .eaglercraft .backend .server .api .event .IEaglercraftMOTDEvent ;
109import net .lax1dude .eaglercraft .backend .server .api .query .IMOTDConnection ;
1413import java .io .*;
1514import java .net .HttpURLConnection ;
1615import java .net .URL ;
17- import java .nio .charset .Charset ;
18- import java .nio .charset .StandardCharsets ;
1916import java .nio .file .Files ;
2017import java .nio .file .StandardCopyOption ;
2118import java .util .List ;
@@ -69,41 +66,43 @@ public static void handleConnection(IEaglercraftLoginEvent e) {
6966 IEaglerLoginConnection conn = e .getLoginConnection ();
7067 String origin = conn .getWebSocketHeader (EnumWebSocketHeader .HEADER_ORIGIN );
7168 String brand = conn .getEaglerBrandString ();
69+ String name = conn .getUsername ();
7270
73- if (origin != null && !origin .equals ("null" ) && ! config . blacklist . missing_origin ) {
71+ if (origin != null && !origin .equals ("null" )) {
7472 for (String origin1 : config .blacklist .origins ) {
7573 if (matches (origin , origin1 )) {
76- setKick (e , kick ("origin" , "website" , origin , conn .getWebSocketHost ()));
74+ setKick (e , formatKickMessage ("origin" , "website" , origin , conn .getWebSocketHost ()));
7775 webhook (conn , origin , brand , "origin" );
7876 return ;
7977 }
8078 }
81- } else if (origin != null && !origin .equals ("null" )) {
82- setKick (e , kick ("origin" , "website" , origin , conn .getWebSocketHost ()));
83- webhook (conn , "null" , brand , "origin" );
84- return ;
8579 }
8680
8781 if (brand != null && !brand .equals ("null" )) {
8882 for (String brand1 : config .blacklist .brands ) {
8983 if (matches (brand , brand1 )) {
90- setKick (e , kick ("brand" , "client" , brand , conn .getWebSocketHost ()));
84+ setKick (e , formatKickMessage ("brand" , "client" , brand , conn .getWebSocketHost ()));
9185 webhook (conn , origin , brand , "brand" );
9286 return ;
9387 }
9488 }
9589 }
90+
91+ if (name != null && !name .equals ("null" )) {
92+ for (String name1 : config .blacklist .players ) {
93+ if (matches (name , name1 ) || (name .length () > 16 || name .length () < 3 )) {
94+ setKick (e , formatKickMessage ("player" , "username" , name , conn .getWebSocketHost ()));
95+ webhook (conn , origin , name , "player" );
96+ return ;
97+ }
98+ }
99+ }
96100 }
97101
98102 public static void setKick (IEaglercraftLoginEvent e , Component msg ) {
99103 try {
100- String redir = config .blacklist .blacklist_redirect ;
101- if (redir .equals ("" ) || redir .equals ("null" )) {
102- e .setKickMessage (msg );
103- } else {
104- e .setKickRedirect (redir );
105- }
106104 getLogger ().info ("Kicked " + e .getProfileUsername ());
105+ e .setKickMessage (msg );
107106 } catch (Throwable ignored ) {
108107 String msg1 = LegacyComponentSerializer .legacySection ().serialize (msg );
109108 e .setKickMessage (msg1 );
@@ -124,7 +123,7 @@ public static void handleMOTD(IEaglercraftMOTDEvent e) {
124123 MiniMessage .miniMessage ().deserialize (line )))
125124 .collect (Collectors .toList ());
126125
127- if (origin != null && !origin .equals ("null" ) && ! config . blacklist . missing_origin ) {
126+ if (origin != null && !origin .equals ("null" )) {
128127 for (String origin1 : config .blacklist .origins ) {
129128 if (matches (origin , origin1 )) {
130129 setMOTD (conn , m );
@@ -173,9 +172,16 @@ public static boolean matches(String text1, String text2) {
173172 return text1 .toLowerCase ().matches (text2 .replace ("." , "\\ ." ).replaceAll ("\\ *" , ".*" ).toLowerCase ());
174173 }
175174
176- public static Component kick (String type , String easytype , String value , String host ) {
175+ public static Component formatKickMessage (String type , String easytype , String value , String host ) {
176+ String help = "" ;
177+ if (type != "player" ) {
178+ help = config .messages .help .generic ;
179+ } else {
180+ help = config .messages .help .player ;
181+ }
177182 return MiniMessage .miniMessage ().deserialize (
178183 config .messages .kick
184+ .replaceAll ("%help%" , help )
179185 .replaceAll ("%blocktype%" , type )
180186 .replaceAll ("%easyblocktype%" , easytype )
181187 .replaceAll ("%blocked%" , value )
0 commit comments