Lore 动作
Lore 是 IM 里最常操作的目标。所有 Lore 动作都支持链式调用,也可以配合 with @槽位 自动写回。
快速总览
| 动作 | 用途 |
|---|---|
lore.replace | 最强大的替换,支持多种定位和替换方式(唯一支持命名参数) |
lore.append | 末尾追加一行 |
lore.insert | 在指定行号插入 |
lore.insertAfter | 在匹配文本之后插入 |
lore.delete | 按行号或正则删除 |
lore.clear | 清空所有 Lore |
lore.setLine | 覆盖指定行 |
lore.attr | 修改属性值(合并格式) |
lore.setAttr | 修改属性值(分离格式,便于变量) |
lore.setCounter | 设置计数器行 名称: 当前/最大 |
lore.setValue | 设置键值行 前缀: 值 |
lore.sort | 排序 Lore |
lore.copy | 跨物品复制 Lore 行 |
lore.move | 在同一物品内移动行 |
lore.random_replace | 从候选池随机替换 |
lore.replace 完整用法
这是唯一支持命名参数的动作,用 =。
行定位参数
| 参数 | 说明 | 示例 |
|---|---|---|
line | 直接指定行号(从 1 开始) | line=3 |
marker | 匹配隐藏颜色标记 | marker="§r§r§a" |
after | 在包含某文本的行之后 | after="【属性】" |
before | 在包含某文本的行之前 | before="【技能】" |
find | 查找包含此文本的行 | find="攻击力" |
index | 指定第几个匹配(负数倒序) | index=-1 最后一个 |
内容替换参数
| 方式 | 参数组合 | 说明 |
|---|---|---|
| 直接替换 | old + new | 旧文本 → 新文本(最常用) |
| 模板替换 | template + value | {_} 标记可变部分 |
| 通配符替换 | match + value | 支持 * / {n} / {t} / {c} |
| 前缀后替换 | afterText + value | 替换某文本之后的所有内容 |
| 正则替换 | pattern + value | 正则匹配 |
通配符对照
| 符号 | 匹配 | 示例 |
|---|---|---|
* | 任意内容 | match="伤害: *" |
{n} | 数字 | match="+{n}" |
{t} | 文本(非数字) | match="品质: {t}" |
{c} | 单个字符 | match="Lv.{c}" |
简化语法
yaml
# 三参数(查找行 - 旧值 - 新值,最常用)
装备.lore.replace("强化等级", "{旧等级}", "{新等级}")
# 两参数模板(模板 - 新值)
装备.lore.replace("强化等级: {_}", "强化等级: {新等级}")
# 按行号
lore.replace(3, "旧文本", "新文本")命名参数全示例
yaml
# 直接替换
装备.lore.replace(find="攻击力", old="+10", new="+50")
装备.lore.replace(line=2, old="旧", new="新")
# 模板替换
装备.lore.replace(find="攻击力", template="攻击力: +{_}", value="100")
# 原: "§a攻击力: +10" → 新: "§a攻击力: +100"
# 通配符
装备.lore.replace(find="伤害", match="+{n}", value="+999")
# 前缀后替换
装备.lore.replace(find="攻击力", afterText=": +", value="999")
# 正则
装备.lore.replace(find="攻击力", pattern="\\d+", value="999")
# 隐藏标记定位
装备.lore.replace(marker="§r§r§a", template="{_}", value="新内容")
# 指定第 N 个匹配
装备.lore.replace(find="────", index=-1, old="────", new="════")
# 在某行前/后操作
装备.lore.replace(after="【属性】", old="+10", new="+20")
装备.lore.replace(before="【技能】", old="100", new="200")注意事项
- 行号从 1 开始。
- 颜色码自动忽略:匹配时去除颜色比较,替换后保留原有颜色。
- 默认只替换第一个匹配行,要批量请用
index=-1或配合for循环。 - 替换方式优先级:
old+new>template+value>match+value>afterText+value>pattern+value。 - 目标槽位可通过
slot="input"指定,或用装备.lore.replace(...)链式。
lore.append / insert / delete / clear / setLine
yaml
# 末尾追加
装备.lore.append("&7新的一行")
装备.lore.append("&a攻击力: +{攻击力}")
# 按行号插入(行号从 0 开始)
装备.lore.insert(0, "&6[强化装备]") # 插到第 1 行
装备.lore.insert(2, "新行") # 插到第 3 行
# 删除
装备.lore.delete(0) # 按行号
装备.lore.delete("临时.*") # 按正则
# 清空
装备.lore.clear()
# 覆盖指定行
装备.lore.setLine(0, "&6===属性===")insert 和 insertAfter 的区别
insert(n, text):按行号插入。insertAfter("匹配文本", text):在包含指定文本的行之后插入。
lore.insertAfter
yaml
装备.lore.insertAfter("基础属性", "&7暴击率: +5%")lore.attr(合并格式)
lore.attr("属性名", "运算符+值")。运算符和数值必须合并为一个字符串。
运算符:=(设置)、+(加)、-(减)、*(乘)、/(除)。
yaml
装备.lore.attr("攻击力", "+10") # 加 10
装备.lore.attr("攻击力", "=100") # 设为 100
装备.lore.attr("攻击力", "*1.5") # 乘 1.5
装备.lore.attr("攻击力", "-5") # 减 5
装备.lore.attr("攻击力", "/2") # 除 2
# 配合变量:拼接为字符串
增加量 = 10
装备.lore.attr("攻击力", "+" + 增加量)
# 指定目标槽位(第 3 参数)
装备.lore.attr("攻击力", "+10", @material)不能把运算符和值分开传
yaml
装备.lore.attr("攻击力", "+", 10) # ❌ 值会变成 0分开传请用 lore.setAttr。
lore.setAttr(分离格式)
功能同 lore.attr,支持 2–4 个参数,可以把运算符和值分开:
yaml
# 2 参数:直接设值
装备.lore.setAttr("攻击力", 100)
# 2 参数:合并格式(同 lore.attr)
装备.lore.setAttr("攻击力", "+50")
# 3 参数:运算符 + 值分开 ← 核心优势
装备.lore.setAttr("攻击力", "+", 增加量)
装备.lore.setAttr("攻击力", "*", 1.5)
装备.lore.setAttr("攻击力", "=", 新值)
# 3 参数:直接设值 + 目标槽位
装备.lore.setAttr("攻击力", 100, @material)
# 4 参数:完整格式
装备.lore.setAttr("攻击力", "+", 增加量, @material)何时选 attr vs setAttr
| 场景 | 推荐 |
|---|---|
| 固定数值 | lore.attr("攻击力", "+10") |
| 用变量 | lore.setAttr("攻击力", "+", 增加量) |
lore.setCounter
yaml
# 设置 "强化次数: 3/10" 这样的计数器
装备.lore.setCounter("强化次数", 3, 10)lore.setValue
yaml
# 设置 "品质: 传说" 这样的键值行
装备.lore.setValue("品质", "传说")lore.sort(v1.3.0+)
对 Lore 排序。
| 参数 | 说明 |
|---|---|
by | "value" / "text" / "length" |
order | "asc" / "desc" |
pattern | 数值提取模板,用 {_} 标记数值位置(by=value 时) |
| 行范围 | rangeStart, rangeEnd(行号从 1 开始) |
| 目标槽位 | 最后一个参数可传 @slot |
yaml
# 按数值降序
装备.lore.sort("value", "desc")
# 指定数值提取模板
装备.lore.sort("value", "desc", "攻击力: +{_}")
# 限定行范围
lore.sort("value", "desc", null, 2, 5)
# 指定目标槽位
lore.sort("value", "desc", "攻击力: +{_}", 2, 5, @input)YAML map 语法也支持:
yaml
actions:
- lore.sort:
by: "value"
order: "desc"
pattern: "攻击力: +{_}"
range: [2, 5]lore.copy(跨物品)
把 Lore 行从一个物品复制到另一个物品。
| 参数 | 说明 |
|---|---|
from | 源槽位(必填) |
to | 目标槽位,不填用当前目标 |
find | 按文本查找,只复制含此文本的行 |
lines | 行号列表,如 [1, 3, 5] |
insert | 插入到目标第几行,不填则追加 |
yaml
# 整段复制
lore.copy("input", "material")
lore.copy(@input, @material)
# 指定行号
lore.copy("input", "material", 1, 3, 5)
# 按文本查找
lore.copy("input", "material", "攻击力")
# 按文本查找并插入到指定行
lore.copy("input", "material", "攻击力", 3)lore.move(同物品内)
在同一物品内把一行移到另一个位置。
| 参数 | 说明 |
|---|---|
from | 源行号(1 开始)或查找文本 |
to | 目标行号 |
slot | 目标槽位(可选) |
yaml
lore.move(3, 1) # 第 3 行移到第 1 行
lore.move("攻击力", 1) # 含"攻击力"的行移到第 1 行
lore.move(5, 2, @input) # 指定槽位
装备.lore.move(3, 1) # 链式lore.random_replace
从候选池里随机选一个替换目标行。
yaml
# 参数: ("查找文本"或行号, "值池")
装备.lore.random_replace("随机属性", "攻击力: +10,防御力: +5,生命: +100")候选池用逗号分隔,随机取一项作为新内容。