Guides / Commands & Data

战利品表:池、掷骰以及条目与函数之间的区别

一个什么都不掉落的战利品表,通常是其权重或条件设置在了错误的层级。本文将解释每个嵌套层级的作用,以及值得了解的函数。

战利品表的 JSON 结构有四层深度,每一层都有不同的含义。几乎所有“我的表什么都不掉”的问题,都是因为条件附加到了与预期位置相差一层的层级上。

四个层级

table
└── pools[]          how many independent draws
    └── entries[]    what can come out of this draw
        └── functions[]   modify the item that came out
  • rolls 在池上表示该池抽取多少次。一个带有 rolls: 3 的池会从同一个条目列表中抽取三次。
  • weight 在条目上表示其在池内的相对权重。权重不需要总和为任何特定值;一个权重为 10 的条目与一个权重为 90 的条目相比,出现的概率是十分之一。
  • conditions 存在于每个层级,并且含义不同。在上,它们控制整个抽取过程。在条目上,它们控制该选项。在函数上,它们仅控制修改。

保证掉落需要独立的池

权重无法保证任何东西,因为一个池每次掷骰(roll)只会选择一个条目。一个必须始终掉落一张地图外加随机战利品的表需要两个池:

"pools": [
  { "rolls": 1, "entries": [ { "type": "minecraft:item", "name": "minecraft:filled_map" } ] },
  { "rolls": { "min": 2, "max": 4 }, "entries": [ … weighted list … ] }
]

第一个池只有一个条目,因此它总是会生成该条目。第二个池会从加权列表中掷骰 2-4 次。

值得了解的函数

函数作用
set_count固定数量或 uniform 范围
enchant_randomly随机附魔,可选自一个列表
enchant_with_levels像 N 级附魔台一样附魔——如果要求,包括宝藏附魔
set_components自定义名称、lore、任何数据组件
looting_enchant每级抢夺(Looting)的额外奖励;仅限实体表
set_damage耐久度以分数表示,所以 0.5 是半磨损状态
furnace_smelt当生物被火焰杀死时掉落的熔炼形式

enchant_with_levelsenchant_randomly 不可互换。前者模拟附魔台并遵循等级消耗;后者随意选择,可以生成游戏永远不会生成的组合。

人们常用的条件

  • random_chance — 一个固定的概率
  • random_chance_with_enchanted_bonus — 现代的考虑抢夺(Looting)的几率
  • killed_by_player — 你的稀有掉落物从坠落死亡中从未出现的原因
  • entity_properties — 检查受害者的类型、状态或装备
  • match_tool — 检查使用的工具,用于方块表

无需重建世界即可测试

/loot give @s loot my_pack:chests/treasure

将战利品表直接放入你的物品栏。/loot spawn/loot insert <pos>/loot replace 涵盖了其他放置方式。这比放置箱子和重新加载要快得多,而且是检查权重分布的唯一合理方法。

使用 高级战利品表生成器 构建多池表,并将函数和条件附加到正确的层级。

高级战利品表生成器 →

More guides

Browse all →

还想找别的我的世界工具?

一整套在浏览器里运行的生成器、查看器和转换器,全部免费。