diff --git a/patches/server/0252-Configurable-valid-characters-for-usernames.patch b/patches/server/0252-Configurable-valid-characters-for-usernames.patch new file mode 100644 index 000000000..8f34e0ce2 --- /dev/null +++ b/patches/server/0252-Configurable-valid-characters-for-usernames.patch @@ -0,0 +1,35 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: BillyGalbreath +Date: Sat, 1 Jan 2022 18:38:58 -0600 +Subject: [PATCH] Configurable valid characters for usernames + + +diff --git a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java +index c25df7de9adf6cc06d8d49d53c51d843f61565fa..757469c94ece79d1753db7f55d4d417ad8c0d489 100644 +--- a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java ++++ b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java +@@ -236,6 +236,8 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener + return false; + } + ++ if (true) return org.purpurmc.purpur.PurpurConfig.usernameValidCharactersPattern.matcher(in).matches(); // Purpur ++ + for (int i = 0, len = in.length(); i < len; ++i) { + char c = in.charAt(i); + +diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java +index 9b07f3ff8ea84aa231e6b183bcd2947bb1b7e4bc..6eb138a83460e049f711c67055fe6db4ff812e8c 100644 +--- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java ++++ b/src/main/java/org/purpurmc/purpur/PurpurConfig.java +@@ -390,4 +390,11 @@ public class PurpurConfig { + private static void networkSettings() { + useUPnP = getBoolean("settings.network.upnp-port-forwarding", useUPnP); + } ++ ++ public static java.util.regex.Pattern usernameValidCharactersPattern; ++ private static void usernameValidationSettings() { ++ String defaultPattern = "^[a-zA-Z0-9_.]*$"; ++ String setPattern = getString("settings.username-valid-characters", defaultPattern); ++ usernameValidCharactersPattern = java.util.regex.Pattern.compile(setPattern == null || setPattern.isBlank() ? defaultPattern : setPattern); ++ } + }