ItemsAdderAdditionsItemsAdderAdditions
进度

玩家谓词

为任意自定义进度准则添加额外的玩家状态要求,包括标志、游戏模式、等级、物品栏槽位、药水效果、位置以及原版风格的实体谓词

Since v1.0.9

玩家谓词允许你在触发器之外为准则添加额外的要求。将它们放置在 conditions.player 下。触发器必须首先触发,然后在授予准则之前立即检查玩家谓词

criteria:
  sneaky_sleep:
    trigger: slept_in_bed
    conditions:
      player:
        flags:
          is_sneaking: true

conditions.player 适用于运行时触发器。impossible 触发器会忽略玩家谓词,因为它只能手动授予

对象和列表格式

当你只需要一个谓词时,使用单个对象。对象内的所有键都必须匹配

conditions:
  player:
    type: minecraft:player
    flags:
      is_sneaking: true
    type_specific:
      type: minecraft:player
      gamemode: survival

你也可以使用列表。列表中的每个条目都必须匹配。如果你偏好原版风格的谓词包装器,这种方式会很有用

conditions:
  player:
    - condition: minecraft:entity_properties
      predicate:
        flags:
          is_sneaking: true
    - condition: minecraft:entity_properties
      predicate:
        type_specific:
          type: minecraft:player
          gamemode: survival

范围语法

数值接受一个精确数字或 min/max 对象

level: 10

level:
  min: 10
  max: 30

此语法适用于玩家等级、饱食度、移动速度、药水持续时间、附魔等级、物品数量、耐久度、光照等级以及其他数值检查

常用玩家检查

conditions:
  player:
    flags:
      is_sneaking: true
      is_sprinting: false
    type_specific:
      type: minecraft:player
      gamemode: adventure
      level:
        min: 10
      food:
        level:
          min: 16
        saturation:
          min: 4.0
类型描述
flags.is_baby布尔值当实体支持时,匹配幼年/成年状态
flags.is_on_fire布尔值要求玩家着火或未着火
flags.is_sneaking布尔值要求潜行状态
flags.is_sprinting布尔值要求疾跑状态
flags.is_swimming布尔值要求游泳状态
flags.is_on_ground布尔值要求在地面上
flags.is_flying布尔值匹配创造模式飞行或滑翔
flags.is_fall_flying布尔值要求鞘翅滑翔状态
type_specific.gamemode字符串或列表匹配一种或多种游戏模式:survivalcreativeadventurespectator
type_specific.level数字或范围匹配玩家的经验等级
type_specific.food.level数字或范围匹配饱食度
type_specific.food.saturation数字或范围匹配饱和度

gamemodelevelfoodadvancementsrecipesstatsinputlooking_at 也可以直接放在 player 内部,但 type_specific 更清晰,也更接近原版谓词结构

输入检查

当服务器暴露这些信息时,输入谓词可以检查玩家当前的移动输入。当直接输入数据不可用时,sneaksprint 会回退到 Bukkit 的玩家状态

conditions:
  player:
    type_specific:
      type: minecraft:player
      input:
        forward: true
        jump: true
        sneak: false
        sprint: true
类型描述
input.forward布尔值要求前进键状态
input.backward布尔值要求后退键状态
input.left布尔值要求左移键状态
input.right布尔值要求右移键状态
input.jump布尔值要求跳跃键状态
input.sneak布尔值要求潜行输入或潜行状态
input.sprint布尔值要求疾跑输入或疾跑状态

位置检查

conditions:
  player:
    location:
      dimension: minecraft:overworld
      world: world
      biomes:
        - minecraft:plains
        - minecraft:forest
      position:
        x:
          min: 100
          max: 200
        y:
          min: 60
        z: 0
      block:
        blocks: minecraft:grass_block
      light:
        min: 8
      can_see_sky: true
类型描述
location.dimension / dimensions字符串或列表匹配世界环境,例如 minecraft:overworldminecraft:the_netherminecraft:the_end
location.world字符串匹配 Bukkit 世界名称
location.biome / biomes字符串或列表匹配生物群系键
location.position.x数字或范围匹配 X 坐标
location.position.y数字或范围匹配 Y 坐标
location.position.z数字或范围匹配 Z 坐标
location.block方块谓词匹配该位置的方块
location.light数字或范围匹配方块光照等级
location.can_see_sky布尔值要求天空可见性

不支持 location.structurelocation.structures。如果配置了它们,谓词将不会匹配

方块谓词

方块谓词由 location.blockstepping_onmovement_affected_by 使用

conditions:
  player:
    stepping_on:
      block:
        blocks: minecraft:stone
        state:
          axis: y
类型描述
block字符串或配置节单个方块的简写形式,或完整的方块谓词配置节
blocks / id字符串或列表要匹配的方块 ID
state.<name>字符串或范围精确匹配方块状态值,或使用 min/max

