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

「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
【マイクラ日記 68】シープタウン西側に小さなパン屋を建てる

最近建物が増え、賑やかになってきたシープタウン。今回は大通りの西側に小さなパン屋を建てます。一階はベーカリー、二階は店主夫妻の居住空間にします。

no image
新作カードバトルゲーム「Scrolls」 体験版を遊んでみた! マイクラを作ったMojangが開発

あのMinecraftを制作したMojang ABから、ついに完全新作がリリースされました。その名も「Scrolls」。カードバトル的な感じのゲームです。Windows,Macの他にAndroidタブレット版があるそうです。体験版があるので遊んでみました。日本で流行るのか….!??

no image
マイクラダンジョンズ、世界情勢を鑑みて発売時期の変更を示唆

マインクラフトの開発元Mojangによる新作ゲーム「マインクラフト: ダンジョンズ」の開発体制が、新型コロナウイルスに少なからぬ影響を受けているようだ。公式Twitterによれば、開発チームは「4月中の発売」を目指しているものの、同時に発売時期の変更を示唆している。

マイクラダンジョンズ、世界情勢を鑑みて発売時期の変更を示唆 by ナポアンドットコム

no image
【Minecraft】エイプリルフールで騙された人の知恵袋まとめ【クソ記事】

マインクラフトPC版について質問です。今日マイクラを開くとこのようにす… – Yahoo!知恵袋https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11 […]

【Minecraft】エイプリルフールで騙された人の知恵袋まとめ【クソ記事】 by ナポアンのマイクラ

no image
さらばクロック回路! 1.9の新しいコマンドブロックの使い方を解説 – チェイン/リピートとは?【Minecraft】

バージョン1.9のSnapShot「15w34a」にて、コマンド界に革命の風が…!コマンドブロックに3つのモード「インパルス/チェイン/リピート」が追加され、なんとクロック回路とコンパレーターが要らない子になっちゃいました。コマンドブロックだけで常時実行やtestforの判定ができ…

no image
「PCのビデオ設定がXboxOneに適用されてしまう」ゲームが発見される

ゲームプラットフォームとしてのXboxOneとWindows10は、限りなく近い存在である。両者の間で完全なクロスセーブ機能を備えたタイトルが年々増えており、「Bridge Constructor Portal」もその一つだ。ところで先日このゲームで、奇妙なことに「ビデオ設定が共有されてしまう」という問題が発見されたのだ。

「PCのビデオ設定がXboxOneに適用されてしまう」ゲームが発見される by ナポアンドットコム

no image
[Minecraft] PS4/Switchのアップデート「1.67」「パッチ13」内容まとめ

「Minecraft: PlayStation4 Edition」の1.67、「Minecraft: Nintendo Switch Edition」(統合版ではありません)のパッチ13の更新内容をまとめました。スターウォーズのエピソード7・8をテーマにしたスキンパックや、プレステ向けに「クラシックスキンパック1」の配信、なんとHaloマッシュアップパックがスイッチに対応しました。

[Minecraft] PS4/Switchのアップデート「1.67」「パッチ13」内容まとめ by ナポアンのマイクラ

no image
【マインクラフトPE】アップデート0.13のベータ版が開始! 遊ぶ方法を画像付きで解説 [MinecraftPE]

早すぎ! この前0.12が来たと思ったら、もうPEのアップデート「0.13」のベータ版が公開されてしまいました。ということで、マイクラPE0.13のベータ版に参加する方法を今回も一つ一つ画像付きで解説します。一つ注意して欲しいのですが、ベータ版はバグを見つけて報告するため…

no image
500万アクセス突破! 感謝の思いを込め、記念に天空の塔を建てる

おかげ様で、ナポアンのマイクラは累計500万アクセスを突破しました!(この記事の執筆時点で513万PV)いつも応援して下さる皆様のおかげです、非常に感謝しています。ブログをスタートした時、密かに「500万いったら終わろう」とか考えてたのですが、まだまだ頑張ります。そこ…

no image
【速報】ニンテンドースイッチ版マインクラフト、ついに無限ワールドに対応。この秋PEと統合 [Minecraft]
スイッチ版無限ワールド

ワールドの限界に悩まされてきたクラフターの皆さん、朗報です。この秋やって来るアップデート「Better Together Update」で、ついにNintendoSwitch版(とXboxOne版)は無限ワールドに対応します。

【速報】ニンテンドースイッチ版マインクラフト、ついに無限ワールドに対応。この秋PEと統合 [Minecraft] by ナポアンのマイクラ