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

【マイクラ】any_ofで複数条件から検知する【predicate】

【マイクラ】any_ofで複数条件から検知する【predicate】

この記事では、Minecraft Java Edition(バージョン1.20.4)の情報をもとに執筆しています。
そのほかのバージョンや機種などでの動作は保証できません。

こんにちは!
マインクラフターのなつめ(@natsume_717b)です。

なつめ

2016年からマイクラを楽しんでおり、最近はクリエイティブモードでコマンドを駆使して遊んでいます!

この記事では、こんな疑問を解決します!

本記事の内容
  • any_of で複数の条件から検知する
  • 実際の例

predicateの項目であるany_ofは、all_ofと同様に複数のpredicateを記述する必要のある項目です。

しかしながらall_ofとは異なり、記述したpredicateのうち1つでも条件を満たせばany_ofも「真」となります。

この記事では具体的な例を出しつつ、これらの事を深掘りしていきます。

というわけで、さっそく見ていきましょう!

本記事で紹介するデータパックのサンプルはGitHubにてダウンロードできます。

any_of で複数の条件から検知する

any_ofはall_ofと同じく、複数のpredicateを指示して使う項目です。

all_ofについては以下の記事で解説しています。

【マイクラ】all_ofで複数の項目をまとめる【predicate】

ですが、all_ofとは異なり、指示したpredicateのどれかが条件を満たしていれば、any_ofも「真」となります。

例えば、location_checkで平野を指示し、entity_scoresでsample_scoreというスコアボードの値が10以上100以下の場合を指示したとします。

all_ofであれば両者ともに条件を満たす必要があるため、平野にいて、なおかつ値が10~100である必要があります。

それがant_ofでは、どちらか1つでも条件を満たせばOKです。

つまり、「平野にいればいい」「平野にいなくともスコアボードの値が適切であればOK」といった感じになります。

1つ以上満たしていれば良いので、すべて満たした場合でも「真」となります。

実際の例

ここからは実際の例を見ていきます。

先ほども例に挙げたように、「平野にいる」もしくは「指示したスコアボードの値が10以上100以下である」場合に真となるany_ofを作成してみましょう。

まずはデータパックの作成からです。

  • datapack本体
    • data
      • sample
        • predicates
          • test.json
    • pack.mcmeta

pack.mcmeta、test.json以外は全てフォルダです。

また、pack.mcmeta、test.jsonの中身は以下の通り。

{
  "pack": {
    "pack_format": 26,
    "description": ""
  }
}

test.jsonはこちら。

{
    "condition": "minecraft:any_of",
    "terms": [
      {
        "condition": "minecraft:location_check",
        "predicate": {
          "biome": "minecraft:plains"
        }
      },
      {
        "condition": "minecraft:entity_scores",
        "entity": "this",
        "scores": {
          "sample_score": {
            "min": 10,
            "max": 100
          }
        }
      }
    ]
  }
  

今回は例としてjsonファイルの中身を記述していますが、predicateは生成サイトを使って作るのが簡単でおすすめです。

predicateを生成できるサイトはこちら

データパック作成・導入後に、実行するコマンド例としてはこちら。

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

指示した条件のうち1つ以上当てはまっていれば、ダイヤモンドが付与されるコマンドです。

もちろん、全ての条件に適さなければダイヤモンドが付与されることはありません。

まとめ

というわけで、今回のまとめです。

ポイント
  • any_ofは複数の条件を書いたうえで、いずれかが満たしていれば「真」となる。

この記事は以上になります。

  • 【まとめ】functionコマンドの基本から応用【マイクラ】
  • 【まとめ】カスタムストラクチャーの実装・カスタム方法【マイクラ】