「Loot Table (ドロップ表)」の使い方 Part2 JSONの書き方と条件分岐
Loot Table解説のPart2です。今回はJSONの書き方を解説します。「運効果を持っていればこのアイテムが出やすい」「スコアボードの値に応じてアイテムを出す」「燃やして死んだらアイテムのNBTタグを変える」「アイテムにランダムで指定したエンチャントを付ける」など、様々な「function」と「condition(条件)」の使い方を解説しています。Part1とPart3も合わせてご覧ください。
[2020/2/22追記] 1.14仕様に更新しました。1.13以前ではこの方式は使えないので注意してください。
ここからは、オリジナルのLoot table(ドロップ表)を自作する手順とJSONファイルの書き方を解説します。サンプルをコピペして少しずつ弄っていけば誰でも思い通りのルートテーブルが作れるはずなので、是非諦めずに自作に挑戦してみてください。
(簡単にJSONを生成するツールもありますが、また別の機会に紹介するかもです)
LootTableを作成する場所とは。セーブデータ内のフォルダの構造を解説
- 「データパック」の作成手順/フォルダ構成/使い方 (Java版1.13)
https://asobinon.com/data-pack-perfect-guide/
まずは▲の記事を参考に、あなたのワールドの中に「データパック」を作ってください。
データパックを作る際に名前空間フォルダを作りますが、バニラのルートテーブルを上書きしたい場合は「minecraft」に、そうでない場合は英数字で好きな名前を付けてください。

そして名前空間フォルダの中に、loot_tablesという名前のフォルダを作成します。

loot_tablesフォルダの中にルートテーブルのJSONを入れていくわけですが、この中にさらにフォルダを作成して、JSONを整理することもできます。もちろんloot_tablesフォルダ直下にJSONを入れても構いません。
そこに新規テキストファイルを作成して、小文字の英数字とアンダーバーで名前を付け、末尾に.jsonを付けてください。
jsonの編集にはメモ帳ではなく高機能なテキストエディタを使おう

作成したJSONファイルをいよいよ編集していくのですが、ここで注意点を1つ。Windows付属の「メモ帳」はおすすめしません。こういう文書ファイルでは一文字のミスも許されませんから、自動整形だとか構文チェックをしてくれる多機能なエディタでjsonファイルを開くことをお勧めします。
ちなみに私は「Sublime Text 3」にMaterialってテーマを適用して使ってます。
ルートテーブルの基本の書き方。アイテムのスロット数と出現確率を設定するには
まずは以下のサンプルをコピペしてjsonに貼り付けてみましょう。
{ "pools": [ { "rolls": 3, "bonus_rolls":2, "entries": [ { "type": "item", "name": "minecraft:stone", "weight": 2 }, { "type": "item", "name": "minecraft:diamond", "weight": 1 } ] } ] }
基本的な書き方が分かっていただけたかと思います。「pools」の中に「entries」があり、その中にアイテムを書いていくんです。
- "pools": [] - 四角カッコの中にアイテムのパターンを書きます。
- "rolls": 数値 - 出現する項目の数を設定します。アイテム自体の数量ではなく、例えばチェストなら占有するスロットの数です。
- "bonus_rolls": 数値 - バージョン1.9で追加された「運(luck)」効果を持っていた際に追加で出てくるアイテムの数です。luck効果は/effect @p minecraft:luck 100 0 trueで自分に付与できます。
- "entries": [] - 四角カッコの中にアイテムなどの項目を書きます。
- "type": "タイプ" - アイテムの場合は"item", 他のルートテーブルを呼び出す際は"loot_table", 何もない場合は"empty"と書きます。
- "name": "何か" - typeをitemにした場合はアイテムID、loot_tableにした場合はminecraft:chests/nether_bridgeのようにloot tableを指定します。
- "weight": 数値 - そのアイテムの出やすさです。weightが多いほど出やすく、少ないほどレアになります。

