战利品表
WARNING
本文档仍在完善中。
战利品表用于从预设的物品集合中选取一组物品。战利品表可通过以下方式调用:
/loot命令- 容器内容物
- 方块掉落
- 钓鱼
- 生物掉落物
- 生成生物的装备
- 其他各类生物行为
每次调用同一战利品表时,根据外部条件和固有随机性,可能会选出不同的物品组合。这种变化性对于游戏体验和冒险探索至关重要,尤其是在RPG元素更重的系统中。
集成方式
战利品表并非注册的附加包条目,而是通过路径被上述来源引用。战利品表可放置在行为包的任何位置,但建议遵循原版规范,将其置于顶级目录loot_tables下。
- 📝cypress_door.json
结构
战利品表以JSON对象形式表示,必须包含一个"pools"数组属性。
{
"pools": [
…
]
}调用战利品表时返回的战利品将是此处提供的所有战利品池产出的总和。
战利品池
战利品池是独立的物品选择单元,各池之间的结果互不影响。
{
"rolls": 1,
"entries": [
{
"type": "item",
"name": "wiki:silver"
}
]
}有两种类型的战利品池:通用的权重随机池和分层池,后者传统上用于选择生物装备。
权重随机池
传统的权重随机池根据相对权重选择物品,通过配置的抽取次数决定产出数量。
{
"rolls": {
"min": 2,
"max": 4
},
"entries": [
{
"type": "item",
"name": "minecraft:golden_apple",
"weight": 20
},
{
"type": "item",
"name": "minecraft:appleEnchanted",
"weight": 1
},
{
"type": "item",
"name": "minecraft:name_tag",
"weight": 30
}
]
}抽取次数
附加抽取
权重随机池的抽取次数可通过可选的"bonus_rolls"属性根据玩家幸运值进行调整。
"bonus_rolls": 3,
"bonus_chance": 0.095条目权重
权重决定该条目被选中的几率。相对于"entries"数组中其他条目的权重越高,被选中的几率越大。
"weight": 3品质系数
条目的权重可通过quality属性根据玩家幸运值进行调整。
"quality": 2当前幸运值仅在使用"海之眷顾"附魔的钓鱼竿钓鱼时生效。
分层池
分层池用于从集合中精确选择一个条目。
{
"tiers": {
"initial_range": 2,
"bonus_rolls": 3,
"bonus_chance": 0.095
},
"entries": [
{
"type": "loot_table",
"name": "loot_tables/entities/armor_set_leather.json"
},
{
"type": "loot_table",
"name": "loot_tables/entities/armor_set_gold.json"
},
{
"type": "loot_table",
"name": "loot_tables/entities/armor_set_chain.json"
},
{
"type": "loot_table",
"name": "loot_tables/entities/armor_set_iron.json"
},
{
"type": "loot_table",
"name": "loot_tables/entities/armor_set_diamond.json"
}
]
}当包含"tiers"对象属性时,战利品池即成为分层池:
"tiers": {
"initial_range": 2,
"bonus_rolls": 3,
"bonus_chance": 0.095
}分层池中的条目是有序的。选定条目基于其索引确定,该索引通过随机滚动起始索引后,再通过一系列成功检定尝试递增该起始索引来确定。
起始索引通过随机生成1到整数属性"initial_range"之间的整数决定。若未提供初始范围,则默认为1,强制起始索引为1。
接着通过附加检定尝试推进索引。这些检定的次数由"bonus_rolls"给出整数。每次检定成功的几率由"bonus_chance"给出。"bonus_chance"的几率基于1计算,即0.5表示每次附加检定有50%的成功率。每次成功检定使索引增加1。这两个属性默认为0,意味着要使用此附加检定机制必须同时提供这两个属性。
最终确定的索引用于选择对应条目作为该池的产出。分层池中的索引从1开始计数,即第一个条目的索引为1,第二个为2,以此类推。若确定的索引大于该池的条目数量,则不会产生任何产出。
WARNING
分层池中所有条目上的条件都会被忽略。池本身的条件仍然有效。
条目
条目是战利品池中的可选单元。有三种不同类型的条目。
物品条目
物品条目是选择战利品的基础条目类型。
"type": "item",
"name": "minecraft:apple",
"weight": 1战利品表条目
可通过战利品表条目形成战利品层级结构。
"type": "loot_table",
"name": "loot_tables/custom/example.json"
"weight": 1空条目
当选中空条目时,该次抽取不会产生任何战利品。
"type": "empty",
"weight": 4空条目通常可通过包含0的抽取范围、随机几率条件或可能随机选择0的数量函数来模拟。其主要优势在于使用权重随机池时的可读性:通过权重明确表示某次抽取不会产生条目可能更易于理解。
函数
函数是战利品表如此强大的原因。它们能为战利品表中的每个条目执行多种任务。例如,它们可以改变物品掉落数量、附魔效果(即使是通常不可附魔的物品)、物品名称、描述文本,甚至可以编写书本!查看物品函数获取完整函数列表及使用方式。
{
"type": "item",
"name": "minecraft:dirt",
"weight": 10,
"functions": [
{
"function": "set_count",
"count": {
"min": 16,
"max": 64
}
},
{
"function": "set_name",
"name": "Pile of dirt"
}
]
}条件
条件用于检查是否满足特定标准。例如:"僵尸是否被玩家击杀"、"剑是否带有抢夺附魔?若有,等级是多少?"
{
"conditions": [
{
"condition": "killed_by_player"
},
{
"condition": "random_chance_with_looting",
"chance": 0.025,
"looting_multiplier": 0.01
}
],
"rolls": 1,
"entries": [
{
"type": "item",
"name": "minecraft:iron_ingot",
"weight": 1
},
{
"type": "item",
"name": "minecraft:carrot",
"weight": 1
},
{
"type": "item",
"name": "minecraft:potato",
"weight": 1
}
]
}

