この記事では、Minecraft Java Edition(バージョン1.20.4)の情報をもとに執筆しています。
そのほかのバージョンや機種などでの動作は保証できません。
こんにちは!
マインクラフターのなつめ(@natsume_717b)です。
この記事では、こんな疑問を解決します!
- 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が有効となる点で異なります。
詳しくはこちら!
実際の例
今回はコマンドで使用するものとルートテーブルで使用するものの2通りがあるため、それらを作成していきます。
ともあれ、データパックを作成することは変わらないため、まずはデータパックの構造を見ていきましょう。
- datapack本体
- data
- sample
- predicates
- random_chance.json
- loot_tables
- random_chance.json
- predicates
- sample
- pack.mcmeta
- data
いつもの如く、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は指示した確率で成功するようにできる項目。
- コマンド、ルートテーブルで使用することができる。
この記事は以上になります。
2016年からマイクラを楽しんでおり、最近はクリエイティブモードでコマンドを駆使して遊んでいます!