Minecraft Wiki

除另有声明,转载时均必须注明出处若簡繁轉換出錯,請以遊戲內為準请勇于扩充与修正内容有兴趣逛逛我们的微博沟通交流,欢迎到社区专页需要协助,请在告示板留言

了解更多

Minecraft Wiki
注册
Advertisement

战利品表(Loot table)是一种技术性JSON表,用于决定各个情况下生成什么物品,比如自然生成的容器的内容物破坏方块时的掉落物杀死实体时的掉落物钓鱼时可以钓上的物品猪灵的以物易物。它不会影响经验的掉落和不掉落物品的实体,比如大型史莱姆产生的史莱姆和虫蚀方块中的蠹虫

用途[]

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

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

    •  LootTable:战利品表用于容器在将来被打开,或者内容物发生其他互动的时候进行物品的装填。若是一个大箱子,则仅带有此标签的一半箱子会受到影响。
    •  LootTableSeed:生成战利品表的种子,类似于生成世界的种子。此项为空或者是0时则使用随机序列

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

生物而言:

  • 根标签。
    •  DeathLootTable:战利品表决定生物死亡时的掉落物品。
    •  DeathLootTableSeed:生成战利品表的种子,类似于生成世界的种子。此项为空或者是0时将使用随机序列

生物和容器的战利品表可以用/execute store/data merge修改。玩家还可以使用命令/loot将战利品表的内容给予实体或放进世界。

标签[]

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

  • :根标签。
    •  type:(可选,默认为generic战利品表上下文类型
    •  random_sequence:(可选)生成战利品使用的随机序列命名空间ID。
    •  functions:(可选)对将要产生的物品堆应用物品修饰器,修饰器按顺序应用。
    •  pools:(可选)这个战利品表的随机池的列表。每个被使用的随机池给予抽奖次数从物品列表中生成物品。
      • :一个随机池。
        •  conditions:(可选)决定了使用这个随机池的条件。如果指定了多个条件,则必须都满足。
        •  functions:(可选)对将要产生的物品堆应用物品修饰器,修饰器按顺序应用。
        •  rolls:指定在抽奖池中抽奖的基础次数。
          • 数值提供器
        •  bonus_rolls:(可选,默认为0)指定每点幸运使得在此随机池中多抽奖的一定范围内的随机的次数。与幸运值相乘后向下取整。
          • 数值提供器
        •  entries:这个随机池能产生的所有物品的列表。每一次抽奖会随机根据权重选择一个符合条件的被抽出项。
          • :一个被抽出项。
            •  conditions:(可选)决定抽中该项的条件。如果指定了多个条件,则必须都满足。
            •  type:被抽出项的类型。可以是复合被抽出项(alternatives - 从列表中选择第一个满足条件的子项、group - 选择所有子项、sequence - 选择子项直到有一个子项不满足条件为止)或单一被抽出项(dynamic - 生成特定动态物品堆、empty - 什么都不生成、item - 生成单一物品堆、loot_table - 从另一个战利品表生成物品堆、tag - 生成指定物品标签的物品堆)。
              如果被抽出项是一个复合被抽出项,附加标签如下:
            •  children:待选被抽出项的列表。
              • :一个被抽出项。
                • 内部格式与上级相同。
              如果被抽出项是一个单一被抽出项,附加标签如下:
            •  functions:(可选)对将要产生的物品堆应用物品修饰器,修饰器按顺序应用。
            •  quality:(可选,默认为0,小于0修正为0)基于战利品表上下文实体的幸运修改物品堆被选择的权重。经过修改的权重为,其中b weight的值,q为此项的值,l为上下文中killer_entity(战利品表类型为entity时)或this_entity(战利品表类型不为entity时)实体的generic.luck属性值。
            •  weight:(可选,默认为1)决定了这个物品堆被选择的基础权重。物品堆被选中的概率为ws,其中w是物品堆经过幸运修改后的权重,s是所有物品堆的总权重。
              如果typedynamic,除单一被抽出项标签外,附加标签如下:
            •  name:动态计算物品堆的命名空间ID。可以为sherds饰纹陶罐动态掉落4个对应陶片)和contents潜影盒内物品)。
              如果typeitem,除单一被抽出项标签外,附加标签如下:
            •  name:生成物品堆物品的命名空间ID。如果物品修饰器不存在,则物品数量默认为1。
              如果typeloot_table,除单一被抽出项标签外,附加标签如下:
            •  name:引用战利品表的命名空间ID,不能直接或间接递归自身战利品表。
              如果typetag,除单一被抽出项标签外,附加标签如下:
            •  expand:决定物品堆权重行为。如果为true,则物品标签内每个物品堆相互独立且权重相同;如果为false,标签中的所有物品堆共用一个权重。
            •  name:生成物品堆物品标签的命名空间ID。如果物品修饰器不存在,则物品数量默认为1。

