Skip to content

外部集成

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 / buttonname / 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奖励已发放到仓库")

TQ Minecraft Server Plugin Docs