この記事では、Minecraft Java Edition(バージョン1.20.4)の情報をもとに執筆しています。
そのほかのバージョンや機種などでの動作は保証できません。
こんにちは!
マインクラフターのなつめ(@natsume_717b)です。
この記事では、こんな疑問を解決します!
- table_bonusでドロップ率を操作する
- 実際の例
table_bonusはブロックのドロップ率に関係するpredicateです。
ブロックの破壊時に使用していたツールのエンチャントレベルをみるものなので、ルートテーブルに記述するものになります。
エンチャントレベルによってドロップ率を変更するため、なかなかに面白い特徴を持っていると言えますね。
さっそく見ていきましょう!
本記事で紹介するデータパックのサンプルはGitHubにてダウンロードできます。
table_bonusでドロップ率を操作する

table_bonusを指示することで、ブロックを破壊した時のドロップ率を変更することができます。
正確には、破壊に使用したアイテムに付与されているエンチャントが、table_bonusで指示したエンチャント効果と同じ場合に、レベルごとに決めた確率を参照してドロップするかどうかを決めます。
具体的な例を挙げるならば、table_bonusで効率強化を指示していた場合には、素の状態と最大レベルであるⅤまでの計6つのドロップ率を決めます。
ブロック破壊時に効率強化がついていた場合には、その効率強化のレベルに応じて、先ほど決めたドロップ率が適用されるといった感じですね。
次項で実際の例を見ていきましょう。
実際の例

table_bonusはブロックを壊した時に用いられるルートテーブルに組み込む必要があります。
今回は石を効率強化のエンチャントが付いているアイテムで壊した場合に、その効率強化のレベルによってダイヤモンドがドロップする確率が決まるというものを作成してみます。
何はともあれ、まずはデータパックを作成しましょう。
- datapack本体
- data
- minecraft
- loot_tables
- blocks
- stone.json
- blocks
- loot_tables
- minecraft
- pack.mcmeta
- data
デフォルトの石のルートテーブルを上書きするために、minecraftフォルダなどを上記の通りに作成する必要があります。
また、pack.mcmetaとjsonファイル以外は全てフォルダになっており、pack.mcmetaの中身については以下の通り。
{
"pack": {
"pack_format": 26,
"description": ""
}
}
肝心のstone.jsonは以下のように記述します。
今回はtable_bonusに焦点をあてているため、通常時のドロップなどは指定していません。
{
"type": "minecraft:block",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "minecraft:diamond"
}
],
"conditions": [
{
"condition": "minecraft:table_bonus",
"enchantment": "minecraft:efficiency",
"chances": [
0,
0.2,
0.4,
0.6,
0.8,
1
]
}
]
}
]
}
このようなコードを生成するには、生成サイトを利用することをおすすめします。
こちらから生成できます!
conditionでtable_bonusを指示しており、エンチャント効果の指定しています。
各確率については、chancesの項目で決めており、上から順に効率強化が付与されていない場合のドロップ率、レベルⅠ、レベルⅡ……といった感じです。
つまりは、下に行くほど高いレベルになります。
上記の場合は、レベルが上がるごとに0.2ずつ増加しているため、レベルが1上がるごとにドロップ率が20%上昇することが分かります。
効率強化が付与されていないなら、0%のドロップ。
効率強化Ⅴならば100%ドロップするといった感じです。
まとめ
というわけで、今回のまとめです。
- table_bonusは指示したエンチャント効果が付与されているアイテムを使ってブロックを破壊した時に適用される項目。
- エンチャントレベルによってドロップ率を変更することができる。
この記事は以上になります。
2016年からマイクラを楽しんでおり、最近はクリエイティブモードでコマンドを駆使して遊んでいます!