これは Minecraft Command Advent Calendar 2025 14日目の参加記事です。
自己紹介
今回初めてこのようなイベントに参加させていただきました、Chikuwaと申します。普段はTrip and Magicと言うデータパックを作っていて、その様子をYoutubeに上げたりしています。人への説明がまだ不慣れなので読みにくいかもしれませんが、できるだけわかりやすく説明しますのでよろしくお願いします!
はじめに
マイクラでコマンドを始めると必ず通る道であろう武器、魔法、ボスの作成。
その大抵が夢で終わってしまいますが、世の中には何としてでも完成させたいという人もいます。
もちろん私はそういう人を応援しますし、すごいと思います。しかし、そんな中でぶつかる大きな壁がいくつかあります。
演出、見た目、内部処理、クールダウン、ダメージ処理やらなんやら...
ということで、そんな壁の中でも多分一番解説が少ないであろうダメージ処理について初級編、中級編、上級編に分けて説明していきます。
記事の最後に今回使用したデータパックとリソースパックを置いておきます。参考にしてください。
Damageコマンドとはなんぞや
知っている方も多いかと思いますが、Damageコマンドとはエンティティにダメージを与えるコマンドです。構文としては、
/damage <ダメージを与える対象> <ダメージの値> <ダメージの種類>
これが基本形です。
例えば、
damage @s 10 minecraft:generic
の場合だと、

このように実行したプレイヤーに10ダメージが与えられます。
minecraft:genericのminecraft:は省略しても問題ないです。
このDamageコマンドが無かった頃は、エフェクトの一つである即時ダメージ(データ名:instant_damage)や、attributeなどを使ってダメージを与えていました。大変だったなぁ…
使い方:初級編
さて、昔話は置いておいて初級の使い方です。
ここでは2種類の引数を紹介します。
byとatです。
byはどうやって使うの?
使用方法をお教えしましょう。
byは、エンティティからのダメージとして対象にダメージを与えます。例えば、
damage @n[type=zombie] 1 minecraft:mob_attack by @n[type=skeleton]
を実行すれば、最寄りのゾンビが最寄りのスケルトンに攻撃を受けたことになり、ゾンビが罪なきスケルトンに対して敵対的になります。

可哀想なスケルトン...
この時の最寄りのゾンビ、スケルトンは実行者(プレイヤー)から見ての最寄りになります。
さらに、byの後にはfromも使えます。いつ使うのかと言うと、例えば、スケルトンがゾンビに誤射するとします。よく見る光景ですよね。そうすると、ゾンビは矢が飛んできた方向の反対方向にノックバックします。

これは、Damageコマンドに変換すると、
damage @n[type=zombie] 5 minecraft:arrow by @n[type=arrow]
となります。ここで思い出してほしいことは、ゾンビは攻撃された相手に攻撃を仕掛けに行くことです。もしこのコマンドの構文がマインクラフトの処理に入っていた場合、ゾンビは矢に攻撃を仕掛けに行くはずです。
しかし、ゾンビは矢ではなくスケルトンに攻撃を仕掛けに行きます。

ここで注意しておいてほしいところは、この動作はただby @n[type=arrow]を
by @n[type=skeleton]に変更しただけではダメなところです。
もしそうすると、ノックバックがスケルトンのいる方向の反対方向になってしまいます。

ではどうすればいいのか。そういう時にfromを使いましょう。
まず、矢とゾンビとスケルトンの順番にエンティティを用意します。その状態でチャット欄に
damage @n[type=zombie] 1 arrow by @n[type=arrow] from @n[type=skeleton]
と入力して実行してみましょう。
矢のある方向と反対方向にノックバックしますがスケルトンに敵対するはずです。

またしても可哀想なスケルトン...
atはどうやって使うの?
atは、ダメージとノックバックは発生させたいけど誰かに敵対させることはしたくない...そんな時に使います。
例えば、ブロックから攻撃判定を出したり、ただ意味もなくノックバックを使いたい時などです。
あ!今「だったらmob_attack_no_aggroかno_anger使えばいいじゃん」とか思った奴ら!
例え使い道なくてもあるものはあるの!すぐ代替案持ってくるんじゃない!
...と、説明しておいてなんですが、この引数に出番はそうそう回ってきません。なんなら私はさっき初めて使いました。
ですが使おうと思えば使えます。例えば、「持つと見ている方向にぴょんぴょん跳ねる剣」を無理やり作るとします。