"roll": 数値でアイテムの量(というよりスロットの数)を指定するのですが、いつも同じ数のアイテムが出てくるってつまらないですよね。出てくるアイテムの量をランダムにするにはどうすれば良いのでしょうか。
{
"pools": [
{
"rolls": {
"min": 1,
"max": 5
},
"bonus_rolls": {
"min": 1,
"max": 3
},
"entries": [
{
"type": "item",
"name": "minecraft:stone",
"weight": 2
},
{
"type": "item",
"name": "minecraft:diamond",
"weight": 1
}
]
}
]
}
違いがお分かり頂けましたか? そう、「"rolls"」の中にさらにカッコが増えてますね。その中に「"min"」「"max"」の値を書くことで、出てくるアイテムの最小の量と最大の量を設定できるんです。「"bonus_rolls"」の数値も同じように最小値と最大値を設定できます。
バージョン1.9では「luck」という新効果が追加されたことはご存知ですよね。この運効果が付いている間だけ、特定のアイテムが出てくる確率を上げる(=特定のアイテムの量を増やす)にはどうすれば良いのでしょうか。
{
"pools": [
{
"rolls": {
"min": 1,
"max": 5
},
"bonus_rolls": {
"min": 1,
"max": 3
},
"entries": [
{
"type": "item",
"name": "minecraft:stone",
"weight": 2
},
{
"type": "item",
"name": "minecraft:diamond",
"weight": 1,
"quality": 5
}
]
}
]
}
"quality": 数値という項目をダイヤモンドに設定しています。すると以下のようにアイテムの出やすさが増えます。
- "quality"を設定した際のluck効果のレベルに応じたアイテムの出やすさの変化の式
- アイテムの出やすさ: "weight"の値 + ("quality"の値 × luck効果のレベル)
例えば"weight"が3、"quality"が5、プレイヤーの「運」がレベル2だった場合は「3+(5*2) = 13」となり、最終的なアイテムの出やすさは「13」となります。プレイヤーの運レベルが高ければ、"quality"をちょっと変えただけで大きく出やすさが変わるんです。
1ページ目でも述べましたが、このルートテーブルをチェストなどに設定した場合は「初めて開けて中身を見た時」にluck効果を持っていればアイテムが増えます。設置/設定時の効果は中身の決定に影響しません。
アイテムのまとまり、「pool」とは
{ "pools": [ { "rolls": 11, "entries": [ { "type": "item", "name": "minecraft:stone", "weight": 10 }, { "type": "item", "name": "minecraft:diamond", "weight": 1 } ] }, { "rolls": 3, "entries": [ { "type": "item", "name": "minecraft:stick", "weight": 2 }, { "type": "item", "name": "minecraft:paper", "weight": 1 } ] } ] }
▲このルートテーブルでは、"pool": []の中に複数のまとまり(pool)がありますよね。こういう風に複数のpoolに分けて書くことで、アイテムの出やすさ(weightとquality)の比較をバラバラに行えるんです。

上記ルートテーブルでは、「焼石:ダイヤ=10:1」「棒:紙=2:1」という2つの「pool」で別々に出やすさの比較が行われます。上手に「pool」を分けて、アイテムの出やすさを思い通りに操りましょう。
基本的な「functions」の使い方

