マウントオブメイヘムのアップデートで追加された新アイテム、オウムガイの鎧。特にダイヤモンドの鎧が入手できないと話題です。アイテムの入手確率を定義しているルートテーブルより、出現確率を計算していかにレアなのか検証しました。
本記事は統合版マインクラフト Minecraft: Bedrock Edition の
アドオンサンプルファイル v1.21.130.3 で検証を行っています
ルートテーブル
構造物のチェストからはランダムでアイテムが出現します。例えば、村のチェスト。同じ形の建物のチェストでも、入っているアイテムは建物ごとに毎回異なります。チェストから、どんなアイテムが出現するのかを定義しているのがルートテーブルです。他にも、モンスターのアイテムドロップを定義しているのもルートテーブルです。ランダムに入手できるアイテムの内容や出現確率をルートテーブルが決めています。
ルートテーブルはビヘイビアーパックで定義されています。公式のサンプルリポジトリbedrock-samplesより、実際のファイルが確認できます。こちらは小さい海底遺跡のチェストのルートテーブルです。
下のほうにスクロールするとnautilus_armor、日本語に翻訳するとオウムガイの鎧と書かれた項目があります。つまり、小さい海底遺跡のチェストからオウムガイの鎧を入手できる可能性があります。このファイルから、ダイヤモンドのオウムガイの鎧の入手確率を計算してみます。
ルートテーブルの構造
ルートテーブルはjson形式で、出現するアイテムが記載されています。
小さい海底遺跡のチェストのファイルから一部を抽出すると、次のような構造になっています。
{
"pools": [
{
"rolls": {
"min": 2,
"max": 8
},
"entries": [
{
"type": "item",
"name": "minecraft:stone_axe", // 石の斧
"weight": 2
},
{
"type": "item",
"name": "minecraft:stone_spear", // 石の槍
"weight": 2
},
// 略
]
},
{
"rolls": 1,
"entries": [
{
"type": "item",
"name": "minecraft:leather_chestplate",
"weight": 1
},
{
"type": "item",
"name": "minecraft:golden_helmet",
"weight": 1
}
// 略
]
}
// 略
]
}
entriesの[]の中にアイテムが並んでいます。これが実際にチェストに出現するアイテムです。
{
"type": "item",
"name": "minecraft:stone_axe",
"weight": 2
}
nameはコマンドでアイテムを取得するときの名前です。weightはこのアイテムが出現する重みづけです。数字が大きいほど、出現しやすくなります。
entriesの外枠をみると、rollsとひとつのオブジェクトになっています。
{
"rolls": {
"min": 2,
"max": 8
},
"entries": [
// 略
]
}
rollsは抽選回数、entriesのアイテムが何個チェストに生成されているか決めています。ここでは、最小2個、最大8個です。entriesで定義されたアイテムのweightにしたがって、rollsで定義された個数アイテムが出現します。
さらにこのオブジェクトはpoolsという配列になっています。
{
"pools": [
{
"rolls": {
"min": 2,
"max": 8
},
"entries": [
// 略
]
},
{
"rolls": 1,
"entries": [
// 略
]
}
]
}
それぞれ独立したentriesをもつオブジェクトが、それぞれにrollsで指定した個数のアイテムとなります。1つのルートテーブル(チェスト)の中で、カテゴリの異なるアイテム群を別々に抽選するしくみとなっています。
ここまでの構造を整理すると、次のようになります。
- ルートテーブル全体
- pools アイテムの「グループ」のリスト
- rolls 抽選回数
- entries 抽選対象のアイテム
- name アイテム名
- weight 当たりやすさ
- pools アイテムの「グループ」のリスト
このように、ルートテーブルではチェストに出現するアイテムとその確率、個数を定義しています。
出現確率の計算
ルートテーブルのファイルより、pythonを使って各アイテムの出現確率を計算してみます。
pythonの環境構築はこちらの記事を参照してください。Jupyter環境で実行することを想定しています。
import json
# インストール uv add polars
import polars as pl
polarsは表形式のデータを高速で扱えるライブラリです。
# ファイル読み込み
filepath = r'chests\underwater_ruin_small.json'
with open(filepath, mode='r') as f:
chest_json = json.load(f)
bedrock-samplesよりファイルをダウンロードして、適当に配置します。
# 出現確率を計算する
pools = []
for pool in chest_json['pools']:
display(pool['rolls'])
names = []
weights = []
# jsonをlistに変換
[(names.append(entry['name']), weights.append(entry['weight'])) for entry in pool['entries']]
# weightの合計を取得
weight_sum = sum(weights)
# 各アイテムごとの出現確率を計算
chances = [round(weight / weight_sum * 100,2) for weight in weights ]
df = pl.DataFrame({'name':names, 'weight': weights, 'chance':chances})
display(df)
pools.append(df)
poolsの要素ひとつひとつで、独立して抽選されるため、それぞれで計算しています。
各アイテムごとの出現確率は、ひとつのentriesでweightの合計を算出し、そのアイテムの全体に対するweightの割合から求めることができます。
実行すると以下のように、表形式で各アイテムごとの出現確率が表示されます。

オウムガイの鎧の出現確率
オウムガイの鎧のプールを抜粋すると次の通りです。
rolls:1
| name | weight | chance |
|---|---|---|
| minecraft:copper_nautilus_armor | 100 | 54.05 |
| minecraft:iron_nautilus_armor | 50 | 27.03 |
| minecraft:golden_nautilus_armor | 25 | 13.51 |
| minecraft:diamond_nautilus_armor | 10 | 5.41 |
上から順に、銅、鉄、金、ダイヤモンドの鎧です。ダイヤモンドのオウムガイの鎧は出現確率約5.4% レアです。
しかし、jsonファイルをよく見ると、オウムガイの鎧のプールにはもう1つオブジェクトが存在します。
{
"rolls": 1,
"conditions": [
{
"condition": "random_chance",
"chance": 0.2
}
],
"entries": [
{
"type": "item",
"name": "minecraft:copper_nautilus_armor",
"weight": 100
}
// 略
]
}
conditionsにてrandom_chanceが0.2、 20% に設定されています。プール自体が抽選対象となる確率が20%です。
オウムガイの鎧のプールはrollsが1、抽選回数が1回で、チェストあたり1個生成されます。
つまり オウムガイの鎧が入っている確率が20%で、そのうちダイヤモンドのオウムガイの鎧である確率が5.4% となります。
weightから計算したchanceにそれぞれ20%かけると
# オウムガイの鎧のプール jsonファイルの最後に書かれているため、リストの最後の要素
df = pools[-1]
df = df.with_columns(
pl.col('chance').map_elements(lambda x : round(x * 0.2 , 1)).alias('chance')
)
df
| name | weight | chance |
|---|---|---|
| minecraft:copper_nautilus_armor | 100 | 10.8 |
| minecraft:iron_nautilus_armor | 50 | 5.4 |
| minecraft:golden_nautilus_armor | 25 | 2.7 |
| minecraft:diamond_nautilus_armor | 10 | 1.1 |
あるチェストからダイヤモンドのオウムガイの鎧が出現する確率は 約1.1%
静寂の鍛冶型(1.2%)よりレアです。
まとめ
ダイヤモンドのオウムガイの鎧のチェスト辺りの出現確率を計算したところ、 1.1% と非常に低いことが分かりました。激レアです。
全種コレクションしたい場合は、ダイヤモンドと、ネザライト強化用に2個必要です。「オウムガイの鎧全種集めるまで終われません」を実施する場合、長時間企画になることが想定されます。