これは無理やり作ったイメージ画像。楽しいそうな剣でしょ?
普通に作るなら、DeltaやらPlayer Motionやらなんやらを使ってきれいに吹き飛ぶようにしますが、今回は無理やりです。使用感なんざ気にしません。動きゃいいんです、動きゃ。今回使うコマンドはたった2つです。
execute as @a[nbt={SelectedItem:{id:"minecraft:iron_sword",count:1,components:{"minecraft:custom_data":{"sugoi":1b}}}}] at @s run damage @s 0.001 minecraft:mob_attack at ^ ^ ^-0.5
これを常時実行してください。
そしてその後にこのコマンドで剣を入手してください。
give @p iron_sword[item_name="すごい剣",rarity="epic",custom_data={"sugoi":1b}]
はい、後はサバイバルモードでその剣を手に持つだけです。
一応画面酔いに気を付けておいてください。
心が...跳ね...る?
はい、これで「サバイバルでのみ使える持つと見ている方向に痛々しい音を上げながら凄まじい画面揺れとともにぴちぴちと微妙に跳ねる剣」の完成です。私にはこれぐらいしか利用方法を思いつけませんでした。だれか、頼んだ...追記
飛び道具系のエンティティの攻撃処理を作るときに敵対化ができなくなる代わりとしてすり抜けずに盾で防ぐことができるようになるっぽいです。
まぁ少しコマンド組んだら敵対化できて盾でも防げるやつがbyで作れるようになるんですけどもね…
扱い方:中級編
ということで中級編です。
ここまではダメージの与え方でしたが、中級編ではDamage Typeとlangをいじくって死亡メッセージを変更していきましょう。
死亡メッセージってなんだっけ
死亡メッセージとは、プレイヤーが死亡した時に出てくる死因を簡潔に伝えてくれるメッセージのことです。

これはマイクラバニラで一切使われていない死亡メッセージ。
ちなみにスコアは死亡時に持っていた経験値の量です。
死に方の面白さじゃないからね。
Damage Typeを作ってみよう
死亡メッセージを作るにはDamage Typeなるものを作る必要があります。
と言ってもそこまで難しくはありません。
まずはVisual Studio Codeを開き、空のデータパックを作るか既にあるデータパックを開きます。
Descriptionこんなんでいいのかね...
では、data/<名前空間>にdamage_typeフォルダを作成します。

