マルチプレイなら『シン・VPS』がおすすめ!

【マイクラ】damage source propertyでダメージ源を指定【predicate】

【マイクラ】damage source propertyでダメージ源を指定【predicate】

この記事では、Minecraft Java Edition(バージョン1.20.4)の情報をもとに執筆しています。
そのほかのバージョンや機種などでの動作は保証できません。

こんにちは!
マインクラフターのなつめ(@natsume_717b)です。

なつめ

2016年からマイクラを楽しんでおり、最近はクリエイティブモードでコマンドを駆使して遊んでいます!

この記事では、こんな疑問を解決します!

本記事の内容
  • ルートテーブルで死亡時のダメージ源を指示する
  • 実際の例

今回はpredicateの1項目である、damage_source_propertyについてです。

この項目はpredicateでありながら、使用できるのはルートテーブル内のみになります。

具体的にどう使うのか、詳しく見ていきましょう!

本記事で紹介するデータパックのサンプルはGitHubにてダウンロードできます。

ルートテーブルで死亡時のダメージ源を指示する

damage_source_propertyはどのダメージ源がもとで死亡したのかを指示するものになっています。

もう少し具体的に言うならば、エンティティの死亡時にどのダメージ源で死亡したのかを判別することができ、それをもとにルートテーブルで活用します。

例えば、ブタの死亡時のドロップに対して「矢で射抜かれた場合には○○をドロップする」と指示する際に使用する項目なわけですね。

次項で詳しく見ていきましょう。

実際の例

damage_source_propertyはルートテーブルで活用するものなので、それに合わせてデータパックを作成する必要があります。

具体的な構造は以下の通り。
今回はブタが矢で倒された場合にネザライトツルハシをドロップするように組んでみます。

  • datapack本体
    • data
      • minecraft
        • loot_tables
          • entities
            • pig.json
    • pack.mcmeta

pack.mcmeta、jsonファイル以外は全てフォルダになります。

pack.mcmetaの記述内容は以下の通り。

{
  "pack": {
    "pack_format": 26,
    "description": ""
  }
}

pig.jsonの内容はこちら。

{
  "type": "minecraft:entity",
  "pools": [
    {
      "rolls": 1,
      "entries": [
        {
          "type": "minecraft:item",
          "name": "minecraft:netherite_pickaxe"
        }
      ],
      "conditions": [
        {
          "condition": "minecraft:damage_source_properties",
          "predicate": {
            "direct_entity": {
              "type": "#minecraft:arrows"
            }
          }
        }
      ]
    }
  ]
}

conditionsの箇所でdamage_source_propertiesを指示していますね。

direct_entityに#minecraft:arrowsを指示しているので、倒すこととなった直接的なエンティティが矢である場合に機能するというわけです。

direct_entityをsource_entityにすれば、間接的なエンティティを権利するようになるため、プレイヤーが射た矢などと指定することも可能です。

ルートテーブルの生成は以下のサイトで行うのをおすすめします

まとめ

というわけで、今回のまとめです。

ポイント
  • damage_source_propertyを使うことで、死亡時のダメージ源を指示して、ドロップ品を決められる。

この記事は以上になります。

  • 【まとめ】functionコマンドの基本から応用【マイクラ】
  • 【まとめ】カスタムストラクチャーの実装・カスタム方法【マイクラ】