はじめに
ここでご紹介させて頂く投擲アイテムというのは、トライデントやウインドチャージなどのように手に持って投げるアイテムの事を指しています。
なお、基本的な部分は以下のページでダミーアイテムが実装済みである事を前提にしています。
以降ではcomponents
ブロックのJSONデータの内容を「汎用ブロック」「アニメーション設定」「投擲設定」の3つのパートに分けて投擲(とうてき)アイテムの作り方をご紹介します。
「汎用ブロック」とは、上記ページの>> コンポーネント定義の項目でご紹介させて頂いたcomponents
ブロックの便宜上の呼称です。
定義ファイルの内容
以下のファイルはダミーアイテムの実装を元に必要な定義を追加したものです。
{
"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": false,
"minecraft:glint": true,
// 汎用ブロック -----END
// アニメーション設定 -----START
"minecraft:use_animation": "spear",
"minecraft:use_modifiers": {
"use_duration": 1.6,
"movement_modifier": 0.35
},
// アニメーション設定 -----END
// 投擲設定 -----START
"minecraft:projectile": {
"projectile_entity": "minecraft:ender_pearl"
},
"minecraft:throwable": {
"do_swing_animation": false,
"launch_power_scale": 1.6,
"max_launch_power": 1.6,
"scale_power_by_draw_duration": true,
"max_draw_duration": 1.6,
"min_draw_duration": 0.5
},
"minecraft:cooldown": {
"category": "dummy_item",
"duration": 0.1
}
// 投擲設定 -----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(=false)
装備品ではないのでfalseを設定しています。
・minecraft:glint(=true)
カスタムアイテムである事を表現するため、レンダリングがかかるようにtrueを設定しています。
アニメーション設定
・minecraft:use_animation(="spear")
アニメーションの種類を指定します。
今回はトライデントと同じように投げるアイテムなのでspearを指定しています。
・minecraft:use_modifiers
アイテムを使用するまでにかかる時間を指定します。
ここでは>> 食料アイテムの設定を流用しています。
アニメーションの種類と定義の詳細は以下のページをご覧ください。
投擲設定
・minecraft:projectile
発射体のエンティティを指定します。
- projectile_entity(="minecraft:ender_pearl")
- 今回はネイティブアイテムのエンダーパールを指定しています。
発射体としてカスタムエンティティを指定する方法もあります。詳しい作り方については以下のページをご覧ください。
・minecraft:throwable
各種投擲用の設定項目を指定します。
- do_swing_animation(=false)
-
アイテム投擲時のネイティブアニメーション再生有無を設定します。
今回はfalseを設定していますが、trueにするとuse_animation
とは異なるアニメーションが以下のように再生されます。
▼一人称
▼三人称
use_animation
と同時に指定してしまうと動作が混同しておかしな動きになるので、この設定項目を使う場合ははずしておきましょう。
- launch_power_scale(=1.6)
-
投擲の威力を数値で設定します。
- max_launch_power(=1.6)
-
投擲アイテムを発射するための最大威力を設定します。
launch_power_scale
の数値を大きくしても、ここで設定した最大値は超えないように丸められるようです。
- scale_power_by_draw_duration(=true)
-
チャージ時間に応じて投げの威力が増加するかどうかを設定します。
trueの場合、長く押し続けるほど放した時のパワーが大きくなり、アニメーションのuse_modifiers
設定に関わらず右クリック状態を解除した時点で発射されます。
- max_draw_duration(=1.6)
-
投擲可能なアイテムを描画するための最大期間(恐らく秒数)を設定します。
min_draw_duration
とのセットで最小期間~最大期間を設定すると、この期間に右クリック状態を解除した時点で投擲されるようです。
- min_draw_duration(=0.5)
-
投擲可能なアイテムを描画するための最小期間(恐らく秒数)を設定します。
max_draw_duration
とのセットで最小期間~最大期間を設定すると、この期間に右クリック状態を解除した時点で投擲されるようです。
この値が低すぎるとあまり勢いをつけずに投げる事になるので、自分に当たってダメージを受ける事があります。
・minecraft:cooldown
アイテムのクールダウン時間を指定します。
このブロックを設定していると、投擲物発射後のクールダウン時間内では再投擲できなくなります。
また、右クリック状態を長押ししている間も投擲物が発射されません。
- category(="dummy_item")
-
このアイテムのクールダウンの種類を文字列で設定します。
- duration(=0.1)
- 一致するカテゴリを持つアイテムが再び使用可能になるまでのクールダウン時間(秒単位)を設定します。
多言語設定
カスタムエンティティの場合と同様に以下のファイルでアイテム名を定義しています。
item.customize:dummy_item.name=ダミーアイテム
おわりに
ここでご紹介させて頂いた作り方は以下のアイテム実装時に応用しています。