本文以示例作为例子详解。

标准表达

物品

{
        "item": "minecraft:diamond",物品注册名
        "count": 1,数量(可以超越堆叠上限)
        "data": 0, 元数据(如果物品拥有元数据则必须要提供,也可以当作damage使用)
        "nbt": "{haha:true}",  nbt,
        "enchantment": [
        由于mc1.12.2附魔在nbt中使用数字id,因此此处使用单独的方法额外添加附魔。可不写,使用nbt直接编辑效果等同
          {
            "name": "minecraft:fire_protection",
            "level": 12
            level也可以写作范围
            "level":{
                "type":"minecraft:price",
                "min": 12,
                "max":12
            }
          }
        ]
 }

范围

原版限制物品数量不得超过255,否则取余

例如514=256+256+2=2

均匀取值

{
        "type":"minecraft:price",如果没有type字段,则默认type为"minecraft:price"。
        "min": 1,最小值
        "max": 2最大值
}

常数

{
    "type":"cvh:constant",
    "constant":1常数
}

柏松分布

{
      "type":"cvh:poisson_distribution",
      "min": 1,最小值
      "max": 22,最大值
      "lambda":5平均值
       柏松分布,但是取值在[min,max)内。
       取值不要太大,因为乘阶。
}

欧皇也开不出太逆天的交易(x

村民职业

主职业

职业的主要类别。

0_profession.json

{
  "type": "minecraft:profession", 主要类型,声明这是一个主职业json
  "professionName": "cvr:example",主职业注册名,重复会导致崩溃
  "villageTexture": "null:null.png",村民的贴图
  "zombieTexture": "null:null.png"僵尸村民的贴图
}

副职业

具体的职业,交易的实际作用者。

1_cancer.json

{
  "type": "minecraft:cancer",主要类型,声明这是一个副职业json
  "career": "career",职业名,单字符串,可以重复,关乎村民交易界面标题翻译键
  "profession": "cvr:example"主职业
}

交易

物品换绿宝石

2_emerald_for_items.json

Json的填写详解-第1张图片2_emerald_for_items.json效果

{
  "type": "minecraft:emerald_for_items",主要类型,声明这是一个绿宝石换物品交易json
  "profession":"cvr:example",绑定的主职业
  "career": "career",绑定的副职业
  "level": 1,这个交易的解锁等级,最低为1,可不填写,默认为1
  "trade":{交易的主要内容,其余交易的上面部分等同,差别在trade内部
     1.0.2之前minecraft:emerald_for_items有Bug,to和from的实际内容反了。
     在1.0.2之后这个bug被修复,可以任意填,会自动分析
     下方是反填的示例
     实际上,这里并不存在to和from,因为村民始终提供一个绿宝石
    "from": {玩家需要提供的(但在物品换绿宝石中是村民提供的)
      "price": {物品的数量,在两个中间随机取值(这是一个本mod标准范围表达)
        "min": 1,
        "max": 2
      }
    },
    "to": {村民提供的(但在物品换绿宝石中是玩家提供的)
      "item": {物品(这是一个本mod标准物品表达)
        "item": "minecraft:diamond",物品注册名
        "count": 1,数量(可以超越堆叠)
        "data": 0, 元数据(如果物品拥有元数据则必须要提供,也可以当作damage使用)
        "nbt": "{haha:true}",  nbt,
        "enchantment": [由于mc1.12.2附魔在nbt中使用数字id,因此此处使用单独的方法额外添加附魔。可不写,使用nbt直接编辑效果等同
          {
            "name": "minecraft:fire_protection",
            "level": 12
          }
        ]
      }
    }
  }
}

物品和绿宝石换物品

3_item_and_emerald_to_item.json

Json的填写详解-第2张图片3_item_and_emerald_to_item.json效果

{
  "type": "minecraft:item_and_emerald_to_item",
  "profession":"cvr:example",
  "career": "career",
  "level": 1,
  "level": 1,
  "trade":{
    "from": {
      "price": {绿宝石的数量
        "min": 1,
        "max": 2
      },
      "count": {物品的数量,覆盖物品count
        "min": 1,
        "max": 2
      },
      "item": {物品
        "item": "minecraft:dirt",
        "count": 1,
        "data": 0,
        "nbt": "{haha:true}",
        "enchantment": [
          {
            "name": "minecraft:fire_protection",
            "level": 12
          }
        ]
      }
    },
    "to": {
      "count":{物品数量
        "min": 3,
        "max": 4
      },
      "item": {物品
        "item": "minecraft:iron_sword",
        "count": 1,
        "data": 0,
        "nbt": "{haha:true}",
        "enchantment": [
          {
            "name": "minecraft:fire_protection",
            "level": 5
          }
        ]
      }
    }
  }
}

绿宝石换物品

4_list_item_for_emeralds.json

Json的填写详解-第3张图片4_list_item_for_emeralds.json效果

{
  "type": "minecraft:list_item_for_emeralds",
  "profession":"cvr:example",
  "career": "career",
  "level": 1,
  "trade":{
    "from": {
    
    价格:如果这里取负数,则表达一个绿宝石能够购买的物品数量。
    
       非标准范围表达(1.1.3移除)
      "minPrice": 1,所需绿宝石的最小数量
      "maxPrice": 2所需绿宝石的最大数量
      
      1.1.3新增:
      "price":{标准范围
              "type":"minecraft:price",
               "min": 1,
               "max": 2
      }
    },
    "to": {
      "item": {物品标准表达式(mod)
        "item": "minecraft:apple",
        "count": 10,
        "data": 0,
        "nbt": "{haha:true}",
        "enchantment": [
          {
            "name": "minecraft:fire_protection",
            "level": 114
          }
        ]
      }
    }
  }
}

物品格

5_cvh_slots.json

Json的填写详解-第4张图片5_cvh_slots.json效果

{
  "type": "cvh:slots",
  "profession":"cvr:example",
  "career": "career",
  "level": 1,
  "trade":{
    "from": {
      "slot1": {
        "price": {
          "type":"cvh:poisson_distribution",
          "min": 1,
          "max": 22,
          "lambda":5
        },
        "item": {
          "item": "minecraft:dirt",
          "count": 1,
          "data": 0,
          "nbt": "{haha:true}",
          "enchantment": [
            {
              "name": "minecraft:fire_protection",
              "level": {
                "type":"cvh:poisson_distribution",
                "min": 1,
                "max": 22,
                "lambda":5
              }
            }
          ]
        }
      },
      "slot2": {
        "price": {
          "type":"cvh:poisson_distribution",
          "min": 1,
          "max": 22,
          "lambda":5
        },
        "item": {
          "item": "minecraft:diamond",
          "count": 1,
          "data": 0,
          "nbt": "{haha:false}",
          "enchantment": [
            {
              "name": "minecraft:fire_protection",
              "level": {
                "type":"cvh:poisson_distribution",
                "min": 3,
                "max": 5,
                "lambda":4
              }
            }
          ]
        }
      }
    },
    "to": {
      "slot3": {
        "price":{
          "type":"cvh:constant",
          "constant":32
        },
        "item":{
          "item": "minecraft:apple",
          "count": 10,
          "data": 0,
          "nbt": "{haha:true}",
          "enchantment": [
            {
              "name": "minecraft:fire_protection",
              "level": {
                "type":"cvh:constant",
                "constant":32
              }
            }
          ]
        }
      }
    }
  }
}