この記事では、Minecraft Java Edition(バージョン1.20.4)の情報をもとに執筆しています。
そのほかのバージョンや機種などでの動作は保証できません。
こんにちは!
マインクラフターのなつめ(@natsume_717b)です。
この記事では、こんな疑問を解決します!
- survives_explosionは爆発時のドロップに関係する
- 実際の例
survives_explosionは爆発によるドロップ率を変化させるpredicateです。
この項目を指示することで、爆発の際にドロップしない可能性が発生します。
爆発でない場合のドロップについても覚えておくべきなので、ぜひ参考にしてくださいね。
詳しく見ていきましょう!
本記事で紹介するデータパックのサンプルはGitHubにてダウンロードできます。
survives_explosionは爆発時のドロップに関係する

survives_explosionは、爆発とブロックのドロップに関係している項目です。
簡単に言ってしまえば、survives_explosionを指示することで、爆発によって壊されたブロックがドロップしない可能性を与えます。
ブロックのドロップということで、ルートテーブルで使用する項目です。
もう少し踏み込んで説明をすると、survives_explosionを指示すると「1÷爆発半径」という計算式を使用するようになります。
もし爆発半径が3であるなら、答えは1/3となり、約33%の確率でドロップします。
このようにドロップしない場合とドロップする場合が発生するわけですね。
また、爆発でないドロップには、計算式が無視されます。
つまり通常の採掘などではsurvives_explosionの計算式は一切使われません。
あくまでも爆発が起きる場合にだけ、計算式を使用します。
実際の例

実際にデータパックを作成してみましょう。
survives_explosionはルートテーブルで使用するため、今回はテラコッタのドロップに対して指示してみます。
また、ドロップ品をエメラルドに変更して分かりやすくします。
というわけで、いかがデータパックの構造です。
- datapack本体
- data
- minecraft
- loot_tables
- blocks
- terracotta.json
- blocks
- loot_tables
- minecraft
- pack.mcmeta
- data
pack.mcmetaとjsonファイル以外は全てフォルダになります。
pack.mcmetaの中身はこちら。
{
"pack": {
"pack_format": 26,
"description": ""
}
}
JSONファイルの中身は以下のように記述します。
{
"type": "minecraft:block",
"pools": [
{
"rolls": 1,
"bonus_rolls": 0,
"entries": [
{
"type": "minecraft:item",
"name": "minecraft:emerald"
}
],
"conditions": [
{
"condition": "minecraft:survives_explosion"
}
]
}
]
}
survives_explosion自体には設定すべき項目が存在しないため、conditionでsurvives_explosionを指示するだけでOKです。
上記の場合は、爆発であれば、爆発半径をもとに計算を行った上でドロップが行われます。
爆発によるドロップでない場合は、survives_explosionが無視されるため、単純にエメラルドがドロップするだけになります。
TNTによる爆発は100%ドロップする仕様です。
そのため、クリーパーに対して火打ち石と打ち金を使用して爆発を起こすのをおすすめします。
まとめ
というわけで、今回のまとめです。
- survives_explosionを指示することで、爆発によるアイテムのドロップ率を変更できる。
この記事は以上になります。
2016年からマイクラを楽しんでおり、最近はクリエイティブモードでコマンドを駆使して遊んでいます!