手冊:交易

出自Minecraft基岩版开发Wiki
交易
獨立教學
難易度
中級
前置知識
實踐裝置
WindowsAndroidIOSMacOS
所需軟件

引言[編輯]

製作一個可以交易的實體需要 minecraft:trade_tableminecraft:economy_trade_table 元件。它們都可以透過給定的路徑開啟一個交易UI。
在開始這些前,我們需要已經擁有的任意一個實體,並在它的JSON中進行操作。

開始[編輯]


  下面所提到的所有功能也可以译作函数。

明確交易表[編輯]

  主条目:手册:制作附加包/交易表

交易表是 JSON 格式的檔案,用於定義實體的交易規則,它易與戰利品表混淆,其同樣在 行為包根目錄下 。
如果你需要繼續檢視交易表的內容,請先學習戰利品表的內容。
戰利品和交易表都具有類似的相同功能集。雖然大多數都適用於這兩種型別,但有些只在特定型別中工作。一般來說,戰利品/交易表是有限制的,例如:
交易表和戰利品表中的物品不能加入
can_place_oncan_destroy
標籤。

了解交易表功能[編輯]

附魔標籤[編輯]

下面這些可選的標籤允許您為物品設定獨特的附魔參數。

附魔標籤
名稱 型別 參數 介紹
enchant_book_for_trading 僅限交易表 base_cost,base_random_cost,per_level_cost,per_level_random_cost 此功能允許為生物出售的物品附魔為一本書的附魔。現在,這些參數不會影響收到的附魔,給出的預設值是強制規定的。或許將來,您將能夠調整這些值,以來幫助縮小此功能產生的附魔和附魔等級。
enchant_random_gear 通用 chance 使用與附魔裝備香草生物生成時相同的算法對物品進行附魔。採用 chance 修飾符來操作算法。請注意,1.0 的 chance 修正並不意味著裝備有 100% 的機率被附魔。相反,機率會根據難易度進行修改。在和平和輕鬆的困難中,無論如何,機率永遠是 0%。在困難難易度下,1.0 的 chance 將是 100%,但機率大約是普通難易度的 2/3。增加到 chance 高於 1.0 的數字有助於繞過普通難易度的機率降低。例如,設定為 chance 2.0 將始終在普通和困難難易度下為物品附魔。
enchant_randomly 通用 boolean 生成與物品相容的隨機附魔。支援可選寶藏附魔 boolean (真/假),透過此選項開啟和關閉寶藏附魔。寶藏附魔是無法透過附魔錶獲得的附魔,包括冰霜行者、修補、靈魂速度、束縛詛咒和消失詛咒。
enchant_with_levels 通用 treasure,levels 使用透過 levels 參數定義的最小和最大 XP 等級應用附魔,就好像它被附魔一樣。treasure(真/假)將允許使用純寶藏附魔。寶藏附魔是無法透過附魔錶獲得的附魔,包括冰霜行者、修補、靈魂速度、束縛詛咒和消失詛咒。
specific_enchants 通用 enchants 此功能允許您在物品上設定特定附魔的列表。它還允許您對遊戲中通常無法附魔的物品施加附魔。

展示:

