マインクラフト攻略まとめ

「Loot Table (ドロップ表)」の使い方 Part2 JSONの書き方と条件分岐

   

Loot Table解説のPart2です。今回はJSONの書き方を解説します。「運効果を持っていればこのアイテムが出やすい」「スコアボードの値に応じてアイテムを出す」「燃やして死んだらアイテムのNBTタグを変える」「アイテムにランダムで指定したエンチャントを付ける」など、様々な「function」と「condition(条件)」の使い方を解説しています。Part1Part3も合わせてご覧ください。

[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が多いほど出やすく、少ないほどレアになります。
サンプル1の結果

"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"」の数値も同じように最小値と最大値を設定できます。


「Quality」の意味

バージョン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)の比較をバラバラに行えるんです。

poolの意味

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

 

基本的な「functions」の使い方

名前を付けたりなど、NBTタグを設定したりしたい

アイテムを出現させることはできたものの、アイテムはすっぴんのまま。エンチャント効果を付けたり、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,
    ...


スポンサーリンク

---省略されました。オリジナルサイトでご覧下さい。---
続きはこちら

 - Minecraftコマンド解説, ナポアンのマイクラ

  関連記事

no image
【マインクラフトPE】自分だけのスキンの作り方 – 便利アプリ「Skin Editor for Minecraft」でスキン作成する方法[Android]

ついにマイクラPEのアップデート「0.11」が来ましたね。アップデートの内容まとめはこちらへどうぞ。大量にまとめてます。そして、プレイヤーのスキン(見た目)を自由に変更できるようになりました!そんなスキンを簡単に作れる便利アプリ「Skin Editor for Minecraft」の使い…

no image
[Minecraft] スイッチ版BE(統合版)、配信開始。既存の世界を無限ワールド化しよう

ゲーム機の常識が覆る時がやってきました。ニンテンドースイッチで、ついに無限ワールドで遊べます。今すぐ新しい「Minecraft」をダウンロードして、既存のワールドを無限ワールド化しましょう。

[Minecraft] スイッチ版BE(統合版)、配信開始。既存の世界を無限ワールド化しよう by ナポアンのマイクラ

no image
【MOD紹介】ニセモノの鉱石を探せ! 鉱石の集合体、ボスと戦闘だ「Fake Ores²」(1.8対応)【Minecraft】

色々な鉱石でできた、こちらのゴッツイ恐ろしいモンスター。その正体は「ニセモノの鉱石 ―Fake Ores―」。一体どうやって召喚するんでしょう。記念すべき80回目のMOD紹介。今回は、elias54さん制作の「Fake Ores²」です。鉱石が猛スピードであなたを襲ってきます。ボスの欠…

no image
[Minecraft] Windows10版プレイヤーもAndroidと一緒にベータ版をプレイ可能に
Win10BTUベータ版ニュース

マイクラPEとゲーム機版が統合される大型アップデート「Better Together Update」がこの夏やって来ます。PE/Win10には「バージョン1.2」として配信予定ですが、これまでのAndroidユーザー向けベータ版に加え、Windows10ユーザーもアップデートのベータ版がプレイできるようになります。

[Minecraft] Windows10版プレイヤーもAndroidと一緒にベータ版をプレイ可能に by ナポアンのマイクラ

no image
【MOD紹介】”家を”海に浮かべると……動き出した! 自由に船を作れる「Ships Mod」

あなたが建てた家を、例のパン工場のように自由に動かせたら….このMODがそんなクラフターの夢を叶えてくれます。今回紹介するのは、Cuchaz氏制作の「Ships Mod」です。自由に船を組み立てて、家として機能させながら航海を楽しめます。(1/13 大きな船を帆を張って舵で動か…

no image
【MOD紹介】壊してしまったガラスも、破片を集めて元通りに「Glass Shards」[Minecraft]
GlassShardsMOD

久しぶりのMOD紹介です。今回紹介するのは、ljfa氏制作の「Glass Shards」。ガラスブロックはシルクタッチを使わないと回収できませんが、このMODがあれば「ガラスの破片」を集めて取り戻すことができます。これぞありそうでなかったMODですね。

【MOD紹介】壊してしまったガラスも、破片を集めて元通りに「Glass Shards」[Minecraft]ナポアンのマイクラで公開された投稿です。

no image
【Minecraft】クリックだけで完成! 簡単MODの作り方講座[1] MCreatorのインストール、MODの基本設定と保存

「自分でMODを作りたい! でも作り方がよく分からない…」MODの制作はプログラミングとか難しそう、と思っていませんか?そんなあなたに朗報です。コードを書かなくてもMODの開発ができるのです。今回から解説する「MCreator」などのツールを使ってMODを作成すれば、ブロック/…

no image
エイプリルフール2016 (bySxxxxR) のネタばらし。模様入りベッドなどの仕組みを解説します
2016エイプリルフールのネタばらし

皆様お久しぶりです、ナポアンです。今年のエイプリルフール企画は多忙によりネタばらしが大変遅くなってしまいました。多大な混乱を招いてしまったことお詫びします。この記事では企画の概要の説明と、仕掛けの種明かしをします。果たして縦ハーフブロックや模様入りのベッドの正体とは。あの悪夢のような仕様変更は如何にして具現化されたのでしょうか。そして何よりこの企画の仕掛人とは…

エイプリルフール2016 (bySxxxxR) のネタばらし。模様入りベッドなどの仕組みを解説します by ナポアンのマイクラ

no image
[Minecraft] 注意! スイッチのパッケージ版を買うと、ミニゲームは遊べません!

6月21日に発売/配信される、ニンテンドースイッチの新しい『Minecraft』のパッケージ版。既にAmazonなどで予約が開始されており、購入を検討している方も多いかと思います。でもちょっと待って。パッケージ版の発売を待っていたら、よゐこの2人が遊んでいた「SwitchEdition」は一生遊べなくなるんですよ。

[Minecraft] 注意! スイッチのパッケージ版を買うと、ミニゲームは遊べません! by ナポアンのマイクラ

no image
[Minecraft(BE)] 最新アップデート「1.6」内容まとめ – ファントム襲来!

ファントムやバリアブロックが追加される予定の、スマホ・タブレット・NintendoSwitch・Windows10アプリ・XboxOneの「Minecraft(BE,統合版)」のアップデート「1.6」の更新内容をまとめました。 開発者さんのツイート、公式Wikiの情報を基に画像付きで詳しくまとめています。

[Minecraft(BE)] 最新アップデート「1.6」内容まとめ – ファントム襲来! by ナポアンのマイクラ