交易表¶
交易表(Trade Table)是Minecraft基岩版行为包中定义实体交易内容的数据文件。交易表指定了可进行交易的实体(如村民、流浪商人)所提供的交易项目及其解锁条件。
概述¶
交易表通过JSON格式定义一组分层的交易内容。在实体的行为定义中,通过minecraft:economy_trade_table或minecraft:trade_table组件引用交易表文件路径。当玩家与拥有交易表的实体交互时,游戏读取交易表数据并生成该实体的交易列表。
交易表文件位于行为包的trading/目录中。
基本结构¶
交易表由多个层级(Tier)组成,每个层级包含一组交易项目。层级通过实体的交易经验和等级系统依次解锁。每个层级中的交易项目又分为若干组(Group),组内的交易项目按一定规则随机选取。
交易表结构概要
{
"tiers": [
{
"total_exp_required": 0,
"groups": [
{
"num_to_select": 2,
"trades": [
{
"wants": [{"item": "minecraft:wheat", "quantity": 20}],
"gives": [{"item": "minecraft:emerald"}],
"max_uses": 16,
"trader_exp": 2
}
]
}
]
}
]
}
交易项目¶
每个交易项目包含以下核心字段:
wants- 玩家需要提供的物品列表,最多两个物品槽位。每个物品指定标识符和数量。
gives- 玩家会获得的物品列表。每个物品指定标识符、数量,还可以附加函数修饰(如附魔、地图数据等)。
max_uses- 该交易可使用的最大次数。当次数用尽后,交易会暂时锁定,直到实体进行补货。
trader_exp- 完成该交易时给予实体的交易经验值,用于提升实体的交易等级。
交易等级¶
交易实体通过积累交易经验来提升等级,每个等级解锁对应层级的交易内容。原版村民拥有5个等级:新手、学徒、老手、专家和大师,分别对应5个交易层级。
交易函数¶
交易项目中的物品可以附加函数(Function)来修饰物品属性,类似于战利品表中的函数。常见的交易函数包括:
enchant_with_levels:以指定的等级范围进行随机附魔。enchant_randomly:随机附加一个魔咒。enchant_book_for_trading:为附魔书生成适合交易的魔咒。set_count:设置物品数量。exploration_map:将地图转换为藏宝图。