汉化与文案自定义
汉化与文案自定义
plugins/SnowyGems/lang.yml 是玩家能看见的所有文字的唯一修改入口。插件代码里不硬编码任何玩家可见文本,想改措辞、改颜色、换语言,只改这一个文件。
lang.yml 是热重载的——保存文件即生效,不需要 /sgem reload,更不需要重启服务器。这是插件里唯一一个热重载的配置文件。文件结构
107 个文案节点分成 11 组:
| 节点组 | 数量 | 覆盖内容 |
|---|---|---|
prefix | 1 | 命令回执的统一前缀 |
common | 6 | 复用的通用词(任意物品、无、全部…) |
command | 9 | /sgem 各子命令的回执 |
gem | 16 | 镶嵌/拆卸/使用宝石的结果提示 |
embed | 14 | 内置镶嵌台界面的全部文字 |
menu | 8 | 自定义菜单的提示 |
view | 9 | /sgem view 浏览面板 |
inspect | 4 | /sgem inspect 查看面板 |
skill | 4 | 技能冷却与形态切换提示 |
compat | 21 | /sgem compat 报告的每一行 |
skills | 11 | /sgem skills 函数清单的排版 |
triggers | 4 | /sgem triggers 触发标记清单 |
每个节点上方都有中文注释说明它出现在什么场景、可用哪些占位符。
颜色码
| 写法 | 效果 |
|---|---|
&0 ~ &9、&a ~ &f | 颜色 |
&l | 粗体 |
&o | 斜体 |
&n | 下划线 |
&m | 删除线 |
&k | 乱码(随机字符动画) |
&r | 重置 |
也可以直接写 §,效果相同。
占位符
用 {名字} 形式,会被替换成实际值:
command:
give: "&f已给予 &b{player} &f{amount} 个 &a{gem}"
占位符不写也不会报错——没有对应值时原样保留。所以你可以按需删掉不想显示的占位符:
give: "&f已发放宝石" # 不显示任何具体信息,也能正常工作
每条消息可用的占位符都写在它上方的注释里。
发送方式前缀
在文本最前面加前缀,可以改变这句话的呈现方式:
| 前缀 | 效果 |
|---|---|
| (无) | 普通聊天栏消息 |
actionbar: | 显示在物品栏上方的动作栏 |
title: | 大标题,用 ` |
none: | 什么都不发(等于关掉这条提示) |
embed-success: "&a镶嵌成功!"
embed-success: "actionbar:&a镶嵌成功!"
embed-success: "title:&a镶嵌成功!|&7装备已强化"
embed-success: "none:"
bossbar: 之类未支持的前缀,那段文字会被当成消息正文原样发出去(玩家会看到「bossbar:镶嵌成功」),而不是报错。none: 前缀很实用:想让某类提示彻底安静,不用去改代码,也不用忍受空消息——直接把那个节点改成 none:。
前缀(prefix)
prefix 会自动加在命令回执类消息前面,也就是 command.* 那一组。其他消息不加。
prefix: "&8[&b雪宝石&8] &r"
想去掉前缀就设成空字符串:
prefix: ""
换成其他语言
lang.yml 里没有任何中文是写死在代码里的,所以换语言只需要翻译这个文件:
备份原文件
cp lang.yml lang.zh_CN.yml.bak
逐节点翻译
保留 YAML 的键名和 {占位符} 不动,只翻译引号里的文字部分。
# 翻译前
command:
reload: "&a配置已重载 &7({time}ms)"
# 翻译后
command:
reload: "&aConfig reloaded &7({time}ms)"
保存即生效
不需要重载。如果发现漏翻,直接改、直接保存。
menu.no-slot),因为代码找不到对应文案。不想要某条提示就用 none: 前缀,不要删。需要同步改的地方
lang.yml 覆盖的是插件自己的提示。以下文字不在 lang.yml 里,改语言时也要一起处理:
| 内容 | 在哪改 |
|---|---|
| 宝石的名字与 lore | gems/*.yml 的 Display、Tips、Name |
| 宝石的成功/失败/拆卸提示 | gems/*.yml 的 SuccessTip、FailTip、RemoveTip |
| 菜单标题与图标文字 | gui/*.yml 的 Title、Display、Tips |
| 技能的 lore 绑定标记 | skills/*.yml 的 Lore |
| 技能里的 Chat/ActionBar/Title 内容 | skills/*.yml 技能行里的 m= 参数 |
改技能定义的 Lore 标记要格外小心:它同时是「装备 lore 里的绑定文本」。改了这里,就必须同步改所有引用它的宝石(LoreAdd{lore=...} / LoreVar{lore=...}),否则两边对不上、BUFF 静默失效。
已经发到玩家手上的旧装备更麻烦——它们 lore 上是旧文本,改了标记后这些装备的 BUFF 会全部失效。上线后不要再改 Lore 标记。
有意保留在代码里的文本
有两处玩家可见文本刻意没有放进 lang.yml:
| 内容 | 原因 |
|---|---|
内置镶嵌台的界面名 宝石镶嵌台 | 它是和宝石配置 Gui: 字段对表的匹配键,不是展示文案。挪进 lang.yml 会把「改语言」变成「改匹配逻辑」 |
| 调试日志 | 只输出到控制台,面向服主而非玩家 |
如果你确实要改镶嵌台的界面名,得同时改所有宝石配置里的 Gui: 值。
自检
改完 lang.yml 后,如果游戏里出现了裸的节点名(如 gem.embed-success 直接显示出来),说明该节点被删掉或键名写错了。对照原始文件补回来即可。
原始 lang.yml 可以从插件 JAR 里取出:
unzip -p SnowyGems-1.0-Dev.jar lang.yml > lang.default.yml
或者把 plugins/SnowyGems/lang.yml 删掉重启,插件会重新释放一份默认的。