物品修饰器[]

主条目:物品修饰器

战利品表使用了多种给物品添加特殊数据的物品修饰器,比如堆叠数或者魔咒。

位于数据包<namespace>/item_modifiers目录下的文件拥有和这些物品修饰器相同的格式结构。

所有的物品修饰器请参见物品修饰器

战利品表谓词[]

主条目:谓词

战利品表使用了诸多判断条件来设置实体的掉落和随机池。参考谓词以了解所有可能的的条件。

战利品表上下文[]

当游戏生成战利品时,会创建一个“上下文”用于存储当前用于生成战利品的参数,并将此上下文传入战利品表进行计算。上下文内包含各种参数,以供战利品表复杂的条件检查和物品修饰使用。

上下文参数[]

战利品表上下文中共含有10种参数,这些参数根据战利品表类型的不同可能不存在。

  • this_entity - 引起战利品生成的实体,在实体谓词中为this
  • last_damage_player - 伤害死亡实体的最后玩家,在实体谓词中为killer_player
  • killer_entity - 导致实体死亡的伤害追踪来源实体,在实体谓词中为killer
  • direct_killer_entity - 直接导致实体死亡的实体,在实体谓词中为direct_killer
  • damage_source - 导致实体死亡的伤害来源
  • origin - 引起战利品生成的来源位置
  • block_state - 交互的方块状态
  • block_entity - 交互的方块实体
  • tool - 交互使用的工具
  • explosion_radius - 爆炸半径

上下文类型[]

加载数据包时,将使用根标签下的 type字段来检查此战利品表使用的上下文参数是否与指定的上下文类型匹配。该字段可以检查战利品表文件中的错误,而无需在游戏中应用它们。如果战利品表用于特定上下文,则指定类型字段允许游戏检查战利品表文件是否使用该上下文中不会提供的参数。

根据不同类型,可能会向谓词、物品修饰器和数值提供器提供不同的参数。下列是游戏内14种战利品表上下文类型:

empty - 空战利品表
  • 当引用的战利品表不存在时,游戏默认使用此上下文类型的战利品表。
  • 此上下文类型无法传递任何上下文参数。
generic - 默认上下文类型
  • 不用于生成战利品。
  • 提供所有上下文参数,使用此类型代表加载数据包时不会检查此战利品表的上下文参数。
advancement_reward - 进度奖励战利品表
  • 玩家获得进度奖励战利品时使用此上下文类型。
  • 此类型上下文中一定提供origin参数代表玩家的位置,一定提供this_entity参数代表玩家实体。
archaeology - 考古战利品表
  • 清刷可疑的方块使用的战利品表的类型,不用于计算,负责定义战利品表。
  • 此类型上下文中一定提供origin参数代表方块的位置,可能提供this_entity参数代表清刷方块的实体。
barter - 以物易物战利品表
  • 与猪灵以物易物时使用此上下文类型。
  • 此类型上下文中一定提供this_entity参数代表正在以物易物的猪灵实体。
block - 方块战利品表
  • 方块被破坏时使用此战利品上下文类型。
  • 使用命令/loot … mine <pos>也可以使用此类型上下文。
  • 此类型上下文中一定提供origin参数代表被破坏的方块位置,一定提供block_state参数代表被破坏方块的方块状态,一定提供tool参数代表破坏时使用的工具,可能提供this_entity参数代表破坏方块的实体,可能提供block_entity参数代表破坏方块包含的方块实体,可能提供explosion_radius代表此方块被爆炸破坏时爆炸的威力。
chest - 容器战利品表
  • 当打开带有战利品表的容器时使用此类型上下文。容器可以是木桶箱子陷阱箱漏斗运输矿车漏斗矿车发射器投掷器潜影盒
  • 可疑的方块也使用此类型上下文进行生成,但定义战利品表使用archaeology类型。
  • 使用命令/loot … loot <loot_table>也可以使用此类型上下文。
  • 此类型上下文中一定提供origin参数代表容器的位置,可能提供this_entity参数代表打开或清刷容器的实体。
