From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: MrHua269 Date: Sun, 12 Jan 2025 10:29:26 +0800 Subject: [PATCH] Add config for username check diff --git a/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/net/minecraft/server/network/ServerLoginPacketListenerImpl.java index 829ff1f36d565f15cfe5d4997d3ccfdfe7898e0f..b7cfe0c73de732e22f90a7b38321c775e405aaa5 100644 --- a/net/minecraft/server/network/ServerLoginPacketListenerImpl.java +++ b/net/minecraft/server/network/ServerLoginPacketListenerImpl.java @@ -175,7 +175,8 @@ public class ServerLoginPacketListenerImpl implements ServerLoginPacketListener, public void handleHello(ServerboundHelloPacket packet) { Validate.validState(this.state == ServerLoginPacketListenerImpl.State.HELLO, "Unexpected hello packet"); // Paper start - Validate usernames - if (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.isProxyOnlineMode() + if (me.earthme.luminol.config.modules.misc.UsernameCheckConfig.enabled // Luminol - Add config for username check + && io.papermc.paper.configuration.GlobalConfiguration.get().proxies.isProxyOnlineMode() && io.papermc.paper.configuration.GlobalConfiguration.get().unsupportedSettings.performUsernameValidation && !this.iKnowThisMayNotBeTheBestIdeaButPleaseDisableUsernameValidation) { Validate.validState(StringUtil.isReasonablePlayerName(packet.name()), "Invalid characters in username"); diff --git a/net/minecraft/server/players/GameProfileCache.java b/net/minecraft/server/players/GameProfileCache.java index 066f84df5c31242ab542932f1e243369d0e766e2..144a2644c15f276f02bb3be859dc5d05a677ac55 100644 --- a/net/minecraft/server/players/GameProfileCache.java +++ b/net/minecraft/server/players/GameProfileCache.java @@ -75,7 +75,7 @@ public class GameProfileCache { } private static Optional lookupGameProfile(GameProfileRepository profileRepo, String name) { - if (!StringUtil.isValidPlayerName(name)) { + if (!StringUtil.isValidPlayerName(name, false)) { // Luminol - Add config for username check - Directly return, skip unnecessary following logic return createUnknownProfile(name); } else { final boolean shouldLookup = !org.apache.commons.lang3.StringUtils.isBlank(name) // Paper - Don't lookup a profile with a blank name diff --git a/net/minecraft/util/StringUtil.java b/net/minecraft/util/StringUtil.java index 77947e6915facee44588943fcd3e5b513de37e77..d9f95c5cf4bd2946244c153db0fd21c8d51ae20d 100644 --- a/net/minecraft/util/StringUtil.java +++ b/net/minecraft/util/StringUtil.java @@ -62,8 +62,14 @@ public class StringUtil { public static boolean isAllowedChatCharacter(char character) { return character != 167 && character >= ' ' && character != 127; } + // Luminol start - Add config for username checks + public static boolean isValidPlayerName(String username){ + return isValidPlayerName(username, !me.earthme.luminol.config.modules.misc.UsernameCheckConfig.enabled); + } + // Luminol end - public static boolean isValidPlayerName(String playerName) { + public static boolean isValidPlayerName(String playerName, boolean byPass) { // Luminol - Add config for username checks + if (byPass) return playerName.length() <= 16; // Luminol - Add config for username checks return playerName.length() <= 16 && playerName.chars().filter(i -> i <= 32 || i >= 127).findAny().isEmpty(); }