外部集成
IM 的"外部系统集成"大多数以函数的形式暴露——因为需要返回值(余额、是否足够、物品对象等)。参见 集成函数 总览,本页按插件组织典型用例。
PlaceholderAPI
yaml
variables: |
玩家金币 = papi("vault_eco_balance")
玩家等级 = papi("player_level")
解析文本 = papi_parse("欢迎 %player_name%,等级 %player_level%")
slots:
D: display(id=信息, material=PAPER, name="&e玩家信息",
lore="&7金币: %vault_eco_balance%")papi(id):按变量 ID 取值,自动补%…%。papi_parse(text):把带%…%的整段文本一次性解析完。display/button的name/lore中也可以直接写%xxx%,IM 会自动调用 PAPI。
MythicMobs
yaml
# 匹配 MM 物品
I: 'input(id=装备, match="mm.is(''LegendarySword'')")'
A: 'material(id=材料, match="mm.any()")'yaml
execute: |
奖励 = item("mm:RewardItem") # 用 mm: 前缀加载 MM 物品
item.give(奖励, 1)匹配器汇总:mm.is(id) / mm.any()。物品加载:item("mm:物品ID")、getItem("mm", "物品ID")。
NeigeItems
yaml
# 匹配 NI 物品
I: 'input(id=宝石, match="ni.is(''Gem_Ruby'')")'
execute: |
物品ID = nidata(@input, "id")
额外属性 = nidata(@input, "extraData.stats")- 匹配器:
ni.is(id)/ni.any()。 - 加载:
item("ni:物品ID")。 - 读自定义数据:
nidata(物品, "data.path"),支持.嵌套。
CraftX
CraftX 提供玩家永久变量和带过期的临时变量,常用于次数限制、成就计数。
yaml
execute: |
# 永久变量
强化总次数 = cx_get("total_enhance")
cx_add("total_enhance", 1)
cx_set("last_enhance", datetime())
# 临时变量(24 小时过期,单位毫秒)
今日次数 = cxt_get("daily_enhance")
cxt_set("daily_enhance", 今日次数 + 1, 86400000)| 函数 | 用途 |
|---|---|
cx_get(key) / cx_set(key, val) | 读/写永久变量 |
cx_add(key, n) / cx_take(key, n) | 永久变量加/减 |
cx_has(key, n) | 判断永久变量 ≥ n |
cxt_get(key) / cxt_set(key, val, ttl_ms) | 读/写临时变量(带过期) |
cxt_add(key, n) / cxt_take(key, n) | 临时变量加/减 |
cxt_has(key, n) | 判断临时变量 ≥ n |
LyShop 货币
yaml
conditions: |
require lshop_has("绑定金币", 1000) : "&c绑定金币不足"
execute: |
lshop_take("绑定金币", 1000)
lshop_give("精华", 5)
余额 = lshop_get("绑定金币")Vault 物品存储
用来给物品生成一个唯一 ID,再通过数据库 / Redis 把 ID 传给其他服——常见于跨服传物品。
yaml
execute: |
# 存储
物品ID = vault.store(@input)
log("存储 ID:", 物品ID)
# 另一台服务器
if vault.exists(物品ID) {
恢复的物品 = vault.get(物品ID)
item.give(恢复的物品)
vault.remove(物品ID) # 取出后记得清理
}| 函数 | 说明 |
|---|---|
vault.store(item) | 存储物品,返回 ID 字符串 |
vault.get(id) | 按 ID 取回物品(不删除) |
vault.exists(id) | 判断 ID 是否存在 |
vault.remove(id) | 删除存储 |
仓库系统(SoulRingX / LyWarehouse)
yaml
execute: |
# 全仓库统计
钻石数量 = wh_count(item.create("DIAMOND"), "all")
# 扣除
if wh_has(item.create("DIAMOND"), 10) {
未扣 = wh_take(item.create("DIAMOND"), 10)
}
# 发放
wh_give(@output, 1, "soulringx")仓库类型参数:
| 值 | 作用域 |
|---|---|
"soulringx" / "srx" | SoulRingX 仓库 |
"lywarehouse" / "lw" | LyWarehouse 仓库 |
"inventory" / "inv" | 玩家背包 |
"all" | 所有仓库合计 |
不传 type 时默认走默认仓库(依运行时配置)。
Vault 经济(金币)
通过 money.* 动作使用,无需显式加载。依赖 Vault + 任意经济插件。
yaml
conditions: |
require money >= 1000 : "&c金币不足"
execute: |
money.take(1000)
money.give(500)money 内置变量是当前玩家的金币余额(数字)。
PlayerPoints(点券)
yaml
execute: |
points.take(100)
points.give(50)points 内置变量同样直接可用。
组合示例:扣外部货币 + 给仓库物品
yaml
conditions: |
require lshop_has("灵石", 1000) : "&c灵石不足"
require cxt_get("daily_use") < 3 : "&c今日次数已用完"
execute: |
lshop_take("灵石", 1000)
cxt_add("daily_use", 1)
wh_give(item("mm:LegendaryChest"), 1, "srx")
effect.message("&a奖励已发放到仓库")