Add an option that allows non ascii username to login (#1139)
This commit is contained in:
parent
3136172ea0
commit
ad439238f2
|
@ -5,6 +5,7 @@ import com.mojang.authlib.properties.Property;
|
|||
import io.izzel.arclight.common.bridge.core.network.NetworkManagerBridge;
|
||||
import io.izzel.arclight.common.bridge.core.server.MinecraftServerBridge;
|
||||
import io.izzel.arclight.common.bridge.core.server.management.PlayerListBridge;
|
||||
import io.izzel.arclight.i18n.ArclightConfig;
|
||||
import net.minecraft.DefaultUncaughtExceptionHandler;
|
||||
import net.minecraft.core.UUIDUtil;
|
||||
import net.minecraft.network.Connection;
|
||||
|
@ -115,6 +116,11 @@ public abstract class ServerLoginNetHandlerMixin {
|
|||
}
|
||||
}
|
||||
|
||||
private static boolean arclight$validUsernameCheck(String name) {
|
||||
var regex = ArclightConfig.spec().getCompat().getValidUsernameRegex();
|
||||
return !regex.isBlank() && name.matches(regex);
|
||||
}
|
||||
|
||||
/**
|
||||
* @author IzzelAliz
|
||||
* @reason
|
||||
|
@ -123,7 +129,7 @@ public abstract class ServerLoginNetHandlerMixin {
|
|||
public void handleHello(ServerboundHelloPacket packetIn) {
|
||||
Validate.validState(this.state == ServerLoginPacketListenerImpl.State.HELLO, "Unexpected hello packet");
|
||||
Validate.validState(this.state == ServerLoginPacketListenerImpl.State.HELLO, "Unexpected hello packet");
|
||||
Validate.validState(isValidUsername(packetIn.name()), "Invalid characters in username");
|
||||
Validate.validState(arclight$validUsernameCheck(packetIn.name()) || isValidUsername(packetIn.name()), "Invalid characters in username");
|
||||
GameProfile gameprofile = this.server.getSingleplayerProfile();
|
||||
if (gameprofile != null && packetIn.name().equalsIgnoreCase(gameprofile.getName())) {
|
||||
this.gameProfile = gameprofile;
|
||||
|
|
|
@ -26,6 +26,9 @@ public class CompatSpec {
|
|||
@Setting("forward-permission")
|
||||
private String forwardPermission;
|
||||
|
||||
@Setting("valid-username-regex")
|
||||
private String validUsernameRegex;
|
||||
|
||||
public Map<String, MaterialPropertySpec> getMaterials() {
|
||||
return materials;
|
||||
}
|
||||
|
@ -57,4 +60,8 @@ public class CompatSpec {
|
|||
public boolean isForwardPermissionReverse() {
|
||||
return Objects.equals(forwardPermission, "reverse");
|
||||
}
|
||||
|
||||
public String getValidUsernameRegex() {
|
||||
return validUsernameRegex;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -18,6 +18,7 @@ compatibility {
|
|||
"com.example.mod.ExtraLogicWorld"
|
||||
]
|
||||
forward-permission = true
|
||||
valid-username-regex = ""
|
||||
}
|
||||
async-catcher {
|
||||
dump = true
|
||||
|
|
|
@ -122,5 +122,12 @@ comments {
|
|||
"false - Disable permission forward"
|
||||
"reverse - Forward Bukkit player perimission query to Forge"
|
||||
]
|
||||
valid-username-regex.comment = [
|
||||
"Regex for valid username check. Leave it blank will fallback to vanilla check"
|
||||
"Following allows Chinese characters:"
|
||||
"valid-username-regex = \"^[ -~\\\\p{sc=Han}]{1,16}$\""
|
||||
"Following allows any username to login:"
|
||||
"valid-username-regex = \".+\""
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
|
@ -126,5 +126,12 @@ comments {
|
|||
"false - 不启用权限转发"
|
||||
"reverse - 将 Bukkit 玩家权限查询请求转发至 Forge"
|
||||
]
|
||||
valid-username-regex.comment = [
|
||||
"用户名合法检查正则表达式,留空为使用原版检查"
|
||||
"如果需要允许中文字符可以使用"
|
||||
"valid-username-regex = \"^[ -~\\p{sc=Han}]{1,16}$\""
|
||||
"如果允许任何用户名可以使用"
|
||||
"valid-username-regex = \".+\""
|
||||
]
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue
Block a user