マルチプレイなら『シン・VPS』がおすすめ!

【まとめ】predicateの基本と使い方+リンク集【マイクラ】

【まとめ】predicateの基本と使い方+リンク集【マイクラ】

predicateの基本

predicateとは、進捗やルートテーブル、コマンドなどで使用することのできるものです。

predicateを指示することで、上記のものに対して条件を付与することができ、それぞれの成功に関わります。

例えば「平野のバイオームにいること」を記述したpredicateを進捗で用いれば、平野にいることでその進捗を達成することができます。

ルートテーブルなら「平野にいる状態でルートテーブルを適用する状態になることで、ドロップする可能性が発生する」で、コマンドなら「コマンドの実行場所が平野であることが成功の条件となる」といった具合です。

要は「predicateで指示した内容と状況が適していればOK」と思えば問題ありません。

ただし、それぞれでpredicateの組み込み方が異なります。

それぞれでの使い方は次項で見ていきましょう。

predicateの使い方

さて、predicateが様々な場面で使えることが前項で分かりました。

ここからは進捗、ルートテーブル、コマンドでの使い方を見ていきましょう。
また、predicateはどのような場面で使われたとしても、jsonファイルとして記述するものになります。

進捗で指示する場合

進捗でpredicateを使用したい場合には、進捗内の記述でpredicateを指示する必要があります。

例えば、以下のように記述します。

{
  "criteria": {
    "requirement": {
      "trigger": "minecraft:inventory_changed",
      "conditions": {
        "player": [
          {
            "condition": "minecraft:location_check",
            "predicate": {
              "biome": "minecraft:plains"
            }
          }
        ]
      }
    }
  }
}

conditionの部分に”minecraft:location_check”という記述がありますが、これがpredicateの一種で居場所について指示できる項目です。

今回は初めに出した例をもとに、平野にいる場合に達成されるようbiomeでplains(平野バイオーム)を指示しました。

進捗の生成には、以下のサイトがおすすめです!

ルートテーブルで指示する場合

ルートテーブルでpredicateを指示する場合は、ルートテーブル内に記述する必要があります。

実際の例としては、以下の通り。

{
  "type": "minecraft:entity",
  "pools": [
    {
      "rolls": 1,
      "entries": [
        {
          "type": "minecraft:item",
          "name": "minecraft:stone"
        }
      ],
      "conditions": [
        {
          "condition": "minecraft:location_check",
          "predicate": {
            "biome": "minecraft:plains"
          }
        }
      ]
    }
  ]
}

進捗の時と同様にconditionの部分にpredicateを書き込んでいます。

書き込んである内容は同じですので、平野にいる場合に石がドロップするルートテーブルであると分かればOKです。

ルートテーブルの作成を行えるサイトはこちら!

コマンドで指示する場合

コマンドで指示する場合は、どのpredicateを指示するかコマンド内で指定すればOKです。

例えばsampleフォルダにあるtest.jsonというpredicateを指示するなら

/execute if predicate sample:test run give @a diamond 1

といった感じです。

上記ではifを用いていますが、もちろんunlessにも対応しています。

また、ターゲットセレクターでもpredicateを指示することができるので

/give @a[predicate=sample:test] diamond 1

といったことも可能です。

test.jsonの中身が「平野バイオームにいること」を指示している場合だったら、「平野にいないとコマンドが実行されない」、「平野にいるプレイヤーにだけダイヤモンドを付与する」なんて結果になります。

predicateの制作におすすめなサイトはこちら

predicateの項目によって、指示できる箇所が異なる

predicateは2024年1月時点で18項目あります。

ここまで進捗、ルートテーブル、コマンドと見てきましたが、全項目がすべてに対応しているわけではなく、一部しか対応していないもの、複数対応しているものと分かれています。

例えば、ブロックを壊した時に使用していたアイテムを検知できるmatch_toolという項目はルートテーブルにのみ使えます。

先ほどから例に挙げているlocation_checkは幅広く対応しています。

これらを判別するには、英語版のWikiを確認するのが良いです。

緑文字で、”any context”やら”block state”などと書かれており、対応している使い方が判別できるようになっています。

ちなみに”any context”は使う場面を問いません。
“block state”はルートテーブルのブロックを指示するものですね。”loot context”などとも書かれています。

各種リンク

当ブログでは18項目をそれぞれ解説しています。

汎用性の高いもの

ルートテーブルで使用するもの

確率に関するもの

特殊な挙動をする項目

筆者が勉強に使用した主なサイト

日本語Wiki
慣れないうちは訳の分からないワードが飛び交うサイト。
ある程度慣れたら使うのが良い。

英語版Wiki
日本語Wikiと同じこと言っているけど、無理に訳しているような箇所は英文の方が分かりやすい場合もある。

ケイヅキの屋台 マイクラのpredicateについて備忘録
日本語で書かれているかつ手堅く基本を抑えているので、まず初めに読むべき記事

Misode氏によるGenerator3種
Predicate Generator
Loot Table Generator
Advancement Generator
一生足を向けられない御人。偉大。

運営者(夏メ)のプロフィール