「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,
...
スポンサーリンク
---省略されました。オリジナルサイトでご覧下さい。---
続きはこちら
関連記事
-
-
ミサイル撃ち合い! サメ狩り! 面白くて奥が深いPvPミニゲーム5選 – マルチプレイにおすすめ [Minecraft]
友達とサーバーに集まったけど、遊びが思いつかない…?そんな時は、楽しいミニゲーム配布ワールドで遊んでみませんか。ダウンロードするだけで、迷路やミサイルの打ち合いゲーム、ボンバーマン..おっと言い過ぎました。 今回は、誰でも簡単に楽しめる、シンプルで奥が深い…
-
-
[Minecraft(BE)] アップデート「1.2.6」内容まとめ – 馬たちの見た目変更など

スマホ・タブレット・Windows10アプリ・XboxOneの「Minecraft(BE,BedrockEdition,統合版)」のアップデート「1.2.6」の更新内容をまとめました。ウマ・ロバ・ラバの見た目が変わりました。
[Minecraft(BE)] アップデート「1.2.6」内容まとめ – 馬たちの見た目変更など by ナポアンのマイクラ
-
-
[Minecraft] マイクラの”日本の”コミュニティマネージャーになりませんか!

英語と日本語ぺらぺら、できれば韓国語の知識もあって、ゲーム会社で生配信した経験があって、ハイレベルな問題解決・マルチタスク能力があって、SNSが得意で、世界を飛び回れて、めっちゃマイクラに詳しいそこのあなた! マイクラの「コミュニティマネージャー」になりませんか!!!
-
-
【マインクラフトPE】最新アップデート0.14内容まとめ – 地図/魔女など更に充実! [Minecraft]

Minecraft PE (マイクラPE)の最新アップデート0.14.0のアップデート内容をまとめました。 開発者さんのTwitter、公式Wikiの情報を翻訳しつつ載せてます。PEと同じ内容でWindows10版にもアップデートが来ます。新しい情報が入り次第、どんどん追記していきます。
【マインクラフトPE】最新アップデート0.14内容まとめ – 地図/魔女など更に充実! [Minecraft] by ナポアンのマイクラ
-
-
【速報】Hytale、動物がうんこ可能 – 2020年1月の開発進捗が公開

2021年へのリリース延期でコミュニティに驚きをもたらしたHytale開発チームが、さらなるサプライズを持ってきた。開発の進捗を伝える記事の2020年1月29日版で、「うんこ」が登場したのである。ジョークではなく文字通り「うんこ」で、農業システムの一部ではあるが、ゲームにデフォルトで「うんこ」が実装されているというのは中々面白いことになりそうだ。
-
-
[Minecraft 1.9] 好きな範囲にダメージなどの効果を設置できる、AreaEffectCloudのコマンドと使い方を解説。

例えば触れるとダメージを喰らう毒の霧や、指定した回数だけ回復できる回復スポットだとか… バージョン1.9では、配布ワールド制作に便利な新エンティティ「AreaEffectCloud」が追加されました。「残留ポーション」から出てくる効果付きのパーティクルのことです。今回は、ポーション効果や時間などをカスタマイズしたAreaEffectCloudを設置するコマンドを解説します。
[Minecraft 1.9] 好きな範囲にダメージなどの効果を設置できる、AreaEffectCloudのコマンドと使い方を解説。 by ナポアンのマイクラ
-
-
[Minecraft]1.8対応! 高機能コマンド生成ツールの決定版 MCStackerの使い方 (Summon/スポナー/BlockData)
Minecraft 1.8では、12種類もの便利な新コマンドが追加されましたね。また配布ワールド作成に便利なデータタグも複数追加されています。しかし、何種類もあるデータタグや細かい設定を手打ちするのは大変です。そこで、簡単に長いコマンドを生成してくれる「MCSracker」をご…
-
-
【お願い】マイクラ公式Wikiの「翻訳」に今すぐ協力してほしい

当サイト(旧ナポアンのマイクラ、現ナポアンドットコム)では、Minecraftのアップデート情報を日本語に翻訳した記事を長年に渡り投稿してきた。しかし最近では筆者の多忙でアップデート情報の翻訳は困難になっている。そもそもこれほど重要な情報を個人のサイトで書くのも烏滸がましい話だが、とにかく読者の皆さんには公式Wikiの利用をおすすめしたい。だがここで「翻訳」という問題が立ちはだかるわけだ。


