【発射アイテム】

はじめに

ここでご紹介させて頂く発射アイテムというのは、弓やクロスボウなどのような武器で遠隔攻撃を行うアイテムの事を指しています。
以降ではcomponentsブロックのJSONデータの内容を「汎用ブロック」「アニメーション設定」「発射機能設定」の3つのパートに分けて発射アイテムの作り方をご紹介します。

※基本的な部分は▶ダミーアイテムのページでダミーアイテムが実装済みである事を前提に進めていきます。
※「汎用ブロック」とは、上記ページの「コンポーネント定義」の項目でご紹介させて頂いたcomponentsブロックの便宜上の呼称です。

定義ファイルの内容

以下のファイルはダミーアイテムの実装を元に必要な定義を追加したものです。
<ビヘイビアパック>/items/dummy_item.json
{
    "format_version": "1.20.50",
    "minecraft:item": {
        "description": {
            "identifier": "customize:dummy_item",
            "menu_category": {
                "category": "items"
            }
        },
        "components": {

            // 汎用ブロック -----START
            "minecraft:icon": {
                "texture": "dummy_item"
            },
            "minecraft:display_name": {
                "value": "item.customize:dummy_item.name"
            },
            "minecraft:can_destroy_in_creative": false,
            "minecraft:hand_equipped": true,
            "minecraft:damage": 6,
            "minecraft:glint": true,
            // 汎用ブロック -----END

            // アニメーション設定 -----START
            "minecraft:use_animation": "bow",
            "minecraft:use_modifiers": {
                "use_duration": 1.6,
                "movement_modifier": 0.35
            },
            // アニメーション設定 -----END

            // 発射機能設定 -----START
            "minecraft:shooter":{
                "ammunition" :[{
                    "item" :"minecraft:arrow",
                    "use_offhand" :true,
                    "search_inventory" :true,
                    "use_in_creative" :true
                }],
                "max_draw_duration" :0.1,
                "scale_power_by_draw_duration" :true,
                "charge_on_draw" :false
            },
            "minecraft:cooldown": {
                "category": "dummy_item",
                "duration": 1.0
            }
            // 発射機能設定 -----END

        }
    }
}
                    
上記のコメントのように、大きく分けて「汎用ブロック」「アニメーション設定」「発射機能設定」の3つのパートに分けています。
以下ではパート分けしたそれぞれの内容をみていきます。

汎用ブロック


・minecraft:icon

texture(="dummy_item")
テクスチャファイルの所在を表すキーを設定しています。

・minecraft:display_name

value(="item.customize:dummy_item.name")
以下の>> 多言語設定の項目で設定しているキーの名前を設定しています。
この多言語設定で登録されているキーの値がアイテム名として表示されます。

・minecraft:can_destroy_in_creative(=false)

クリエイティブモード時にブロックを壊さないようにfalseを設定しています。

・minecraft:hand_equipped(=true)

装備品としてtrueを設定しています。

・minecraft:damage(=6)

攻撃した時のダメージを設定しています。

・minecraft:glint(=true)

カスタムアイテムである事を表現するため、レンダリングがかかるようにtrueを設定しています。

アニメーション設定

アニメーションの指定方法の詳細については▶アニメーションの種類▶定義が必要なアニメーションページをご覧ください。

・minecraft:use_animation(="bow")

アニメーションの種類を指定します。
今回は矢を射るアイテムなのでbowを指定しています。

・minecraft:use_modifiers

アイテムを使用するまでにかかる時間を指定します。
▶食料アイテムの設定を流用しています。

発射機能設定


・minecraft:shooter

発射機能特定の設定項目です。
ammunition
発射時に消費されるアイテムを指定します。
item(="minecraft:arrow")
ここには補充アイテム(発射時にアイテムスロット上で消費するアイテム)を指定します。今回は矢のアイテムを設定しています。
ネイティブなアイテムを使う場合にはこれで問題ありませんが、補充アイテムとしてカスタムアイテムを指定する場合、および発射体エンティティとしてカスタムエンティティを使う場合は▶発射体エンティティのページをご覧ください。
use_offhand(=true)
trueの場合、オフハンドでアイテムを使用できます。

search_inventory(=true)
trueの場合、インベントリからアイテムを検索できるようになります。

use_in_creative(=true)
trueの場合、クリエイティブモードでも使用できます。

max_draw_duration(=0.1)
scale_power_by_draw_durationを設定している場合、ここで設定した時間(恐らく秒数)を超えるまでチャージしないと自分に当たるので注意が必要です。

scale_power_by_draw_duration(=true)
チャージ時間に応じて投げの威力が増加するかどうかを設定します。
trueの場合、長く押し続けるほど放した時のパワーが大きくなり、アニメーションのuse_modifiers設定に関わらず右クリック状態を解除した時点で発射されます。

charge_on_draw(=false)
trueの場合、1回目のチャージでクロスボウのように溜めを作り、2回目のアクションで発射します。

・minecraft:cooldown

アイテムのクールダウン時間を指定します。
このブロックを設定していると、発射後のクールダウン時間内では再発射できなくなります。
また、右クリック状態を長押ししている間も発射されません。
category(="dummy_item")
このアイテムのクールダウンの種類を文字列で設定します。

duration(=1.0)
一致するカテゴリを持つアイテムが再び使用可能になるまでのクールダウン時間(秒単位)を設定します。

多言語設定

カスタムエンティティの場合と同様に以下のファイルでアイテム名を定義しています。
<リソースパック>/texts/en_US.lang
item.customize:dummy_item.name=ダミーアイテム
                    


おわりに

完成イメージは次の通り。
今回は木の棒をアイテム画像に使用しています。


ここでご紹介させて頂いた作り方は以下のアイテム実装時に応用しています。
▶風の杖
▶暴風の杖
▶繰風弾の杖
▶いかずちの杖
▶はかいのつるぎ
▶光の剣
▶ファンネルユニット