//接下来的所有JSON,没有特殊声明都应当在 行为包/trades 的一个JSON文件中,大部分范例都应该写在 wants 下,没有特殊声明的情况下。
//enchant_book_for_trading
{
    "type": "item",
    "name": "minecraft:book"
    "quantity": 1,
    "functions": [
        {
            "function": "enchant_book_for_trading",
            "base_cost": 2,
            "base_random_cost": 5,
            "per_level_random_cost": 10,
            "per_level_cost": 3
        }
    ]
}
//enchant_random_gear
{
    "type": "item",
    "name": "minecraft:chainmail_boots",
    "weight": 1,
    "functions": [
        {
            "function": "enchant_random_gear",
            "chance": 0.25
        }
    ]
}
//enchant_randomly
{
    "type": "item",
    "name": "minecraft:leather_helmet",
    "weight": 1,//权重。它是选择此条目的几率,与此“条目”数组中的其他条目相比,权重越高,选择条目的机会就越大。
    "functions": [
        {
            "function": "enchant_randomly",
            "treasure": true
        }
    ]
}
//enchant_with_levels
{
    "type": "item",
    "name": "minecraft:diamond_sword",
    "weight": 1,
    "functions": [
        {
            "function": "enchant_with_levels",
            "treasure": true,
            "levels": {
                "min": 20,
                "max": 39
            }
        }
    ]
}
//specific_enchants
{
    "type": "item",
    "name": "minecraft:stick",
    "weight": 1,
    "functions": [
        {
          "function": "specific_enchants",
          "enchants": [
             "knockback",
             "fire_aspect"
          ]
       }
    ]
}
//您还可以将附魔定义为对象,以专门定义附魔级别。最大附魔等级是强制规定的,无法覆盖。如下
{
    "type": "item",
    "name": "minecraft:stick",
    "weight": 1,
    "functions": [
        {
          "function": "specific_enchants",
          "enchants": [
             {
                "id": "knockback",
                "level": 1
             },
             {
                "id": "unbreaking",
                "level": 3
             }
          ]
       }
    ]
}

傳回物品[編輯]

以下函式集允許您以不同的方式修改結果,例如設定傳回的專案數量、設定其資料值,甚至設定專案的名稱和lore(類似於藥水名稱下面跟著的灰色字型)。
注:僅限戰利品表的不予介紹

名稱 型別 參數 介紹
looting_enchant 僅限戰利品表
random_aux_value 通用 values 與 random_block_state 類似,允許您限制物品的資料值在限定範圍內
random_block_state 通用 block_state,values 允許您限制方塊的資料值在限定範圍內
random_dye 通用 values 允許您限制皮革物品的顏色值在限定範圍內

展示:

//looting_enchant
{
    "type": "item",
    "name": "minecraft:stick",
    "weight": 1,
    "functions": [
        {
            "function": "looting_enchant",
            "count": {
                "min": 0,
                "max": 1
            }
        }
    ]
}
//random_aux_value
{
    "type": "item",
    "name": "minecraft:dye",
    "weight": 1,
    "functions": [
        {
          "function": "random_aux_value",
          "values": {
            "min": 0,
            "max": 15
          }
        }
    ]
}
//random_block_state
{
    "type": "item",
    "name": "minecraft:stone",
    "weight": 1,
    "functions": [
        {
          "function": "random_block_state",
          "block_state": "stone_type",
          "values": {
            "min": 0,
            "max": 5
          }
        }
    ]
}

set開頭的續表:

名稱 型別 參數 介紹
set_actor_id 通用 id 此功能僅適用於生物蛋(指id為spawn_egg,而不是像id為allay_spawn_egg),用於設定該生物蛋生成實體 的ID。在省略 id 參數的情況下,直接給出spawn_egg
set_banner_details 通用 type 此功能僅適用於 旗幟 。其中,type 參數目前僅能為1,在type為1的情況下生成掠奪者旗幟
set_book_contents 通用 author,title,pages 此功能允許您像編寫 書和羽毛筆 的物品tag標籤一樣,設定 書和羽毛筆 的tag標籤。因此此功能僅適用於 書和羽毛筆
set_count 通用 count 此功能允許您設定傳回物品的數量,其中 count 參數可以是準確的整數,也可以是一個範圍(像展示的第2種情況)
set_damage 通用 damage 此功能允許您設定傳回物品的損壞程度,像在 指令 中一樣,damage 其實是傳回物品的剩餘耐久度佔總耐久的百分比(例如,1.0就是不損壞,0.0就是完全損壞)
set_data 通用 data 此功能允許您定義傳回物品的資料值(當物品為方塊時同樣適用),data 參數即為準確資料值
set_data_from_color_index 通用(在交易表中無效) 無值
set_lore 通用 lore(暫不支援Rawtext) 此功能允許您設定物品的 lore ,像編寫任何物品的 tag 標籤中的lore一樣,一個物品可以有多個 lore ,每個 lore 在遊戲中皆有一行
set_name 通用 name(暫不支援Rawtext) 此功能允許您設定專案的名稱。

