Allow player to use Chinese chars in username of Minecraft
允许玩家使用中文名甚至特殊字符进入服务器
介绍贴:
https://www.mcbbs.net/thread-1449800-1-1.html (已似)
https://www.mcbbs.co/thread-1158-1-1.html
用户交流群: 1060596957
| 类型 | 支持的版本 | 兼容方式 |
|---|---|---|
| Bukkit及其衍生服务端 | 1.13+ | ✔️ 1.18+才可用插件模式,推荐JavaAgent |
| BungeeCord及其衍生服务端 | All | ✔️ 插件模式与JavaAgent模式通用,结果一样 |
| Fabric及其衍生产品 (包括各类Hybrid核心、客户端) | 1.18+ | ✔️ 仅作为FabricMod加载; 支持客户端单人游戏 |
| Forge及其衍生产品 (包括各类Hybrid核心、客户端) | None | ❌ 理论上不支持,并没有人测试,也没人反馈 |
| NeoForge及其衍生产品 (包括各类Hybrid核心、客户端) | None | ❌ 理论上不支持,并没有人测试,也没人反馈 |
点击展开
推荐有条件的服主使用JavaAgent方式加载,以解锁所有功能
点击展开
- 点我下载
- 放入
服务端根目录 - 修改你的启动命令,在
java后写入-javaagent:CnUsername-version-all.jar. 例如:
java -javaagent:CnUsername-1.0.7-all.jar -jar server.jar
注意,此处仅为举例说明,请根据实际情况编写 - JavaAgent加载模式可以解锁所有功能,包括但不限于:
①玩家名字长度可通过修改正则自定义
②能够正常使用原版实体选择器选择特殊名字玩家 - 如需自定义正则,
修改前面启动命令为见注意事项-javaagent:CnUsername-<version>-all.jar="<正则表达式>",例如:-javaagent:CnUsername-1.0.7-all.jar="^[a-zA-Z0-9_]{3,16}|[a-zA-Z0-9_一-龥]{2,10}$"
- 在
Paper及其分支服务端中,需要在配置文件中修改perform-validate-username为false,否则无法进入服务器; - 安装
AuthMe插件的情况下,需修改AuthMe插件的配置文件config.yml中的allowedNicknameCharacters。这代表被允许的玩家名的正则表达式,否则无法进入服务器; - 安装
LuckPerms插件的情况下,需修改LuckPerms插件的配置文件config.yml中的allow-invalid-usernames为true,否则无法正常处理权限; - 安装
Skript插件的情况下,需修改Skript插件的配置文件config.sk中的player name regex pattern,此为正则表达式,否则无法正常使用玩家功能. - 在Docker等容器环境下,如果出现
java.nio.file.InvalidPathException: Malformed input or input contains unmappable characters异常,可通过设置Java环境参数来解决:JAVA_TOOL_OPTIONS='-Dfile.encoding="UTF-8" -Dsun.jnu.encoding="UTF-8"’ - 若为Linux运行,不在容器内,也出现了5所述异常,请修改
/etc/sysconfig/i18n文件,将所有的en_US.UTF-8改为zh_CN.UTF-8后重试 - 在
CnUsername/pattern.txt文件中填入你的正则规则,即可自定义用户名的正则规则。修改之后,重启服务器即可。 - 由于双端的解包器限制,玩家名字长度不能超过16个字符
默认正则规则: ^[a-zA-Z0-9_]{3,16}|[a-zA-Z0-9_一-龥]{2,10}$