跳转至

交易表

交易表(Trade Table)是Minecraft基岩版行为包中定义实体交易内容的数据文件。交易表指定了可进行交易的实体(如村民、流浪商人)所提供的交易项目及其解锁条件。

概述

交易表通过JSON格式定义一组分层的交易内容。在实体的行为定义中,通过minecraft:economy_trade_tableminecraft: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:将地图转换为藏宝图。