物品 / JSON 函数
物品构造与识别
| 函数 | 参数 | 返回 | 说明 |
|---|---|---|---|
item(@slot) | 槽位引用 | ItemStack | 克隆槽位物品 |
item(id) | String | ItemStack | 从外部来源获取物品 |
getItem(source) | String | ItemStack | 同 item |
itemid(@slot) | 槽位引用 | String | 物品提供者 ID(如 mm:Sword) |
isMM(@slot) | 槽位引用 | Boolean | 是否为 MythicMobs 物品 |
isNI(@slot) | 槽位引用 | Boolean | 是否为 NeigeItems 物品 |
item.create(material) | String | ItemStack | 按材质创建空物品 |
item.create(material, amount) | String, Integer | ItemStack | 按材质和数量创建 |
来源格式
| 格式 | 说明 | 示例 |
|---|---|---|
mm:物品ID | MythicMobs 物品 | item("mm:LegendarySword") |
ni:物品ID | NeigeItems 物品 | item("ni:强化石") |
MATERIAL | 原版材质 | item("DIAMOND") |
@槽位ID | 槽位物品克隆 | item(@input) |
yaml
原物品 = item(@input) # 克隆输入槽物品
新剑 = item("mm:LegendarySword") # 从 MM 取
钻石 = item.create("DIAMOND", 64) # 64 个钻石
是 MM = isMM(@input)item(@slot) vs @slot — 核心区别
| 表达式 | 说明 | 用途 |
|---|---|---|
@input | 槽位引用,指向原物品 | 读属性、判断 filled、with 块 |
item(@input) | 创建克隆副本 | 要修改物品时必须用它 |
yaml
# ✓ 正确:先克隆再改再写回
装备 = item(@input)
装备.lore.attr("攻击力", "+10")
slot.set("input", 装备)
# 或者用 with(自动克隆 + 自动写回)
with @input {
装备.lore.attr("攻击力", "+10")
}动态创建物品
yaml
variables: |
# 三元嵌套 + item()
强化材料 = 阶段1 ? item("ni:赤铁精屑")
: (阶段2 ? item("ni:月华玄晶")
: (阶段3 ? item("ni:道纹金晶")
: item("ni:鸿蒙仙晶")))
if @input.filled {
slot.set("材料展示", 强化材料)
}
execute: |
奖励物品 = 成功 ? item("ni:强化成功券") : item("ni:强化失败券")
item.give(奖励物品, 1)JSON 函数
| 函数 | 参数 | 返回 | 说明 |
|---|---|---|---|
json_get(json, path) | String×2 | Any | 按路径提取 JSON 值 |
json_has(json, path) | String×2 | Boolean | 路径是否存在 |
json_unescape(str) | String | String | 解码 JSON 转义字符 |
yaml
序列化 = @input.serialize() # 物品 → JSON 字符串
物品ID = json_get(序列化, "NeigeItems.id")
有字段 = json_has(序列化, "NeigeItems")路径语法支持 . 取对象属性,[i] 取数组元素,例如 NeigeItems.data.attrs[0].name。
NeigeItems 数据字段
| 函数 | 参数 | 返回 | 说明 |
|---|---|---|---|
nidata(@item, key) | 槽位引用, String | Any | 读取 NI 物品的 data 字段 |
nidata_debug(@item) | 槽位引用 | String | 调试输出 data 内容 |
yaml
额外lore = nidata(@input, "额外lore")
第一个 = nidata(@input, "额外lore[0]")key 支持数组索引 [n] 和嵌套点路径,和 json_get 的路径语法一致。
外部集成的完整用法见 外部集成。