ItemsAdderAdditions 自定义方块标签会优先解析。如果没有对应自定义标签,#minecraft:logs 等方块标签语法会根据原版方块标签解析。原版标签仅匹配原版方块

物品和装备谓词

物品谓词可用于 equipmentslots 和嵌套实体谓词。它们接受 ItemsAdder ID、MMOItems ID、原版物品 ID、原版物品标签(如 #minecraft:planks)以及受支持的自定义标签

conditions:
  player:
    equipment:
      mainhand:
        items: my_pack:ruby_sword
        count: 1
        durability:
          min: 100
        components:
          minecraft:custom_model_data: 123
        enchantments:
          - enchantment: minecraft:sharpness
            levels:
              min: 3
类型描述
item / items字符串或列表要匹配的物品 ID。普通字符串可用作单个物品的简写形式
count数字或范围匹配堆叠数量
durability数字或范围匹配剩余耐久度
components.minecraft:custom_model_data整数匹配自定义模型数据
components.minecraft:custom_name字符串匹配物品的显示名称
components.minecraft:damage整数匹配物品伤害值
enchantments[].enchantment / id字符串附魔键
enchantments[].levels数字或范围所需的附魔等级

ItemsAdderAdditions 自定义物品标签会优先解析。如果没有对应自定义标签,原版物品标签会根据原版物品注册表解析。物品 predicates 部分仍然不受支持,并且会使物品谓词匹配失败,而不是意外匹配

槽位

当你需要检查玩家的物品栏而不仅仅是已装备的物品时,请使用 slots

conditions:
  player:
    slots:
      weapon.mainhand:
        items: minecraft:diamond_sword
      inventory.0:
        items: minecraft:apple
        count: 2
      hotbar.2:
        items: my_pack:ruby_staff
槽位键描述
mainhandweapon.mainhand主手物品
offhandweapon.offhand副手物品
headarmor.head头盔槽位
chestarmor.chest胸甲槽位
legsarmor.legs护腿槽位
feetarmor.feet靴子槽位
*inventory.*container.*任意玩家物品栏槽位
hotbar.<slot>快捷栏槽位,从 08
inventory.<slot>inventory.<start>-<end>主物品栏槽位,在快捷栏之后偏移
container.<slot>container.<start>-<end>原始容器槽位编号

药水效果

conditions:
  player:
    effects:
      minecraft:speed:
        amplifier:
          min: 1
        duration:
          min: 100
        ambient: false
        visible: true
类型描述
effects.<effect>.amplifier数字或范围匹配药水等级
effects.<effect>.duration数字或范围匹配剩余持续时间(以刻为单位)
effects.<effect>.ambient布尔值匹配环境效果标志
effects.<effect>.visible布尔值匹配粒子可见性

进度、配方和统计

conditions:
  player:
    type_specific:
      type: minecraft:player
      advancements:
        minecraft:story/mine_stone: true
        my_pack:custom_root:
          root_trigger: true
      recipes:
        minecraft:diamond_sword: true
      stats:
        - type: minecraft:custom
          stat: minecraft:jump
          value:
            min: 50
类型描述
advancements.<id>布尔值或配置节要求另一个进度已完成或未完成。配置节检查命名的准则
recipes.<id>布尔值要求配方已发现或未发现
stats[].type字符串统计组,例如 minecraft:customminecraft:minedminecraft:usedminecraft:killedminecraft:killed_by
stats[].stat字符串统计键、材质键或实体键,取决于统计类型
stats[].value数字或范围所需的统计值

嵌套实体检查

相同的实体谓词系统可用于相关实体

conditions:
  player:
    type_specific:
      type: minecraft:player
      looking_at:
        type: minecraft:zombie
        distance:
          absolute:
            max: 12
    vehicle:
      type: minecraft:horse
类型描述
passenger实体谓词匹配玩家的一个乘客
vehicle实体谓词匹配玩家正在骑乘的实体
targeted_entity实体谓词对于生物,匹配其当前目标
type_specific.looking_at实体谓词对于玩家,匹配其在 100 格范围内注视的实体
distance配置节匹配玩家到相关实体的距离。支持 absolutehorizontalxyz

其他类型特定谓词

嵌套实体谓词还可以使用一些特定于实体的检查

类型描述
minecraft:sheepsheared匹配羊是否被剪毛
minecraft:slimeminecraft:magma_cubeminecraft:cube_mobsize使用数字或范围匹配史莱姆大小
minecraft:raideris_captainhas_raid当可用时,匹配巡逻队队长和袭击状态
minecraft:fishing_hookin_open_water当可用时,匹配鱼钩的开放水域状态

限制

  • 实体类型标签在语法上被接受但不会被解析。原版物品和方块标签在支持物品/方块谓词的地方会被解析
  • 实体级别的 componentspredicates 部分不受支持,并且会使谓词匹配失败
  • 不支持位置结构
  • NBT 匹配被有意限制;它仅支持 nbt 字符串内的简单记分板标签检查

On this page