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.network.NetworkManagerBridge;
|
||||||
import io.izzel.arclight.common.bridge.core.server.MinecraftServerBridge;
|
import io.izzel.arclight.common.bridge.core.server.MinecraftServerBridge;
|
||||||
import io.izzel.arclight.common.bridge.core.server.management.PlayerListBridge;
|
import io.izzel.arclight.common.bridge.core.server.management.PlayerListBridge;
|
||||||
|
import io.izzel.arclight.i18n.ArclightConfig;
|
||||||
import net.minecraft.DefaultUncaughtExceptionHandler;
|
import net.minecraft.DefaultUncaughtExceptionHandler;
|
||||||
import net.minecraft.core.UUIDUtil;
|
import net.minecraft.core.UUIDUtil;
|
||||||
import net.minecraft.network.Connection;
|
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
|
* @author IzzelAliz
|
||||||
* @reason
|
* @reason
|
||||||
|
@ -123,7 +129,7 @@ public abstract class ServerLoginNetHandlerMixin {
|
||||||
public void handleHello(ServerboundHelloPacket packetIn) {
|
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(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();
|
GameProfile gameprofile = this.server.getSingleplayerProfile();
|
||||||
if (gameprofile != null && packetIn.name().equalsIgnoreCase(gameprofile.getName())) {
|
if (gameprofile != null && packetIn.name().equalsIgnoreCase(gameprofile.getName())) {
|
||||||
this.gameProfile = gameprofile;
|
this.gameProfile = gameprofile;
|
||||||
|
|
|
@ -26,6 +26,9 @@ public class CompatSpec {
|
||||||
@Setting("forward-permission")
|
@Setting("forward-permission")
|
||||||
private String forwardPermission;
|
private String forwardPermission;
|
||||||
|
|
||||||
|
@Setting("valid-username-regex")
|
||||||
|
private String validUsernameRegex;
|
||||||
|
|
||||||
public Map<String, MaterialPropertySpec> getMaterials() {
|
public Map<String, MaterialPropertySpec> getMaterials() {
|
||||||
return materials;
|
return materials;
|
||||||
}
|
}
|
||||||
|
@ -57,4 +60,8 @@ public class CompatSpec {
|
||||||
public boolean isForwardPermissionReverse() {
|
public boolean isForwardPermissionReverse() {
|
||||||
return Objects.equals(forwardPermission, "reverse");
|
return Objects.equals(forwardPermission, "reverse");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getValidUsernameRegex() {
|
||||||
|
return validUsernameRegex;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -18,6 +18,7 @@ compatibility {
|
||||||
"com.example.mod.ExtraLogicWorld"
|
"com.example.mod.ExtraLogicWorld"
|
||||||
]
|
]
|
||||||
forward-permission = true
|
forward-permission = true
|
||||||
|
valid-username-regex = ""
|
||||||
}
|
}
|
||||||
async-catcher {
|
async-catcher {
|
||||||
dump = true
|
dump = true
|
||||||
|
|
|
@ -122,5 +122,12 @@ comments {
|
||||||
"false - Disable permission forward"
|
"false - Disable permission forward"
|
||||||
"reverse - Forward Bukkit player perimission query to Forge"
|
"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 - 不启用权限转发"
|
"false - 不启用权限转发"
|
||||||
"reverse - 将 Bukkit 玩家权限查询请求转发至 Forge"
|
"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