Skip to content

战利品表

本页面镜像自
BedrockWiki

根据原始项目协议授权。本文经过AI翻译处理,如有内容遗漏,可以提交PR进行补充。

WARNING

本文档仍在完善中。

战利品表用于从预定义集合中选择一组物品。战利品表可通过以下方式调用:

  • /loot 命令
  • 容器内容物
  • 方块掉落
  • 钓鱼
  • 生物掉落
  • 生成生物的装备
  • 其他各类生物行为

每次调用同一战利品表时,基于外部条件内在随机性可能会选择不同的物品组合。这种变化性对于游戏可玩性和冒险体验至关重要,特别是在RPG元素更重的系统中。

集成方式

战利品表并非注册的附加包条目,而是通过路径引用。虽然可以放置在行为包任意位置,但建议遵循原版规范将其置于顶级loot_tables目录下。

📁BP
📁loot_tables
📁blocks
📝cypress_door.json

结构

战利品表由包含必需属性"pools"数组的JSON对象表示。

json
{
	"pools": [

	]
}

战利品表的调用结果将是所有池(pool)产出的总和。

池(Pools)

池是独立的物品选择单元,不同池之间的结果互不影响。

json
{
	"rolls": 1,
	
	"entries": [
		{
			"type": "item",
			"name": "wiki:silver"
		}
	]
}

存在两种池类型:通用型加权随机池分层池,后者传统上用于生物装备选择。

加权随机池

传统加权随机池根据相对权重选择物品,通过配置的roll次数决定产出数量。

json
{
	"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
		}
	]
}
抽取次数(Rolls)
附加抽取(Bonus Rolls)

可通过可选属性"bonus_rolls"基于玩家幸运值调整抽取次数。

json
// 示例待补充
条目权重

权重值决定条目被选中的概率。权重相对于其他条目越高,选中几率越大。

json
"weight": 3
质量(Quality)

通过quality属性可根据玩家幸运值调整条目权重。

json
"quality": 2

当前仅在使用附有"海之眷顾"附魔的钓鱼竿时生效。

分层池

分层池用于从集合中精确选择一个条目。

json
{
	"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"对象属性时即构成分层池:

json
"tiers": {
	"initial_range": 2,
	
	"bonus_rolls": 3,
	"bonus_chance": 0.095
}

分层池中的条目具有顺序性。选择过程分为两个阶段:

  1. 初始索引:在1到"initial_range"间随机选取整数
  2. 附加尝试:进行"bonus_rolls"次成功率"bonus_chance"的检定,每次成功索引+1

最终索引对应条目将被选中(索引从1开始)。若索引超出条目总数则不产出。

WARNING

分层池中条目的条件将被忽略,但池级别的条件仍然有效。

条目(Entries)

条目是池中的可选项,包含三种类型。

json
// 示例待补充

物品条目

基础条目类型,用于选择具体物品。

json
// 示例待补充

战利品表条目

支持嵌套调用其他战利品表。

json
// 示例待补充

空条目

选中时不产生任何物品。

json
"type": "empty",
"weight": 4

空条目的作用可通过0次抽取随机条件数量函数实现,主要优势在于提升加权随机池的可读性。

函数(Functions)

函数赋予战利品表强大功能,可实现:

  • 调整物品数量
  • 添加附魔(包括不可附魔物品)
  • 修改物品名称和描述
  • 编写书籍内容

详见物品函数文档

json
{
	"type": "item",
	"name": "minecraft:dirt",
	"weight": 10,
	"functions": [
		{
			"function": "set_count",
			"count": {
				"min": 16,
				"max": 64
			}
		},
		{
			"function": "set_name",
			"name": "Pile of dirt"
		}
	]
}

条件(Conditions)

条件用于检测特定标准是否满足,例如:

  • 僵尸是否被玩家击杀
  • 武器是否附有抢夺附魔及其等级
json
{
	"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
		}
	]
}

覆盖规则