そしてそのフォルダの中に<名前>.jsonを作ります。
そして、<名前>.jsonにはこのように書きます
{
"death_message_type":"default"/"fall_variants"/"intentional_game_design",
"effects": "hurt"/"thorns"/"drowning"/"burning"/"poking"/"freezing",
"exhaustion": 0.0~,
"message_id": "<好きな名前(半角小文字のみスペース不可)>",
"scaling":"always"/"when_caused_by_living_non_player"/"never"
}
上から順に死亡メッセージのタイプ、ダメージ音、満腹度疲労レベル、死亡メッセージのid、難易度変更によるダメージ量の増減の有効化という意味です。もう少し詳しく話しますね。
death_message_type
こいつは死亡メッセージの種類を決めます。defaultではmessage_idにあるメッセージが、fall_variantsでは落下ダメージによる死亡メッセージが、intentional_game_designでは「ゲームの使用に殺された」と表示されます。省略されるとdefaultになります。今回はここを変えたいわけではないのでdefaultでいいです。
effects
こいつはダメージを受けた時の音を変更します。hurtは通常のダメージ音、thornsは棘の鎧を殴った時のダメージ音、drowningは溺水のダメージ音、burningは燃えている時のダメージ音、pokingはスイートベリーに入った時のダメージ音、freezingは凍結のダメージ音です。これはお好みでどうぞ。
exhaustion
こいつはダメージを受けた時の満腹度の疲労レベルを決めます。詳しくはこちらをご覧ください。
ここは妥当な範囲内で決めてください。
message_id
こいつは死亡メッセージを決めます。一番重要です。
ここにはstring型で識別詞を書きます。
わかりやすい名前で書きましょう。
基本的に半角小英数字と_を使います。
scaling
こいつは難易度を変更したときにダメージ量を増減させるかを決めます。alwaysでは常にダメージ量を増減させ、when_caused_by_living_non_playerではダメージの原因がプレイヤーではない場合にのみダメージ量を増減させ、neverではダメージ量を増減させません。これもお好みでどうぞ。
話を戻そう
今回はこのように書きました
{
"exhaustion": 0.25,
"message_id": "break_block",
"scaling": "always"
}
意味としては、「これは満腹度疲労レベルを+0.25して、難易度によってダメージを常に増減できる、死亡メッセージidがbreak_blockのダメージタイプ」となります。省略しているものは全てデフォルトのものとなります。
ダメージタイプについて詳しくはこちらをご覧ください。
死亡メッセージを登録する
死亡メッセージidの名前を書いたので、そのidで表示される文字を指定しましょう。
まずリソースパックを作るか既にあるリソースパックを開きます。
説明がTrip and Magic用のままだ!手抜きだとばれちゃう!
そして、asset/<名前空間>にlangフォルダを作り、その中にja_jp.jsonを作ります。
en_usやes_mxなどを追加して多言語化もできます。
そしてそこにこのように書きます。
{
"death.attack.死亡メッセージid": "%1$sを使った死亡メッセージ",
"death.attack.死亡メッセージid.player": "%1$s %2$sを使った死亡メッセージ",
"death.attack.死亡メッセージid.item": "%1$s %2$s %3$sを使った死亡メッセージ",
}
この中の%1$sはダメージを受けたエンティティ、%2$sはダメージを与えたエンティティ、%3$sはダメージを与えたエンティティが持っていたアイテム名です。
定義用の文の最後にあるplayer、itemはそれぞれ「死亡要因にエンティティの加害者がいる場合」と「死亡要因にアイテムを持ったエンティティの加害者がいる場合」となります。1
例:
最後に何も付いていない時
|%1$sはJapanease Harakiriした
最後にplayerが付いている時
|%1$sは%2$sに脅されてJapanease Harakiriした
最後にitemが付いている時
|%1$sは%2$sの%3$sで脅されてJapanease Harakiriした
腹切の読みは「せっぷく」または「はらきり」です。
(何の注意だこれ)
話を戻そう(2回目)
ということでこれらを組み合わせて死亡メッセージを作ります。
今回はこのように書きました。
{
"death.attack.break_block": "%1$sは飛んできたブロックにぶつかった",
"death.attack.break_block.player": "%1$sは%2$sから逃げようとして飛んできたブロックにぶつかった",
"death.attack.break_block.item": "%1$sは%2$sの%3$sから逃げようとして飛んできたブロックにぶつかった",
}
確認してみよう
これで死亡メッセージの設定が完了しました。
ワールドに入りなおして、
リソースパックを読み込み、
/reloadで再読み込みはせず、ワールドに入りなおしてください。
そうしないとダメージタイプは適用されません。
damage @s 100 <データパックの名前>:<Damage Typeのファイル名>
どうでしょうか、しっかりと死亡メッセージが表示されているでしょうか。
これで中級編は終わりです。
従え方:上級編
では上級編へ行きましょう。
上級編ではDamage Type Tagを使ってオリジナルダメージを作りましょう。
Damage Type Tagってなんだよ
Dagame Type Tagとは、Damage Typeの属性を決めるタグのことです。
ここで言う属性というものはis_projectileやis_fire、bypasses_invulnerabilityなどを指し、例えばis_projectileなら飛び道具耐性でダメージを軽減できたり、is_fireなら火炎耐性持ちのモブがそれを食らわなかったり、bypasses_invulnerabilityでは無敵(クリエイティブモードなど)貫通だったりと様々な事を決めることができます。
Damage Type Tag一覧
かなり長いので見たい人だけ見てください
開く
参照サイト
https://minecraft.wiki/w/Damage_type_tag_(Java_Edition)
| id | 意味 | 使用されているダメージタイプの例 |
|---|---|---|
| always_hurts_ender_dragons | 常にエンダードラゴンにダメージを与える | #is_explosion |
| always_kills_armor_stands | 一発でアーマースタンドを壊す | arrow,trident... |
| always_most_significant_fall | 死亡メッセージがバグらない用 | out_of_world |
| always_triggers_silverfish | シルバーフィッシュが仲間を呼ぶ | magic |
| avoids_guardian_thorns | ガーディアン、エルダーガーディアンの棘を無視する | magic,thorns... |
| burn_from_stepping | スニークか氷上歩行のエンチャントで回避ができる | campfire,hot_floor |
| burns_armor_stands | アーマースタンドを燃やす | on_fire |
| bypasses_armor | 防具を貫通する | on_fire,in_wall... |
| bypasses_cooldown | 無敵時間を貫通する | (無し) |
| bypasses_effects | エフェクトを貫通する | starve |
| bypasses_enchantments | エンチャントを貫通する | sonic_boom |
| bypasses_invulnerability | 無敵を貫通する | out_of_world,generic_kill |
| bypasses_resistance | ダメージ軽減、耐性を貫通する | out_of_world,generic_kill |
| bypasses_shield | 盾を貫通する | #bypasses_armor,cactus... |
| bypasses_wolf_armor | オオカミの鎧を貫通する | #bypasses_invulnerability,cramming |
| can_break_armor_stand | アーマースタンドを破壊することができる | player_explosion,#is_player_attack |
| damages_helmet | ヘルメットに入る耐久値ダメージを増加させる | falling_anvil,falling_block... |
| ignites_armor_stands | アーマースタンドに火がつく | in_fire,campfire |
| is_drowning | 水中呼吸で無効化できる | drown |
| is_explosion | 爆発耐性でダメージ軽減できる | fireworks,explosion... |
| is_fall | 落下軽減でダメージ軽減または落下速度低下で無効化できる | fall,ender_pearl... |
| is_fire | 火炎耐性を持つエンティティが無効化できる | in_fire,campfire... |
| is_freezing | ストレイや革の防具で無効化できる | freeze |
| is_lightning | これで死ぬとカメがボウルをドロップする | lightning_bolt |
| is_player_attack | プレイヤーからの攻撃 | player_attack,mace_smash |
| is_projectile | 飛び道具耐性で軽減、エンダーマンが無効化でき、確定でワープする | arrow,trident... |
| mace_smash | メイスによる攻撃 | mace_smash |
| no_anger | ダメージを受けても友好モブはパニックにならず、敵、中立モブは敵対しない | mob_attack_no_aggro |
| no_impact | モブがマークされない | drown |
| no_knockback | ダメージを受けてもノックバックしない | explosion,player_explosion... |
| panic_causes | 動物がダメージ元から逃げる | #panic_environmental_causes,arrow... |
| panic_environmental_causes | ブロックからの攻撃で動物がパニックを起こす | cactus,freeze... |
| witch_resistant_to | ウィッチがダメージを軽減する | magic,indirect_magic... |
| wither_immune_to | ウィザーがダメージを無効化できる | drown |
参照サイトに書かれていない情報は極力実験してから書いていますが、間違えている可能性もありますので参考程度しておいてください。
Damage Type Tagを自作Damage Typeに適用する
では作ったDamage Typeの属性を決めましょう。
まずminecraft/tagsの中にdamage_typeフォルダを作ります。
そしてその中に<上のDamage Type Tagのid>.jsonを作成します。