アイテムを出現させることはできたものの、アイテムはすっぴんのまま。エンチャント効果を付けたり、NBTタグを使って名前や説明文を付けたり、スタック数を設定したりするにはどうすれば良いのでしょうか。
アイテムにランダムまたは指定したエンチャント効果を指定した確率で付与するには
{
"pools": [
{
"rolls": {
"min": 1,
"max": 5
},
"bonus_rolls": {
"min": 1,
"max": 3
},
"entries": [
{
"type": "item",
"name": "minecraft:stone",
"weight": 2
},
{
"type": "item",
"name": "minecraft:diamond_chestplate",
"weight": 1,
"quality": 5,
"functions": [
{
"function": "minecraft:enchant_randomly",
"enchantments": [
"minecraft:protection",
"minecraft:fire_protection",
"minecraft:unbreaking"
]
}
]
}
]
}
]
}
ここで新しく「functions」が出てきました。この「functions」内に色々書けば各種設定ができるわけです。上記ルートテーブルでは"function": "minecraft:enchant_randomly"と書くことで「enchant_randomly(ランダムにエンチャントする)」機能を設定しています。その下に"enchantments": ["エンチャントID","エンチャントID"]と書けば付与されるエンチャントの種類を指定できます。上記の場合は耐性、火炎耐性、耐久力エンチャントの内1つだけが付与されます。
{
"pools": [
{
"rolls": {
"min": 1,
"max": 5
},
"bonus_rolls": {
"min": 1,
"max": 3
},
"entries": [
{
"type": "item",
"name": "minecraft:stone",
"weight": 2
},
{
"type": "item",
"name": "minecraft:diamond_chestplate",
"weight": 1,
"quality": 5,
"functions": [
{
"function": "minecraft:enchant_randomly"
},
{
"function": "minecraft:enchant_randomly"
},
{
"function": "minecraft:enchant_randomly"
}
]
}
]
}
]
}
▲"enchantments"を指定しない"minecraft:enchant_randomly"を書けば、そのアイテムに適合するエンチャントがそれぞれ1つだけ付与されます。上記のように書けば適合するエンチャントが3つ付くわけです。
{ "pools": [ { "rolls": { "min": 1, "max": 5 }, "bonus_rolls": { "min": 1, "max": 3 }, "entries": [ { "type": "item", "name": "minecraft:diamond_chestplate", "weight": 1, "quality": 5, "functions": [ { "function": "minecraft:enchant_with_levels", "levels": 30 } ] }, { "type": "item", "name": "minecraft:diamond_leggings", "weight": 1, "quality": 5, "functions": [ { "function": "minecraft:enchant_with_levels", "levels": { "min": 10, "max": 30 }, "treasure": true } ] } ] } ] }
▲今度は"minecraft:enchant_with_levels"というfunctionを使ってみましょう。"levels"で指定したレベルに応じたエンチャント効果が付与されます。最小レベルと最大レベルを指定することも可能です。また、"treasure": trueと書けば「Mending(修繕)(修繕)」や「Frost Walker(氷上歩行)」などのトレジャーエンチャント(エンチャント台では付けられない効果)も出てくるようになります。
アイテムの数(スタック内の量)を指定するには
{ "pools": [ { "rolls": { "min": 1, "max": 5 }, "bonus_rolls": { "min": 1, "max": 3 }, "entries": [ { "type": "item", "name": "minecraft:diamond", "weight": 1, "functions": [ { "function": "minecraft:set_count", "count": 5 } ] }, { "type": "item", "name": "minecraft:gold_ingot", "weight": 2, "quality": 5, "functions": [ { "function": "minecraft:set_count", "count": { "min": 1, "max": 5 } } ] } ] } ] }
"minecaft:set_count"を使えば、"count"でアイテムの数を指定できます(スタックされた数)。これも最小値と最大値を指定可能。
一つの項目に何個も書いてしまった場合は、最後に書いてある数値が適用されます。
アイテムのデータ値を指定するには
{ "pools": [ { "rolls": { "min": 1, "max": 5 }, "bonus_rolls": { "min": 1, "max": 3 }, "entries": [ { "type": "item", "name": "minecraft:wool", "weight": 2, "quality": 5, "functions": [ { "function": "minecraft:set_data", "data": 5 } ] }, { "type": "item", "name": "minecraft:wool", "weight": 2, "quality": 5, "functions": [ { "function": "minecraft:set_data", "data": { "min": 6, "max": 10 } } ] } ] } ] }
羊毛など、同じIDでも色々な種類があるアイテムは「データ値」で種類を指定しますね。ルートテーブルでは、"minecraft:set_data"というfunctionでデータ値を指定します。"data"の数値にはもちろん最小値と最大値を指定できます。
一つの項目に何個も書いてしまった場合は、最後に書いてある数値が適用されます。
※1.13ではデータ値が廃止されるため、このfunctionは使えません
アイテムのダメージ値を指定するには
{ "pools": [ { "rolls": { "min": 1, "max": 5 }, "bonus_rolls": { "min": 1, "max": 3 }, "entries": [ { "type": "item", "name": "minecraft:diamond_shovel", "weight": 2, "quality": 5, ...
スポンサーリンク
---省略されました。オリジナルサイトでご覧下さい。---
続きはこちら
関連記事
-
-
【今日の動画】リアルタイムで360°の実況動画を録画する方法 – PanoStreamModを動画で紹介しました【Minecraft】
久しぶりにYouTubeチャンネルに動画をアップロードしました。しかも2本。一本はPanoStreamModを使った360°プレイ動画のサンプルで、もう一本は詳細な録画方法の解説です。新感覚の実況動画を作ってみませんか?
【今日の動画】リアルタイムで360°の実況動画を録画する方法 – PanoStreamModを動画で紹介しました【Minecraft】 by ナポアンのマイクラ
-
-
【今話題のマイクラ都市開発】EXRサーバーに行ってきた
10/08にNHKで放送された「沼にはまってみた」でマインクラフトでの都市開発が取り上げられた。それを見て「面白そう」と感じた方も多いだろう。実は日本には都市開発歴7年の老舗サーバー、EXR-Networkというところがある。今回はこのサーバーについて紹介する。
-
-
[Minecraft] アップデート情報大量!MINECON Earth 2018の発表内容まとめ
MINECON Earth 2018が終わりました。パンダ、ネコ、村人、新しい敵Mob、クロスボウなどなど、発表された新情報をまとめました。早速チェックしていきましょう!
[Minecraft] アップデート情報大量!MINECON Earth 2018の発表内容まとめ by ナポアンのマイクラ
-
-
【紹介/配布編】新感覚PvPマップ! 「空中浮遊バトル」を作ってみました [Minecraft 1.9]
今回は、私が初めて作ったPvPマップ「空中浮遊バトル」をご紹介します。バージョン1.9の最初のSnapShotに詰まった新機能をふんだんに使っています。動作するバージョンは15w31c、つまりバージョン1.9以降のみです。マルチプレイで是非、新感覚のPvPをお楽しみ下さい。使って…
-
-
[Minecraft] スイッチの新しいマイクラは、明日午後3時配信。新アイコンも公開
いよいよ明日に迫った、ニンテンドースイッチの新しい「Minecraft」の配信。公式の最新の生放送で、リリース時刻や、ソフトのアイコンなどの最新情報が発表されたのでお伝えします。
-
-
[WP] Cloudinaryプラグインv2(ベータが便利すぎ!レスポンシブ画像に簡単対応
Cloudinaryで画像の最適化を進めていたが、PHPの知識が皆無でレスポンシブ画像の導入で手こずっていたところに、新バージョンのプラグインを発見。めちゃくちゃ助かったので書いておく。
-
-
【マインクラフトPE】0.13でも作れる、回路のパーツの作り方まとめ – クロック/AND/パルサーなど [Minecraft]
マイクラPEのアップデート「0.13」がリリースされ、ついにレッドストーン回路が実装された… のですが、追加アイテム一覧の中に「レッドストーンリピーター」や「ピストン」など、重要そうなブロックが見当たりませんね。 バージョン0.13では、簡単な回路しか作れないんじゃ…
-
-
[Minecraft(BE)] アップデート「1.6.1」内容まとめ。ファントム等の不具合修正
スマホ・タブレット・Windows10・XboxOne・NintendoSwitchのMinecraft(BE/統合版)のアップデート「1.6.1」がリリースされました。ファントムが襲ってこない不具合などが修正されています。
[Minecraft(BE)] アップデート「1.6.1」内容まとめ。ファントム等の不具合修正 by ナポアンのマイクラ
-
-
旧ゲーム機版の水のアップデートは、BE1.6より後。相当先になりそう [Minecraft]
旧ゲーム機版(PS4/PS3/Vita/WiiU/Xbox360)の水のアップデートは、BE(統合版)で水のアップデートが完了するまで、リリースされないことが発表されました。BEは6/23現在1.4。相当先のことになりそうです。
-
-
エイプリルフール2016 (bySxxxxR) のネタばらし。模様入りベッドなどの仕組みを解説します
皆様お久しぶりです、ナポアンです。今年のエイプリルフール企画は多忙によりネタばらしが大変遅くなってしまいました。多大な混乱を招いてしまったことお詫びします。この記事では企画の概要の説明と、仕掛けの種明かしをします。果たして縦ハーフブロックや模様入りのベッドの正体とは。あの悪夢のような仕様変更は如何にして具現化されたのでしょうか。そして何よりこの企画の仕掛人とは…
エイプリルフール2016 (bySxxxxR) のネタばらし。模様入りベッドなどの仕組みを解説します by ナポアンのマイクラ