アドオン詳細解説 - 交易テーブル
目次 (折りたたみ可)
機能
村人や行商人、またはオリジナルのモブで交易をするモブに対して交易内容を定義します。
ファイルの場所
ビヘイビアのtradingフォルダにファイルを置きます。そのフォルダの中にさらにフォルダを作っても指定すれば使えます。
ビヘイビア
┣ manifest.json
┣ pack_icon.png
┗ trading
┗〇〇.json
基本の構造
{
"tiers": [
{
"total_exp_required": 0,
"groups": [
{
"num_to_select": 1,
"trades": [
{
"wants": [ { "item": "minecraft:apple", "quantity": 1 } ],
"gives": [ { "item": "minecraft:emerald", "quantity": 1 } ],
"trader_exp": 2,
"max_uses": 16,
"reward_exp": true
}
]
}
]
}
]
}
交易内容
基本の構造の、緑の枠で囲まれた部分が交易の内容です。
{
"wants": [ { "item": "minecraft:apple", "quantity": 1 } ],
"gives": [ { "item": "minecraft:emerald", "quantity": 1 } ],
"trader_exp": 2,
"max_uses": 16,
"reward_exp": true
}
wantsとgives
wantsが売るアイテム、givesが買うアイテム。
itemにアイテムのIDを、quantityに数を指定します。
上級設定
アイテムの複数指定
以下のようにして交易に使うアイテムを複数指定できます。(wantsもgivesも同様)
{
"wants": [
{ "item": "minecraft:apple", "quantity": 1 },
{ "item": "minecraft:coal", "quantity": 1 }
],
"gives": [ { "item": "minecraft:emerald", "quantity": 1 } ],
"trader_exp": 2,
"max_uses": 16,
"reward_exp": true
}
アイテム数のランダム化
以下の例だと、村人によって交易するのにリンゴが最低で1個だったり、最大で5個必要だったりします。(wantsもgivesも同様)
{
"wants": [
{
"item": "minecraft:apple",
"quantity": { "min": 1, "max": 5 }
}
],
"gives": [ { "item": "minecraft:emerald", "quantity": 1 } ],
"trader_exp": 2,
"max_uses": 16,
"reward_exp": true
}
値段の変動
村人を治療したときや村人に害を与えたときなどの値上げや値下げの変動量の割合を指定できます。
{
"wants": [
{
"item": "minecraft:apple",
"quantity": 1,
"price_multiplier": 0.5
}
],
"gives": [ { "item": "minecraft:emerald", "quantity": 1 } ],
"trader_exp": 2,
"max_uses": 16,
"reward_exp": true
}
ファンクション
ルートテーブルのファンクションのように、アイテムの指定をより高度にできます。
{
"wants": [ { "item": "minecraft:emerald", "quantity": 1 } ],
"gives": [
{
"item": "minecraft:apple",
"quantity": 1,
"functions": [
{
"function": "enchant_with_levels",
"treasure": true,
"levels": { "min": 15, "max": 25 }
}
]
}
],
"trader_exp": 2,
"max_uses": 16,
"reward_exp": true
}
ルートテーブルとは異なるので、使えないファンクションがいくつかあります。
全く使えないファンクション:
- setcount
- furnace_melt
- looting_enchant
- trader_material_type
wantsに使えないファンクション:
- set_name
- set_lore
- set_damage
- set_block_cnotents
- random_dye
- full_container
trader_exp
交易経験値の量。
max_uses
何回交易したら売り切れるか。
reward_exp
交易時に普通の(エンチャントに使う)経験値をドロップするかどうか。
交易内容の分岐
基本の構造の、緑の枠で囲まれた部分を増やすと、交易内容を村人によってランダムに分岐できます。
以下の例だと、村人によってリンゴだけを交換してくれたり、石炭だけを交換してくれたりするようになります。
{
"tiers": [
{
"total_exp_required": 0,
"groups": [
{
"num_to_select": 1,
"trades": [
{
"wants": [ { "item": "minecraft:apple", "quantity": 1 } ],
"gives": [ { "item": "minecraft:emerald", "quantity": 1 } ],
"trader_exp": 2,
"max_uses": 16,
"reward_exp": true
},
{
"wants": [ { "item": "minecraft:coal", "quantity": 1 } ],
"gives": [ { "item": "minecraft:emerald", "quantity": 1 } ],
"trader_exp": 2,
"max_uses": 16,
"reward_exp": true
}
]
}
]
}
]
}
確率は指定できません。「A, A, A, B」のようにメニューを指定して原始的に確率を変えるしかありません(この場合はAが3/4=75%、Bが1/4=25%)。
num_to_select
ランダムに選ばれるとき、いくつ選ばれるか。
たとえば、分岐としてAからFのアイテムを指定したうえでこの値を2にしたなら、BとDだけ、またはAとFだけ、または......と交換する村人になる。
交易内容の選択肢を増やす
基本の構造の、青の枠で囲まれた部分を増やすと、交易内容の選択肢を増やします。
{
"tiers": [
{
"total_exp_required": 0,
"groups": [
{
"num_to_select": 1,
"trades": [
{
"wants": [ { "item": "minecraft:apple", "quantity": 1 } ],
"gives": [ { "item": "minecraft:emerald", "quantity": 1 } ],
"trader_exp": 2,
"max_uses": 16,
"reward_exp": true
}
]
},
{
"num_to_select": 1,
"trades": [
{
"wants": [ { "item": "minecraft:coal", "quantity": 1 } ],
"gives": [ { "item": "minecraft:emerald", "quantity": 1 } ],
"trader_exp": 2,
"max_uses": 16,
"reward_exp": true
}
]
}
]
}
]
}
交易レベル
交易レベルで後に開放される交易メニューを指定します。
{
"tiers": [
{
"total_exp_required": 0,
"groups": [
{
"num_to_select": 1,
"trades": [
{
"wants": [ { "item": "minecraft:apple", "quantity": 1 } ],
"gives": [ { "item": "minecraft:emerald", "quantity": 1 } ],
"trader_exp": 2,
"max_uses": 16,
"reward_exp": true
}
]
}
]
},
{
"total_exp_required": 10,
"groups": [
{
"num_to_select": 1,
"trades": [
{
"wants": [ { "item": "minecraft:coal", "quantity": 1 } ],
"gives": [ { "item": "minecraft:emerald", "quantity": 1 } ],
"trader_exp": 2,
"max_uses": 16,
"reward_exp": true
}
]
}
]
}
]
}
total_exp_required
開放に必要な交易レベル。