此特性为Java版独有。
物品修饰器是用于在命令/item
中为已有的物品添加战利品表函数的技术性JSON文件。物品修饰器是数据包的一部分。
用途[]
物品修饰器可用于在/item
命令内为物品附加战利品表函数。
原版游戏内不存在物品修饰器,只能通过数据包创建。
文件结构[]
|
JSON结构[]
- 包含多个物品修饰器对象的列表,其效果等效于
sequence
类型。里面的内容与下方的物品修饰器对象一致。 - 一个物品修饰器。
- function:应用物品修饰器类型的命名空间ID。可用的类型将在下方列出。
- 对于类型要求的额外标签,在下面和对应类型一并列出。
以下为 function的可能取值及其相关的额外标签:
- apply_bonus - 修改物品的数量。
- enchantment:用来进行魔咒等级计算的魔咒ID。
- formula:计算公式。可选值为
uniform_bonus_count
(均匀分布随机数)、ore_drops
(矿物掉落随机算法)和binomial_with_bonus_count
(二项分布随机数)。 - parameters:计算所需的参数。
- 如果 formula是
uniform_bonus_count
,则为均匀分布的随机数,值域为,其中l是魔咒等级,c是物品数量:
- 如果 formula是
- bonusMultiplier:均匀分布中的乘数,即公式中的b。
- 如果 formula是
ore_drops
,则为矿物掉落算法。如果魔咒等级l为0,则返回物品数量c;如果魔咒等级l大于0,则最终物品数量可以根据魔咒等级翻倍,最高可以为原数量的倍。 - 如果 formula是
binomial_with_bonus_count
,则为二项分布随机数。物品最终的数量为原数量与这个二项分布随机数的和。
- 如果 formula是
- extraRounds:额外计算的次数。二项分布计算的n为魔咒等级与额外计算次数之和。
- probability:二项分布中的概率p。
- copy_name - 将物品的名称设置为对应实体或方块实体的名称。
- source:物品名称的来源。可以为
this
(执行战利品生成的实体)、killer
(杀死本实体的实体)、killer_player
(杀死本实体的玩家)和block_entity
(物品对应方块的方块实体)。
- source:物品名称的来源。可以为
- copy_nbt - 拷贝NBT到物品的标签中。
- ops:复制操作列表。
- :一个复制操作。
- op:设置为
replace
以替换目标的所有存在的内容,设置为append
以追加到一个列表,或设置为merge
以融合到一个复合标签。 - source:复制源的NBT路径。
- target:要复制到的NBT路径。
- op:设置为
- :一个复制操作。
- source:指定NBT的复制源。可以是一个实体或方块实体,或引用一个命令存储。如果为字符串,则会指定一个实体或方块实体,值与下方 target相同。
- type:复制源的类型。可以为
context
(实体或方块实体)和storage
(使用命令存储)。- 如果 type为
context
,附加标签如下:
- 如果 type为
- target:指定作为复制源的实体或方块实体。可以为
block_entity
(物品对应方块的方块实体)、this
(执行战利品生成的实体)、killer
(杀死本实体的实体)、killer_player
(杀死本实体的玩家)和direct_killer
(进行直接击杀本实体的实体)。- 如果 type为
storage
,附加标签如下:
- 如果 type为
- source:指定作为复制源的命令存储的命名空间ID。
- type:复制源的类型。可以为
- ops:复制操作列表。
- copy_state - 当物品是由方块产生时,复制方块的方块状态到物品的
BlockStateTag
标签;否则此物品修饰器不做任何处理。- block:一个方块ID,如果与方块不匹配,这个修饰器将失效。
- properties:要复制的状态属性列表。
- :一个要被复制的方块状态属性名称。
- enchant_randomly - 为物品附上一个随机的魔咒。魔咒的等级也是随机的。
- enchantments:能够附上的魔咒。如果没有此标签,则随机选取此物品可以附上的所有非宝藏魔咒。
- :一项魔咒的命名空间ID。
- enchantments:能够附上的魔咒。如果没有此标签,则随机选取此物品可以附上的所有非宝藏魔咒。
- enchant_with_levels - 使用指定的魔咒等级附魔物品(大约等效于使用这个等级的附魔台附魔物品)。
- levels:指定该魔咒的等级。
- 数值提供器
- treasure:决定了物品是否能被附上宝藏魔咒。
- levels:指定该魔咒的等级。
- exploration_map - 将普通的地图物品变为一个指引到某个结构的探险家地图。如果物品不是地图,则不做任何处理。
- explosion_decay - 如果物品是因为方块被爆炸破坏而产生,执行该函数的每个物品有1/爆炸半径的概率消失,堆叠的物品会被分为多个单独的物品计算;否则此物品修饰器不做任何处理。
- fill_player_head - 将玩家头颅设置为指定玩家的头颅。如果物品不是玩家头颅则不做任何处理。
- entity:用于设置该玩家头颅的玩家。可以为
this
(执行战利品生成的实体)、killer
(杀死本实体的实体)、killer_player
(杀死本实体的玩家)和direct_killer
(进行直接击杀本实体的实体)。
- entity:用于设置该玩家头颅的玩家。可以为
- furnace_smelt - 将物品转变为烧炼后的对应物品。如果物品不可烧炼,则不做任何处理。
- limit_count - 限制物品数量。
- limit:限制物品的数量,物品数量会被钳制在此区间内。
- min:最小数量。
- 数值提供器
- max:最大数量。
- 数值提供器
- min:最小数量。
- limit:限制物品的数量,物品数量会被钳制在此区间内。
- looting_enchant - 决定了抢夺魔咒对该物品数量的影响。如果未使用,抢夺魔咒将对该物品没有效果。
- count:每等级抢夺魔咒使得物品需要增加的数量。
- 数值提供器
- limit:物品的最大数量,超过此数量会被强制限制在此数量。如果设置为0,则无限制。
- count:每等级抢夺魔咒使得物品需要增加的数量。
- reference - 引用另一个物品修饰器。
- name:物品修饰器的命名空间ID。如果发生循环调用,则会产生警告。
- sequence - 按照定义顺序依次执行物品修饰器。
- functions:物品修饰器列表。
- 内部标签与物品修饰器对象结构相同。
- functions:物品修饰器列表。
- set_attributes - 为物品加上属性修饰符。
- modifiers:属性修饰符列表。
- :一个修饰符。
- amount:指定修饰值。
- 数值提供器
- attribute:此修饰器修饰属性的命名空间ID。
- id:(可选)修饰符的UUID。
- name:修饰符的名称。
- operation:修饰符的运算模式,可以为
addition
(增量操作,Op0)、multiply_base
(倍率操作,Op1)和multiply_total
(最终倍乘操作,Op2)。 - slot:指定修饰符产生效果的槽位。值只能为
mainhand
(主手)、offhand
(副手)、head
(头盔)、chest
(胸甲)、legs
(护腿)或feet
(靴子)。当此项为列表时,列表内的字符串都为可以使修饰符产生效果的槽位。
- amount:指定修饰值。
- :一个修饰符。
- modifiers:属性修饰符列表。
- set_banner_pattern - 设置旗帜物品的图案。如果物品不是旗帜,则此修饰器不做任何处理。
- append:表示是否将图案追加在原先的图案上,否则将替换原先的图案。
- patterns:旗帜物品图案。
- :一项旗帜图案。
- color:旗帜图案的颜色。
- pattern:旗帜图案的类型。
- :一项旗帜图案。
- set_contents - 设置容器方块物品的内容物。
- entries:用于设置内容物的项目列表。
- 见战利品表#标签的 pools标签。
- type:容器方块物品的方块实体命名空间ID。
- entries:用于设置内容物的项目列表。
- set_count - 设置该物品的数量。
- add:(可选,默认为false)表示是否在原有的数量上继续增加数量,否则直接设置为对应数量。
- count:设置物品的数量。
- 数值提供器
- set_damage - 设置工具的损害值。
- add:(可选,默认为false)表示是否在原有的损害上继续增加损害值,否则直接设置为对应损害值。
- damage:设置物品损害值比率,1为未损坏,0为完全损坏。
- 数值提供器
- set_enchantments - 设置物品的魔咒。
- add:(可选,默认为false)表示是否在原有的魔咒等级上继续增加等级,否则替换原先的魔咒。
- enchantments:要添加的魔咒。
- <魔咒的命名空间ID>:指定魔咒及其等级。
- 数值提供器
- <魔咒的命名空间ID>:指定魔咒及其等级。
- set_loot_table - 为一个容器方块物品设定战利品表。
- name:指定战利品表的命名空间ID。
- seed:(可选)指定战利品表的种子。如果不存在或设为0,游戏将会使用随机序列。
- type:容器方块物品的方块实体命名空间ID。
- set_lore - 在物品上添加附加文本标签。
- entity:指定JSON文本里中
@s
表示的实体。可以为this
(执行战利品生成的实体)、killer
(杀死本实体的实体)、killer_player
(杀死本实体的玩家)和direct_killer
(进行直接击杀本实体的实体)。 - lore:物品的附加文本。
- :一个JSON文本。
- replace:(可选,默认为false)表示是否替换物品当前的附加文本,否则将在原有的附加文本后添加新的文本。
- entity:指定JSON文本里中
- set_name - 设置该物品的自定义名称。
- entity:指定JSON文本里中
@s
表示的实体。可以为this
(执行战利品生成的实体)、killer
(杀死本实体的实体)、killer_player
(杀死本实体的玩家)和direct_killer
(进行直接击杀本实体的实体)。 - name:物品自定义的名称,是一个JSON文本。
- entity:指定JSON文本里中
- set_nbt - 在该物品上添加NBT标签。
- tag:要添加的NBT标签,内部的双引号需要使用
\
转义。
- tag:要添加的NBT标签,内部的双引号需要使用
- set_potion - 设置物品包含的药水效果标签。
- id:药水ID.
历史[]
Java版 | |||||
---|---|---|---|---|---|
1.17 | 20w46a | 加入了物品修饰器。 | |||
1.18 | 21w39a | 加入了set_potion 类型。 | |||
1.19 | 21w17a | 加入了set_goat_horn_sound 类型。 | |||
22w18a | 将set_goat_horn_sound 类型改为set_instrument 。 | ||||
1.20 | 23w14a | 加入了reference 类型。 | |||
1.20.2 | 23w32a | 加入了sequence 类型。 |
组件 |
| ||
---|---|---|---|
数据包 | |||
教程 |
|
语言