<本站文本内容除另有声明外,转载时均必须注明出处。(详情…本站文本内容除另有声明外,转载时均必须注明出处。(详情…中文Minecraft Wiki是完全公开的。请勇于扩充与修正内容!中文Minecraft Wiki是完全公开的。请勇于扩充与修正内容!Minecraft中文Wiki微博正在更新!或许有兴趣去看看Minecraft中文Wiki微博正在更新!或许有兴趣去看看想与其他用户进行编辑上的沟通?社区专页正是为此创建的。想与其他用户进行编辑上的沟通?社区专页正是为此创建的。翻译或创建页面之前,不妨看看译名标准化Wiki条例页面。翻译或创建页面之前,不妨看看译名标准化Wiki条例页面。需要管理员的协助?在管理员告示板留言也许可以帮到您。需要管理员的协助?在管理员告示板留言也许可以帮到您。>

战利品表

来自Minecraft Wiki
跳转至: 导航搜索

战利品表(Loot table)是一种技术性JSON表。它的功能是用来替换自然生成的容器的内容物破坏方块时的掉落物杀死实体时的掉落物钓鱼时可以钓上的物品。它不会影响经验的掉落和不掉落物品的实体,比如大型史莱姆和方块中的蠹虫

用途[编辑 | 编辑源代码]

战利品表由诸多字符串标签和一个长整型标签组成,这些字符串标签决定了要使用的战利品表,长整型标签决定种子。在相同的种子下生物或者是容器会掉落相同的物品。战利品表不决定容器内容物的排列方式。这种随机完全基于种子。

对于箱子陷阱箱漏斗运输矿车漏斗矿车发射器投掷器潜影盒而言:










    •  LootTable:战利品表用于容器在将来被打开,或者内容物发生其他互动的时候进行物品的装填。 若是一个大箱子,则仅带有此标签的一半箱子会受到影响。

    •  LootTableSeed:生成战利品表的种子。此项为空或者是0时则使用随机的种子。

一旦容器内容物发生了互动(如打开箱子或破坏箱子等),这些标签会被移除,也只有这样,战利品才会出现在容器中。

生物而言:


  • 根标签。

    •  DeathLootTable:战利品表决定生物死亡时的掉落物品。

    •  DeathLootTableSeed:生成战利品表的种子,类似于生成世界的种子。此项为空或者是0时将使用随机的种子。

生物和容器的战利品表可以用/data/execute store/data merge修改。

玩家还可以使用命令/loot将战利品表的内容给予实体或放进世界。

标签[编辑 | 编辑源代码]

战利品表完全使用标准的JSON格式。下面是用到的具体的内容。


  •  根标签

    •  type: 战利品表的可选种类的命名空间ID值。必须是其中之一(命名空间minecraft:可以省略):minecraft:empty战利品表不生成任何战利品、minecraft:entity实体掉落物、minecraft:block方块掉落物、minecraft:chest宝藏箱战利品、minecraft:fishing钓鱼战利品表、minecraft:advancement_reward进度奖励、minecraft:generic以上都不。

    •  pools:这个实体的随机池的列表。每个随机池中都会随机抽取列表(entries)里面的物品。每个随机池都会指定其抽取次数(rolls)。

      • 一个随机池。

        •  conditions:决定了使用这个随机池的条件。如果指定了多个条件,则必须都满足。

          • 一个条件。

            •  condition:这个条件的命名空间ID值(默认命名空间minecraft:可省去)。具体名称将在下方列出。

        •  rolls:决定了在此随机池中抽奖的准确次数。

        •  rolls:决定了在此随机池中抽奖的次数范围,具体次数为该范围内的随机数。

          •  min:最小次数(含)。

          •  max:最大次数(含)。

        •  bonus_rolls:决定了每点幸运会使得在此随机池中多抽奖的次数。相乘后向下取整。

        •  bonus_rolls:决定了每点幸运使得在此随机池中多抽奖的次数的范围,取范围内的随机数。相乘后向下取整。

          •  min:额外抽奖的最小次数(含)。

          •  max:额外抽奖的最大次数(含)。

        •  entries:这个池中能抽出的东西列表。每一次抽奖会随机根据权重选择一个被抽出项(如果它符合指定条件)。

          • 一个被抽出项。

            •  conditions:决定抽中该项的条件。如果指定了多个条件,则必须都满足。

            •  type:被抽出项种类的命名空间ID值,其中默认命名空间minecraft:可以省略。可以填写minecraft:item选择物品项、minecraft:tag选择物品标签、minecraft:loot_table以另一个战利品表生成物品、minecraft:group选择子项、minecraft:alternatives从列表中选择一个子项、minecraft:sequence选择子项,直到有一个子项无法选择为止、minecraft:dynamic生成方块的特定掉落物、minecraftempty什么都不生成。

            •  name
              • 如果类别type是minecraft:item,则填写物品的ID。比如minecraft:diamond。默认在没有被functions影响的情况下,其数量为1。
              • 如果type是minecraft:tag,则填写使用的物品标签。比如arrows
              • 如果type是minecraft:loot_table,则填写使用的战利品表。比如minecraft:gameplay/fishing/junk
              • 如果type是minecraft:dynamic,则填写contents指定方块实体的内容物或self指定旗帜或玩家的头颅。

            •  children:
              • 如果type是minecraft:group,则填写用于生成战利品的项列表。可以用于行方便,比如一个条件适用于多个项时。
              • 如果type是minecraft:alternatives,则填写哪个项用于首个的列表,只有首个成功的项可以生成。
              • 如果type是minecraft:sequence,则填写使用的项列表,直到第一个项失败。当一个项失败时,此列表中的项都不再生成。

            •  expand: 如果type是minecraf:tag,并且设为true,将选择标签中的一个物品,每个物品的权重和质量都相同。如果设为false,将使用标签中的所有物品。

            •  functions:决定了抽中这个物品时对其执行函数(不是数据包中的函数)。如果没有被设置,它将不会被使用。必须按照顺序排放(会按照顺序执行),比如looting_enchant函数必须放在set_count函数之后以正常运作。

              •  一个函数

                •  function:要执行的函数的命名空间ID值。具体名称将在下方列出。

                •  conditions:决定了执行该函数的条件。具体名称将在下方列出。

            •  weight:决定了这个物品被选择的权重。这个值越高物品便越容易被选择(概率为这个物品的权重所有考虑的物品权重之和)。

            •  quality:基于杀死/开启箱子/钓鱼的玩家的幸运修改条目的weight。公式为weight + (quality * generic.luck)(向下取整)。

函数[编辑 | 编辑源代码]

战利品表使用了多种给物品添加特殊数据的函数,比如堆叠数或者附魔。下方是这些函数的列表以及使用它们用到的标签。这些标签都位于
 function标签下。

  • apply_bonus - 使用默认的随机池计算公式

    •  enchantment:用来进行等级计算的附魔ID

    •  formula:计算公式。可以设置为binomial_with_bonus_count进行二项分布计算(公式为n=level + extra,其中p=probability),uniform_bonus_count进行均匀分布计算(取值从0level * bonusMultiplier),或ore_drops使用原版游戏内置的计算矿物掉落的特殊函数计算(count * (max(0, random(0..1) - 1) + 1)).

    •  parameters:计算所需的参数。

      •  extra:参与binomial_with_bonus_count计算时的extra

      •  probability :参与binomial_with_bonus_count计算时的p

      •  bonusMultiplier :参与uniform_bonus_count计算时的因数bonusMultiplier
  • copy_name - 用于种类为block的战利品表,拷贝方块实体的CustomName标签到物品的display.Name标签。

    •  source: "block_entity" - 需要被设定为block_entity
  • copy_nbt - 拷贝NBT到物品的tag标签。

    •  source: 指定复制源。 设置为block_entity来表示被破坏了的方块的方块实体, 设置为this来表示死亡的实体或获得进度、打开容器或损坏方块的玩家,设置为 killer 来表示击杀者,或设置为killer_player来表示一个是玩家的击杀者。

    •  ops:操作列表。

      • 一个操作。

        •  source:要被复制的NBT路径。

        •  target:要复制到的NBT路径,从物品的tag标签开始。

        •  op:设置为replace以替换目标的所有存在的内容,设置为append以追加到一个列表,或设置为merge以融合到一个符合标签。
  • copy_state - 复制方块的方块状态到物品的BlockStateTag标签。

    •  block:一个方块ID,如果与方块不匹配,这个函数将失效。

    •  properties:操作列表。

      • 一个要被复制的方块状态名称。
  • enchant_randomly - 为物品附上一个随机的附魔。附魔的等级也是随机的。

    •  enchantments:能够附上的附魔。如果没有此标签,所有可以对该物品附上的附魔都可能被附上。
  • enchant_with_levels - 决定了物品的附魔等级。

    •  treasure:决定了物品是否能被附上宝藏附魔。

    •  levels:决定了该附魔的具体等级。

    •  levels:决定了该附魔的等级范围,在范围内随机抽取。

      •  min:使用的等级的最小值。

      •  max:使用的等级的最大值。
  • enchant_with_levels - 使用指定的附魔等级附魔物品(大约等效于使用这个等级的附魔台附魔物品)。

    •  treasure: 决定了物品是否能被附上宝藏附魔。

    •  levels: 决定了该附魔的具体等级。

    •  levels: 决定了该附魔的等级范围,在范围内随机抽取。

      •  min: 使用的等级的最小值。

      •  max: 使用的等级的最大值。
  • exploration_map - 将普通的地图物品变为一个指引到某个结构的探险家地图

    •  destination:目标结构的ID。和/locate命令中的参数一样(大小写敏感)。

    •  decoration:该结构在地图中显示的图标。接受所有地图图标ID(大小写敏感)。如果设置为mansiom或monument,地图物品的图标将会改变。可以是这些值,大小写敏感。

    •  zoom:地图缩放等级。默认为2。

    •  search_radius:搜寻的区块半径。搜寻的区域是方形,不是圆形。设置为0将只在当前区块搜寻,设置为1将会搜寻当前区块和周围的8个区块,以此类推。默认为50。

    •  skip_existing_chunks:是否不在已经生成过的区块搜寻。默认为true。
  • explosion_decay - 在“block”类型的战利品表中使用。如果该方块是被爆炸破坏的,执行该函数的每个物品有1/爆炸半径的几率消失,堆叠的物品会被分为多个单独的物品计算。
  • furnace_smelt - 物品将变为在熔炉烧炼后的状态。用于被火烧死动物死后掉落烧熟的食物。
  • fill_player_head - 设置玩家头颅的附加皮肤信息为指定玩家。

    •  entity:用于设置该玩家头颅的玩家。设置为this来表示死亡的实体或获得进度、打开容器或损坏方块的玩家,设置为 killer 来表示击杀者,或设置为killer_player来表示一个是玩家的击杀者。
  • limit_count - 限制每一种物品的堆叠数量的范围。

    •  limit:限制堆叠数量为一个精确数字。

    •  limit:限制堆叠数量为一个范围。

      •  min:限制的最小值。

      •  max:限制的最大值。
  • looting_enchant - 决定了抢夺附魔对该物品数量的影响。如果未使用,抢夺附魔将对该物品没有效果。

    •  count:决定了每等级抢夺附魔使得物品需要增加的准确数量。

    •  count:决定了每等级抢夺附魔使得物品需要增加的数量范围,在范围内取随机值。

      •  min:数量增加的最小值。

      •  max:数量增加的最大值。

    •  limit:指定在计算物品数量增加时的最大限制(也就是说,如果抢夺附魔等级足够高使算出数量超出此限制,则使用限制的数量而不是算出的数量)。如果这个值为0,则不会有限制。
  • set_attributes - 为物品加上属性修饰符。

    •  modifiers

      •  一个修改器

        •  name:修改器的名称。

        •  attribute:此修改器修改的属性的名称。

        •  operation:修改数值的方法。必须是addition、multiply_base或multiply_total。

        •  amount:指定修改的准确数值。

        •  amount:指定修改的数值的范围,在范围内随机抽取。

          •  min:最小数值。

          •  max:最大数值。

        •  id:可选:修改器的UUID。如果没有指定,新的UUID将会被生成。

        •  slot:只有当该物品放在指定的格子时,该修改器才有用,这个数值可以是以下任何一个:mainhand、offhand、feet、legs、chest、head。

        •  slot:列表中的其中一个格子会被随机选择
  • set_contents - 用于种类为block的战利品表,为这个方块容器设置内容物。

    •  entries:用于设置内容物的项目列表。格式与战利品表随机池中的entries一致。
  • set_count - 设置该物品的堆叠数量。

    •  count:决定了物品的具体堆叠数量。

    •  count:决定了物品的堆叠数量的最大值和最小值,在该范围内随机抽取。

      •  min:堆叠数量的最小值。

      •  max:堆叠数量的最大值。
  • set_damage - 设置工具的损伤值(耐久度)。

    •  damage:指定伤害的比率(1.0是没有使用过,0.0则是剩下0耐久度)。

    •  damage:指定一个随机的伤害比率(在一个范围之内)。

      •  min:最小值。

      •  max:最大值。
  • set_lore - 在物品上添加lore标签。

    •  lore: 一个JSON文本列表,列表中的每一个项都是物品的一行lore。

    •  entity: 指定JSON文本里的@s实体。设置为this以使这个实体为死亡的实体或得到进度,打开容器,打开容器,破坏方块的玩家;设置为killer以使这个实体为杀死实体的杀手;设置为killer_player以使这个实体为杀死实体的玩家。

    •  replace: 如果为true,则替换物品当前的lore;如果为false,则在物品lore后添加内容。
  • set_name - 设置该物品的自定义名称。它是一个JSON文本

    •  name:纯文本名称。

    •  nameJSON文本组合,允许设置其颜色、翻译等。

    •  entity: 指定JSON文本里的@s实体。设置为this以使这个实体为死亡的实体或得到进度,打开容器,打开容器,破坏方块的玩家;设置为killer以使这个实体为杀死实体的杀手;设置为killer_player以使这个实体为杀死实体的玩家。
  • set_nbt - 在该物品上添加nbt标签。

    •  tag:添加nbt标签,和命令的使用方法类似。注意最外层括号需要书写花括号({})以及内部的引号需要使用转义符(\)标记。
  • set_stew_effect - 为迷之炖菜添加状态效果

    •  effects: 要加上的状态效果。

      • 一个效果

        •  type: 状态效果ID。

        •  duration: 状态效果的时长。

条件[编辑 | 编辑源代码]

战利品表使用了诸多判断条件来设置实体的掉落,随机池或者函数。下面是条件的列表,以及使用它们所用到的标签。标签都位于
 condition下方。

  • alternative - 将terms中的条件用“或”运算。

    •  terms:一个条件数组。将被用“或”运算。
  • block_state_property - 检测被破坏的方块是否有指定的方块状态

    •  block:一个方块ID。如果被破坏的方块不满足该ID,则匹配失败。

    •  properties(可选)。一个从方块状态名称到方块状态值的映射。所有的值都应当为字符串。如果被破坏的方块不满足指定方块状态,则匹配失败。
  • entity_present - 当该实体存在时返回true。
  • entity_properties -决定了该条件的要求。

    •  entity:决定了被要求满足条件的实体。设置成this用于检测死亡的实体,killer检测杀死该实体的实体,killer_player检测杀死该实体的玩家。

    •  properties:必须满足的条件。

      •  on_fire:实体必须/不能是着火的。
  • entity_scores - 检测实体的分数。

    •  entity:决定了被要求满足条件的实体。设置成this用于检测死亡的实体,killer检测杀死该实体的实体,killer_player 检测杀死该实体的玩家。

    •  scores:检测的分数。

      •  一个记分项:实体对应的记分项的值必须为一个指定的值。记分项名称为该标签的名称,指定的值为该标签的值。

      •  一个记分项:实体对应的记分项的值必须在该范围内。

        •  min:分数的最小值。

        •  max:分数的最大值。
  • inverted - 将参数term中指定的条件取反。

    •  term:要取反的条件。
  • killed_by_player - 要求实体需要由玩家杀死。

    •  inverse:只有实体不被玩家杀死时候才会掉落。
  • random_chance - 随机生成一个0~1内的数值,并检测是否小于此数值,如果随机数小于指定数值则成功。

    •  chance:成功几率(0~1以内的数值)
  • random_chance_with_looting - 随机生成一个0~1的数值,并检测是否小于此数值,如果随机数小于指定数值则成功。(会被抢夺附魔的影响。)

    •  chance:基础成功几率(0~1以内的数值)

    •  looting_multiplier:每级抢夺附魔对基础几率的影响。公式是chance + looting_level * looting_multiplier.

战利品表[编辑 | 编辑源代码]

以下这些是默认存在的战利品表。

数据包[编辑 | 编辑源代码]

可以使用数据包修改原有的战利品表或者新建一个。以下是其文件结构:

  • <地图存档文件夹>
    • datapacks
      • 数据包名称
        • data
          • 命名空间
            • loot_tables
              • 战利品表(.json)

命名空间名字可以为minecraft或者是自定义的名字。

如果该文件夹的名字为minecraft,游戏就会用里面的文件来覆盖游戏主文件的loot_tables里的特定战利品表(存档/datapacks/数据包名称/data/minecraft/loot_tables路径等于游戏主文件里的/data/minecraft/loot_tables,同路径和名字的战利品表会取代.jar里相对的文件)。比如存档里的datapacks/数据包名称/data/minecraft/loot_tables/entities/zombie.json就会覆盖原版中的僵尸战利品表,地图中所有僵尸都会根据该表掉落。而存档里的datapacks/数据包名称/data/其他的命名空间/loot_tables/entities/zombie.json或者是datapacks/数据包名称/minecraft/loot_tables/zombie.json不会覆盖掉默认的战利品表,而可以用NBT标签来指定实体使用此自定义的战利品表。

战利品表名称的格式为命名空间ID,比如testing:testing1就是指定存档/datapacks/数据包名称/data/testing/loot_tables/testing里的testing1.json。而testing:test/testing2就是指定存档/datapacks/数据包名称/data/testing/loot_tables/test/里的testing2.json。命名空间如果是minecraft,则可以省略。

历史[编辑 | 编辑源代码]

Java版
1.9 2015年10月19日Dinnerbone宣布了制作战利品表。
15w43a 加入战利品表。
15w43b 增加条件entity_scores
15w43c 重命名“villager_golem.json”为“iron_golem.json”。
增加了钓鱼、无毛羊、僵尸马和骷髅马的战利品表。
重命名
 item
 name,重命名
 items
 entries
增加了
 type并支持读取一个战利品表以代替物品。
增加了
 luck
增加了函数set_damage
15w44a 增加了函数enchant_randomlyset_attributes
15w44b 添加了
 quality 标签。
移除了
 luck
 luck_multiplier标签。
添加了
 bonus_rolls 标签
15w51a 旁观者模式下的玩家将不再触发容器使用其战利品表来生成战利品。
1.9.1 pre1 发射器投掷器现在使用战利品表。
添加了缺省表 chests/jungle_temple_dispenser
1.11 16w32a 驴、骡、尸壳和僵尸村民现在从它们各自的战利品表中抽取,而不是分别从马和僵尸的战利品表抽取。
16w43a 村民,恼鬼和末影龙现在有了它们各自的战利品表。
1.13 17w43a 自定义战利品表现在移入数据包
1.14 18w43a 方块的掉落也改为使用战利品表了。
战利品表现在获得了一批新选项。
在箱子和方块的战利品表中将实体设置为"this"时现在指玩家。
18w44a 现在为猫,cat_morning_gift,玩家,女巫加入了战利品表。
为新加入的方块加入了战利品表。
18w46a 幻术师加入了战利品表。
18w48a 村庄加入了更多战利品表,其中有些尚未使用。
移除了战利品表: village_blacksmith
18w49a 战利品表 village_savanna_housevillage_snowy_house现在被使用了。
村庄加入了更多战利品表
18w50a 战利品表 village_desert_housevillage_taiga_house现在被使用了,这让所有之前未使用的战利品表都被使用了。
1.15 19w34a 加入了函数copy_state

漏洞[编辑 | 编辑源代码]

关于“战利品表”的漏洞由漏洞追踪器维护,请在此汇报漏洞。