ルートおよびトレード テーブル関数
ルート テーブルとトレード テーブルは同じ関数セットを共有しています。 大部分は両方で機能しますが、特定の種類内でしか機能しないものもいくつかあります。 一般にルート テーブルとトレード テーブルには制限があります。たとえば、ルート テーブルまたはトレード テーブルを通じて can_place_on
や can_destroy
をアイテムに追加することはできません。 利用できるさまざまな関数とその使用方法の例については、以下をご確認ください。
このチュートリアルでは、次の内容を学びます。
- ルート テーブルおよびトレード テーブルのさまざまな関数と、それらを利用してアイテムを変更する方法。
要件
本チュートリアルを開始する前に、以下を完了しておくことをお勧めします。
エンチャント
以下のさまざまなエンチャント関数では、固有のエンチャント パラメーターを設定できます。
enchant_book_for_trading (トレード テーブルのみ)
この関数は、村人が販売しているアイテムをエンチャントするためのアルゴリズムを使用して本をエンチャントします。 base_cost
、base_random_cost
、per_level_random_cost
、per_level_cost
という 4 つのパラメーターがあります。
{
"item": "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
バニラのモブの装備をエンチャントするのに使用されるものと同じアルゴリズムでアイテムをエンチャントします。 chance
修飾子を使用してアルゴリズムを操作します。 chance
修飾子が 1.0 でも装備が 100% の確率でエンチャントされるわけではないことに注意してください。 確率は難易度に応じて変更されます。 難易度がピースフルおよびイージーの場合、確率は常に 0% になります。 難易度がハードの場合、確率は chance
が 1.0 なら 100% ですが、難易度がノーマルの場合、そのおよそ 2/3 になります。
{
"type": "item",
"name": "minecraft:chainmail_boots",
"weight": 1,
"functions": [
{
"function": "enchant_random_gear",
"chance": 0.25
}
]
}
1.0 を上回る数値に chance
を増やすと、難易度がノーマルの場合の確率の低下を無視できます。 たとえば、chance
を 2.0 に設定すると、難易度がノーマルでもハードでも常にアイテムがエンチャントされることになります。
enchant_randomly
アイテムに対応したランダム エンチャントを生成します。 オプションとしてトレジャーのブーリアン値 boolean
(true/false) がサポートされているので、トレジャーエンチャントのオン/オフを切り替えることができます。 トレジャー エンチャントはエンチャントテーブルを通じて取得できないエンチャントであり、氷渡り、修繕、魂の速度、束縛の呪い、消滅の呪いなどがあります。
{
"type": "item",
"name": "minecraft:leather_helmet",
"weight": 1,
"functions": [
{
"function": "enchant_randomly",
"treasure": true
}
]
}
enchant_with_levels
levels
パラメーターによって定義した最小および最大 XP レベルを使用し、エンチャントテーブルを通じてエンチャントされたかのようにエンチャントを適用します。 ブーリアン値の treasure
(true/false) によって財宝限定のエンチャントを使用できます。 トレジャー エンチャントはエンチャントテーブルを通じて取得できないエンチャントであり、氷渡り、修繕、魂の速度、束縛の呪い、消滅の呪いなどがあります。
{
"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
}
]
}
]
}
アイテムの変更
以下の一連の関数では、返されるアイテムの数の設定、そのデータ値の設定、アイテムの名前と伝承の設定など、さまざまな方法で結果を変更できます。
looting_enchant (ルート テーブルのみ)
この関数では、アイテムボーナスのエンチャントを備えたアイテムによってエンティティが殺されたときに返されるアイテムの数を変更できます。 そのため、この関数はルート テーブルがエンティティの死によって呼び出された場合にのみ機能します。
{
"type": "item",
"name": "minecraft:stick",
"weight": 1,
"functions": [
{
"function": "looting_enchant",
"count": {
"min": 0,
"max": 1
}
}
]
}
random_block_state
生成されるアイテムのブロックの状態をランダム化できます。 たとえば、次のコード例では石 (0)、花崗岩 (1)、磨かれた花崗岩 (2)、閃緑岩 (3)、磨かれた閃緑岩 (4)、または安山岩 (5) を落とすことができます。
{
"type": "item",
"name": "minecraft:stone",
"weight": 1,
"functions": [
{
"function": "random_block_state",
"block_state": "stone_type",
"values": {
"min": 0,
"max": 5
}
}
]
}
random_aux_value
random_block_state
と同様に、アイテムの補助値をランダムに選択できます。 次の例では、ランダムな色の染料が生成されます。
{
"type": "item",
"name": "minecraft:dye",
"weight": 1,
"functions": [
{
"function": "random_aux_value",
"values": {
"min": 0,
"max": 15
}
}
]
}
set_actor_id
これはスポーン エッグでのみ機能する関数で、そのスポーン エッグのエンティティ ID を設定するために使用します。
{
"type": "item",
"name": "minecraft:stone",
"weight": 1,
"functions": [
{
"function": "set_actor_id",
"id": "compass:cool_entity"
}
]
}
id
を省略すると、そのルート テーブルに関連付けられているエンティティのエンティティ ID を継承することもできます (ウサギにウサギのスポーン エッグを落とさせるなど)。
{
"type": "item",
"name": "minecraft:spawn_egg",
"weight": 1,
"functions": [
{
"function": "set_actor_id"
}
]
}
チェストのルート テーブルで set_actor_id
を使用する場合に id
値を省略すると、チェストを開けたプレイヤーのスポーン エッグが生成されることに注意してください。 プレイヤーのスポーン エッグは立っているだけの "プレイヤー" をスポーンさせて Molang エラーを発生させることになります (プレイヤーのビヘイビアー ファイルとコントローラーを使用しようとするため)。 set_actor_id
から継承した ID を使用するルート テーブルが含まれるチェストを壊すと、何もスポーンさせないデフォルトのスポーン エッグを落とします。
set_banner_details
この関数は旗にのみ利用でき、現在は type
が 1
の旗のみがサポートされています。 type
が 1
の旗は、邪悪な村人の旗となります。
{
"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": "Steve",
"title": "Creator Woes",
"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."
]
}
]
}
rawtext
を使用して本の内容をローカライズすることもできます。 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\"}]}"
]
}
]
}
rawtext
を本の内容 (pages
) に対して使用できるタイミングは、その記述時に限られることに注意してください。rawtext
は author
タグおよび title
タグでは機能しません。
set_count
count
値を設定することによって返されるアイテムの数を設定します。 次の例のような正確な数値にすることもできます。
{
"type": "item",
"name": "minecraft:stone",
"weight": 1,
"functions": [
{
"function": "set_count",
"count": 5
}
]
}
また、次のように最小/最大の範囲内にすることもできます。
{
"type": "item",
"name": "minecraft:stone",
"weight": 1,
"functions": [
{
"function": "set_count",
"count": {
"min": 1,
"max": 6
}
}
]
}
set_damage
damage
値を設定することにより、耐久度のあるアイテムの残りの耐久度の割合を設定します。 1.0 の場合は残りの耐久度が 100% (ダメージを受けていない)、0.0 の場合は残りの耐久度がゼロです。
アイテムの残りの耐久度を 50% に設定する次の例のように、正確な耐久度を設定することも、
{
"type": "item",
"name": "minecraft:iron_leggings",
"weight": 1,
"functions": [
{
"function": "set_damage",
"damage": 0.5
}
]
}
ランダムに選択されるよう最小/最大値を定義することもできます。 次の例では、残りの耐久度を 30% ~ 90% の範囲内のどこかに設定します。
{
"type": "item",
"name": "minecraft:iron_leggings",
"weight": 1,
"functions": [
{
"function": "set_damage",
"damage": {
"min": 0.3,
"max": 0.9
}
}
]
}
set_data
ブロックやアイテムのデータ値に正確な ID を設定します。次の例では、磨かれた閃緑岩のブロックが生成されます。
{
"type": "item",
"name": "minecraft:stone",
"functions": [
{
"function": "set_data",
"data": 4
}
]
}
set_data_from_color_index
関連付けられているエンティティの色のインデックスから生成されるアイテムのデータ値を継承します。 ゲーム内の例としては、死んだときにピンクのウールを落とすピンクの羊が挙げられます。 関連付けられているエンティティに色のインデックスが設定されていない場合 (またはチェストのルート テーブル内で使用されている場合)、データ値は常に 0 になります。
{
"type": "item",
"name": "minecraft:wool",
"weight": 1,
"functions": [
{
"function": "set_data_from_color_index"
}
]
}
set_lore
この関数では、アイテムの伝承を設定できます。 伝承オブジェクト内の各行が、テキストの 1 行を表しています。 現在 rawtext
はサポートされていません。
{
"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"
]
}
]
}
set_name
この関数では、アイテムの名前を設定できます。 現在 rawtext
はサポートされていません。
{
"type": "item",
"name": "minecraft:stick",
"weight": 1,
"functions": [
{
"function": "set_name",
"name": "Big Stick"
}
]
}
その他
以下は、他のどこにも属さない関数です。
fill_container
この関数では、チェストのルート テーブルを定義できます。 アイテムが生成され、それをプレイヤーが配置すると、参照先のルート テーブル内に定義されている中身で満たされます。
チェストのルート テーブルは、開けたときや壊したときに生成されます。 シュレーディンガーの箱のようなものと考えてください。 チェストの中身は、中をのぞいてみるまでわかりません。
{
"type": "item",
"name": "minecraft:chest",
"functions": [
{
"function": "fill_container",
"loot_table": "loot_tables/chests/simple_dungeon.json"
}
]
}
fill_container
を使用する場合は、常に set_name
を使用してチェストに名前を付けることをお勧めします。 そうしないと、生成されるチェストがプレイヤーの持ち物の中にある通常の空のチェストと見分けられなくなります。
exploration_map
通常のマップを隠された財宝の場所が示されている宝の地図に変換します。 destination
値で得られる宝の地図の種類を定義します。
{
"type": "item",
"name": "minecraft:map",
"weight": 1,
"functions": [
{
"function": "exploration_map",
"destination": "buriedtreasure"
}
]
}
現在は以下の目的地から選ぶことができます。
目的地 |
---|
buriedtreasure |
endcity |
fortress |
mansion |
mineshaft |
monument |
pillageroutpost |
ruins |
shipwreck |
stronghold |
temple |
village |
furnace_smelt (ルート テーブルのみ)
返されるアイテムに精錬レシピがあり、火 (火属性、火打ち石と打ち金、溶岩など) で殺されたエンティティによってルート テーブルがトリガーされた場合は、そのアイテムを精錬したものが生成されます。 そのような要件があるため、この関数は村人との取引やチェストに対しては機能しません。 この関数は、minecraft:loot
動作と併用した場合にのみ機能します。
次の例では、エンティティが火で殺された場合は石ブロック、そうでない場合は丸石を落とします。
{
"type": "item",
"name": "minecraft:cobblestone",
"weight": 1,
"functions": [
{
"function": "furnace_smelt"
}
]
}
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示