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

「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
CDの曲がiPhoneで再生・ダウンロードできない時の対処法

macOSのミュージックアプリ(旧iTunes)でCDを取り込んだものの、iPhone/iPadでダウンロードや再生ができない。曲名が表示されているのに「この曲が同期されていないデバイスがあります」と出てしまう。そんな時は拡張子をm4aにそろえて、それでもダメなら変換し直してみよう。

CDの曲がiPhoneで再生・ダウンロードできない時の対処法 by Metgebra

no image
[Minecraft] MINECON Earthで、「U」で始まる新要素が発表されることが判明

日本時間で来週の日曜日の午前2時に配信されるイベント「MINECON Earth」に関するさらなる新情報です。とにかく「U」で始まる何かがやって来るのです。それだけです。

[Minecraft] MINECON Earthで、「U」で始まる新要素が発表されることが判明 by ナポアンのマイクラ

no image
マイクラサーバーの記事が生んでいる誤解について

先日投稿した「全国の休校された生徒の皆さまへ マイクラサーバーを無料開放」について、「マインクラフト運営がサーバーを公開する」という解釈がなされ、大きな誤解を生んでいるようなので、念の為事実関係を説明し、誤解を招くサムネイル及びタイトルを作成したことをお詫び申し上げます。

マイクラサーバーの記事が生んでいる誤解について by ナポアンドットコム

no image
[Minecraft] Windows10版の描画距離を限界以上に上げる裏ワザ。100チャンク超えの世界を一望しよう!

空高くからマイクラの世界を見渡すと、遠くの方が途切れていてなんだか残念ですよね。それなら極限まで描画距離を上げちゃいましょう! 描画距離100チャンクだって可能です。そう、Windows10 Editionならね。今回は、『Minecraft: Windows10 Edition』の描画距離を設定の限界…

no image
[Minecraft] バージョン1.9のコマンド/配布ワールド制作に関する新機能と変更点まとめ
1.9のコマンド関連まとめ

PC版のバージョン1.9、「The Combat Update」がついに配信されましたね。その名の通り戦闘に関する新要素と変更点が盛り沢山なアップデートですが、それに匹敵するほどコマンドや配布ワールド制作に関する新機能/変更点が盛りだくさんなんです。例えばデバッグモードの強化、タグ機能、Loot table、エンドゲートウェイ、新ステータス効果、MobのNBTタグの仕様変更など… この記事では、公式Wikiの情報をもとに配布ワールドの製作者さんには特に知って頂きたい、1.9のサバイバル”以外の”新機能や変更点を細かくまとめました。

[Minecraft] バージョン1.9のコマンド/配布ワールド制作に関する新機能と変更点まとめ by ナポアンのマイクラ

no image
[Minecraft(BE)] アップデート「1.2.13」内容まとめ – UIの改善や新要素の体験など

スマホ・タブレット・Windows10アプリ・XboxOneの「Minecraft(BE,BedrockEdition,統合版)」のアップデート「1.2.13」の更新内容をまとめました。ストア等のUIの改善や、大量のバグ修正が含まれます。

[Minecraft(BE)] アップデート「1.2.13」内容まとめ – UIの改善や新要素の体験など by ナポアンのマイクラ

no image
【Minecraft】「鏡ブロック」だと!? 鉄道MODの域を越えてるぜ、RealTrainModの最新版は!【MOD紹介】

当ブログでこれまで2回紹介しているウルトラスーパー鉄道MOD、「RealTrainMod」。リアルトレインMODといえばリアルな鉄道、線路、製鉄のシステムが目玉ですね。そして最新バージョンでは、新ブロック「鏡」が追加されました。鉄道MODに鏡…?ngt5479さんの努力の結晶である、…

no image
【マインクラフトPE】「イグルー」にすぐ行けるシード値5選。ゾンビ村や樹氷の森もあります [MinecraftPE]
PEイグルーシード値

アップデート「1.0」で追加された「イグルー」。イグルーは真っ白な雪原にぽつんと生成されるので、探すのは大変です。そこで、この記事では「スポーン場所のすぐ近くにイグルー」「樹氷の森のピュタの下に村、その近くにイグルー」などなどレアなシード値をまとめました。

【マインクラフトPE】「イグルー」にすぐ行けるシード値5選。ゾンビ村や樹氷の森もあります [MinecraftPE] by ナポアンのマイクラ

no image
[Minecraft] パンダ等はBEで先行配信し、JEでは1.14にまとめられることが判明

MINECON Earth 2018以来混乱が続いてきた「Java版の1.14はどうなるのか」という件ですが、Dinnerbone氏が公式に「1.14に村とピレッジアップデートの内容が含まれる」ことを発表しました。BEではホリデーアップデート(パンダなど)がまず配信され、来年に村とピレッジアップデートが配信されます。

[Minecraft] パンダ等はBEで先行配信し、JEでは1.14にまとめられることが判明 by ナポアンドットコム

no image
[Minecraft] 「データパック」の作成手順/フォルダ構成/使い方 (Java版1.13)
データパック作成解説

Java版バージョン「1.13」は、技術的な改良に重点を置いたアップデートになる予定です。その一環として実装される機能「データパック」では、これまでバラバラの場所に配置していたファンクションの.mcfunctionファイル、進捗(Advancements)・ルートテーブル・カスタムレシピ(未実装)の.jsonファイル、ストラクチャーの.nbtファイルを、リソースパックのようにまとめて管理できるようになります。この記事では、データパックの作成方法や、データパックのフォルダの配置を解説します。

[Minecraft] 「データパック」の作成手順/フォルダ構成/使い方 (Java版1.13) by ナポアンのマイクラ