物品、背包与交互槽位
完整查询 item、inventory、storage/crafting、element 及物品匹配参数。
取得物品
item 内容 [source 来源] [amount 数量],根别名 itemstack。返回 ItemStack,不自动发到背包。
item 'PAPER' amount 1
item 'example_item' source itemtools amount 1| 字段 | 类型 | 必填 | 省略行为 | 说明 |
|---|---|---|---|---|
| 内容 | 可求值参数 | 是 | 无法取得物品 | 求值后转成文字,例如原版材料名或外部物品 ID |
source(by)后的来源 | 可求值文字 | 否 | material | material、head 或已注册的物品来源,见下方限制 |
amount(amt)后的数量 | 可求值参数 | 否 | 1 | 转整数并限制在 0~64,位于来源参数之后 |
物品来源名称不区分大小写;外部来源需要相应插件及可用的物品 ID,具体名称与前提见物品来源。
这里的取得方式只使用可立即获得的物品:source head 虽然可解析,但目前不能完成头颅的生成;source kether、source headdatabase / hdb 这类需要动态生成的来源同样不能通过这条语句取得有效物品。图标的 head 或 texture.source 是另一条配置路径,不能把那里的支持情况直接当成 item 语句的支持情况。
如果内容仍含未解析的占位符,也不能保证返回物品;先把所需业务值求值为实际材料名或 ID。需要将物品发到背包时,交给下节的 inventory give。
物品数量属性
Invero 还为 ItemStack 注册了可读写属性 amount,别名 amt、count:读取当前数量,写入时转整数。属性写入本身没有 item ... amount 的 0~64 限制。这是物品对象属性,不是新的根语句;通用 Kether 属性读写语法见 TabooLib Kether 列表。
玩家背包
以下 inventory 语句作用于执行玩家的真实背包或装备,不是菜单的装饰图标。需要玩家上下文,不需要物品交互面板。
| 语句 | 子命令别名、参数与结果 |
|---|---|
inventory close | 关闭玩家当前背包窗口 |
inventory count 'minecraft:stone' | amount;返回全部匹配物品的数量总和 |
inventory has 'minecraft:stone' amount 1 | have、check;返回匹配物品总数是否满足数量 |
inventory take 'minecraft:stone' amount 1 | remove;移除匹配数量,返回是否成功 |
inventory give item 'PAPER' amount 1 | add;后接一个返回 ItemStack 的可求值参数,交给玩家背包 |
inventory slot 9 | 槽位参数可求值,返回该背包槽位的 ItemStack 或空值 |
inventory slot is 9 'minecraft:stone' amount 1 | is 可写 match;检查指定槽位的类型与数量,返回布尔值 |
inventory head | 装备名称见下表,返回对应装备物品 |
inventory head is 'minecraft:stone' amount 1 | is 可写 match;检查该装备的类型与数量 |
检查、移除及装备匹配中的 amount 可省略,省略为 1,数量可以求值。物品匹配规则是原样文字参数,不会自动把其内容当作 Kether 脚本执行。
注意槽位匹配的真实顺序是 slot is 槽位 规则,不是 slot 槽位 is 规则。装备匹配则是 装备名 is 规则。槽位数字采用玩家背包槽位编号,不是图标布局槽位;传入有效编号。
全部装备名称
| 装备 | 可用名称,不区分大小写 |
|---|---|
| 主手 | hand、mainhand、0 |
| 头部 | head、helmet、1 |
| 胸甲 | chest、chestplate、2 |
| 护腿 | legs、leggings、3 |
| 靴子 | feet、boots、4 |
| 副手 | offhand、5、-1 |
这些数字是装备名称别名,不是 inventory slot 的数字含义。off_hand 不是此处的装备别名。
物品匹配规则
材料名使用小写,例如 stone、minecraft:stone、material:stone。其他命名空间需要对应的物品匹配扩展实际提供支持,不能仅因为物品来源支持某个插件,就假定它的同名匹配规则也存在。
| 材料模式 | 匹配方式 |
|---|---|
stone | 材料名完全相等 |
* | 任意材料 |
^diamond | 材料名以 diamond 开头 |
sword$ | 材料名以 sword 结尾 |
(sword) | 材料名包含 sword |
%...% 材料标签匹配目前没有启用,不把它当成物品标签查询。
材料后可附元数据规则,例如 'minecraft:stone[name=纪念石,lore=活动]',多个规则用英文逗号分隔,全部满足才匹配。
| 元数据键 | 别名与真实判断 |
|---|---|
name | 物品名称包含所填文字;此项按包含判断,不按比较符强制精确相等 |
lore | Lore 的文字表示包含所填文字,同样按包含判断 |
damage | durability;物品损耗值 |
model | custom-model-data;自定义模型数据,未设置时为 0 |
ench | enchant、enchants、enchantment;匹配附魔名称 |
potion | potions;匹配药水基础类型或自定义效果类型 |
ench.名称 | enchant.名称、enchantment.名称;能识别该键,但目前附魔等级读取不能可靠取得整数,不用作可靠等级比较 |
nbt.路径 | tag.路径;匹配对应深层 NBT 值,缺失时不匹配 |
附加规则识别 =、!=、>、>=、<、<= 和 键(候选一|候选二)(分隔符也可用 /)。数字大小比较目前以规则值为左值、物品值为右值,例如 damage>10 实际检查的是 10 > 物品损耗值,不要按通常书写方向理解。名称/Lore 的包含判断和附魔等级限制如上表所示;未知元数据键不会自动扩展成功。
物品交互区域
根语句 storage,别名 crafting。用于物品交互面板,槽位按该面板的局部位置从 0 计数。查找当前面板同级组中的第一个物品交互面板,缺少上下文时从窗口顶层寻找;panel ... select 不保证命中同级第二个目标,不能把它当作多个物品交互面板的精确存取选择器。真实物品交互明确使用 menu.virtual: false,完整面板配置见上述链接。
语法:storage at 槽位 操作 [to 物品]。at 可用 by,槽位为必填可求值整数。
| 语句 | 别名与返回或可见效果 |
|---|---|
storage at 2 get | 返回该交互槽位中的 ItemStack 或空值 |
storage at 2 exist | exists;返回是否有非空气物品 |
storage at 2 empty | 返回是否为空 |
storage at 2 delete | del;删除槽位物品,并触发面板物品变化回调,不是发还玩家 |
storage at 2 set to item 'PAPER' amount 1 | to 后必须为能立即返回 ItemStack 的参数;放入物品并触发回调;无值时返回 NULLED ITEM |
storage at 2 isFree | 返回槽位是否允许物品交互 |
storage at 2 isLocked | 返回槽位是否不在开放交互集合中 |
storage at 2 free | 开放该槽位 |
storage at 2 lock | 锁定该槽位,不自动删除其物品 |
storage at -1 lock | 负槽位的锁定操作会清空开放集合,即锁定全部;free 没有对应的负数“全部解锁”语义 |
set 的物品参数可以求值,但不会等待尚未完成的物品生成。操作名按表中大小写填写;不存在 storage take / storage give 这样的库存增减子命令。lock / free 只调整玩家可交互集合,不等于重建图标、刷新筛选或更换容器。关闭时只返还开放槽位中的物品;锁定非空槽位后,里面的物品不会自动返还。脚本的 set / delete 本身不会因槽位已锁定而拒绝修改,操作时仍应使用合法的面板局部槽位。嵌套与偏移的真实物品交互边界另查物品交互面板。
当前生成器元素
element [字段名] 用于生成器 output 图标的显示或点击上下文。省略字段名返回当前元素的整个内容映射,填写时返回该字段值;字段名可以求值。
# 位于 generator.output 中
name: '&f{{element title}}'
action: "mmsg '&a已选择:{{element title}}'"这里使用元素的原始字段名 title,对应的普通变量是 element_title。没有当前元素时会失败;普通固定按钮、菜单打开事件以及不继承该图标上下文的节点不能直接靠 element 取得某个列表项。
Last updated on