Skip to content

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===属性===")

insertinsertAfter 的区别

  • 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")

候选池用逗号分隔,随机取一项作为新内容。

TQ Minecraft Server Plugin Docs