1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

EquippableComponent を覗き見る

Last updated at Posted at 2024-11-08

はじめに

この記事は Equipment についてプラグインの側からできることについて書いたものです。
定義ファイルの書き方やモデルの作成方法などについては解説していませんので予めご了承下さい。

この記事は主に PaperMC の JavaDoc を基にして書かれています。
そのため Spigot などでは実装や挙動に多少の差異が含まれている可能性があります。

PaperMC JavaDoc 1.21.3 EquippableComponent

EquippableComponent とは?

Minecraft Java Edition 1.20.5 か 1.21 あたりで追加された、アイテム装着時に色々な効果をもたらす動作の定義を行うコンポーネントのこと。
名前が近い EquipmentSlot とは別物です。

ItemMeta のフィールドであり、API 利用者側での初期化はできません。
効果やその発動条件などはほぼすべてデータパック内で管理するため、プラグイン側で出来ることはあまりありません。

プラグインからできること

  • データパック側で作成した定義を(取得・アイテムに適用)する
  • 装着可能なエンティティの種類を(取得・設定)する
  • 装着可能な装備スロットを(取得・設定)する
  • ダメージを受けた際に耐久が削れる(かどうかを取得・ように設定)する
  • ディスペンサーで射出して装備できる(かどうかを取得・ように設定)する
  • 装備したときにならす音を(取得・設定)する
  • 装着したときの外観に適用するモデルを定義したファイルの名前空間を(取得・設定)する
  • 装備をインベントリ内などで右クリックしたときに、既存の防具と同じように装着される(かどうかを取得・ように設定)する

装着可能なエンティティの制限、装着時の音、スロット制限以外では真偽値を取得・設定するか、名前空間 (NamespacedKey) を指定する以外できることがありません。

使用例

データパック datapack-nameassets/datapack-name/models/equipment/namespace.json に配置された定義ファイルに記載されている内容を鉄のレギンスに適用する例

val item = ItemStack(Material.IRON_LEGGINGS)
item.editMeta { meta ->
  meta.setEquippable(meta.equippable.apply {
    slot = EquipmentSlot.LEGS
    model = NamespacedKey("datapack-name", "namespace")
  }
})

datapack-name の部分にはデータパックの名前空間(assets/~~~/models~~~)を、"namespace" には定義ファイルを示す文字列を入れます。(assets/~~~/models/equipment/***.json***)

定義ファイルで humanoid, humanoid_leggings といったようにきちんと定義をしていると、上記のコードで設定したアイテムを装備したときの外観が変わります。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?