简体中文
名称与 Lore 操作
CoreLib 的 name_actions 和 lore_actions 两个配置段用于逐条精确改动物品的名称和 Lore 展示
CoreLib 给你一套统一的物品名称和 Lore 操作方式. 所有 Emaki 插件都用 name_actions 和 lore_actions 来精确控制物品的名称和描述展示
这套操作是无状态的 -- 每次渲染都从头把整条操作链走一遍. 状态一变 (比如强化回退), 系统就用新的变量值把操作链重跑一次, 展示结果自然就对了
名称操作 (name_actions)
按你的配置逐条精确修改物品名称. 各操作按你在配置里写的顺序依次执行
replace
直接整个替换物品名称, 之前加的前缀和后缀会一并清掉
yaml
name_actions:
- action: "replace"
value: "<gold>%quality_name% 烈焰剑</gold>"prepend_prefix
在名称前面加前缀
yaml
name_actions:
- action: "prepend_prefix"
value: "<red>[+%star%] </red>"append_suffix
在名称后面加后缀
yaml
name_actions:
- action: "append_suffix"
value: " <gray>[%quality_name%]</gray>"regex_replace
用正则替换名称内容. 注意: 只有名称已经用 replace 设成显式模板后才生效
yaml
name_actions:
- action: "regex_replace"
regex_pattern: "\\[\\+\\d+\\]"
replacement: "[+%star%]"Lore 操作 (lore_actions)
按你的配置逐条精确修改物品 Lore. 各操作按你在配置里写的顺序依次执行
append
在 Lore 最后一行后面加内容
yaml
lore_actions:
- action: "append"
content:
- ""
- "<gray>强化等级: <gold>+%star%</gold></gray>"prepend
在 Lore 第一行前面加内容
yaml
lore_actions:
- action: "prepend"
content:
- "<gradient:#F2C46D:#C9703D>强化等级 +%star%</gradient>"
- ""insert_below
在匹配到的行下面插入内容. 别名: search_insert_below, search_insert
yaml
lore_actions:
- action: "insert_below"
anchor: "物理伤害"
content:
- "<gray>强化加成: <gold>+%physical_attack%</gold></gray>"insert_above
在匹配到的行上面插入内容. 别名: search_insert_above
yaml
lore_actions:
- action: "insert_above"
anchor: "品质"
content:
- ""
- "<yellow>强化效果:</yellow>"replace_line
替换第一个匹配到的行
yaml
lore_actions:
- action: "replace_line"
anchor: "强化等级"
content:
- "<gradient:#F2C46D:#C9703D>强化等级 +%star%</gradient>"replace_text
只替换匹配行里的某段文本, 不动整行. 默认只处理一行; index 指定第几个匹配行, 超出范围时取最后一个匹配到的行
yaml
lore_actions:
- action: "replace_text"
anchor: "旧文本"
replacement: "新文本"replace_text_all
和 replace_text 一样, 但所有匹配行里的每一处都会被替换
yaml
lore_actions:
- action: "replace_text_all"
anchor: "旧文本"
replacement: "新文本"delete_line
删掉所有匹配到的行
yaml
lore_actions:
- action: "delete_line"
anchor: "旧的强化信息"regex_replace
对所有 Lore 行做正则替换
yaml
lore_actions:
- action: "regex_replace"
regex_pattern: "\\+\\d+"
replacement: "+%star%"匹配字段
insert_below, insert_above, replace_line, delete_line 里的匹配文本可以写多个字段名, 按优先级取:
| 字段 | 优先级 | 说明 |
|---|---|---|
target_pattern | 最高 | 要匹配的目标文本 |
pattern | 中 | 要匹配的目标文本 |
anchor | 最低 | 要匹配的目标文本 |
匹配用的是包含匹配 (contains), 不是精确匹配: 只要某行含有这段文字就算命中
变量替换
所有操作里的 value, content, anchor, replacement 都支持 %变量名% 格式的变量替换, 变量名匹配时不区分大小写. 服务器装了 PlaceholderAPI 的话, 渲染完还会再解析一次 PAPI 占位符
你能用哪些变量, 取决于用这套操作的插件:
| 插件 | 可用变量 |
|---|---|
| EmakiStrengthen | %star%, %temper%, %max_temper%, %temper_color%, 以及所有 variables 中的值 |
| EmakiForge | %quality%, %quality_name%, %multiplier%, %player_name%, %player_uuid%, 以及所有锻造属性值 |
| EmakiGem | %slot_index%, %slot_type%, %gem_name%, %gem_level%, %display_name%, 以及所有 variables 中的值 |
回退机制
这套系统靠 ItemOperationLedger 做到精确回退. 每次执行 name_actions 或 lore_actions, 系统都会把操作详情记进物品的 PDC (物品自带的附加数据存储)
想撤销某个操作时 (比如宝石提取, 强化降级), 只需三步:
- 系统用
operationId找到那一条操作记录 ItemOperationReverter按记录精确撤销对应的名称/Lore 修改- 其他模块的操作不受影响
text
镶嵌宝石 → Ledger.apply (operationId="gem_ruby_slot0", ...)
强化成功 → Ledger.apply (operationId="strengthen_star3", ...)
提取宝石 → Ledger.revert (operationId="gem_ruby_slot0") ← 只撤销宝石的修改强化系统的 Lore 更新用的是 replace_line 策略, 每次强化成功都会走这三步:
- 先把上一次强化的 lore_action 操作 revert 掉
- 再 apply 新星级的 lore_action 操作
- 这样属性行始终只有一行, 数值也一直是最新的
完整配置示例
EmakiStrengthen 配方
全局 Lore 操作 (每次强化都执行):
yaml
name_actions:
- action: "append_suffix"
value: " <yellow>[+%star%]</yellow>"
lore_actions:
- action: "prepend"
content:
- "<gradient:#F2C46D:#C9703D>强化等级 +%star%</gradient>"
- "<gray>锻印: %temper_color%%temper%/%max_temper%</gray>"星级 Lore 操作 (★1 使用 append, ★2+ 使用 replace_line):
yaml
# ★1: 首次添加属性行
stars:
1:
effects:
- type: "lore_action"
lore_actions:
- action: "append"
content:
- "<gray>物理伤害: <gold>+4</gold></gray>"
# ★2+: 通过 anchor 匹配并替换已有行
2:
effects:
- type: "lore_action"
lore_actions:
- action: "replace_line"
anchor: "物理伤害:"
content:
- "<gray>物理伤害: <gold>+8</gold></gray>"EmakiForge 配方
yaml
name_actions:
- action: "prepend_prefix"
value: "<light_purple>[%quality_name%]</light_purple> "
lore_actions:
- action: "append"
content:
- ""
- "<gray>锻造品质: <white>%quality_name%</white></gray>"
- "<gray>品质倍率: <white>x%multiplier%</white></gray>"
- "<gray>锻造者: <white>%player_name%</white></gray>"