entity - 生物死亡战利品表
  • 生物死亡时计算生物掉落物使用此上下文类型。
  • 使用命令/loot … kill <target>也可以使用此类型上下文。
  • 此类型上下文中一定提供this_entity参数代表死亡的实体,一定提供origin参数代表死亡位置,一定提供damage_source参数代表导致实体死亡的伤害来源,可能提供killer_entity参数代表导致实体死亡的伤害追踪来源实体,可能提供direct_killer_entity参数代表直接导致实体死亡的实体,可能提供last_damage_player参数代表伤害死亡实体的最后玩家。
fishing - 钓鱼战利品表
  • 钓鱼时使用此上下文类型。
  • 使用命令/loot … fish <loot_table>也可以使用此类型上下文。
  • 此类型上下文中一定提供origin参数代表浮漂的位置,一定提供tool参数代表使用的工具,可能提供this_entity参数代表浮漂实体。
gift - 礼物战利品表
  • 村民给予玩家礼物、嗅探兽刨挖时使用此上下文类型。
  • 此类型上下文中一定提供origin参数代表猫、村民或嗅探兽的位置,一定提供this_entity参数代表猫、村民或嗅探兽实体。
advancement_entity - 进度实体谓词上下文
  • 不用于生成战利品,只用于进度实体谓词判断。
  • 此类型上下文中一定提供origin参数代表触发准则的玩家位置,一定提供this_entity参数代表被检查的实体。
advancement_location - 进度位置信息谓词上下文
  • 不用于生成战利品,只用于进度位置信息谓词判断。
  • 此类型上下文中一定提供origin参数代表交互的位置,一定提供this_entity参数代表玩家,一定提供tool参数代表玩家使用的工具,一定提供block_state参数代表进行交互的方块。
command - 命令上下文
  • 不用于生成战利品,只用于谓词判断和修饰物品。
  • /item modify/execute (if|unless) predicate使用此上下文。
  • 此类型上下文中一定提供origin参数代表命令的执行位置,可能提供this_entity参数代表执行命令的实体,即目标选择器@s
selector - 目标选择器上下文
  • 不用于生成战利品,只用于谓词判断。
  • 目标选择器参数predicate内部使用。
  • 此类型上下文中一定提供origin参数代表被检测实体的位置,一定提供this_entity参数代表被检测的实体。

战利品表[]

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

数据包[]

主条目:数据包

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

  • 世界保存文件夹
    • datapacks
      • 数据包名称
        • data
          • 自定义命名空间
            • loot_tables
              • 战利品表名称(.json)

如果该文件夹的名字为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/里的testing1.json。而testing:test/testing2就是指定存档/datapacks/数据包名称/data/testing/loot_tables/test/里的testing2.json。命名空间如果是minecraft,则可以省略。

历史[]

Java版
1.92015年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.1pre1发射器投掷器现在使用战利品表。
添加了缺省表 chests/jungle_temple_dispenser
1.1116w32a驴、骡、尸壳和僵尸村民现在从它们各自的战利品表中抽取,而不是分别从马和僵尸的战利品表抽取。
16w43a村民,恼鬼和末影龙现在有了它们各自的战利品表。
1.1317w43a自定义战利品表现在移入数据包
1.1418w43a方块的掉落也改为使用战利品表了。
战利品表现在获得了一批新选项。
在箱子和方块的战利品表中将实体设置为"this"时现在指玩家。
18w44a现在为猫,cat_morning_gift,玩家,女巫加入了战利品表。
为新加入的方块加入了战利品表。
18w46a幻术师加入了战利品表。
18w48a村庄加入了更多战利品表,其中有些尚未使用。
移除了战利品表: village_blacksmith
18w49a战利品表 village_savanna_housevillage_snowy_house现在被使用了。
村庄加入了更多战利品表
18w50a战利品表 village_desert_housevillage_taiga_house现在被使用了,这让所有之前未使用的战利品表都被使用了。
1.1519w34a加入了函数copy_state
1.1620w12a加入了fishing_hook子谓词以检查鱼钩的属性。
pre3下界传送门方块加入了战利品表。
1.19.322w46a末影人死亡时掉落的手持的方块加入了战利品表。
1.20pre1加入了随机序列用于控制未指定种子的战利品表生成。
1.20.223w32a加入了函数sequence
all_of战利品表谓词现在可以隐性声明为无类型内联数组。

语言

Advertisement