展示

//set_actor_id
{
    "type": "item",
    "name": "minecraft:stone",
    "weight": 1,
    "functions": [
        {
            "function": "set_actor_id",
            "id": "sample:cool_entity"
        }
    ]
}
//省略 id 的情况
{
    "type": "item",
    "name": "minecraft:spawn_egg",
    "weight": 1,
    "functions": [
        {
            "function": "set_actor_id"
        }
    ]
}
//set_banner_details
{
    "type": "item",
    "name": "minecraft:banner",
    "weight": 1,
    "functions": [
        {
            "function": "set_banner_details",
            "type": 1
        }
    ]
}
//set_book_contents
{
    "type": "item",
    "name": "minecraft:written_book",
    "functions": [
        {
            "function": "set_book_contents",
            "author": "作者",
            "title": "书名",
            "pages": [
                "Once upon a time there were some marketplace partners that had to edit items using NBT. And it made them sad.",
                "Then the Bedrock team added the ability to customize items from JSON and everyone rejoiced."//页面,每一行(元素)代表一个页面里的内容,这两个页的内容取自官方文档。
            ]
        }
    ]
}
//set_book_contents 还允许使用 Rawtext ,下面是范例(取自官方文档)
{
    "type": "item",
    "name": "minecraft:written_book",
    "functions": [
        {
            "function": "set_book_contents",
            "author": "Steve",
            "title": "Creator Woes",
            "pages": [
                "{\"rawtext\":[ {\"translate\":\"custom.book.page.1\"}]}",
                "{\"rawtext\":[ {\"translate\":\"custom.book.page.2\"}]}"
            ]
        }
    ]
}
//set_count
{
    "type": "item",
    "name": "minecraft:stone",
    "weight": 1,
    "functions": [
        {
          "function": "set_count",
          "count": 5
        }
    ]
}
//count 参数也可以有最大/最小范围,下面是范例
{
    "type": "item",
    "name": "minecraft:stone",
    "weight": 1,
    "functions": [
        {
          "function": "set_count",
          "count": {
            "min": 1,//最小值
            "max": 6//最大值
          }
        }
    ]
}
//set_damage
{
    "type": "item",
    "name": "minecraft:iron_leggings",
    "weight": 1,
    "functions": [
      {
        "function": "set_damage",
        "damage": 0.5
      }
    ]
}
//它也能够定义最小值和最大值
{
    "type": "item",
    "name": "minecraft:iron_leggings",
    "weight": 1,
    "functions": [
      {
        "function": "set_damage",
        "damage": {
          "min": 0.3,
          "max": 0.9
        }
      }
    ]
}
//set_data
{
    "type": "item",
    "name": "minecraft:stone",
    "functions": [
        {
            "function": "set_data",
            "data": 4
        }
    ]
}
//set_data_from_color_index
{
    "type": "item",
    "name": "minecraft:wool",
    "weight": 1,
    "functions": [
        {
            "function": "set_data_from_color_index"
        }
    ]
}
//set_lore
{
    "type": "item",
    "name": "minecraft:stick",
    "weight": 1,
    "functions": [
        {
            "function": "set_lore",
            "lore": [
                "Big Stick has been handed down",
                "for generations from King to Prince",
                "until it went missing four score ago"
                //上面这几段 lore 取自 官方文档
            ]
       }
    ]
}
//set_name
{
    "type": "item",
    "name": "minecraft:stick",
    "weight": 1,
    "functions": [
        {
            "function": "set_name",
            "name": "名称"
        }
    ]
}

雜項[編輯]

這些是 無法分到上面任何一個型別中單獨挑出來的 功能。
雜項比較複雜,每個功能單獨講。

建立交易表[編輯]

  如果您对上面这些内容足够了解,并完成了战利品表的知识之后,你就可以开始创建交易表了

下面的內容將幫助您建立一個交易表:

檔案格式[編輯]

參考[編輯]

  1. 官方文件:戰利品表簡介
  2. 官方文件:戰利品表與交易表函式
  3. 我的世界wiki:戰利品表