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

【マイクラ】killed_by_playerでプレイヤーに倒されたか検知【predicate】

【マイクラ】killed_by_playerでプレイヤーに倒されたか検知【predicate】

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

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

なつめ

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

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

本記事の内容
  • killed_by_playerでプレイヤーに倒されたかどうかを検知
  • 実際の例

今回はkilled_by_playerについて見ていきます。

killed_by_playerはpredicateの1項目でありながら、実際はルートテーブルに組み込んで使用する項目です。

具体的な例と共に解説しているので、ぜひ参考にしてくださいね。

それでは、さっそく見ていきましょう!

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

killed_by_playerでプレイヤーに倒されたかどうかを検知

killed_by_playerはプレイヤーによって倒されたかどうかを検知します。

また、ルートテーブル内に組み込むことで機能する項目です。
実質的に「プレイヤーに倒された場合に○○をドロップする」という使い方をするものだと思えばいいわけですね。

例えばですが、「ゾンビがプレイヤーによって倒された場合に石をドロップする」なんてときには、ゾンビのルートテーブルに対して、killed_by_playerを指示し、石をドロップさせるようにします。

このように使うのが、killed_by_playerということです。

実際の例

killed_by_playerはルートテーブルで使用するということで、データパックを作成します。

今回はゾンビのドロップ品を変更するということで、ゾンビがドロップするアイテムを指示しているjsonファイルに上書きする形で作成します。

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

pack.mcmeta、jsonファイル以外は全てフォルダです。

そして、pack.mcmetaに記述する内容がこちら。

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

zombie.jsonの中身は以下の通り。

{
  "type": "minecraft:entity",
  "pools": [
    {
      "rolls": 1,
      "entries": [
        {
          "type": "minecraft:item",
          "name": "minecraft:stone"
        }
      ],
      "conditions": [
        {
          "condition": "minecraft:killed_by_player"
        }
      ]
    }
  ]
}

特に難しいことはしていませんが、それなりに複雑な記述を行うので生成サイトを利用することをおすすめします。

まとめ

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

ポイント
  • killed_by_playerはルートテーブルで使用することのできるpredicateで、プレイヤーによって倒されたかどうかを検知できる。

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

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