その中に
{
"values": [
"<名前空間>:<指定したいDamage Typeのファイル名>"
]
}
と入力しましょう。
今回はこのように書きました。
{
"values": [
"damage_test:break_block"
]
}
ではマインクラフトのワールドに入りなおして、
/reload`で再読み込みせずに、ワールドに入りなおしてください。
damage <検証したい対象> 10 <データパックの名前>:<Damage Typeのファイル名>
を実行しましょう。
私の場合は、
damage @n[type=enderman] 10 damage_test:break_block
わお!エンダーマンダメージくらってない!
このようにDamage Type Tagで指定した属性が適用されるはずです。
お疲れ様でした
これであなたもDamageマスター!やったね!
応用例
ここではdamageコマンドやDamage Type、Damage Type Tagを使って私が作った作品を紹介します。
1.大爆発
複数のエンティティを巻き込む大爆発です。衝撃波、飛んできたブロックそれぞれにダメージタイプが設定されています。
大爆発! pic.twitter.com/nayh53oiMv
— Chikuwa (@Chikuwa_TheEnd) June 29, 2025
2.石切台
石切台の上に乗ると無敵時間を無視してダメージが入ります。
【変更点紹介】
— Chikuwa (@Chikuwa_TheEnd) November 23, 2025
石切り台の上に乗ると、すごい速度で体力が削られます。ですが一回のダメージは0.5です。乗ってしまったらすぐにおりましょう。 pic.twitter.com/xRart7lJ0L
3.ワカメソード
ワカメと言いながら材料に昆布を使う強い武器です。
【武器紹介】
— Chikuwa (@Chikuwa_TheEnd) November 23, 2025
ワカメソード
レアリティ:エピック
ワカメの力を使った魔法の短剣。
材料に昆布を使ったが、何が何だろうとワカメである。 pic.twitter.com/ealvyIADfy
最後に
さて、どうだったでしょうか。
こういう記事を書くのは初めてなのですが、この記事でデータパック界隈が少しでも栄えてくれたら幸いです。
気になった点や、動かないなどがあったら気軽にコメントしてほしいです。恐らくすぐに返信すると思います...恐らく。
ではまた!
今回使用したデータパック/リソースパック
-
腕がないエンティティはどうなるのかって?多分mainhandがあるエンティティは問題なく動くんじゃないですかね ↩


