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

【マイクラ】random_chanceで成功確率を扱える【predicate】

【マイクラ】random_chanceで成功確率を扱える【predicate】

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

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

なつめ

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

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

本記事の内容
  • random_chanceで成功確率を操作する
  • 実際の例

random_chanceは成功確率を指示できるpredicateです。

0%から100%まで指示できるので、簡単に乱数要素を扱えるのが魅力的と言えますね。

random_chanceはpredicateだけでなく、ルートテーブルにも使用することができるため、かなり便利です。

それでは、さっそく見ていきましょう!

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

random_chanceで成功確率を操作する

random_chanceを指示することで、指示した確率で成功するようにできます。

つまり、50%の確率で成功するよう指示した場合は、50%の確率でコマンドが実行されたり、ルートテーブルによるドロップが行われたりします。

実際には0から1の値で指定するため、50%の確率を指示する場合は0.5という値を指示します。

また上述で紹介した通り、コマンド、ルートテーブルともに使用できる項目です。

コマンドの場合は指示した確率でコマンドが実行され、ルートテーブルでは指定した確率でドロップ(付与)するようになります。

ルートテーブルに関しては、似た存在にrandom_chance_with_lootingが存在します。

しかし、これはエンティティ関連のものですので、ブロックなどそのほかの項目ではrandom_chanceが有効となる点で異なります。

詳しくはこちら!

【マイクラ】random_chance_with_lootingで確率操作【predicate】

実際の例

今回はコマンドで使用するものとルートテーブルで使用するものの2通りがあるため、それらを作成していきます。

ともあれ、データパックを作成することは変わらないため、まずはデータパックの構造を見ていきましょう。

  • datapack本体
    • data
      • sample
        • predicates
          • random_chance.json
        • loot_tables
          • random_chance.json
    • pack.mcmeta

いつもの如く、pack.mcmetaとjsonファイル以外は全てフォルダになります。

pack.mcmetaの中身はこちら。

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

random_chance.jsonの中身は以下の通り。
predicatesとloot_tablesで同じ名前に命名していますが、別物として扱われるため問題ありません。

predicatesに格納されているjsonファイルに記載するものはこちら。

{
    "condition": "minecraft:random_chance",
    "chance": 0.5
  }
  

loot_tablesに格納されているjsonファイルには以下のように記載します。

{
    "pools": [
      {
        "rolls": 1,
        "entries": [
          {
            "type": "minecraft:item",
            "name": "minecraft:stone"
          }
        ],
        "conditions": [
          {
            "condition": "minecraft:random_chance",
            "chance": 0.5
          }
        ]
      }
    ]
  }
  

いずれも50%の確率で成功するよう、0.5と記述しています。

それぞれ使い方が異なり、predicatesに格納されているものを使用するには

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

と実行し、loot_tablesに格納されているものは

/loot give @a loot sample:random_chance

と実行します。

何度か試すと50%程度で成功することが分かるはずです。

まとめ

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

ポイント
  • random_chanceは指示した確率で成功するようにできる項目。
  • コマンド、ルートテーブルで使用することができる。

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

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