アイテム修飾子(英:Item Modifier)とは、データパック内に作成し、/item
を使ってアイテムにアイテム関数を適用するためのJSONファイルである。
本記事では、アイテム修飾子の定義方法と呼び出し方、およびアイテム修飾子の基本的なJSON構造について解説する。
定義方法[]
アイテム修飾子は、アイテムに施すアイテム関数およびその配列から成り、JSON形式で定義される。
アイテム修飾子は、データパックの次の位置に保存する。
- (データパック名)
- pack.mcmeta
- pack.png
- data
- (名前空間)
- advancements
- (進捗名).json
- functions
- (関数名).mcfunction
- item_modifiers
- (アイテム修飾子名).json
- loot_tables
- (ルートテーブル名).json
- predicates
- (プレディケート名).json
- その他のフォルダ...
- advancements
- (名前空間)
アイテム修飾子の最上位の構造は後述のアイテム関数の構造を取る オブジェクトか、複数のアイテム関数の 配列のどちらかを用いる。
呼び出し方[]
アイテム修飾子は、/item
を用いてのみ呼び出すことができる。この際、修飾子が作用する対象となるスロットを、対象とするエンティティのインベントリおよび収納ブロックの中身から指定する必要がある。
このコマンドには次の2種類の用法がある。先ず、/item modify
は対象となるスロットに対して修飾子のみを呼び出して作用させる。一方で、/item replace
は対象のスロットのアイテムを別のアイテムで置き換え、そこに引き続いて修飾子を作用させる。それぞれの構文は次の通り。
item modify (block <ブロックの座標> | entity <対象のエンティティ>) <作用するスロット> <修飾子> item replace (block <ブロックの座標> | entity <対象のエンティティ>) <作用するスロット> from (block <ブロックの座標> | entity <対象のエンティティ>) [<修飾子>]
なお、アイテム修飾子はコマンドでしか呼び出すことができないが、アイテム関数(アイテム修飾子の下位構造)はルートテーブルなどほかのファイルにも使用することができる。
アイテム関数のJSONフォーマット[]
本項では、各アイテム関数のJSONフォーマットを解説する。修飾子内・ルートテーブル内どちらで定義する場合も、JSON配列としてアイテム関数を列挙することで、複数のアイテム関数を一つのアイテム修飾子に使用することも可能である。
functionの値として有効な名前空間ID(名前空間minecraft:
は省略した)およびそれに対応したパラメータは、以下の通りである。
- apply_bonus - そのアイテムに付与されているエンチャントのレベルに応じて、アイテムの個数を変更する。
- enchantment: レベルの値を参照したいエンチャントのID。
- formula: 個数を設定する公式の名前空間ID。
binomial_with_bonus_count
(n=level + extra
、p=probability
としたときの二項分布に従って個数を設定する)、uniform_bonus_count
(0
以上level * bonusMultiplier
以下の範囲の均一分布に従って個数を設定する)、ore_drops
(Count *= (max(1; randomInt[0 .. (Level + 2))) )
によって個数を設定する。バニラのゲームで鉱石のドロップに使用される特殊な関数)のうちいずれかを指定する。 - parameters: 公式に代入される値のリスト。
- extra: 'binomial_with_bonus_count'に使用する値。
- probability: 'binomial_with_bonus_count'に使用する、二項分布の確率。
- bonusMultiplier: 'uniform_bonus_count'に使用する倍率。
- copy_name - エンティティおよびブロックエンティティの名前をアイテムの
display.Name
タグにコピーする。- source - 対象のエンティティ。ルート状況に基づいて、状況パラメータ
block_entity
、this
、killer
、killer_player
(direct_killer
は不可)のいずれかで、ブロックエンティティおよびエンティティを指定する。
- source - 対象のエンティティ。ルート状況に基づいて、状況パラメータ
- enchant_with_levels - アイテムに、指定したエンチャントのレベルでエンチャントを施す。本に関しては、エンチャント付与の際にエンチャントの本に変化する。
- treasure: トレジャーエンチャントが付与されうるかどうかを決定する。デフォルトではfalse。
- levels: 数値生成子。エンチャントのレベルを生成する。
- exploration_map - 現在位置がルート状況によって与えられている場合に、白紙の地図を最寄りの構造物を目指す探検家の地図へ変化させる。
- destination: 目的地となる構造物のタグ。デフォルトでは
on_treasure_maps
となる。 - decoration: マップ上で目的地を指し示すアイコン。地図のアイコンの文字列ID(大文字・小文字区別)で指定する。海底神殿、森の洋館、村、ウィッチの小屋、ジャングルの寺院に対応する値を設定した場合は、アイテムのテクスチャ上の線の色も対応した色に変化する。デフォルトでは
mansion
。 - zoom: 地図の拡大率。デフォルトでは2。
- search_radius: 構造物を検索する範囲。チャンク単位の距離で指定し、その範囲は円形ではなく正方形になる。例えば0なら現在いるチャンクのみが、1なら現在いるチャンクと隣接する8つのチャンクが検索される。デフォルトは50。
- skip_existing_chunks: 既に生成されているチャンクで検索を行わないかどうかを設定する。デフォルトはtrue。
- destination: 目的地となる構造物のタグ。デフォルトでは
- explosion_decay - ルート状況によって爆心からの半径が与えられたときに、スタックの一部を消滅させる。スタック内の1つ1つのアイテムが消滅する確率は、半径の逆数に相当する。
- fill_player_head - プレイヤーの頭に必要なタグを設定する。
- entity: このプレイヤーの頭のテクスチャに使用するプレイヤーを指定する。ルート状況に基づいて指定され、状況パラメータ
this
、killer
、direct_killer
、killer_player
のうちいずれか値を取る。
- entity: このプレイヤーの頭のテクスチャに使用するプレイヤーを指定する。ルート状況に基づいて指定され、状況パラメータ
- furnace_smelt - アイテムの数を変えずに、かまどで製錬した場合と同様にアイテムを変換する。
- reference - 他のアイテム関数を実行する。
- name: 実行するアイテム関数のリスト。
- sequence - 複数のアイテム関数を連続して実行する。修飾子内にアイテム関数の配列を記述した際と同様に振舞う。
- functions: 実行するアイテム関数のリスト。
- set_attributes- 属性補正値をアイテムに与える。
- modifiers: 追加する属性補正値のリスト。
- : それぞれの属性補正値。
- name: 補正値の名称。コマンドの結果として返ってくるメッセージに表示される以外の機能はない。
- attribute: この補正値が作用する属性の名前空間ID。
- operation: 補正値の補正形式。詳細は当該項目を参照のこと。
- amount: 数値生成子。補正値の補正度合いである Amountを決定する。
- id: 任意の要素。ハイフン付き16進数表現で記述された、補正値のUUID。指定しなかった場合は新規にランダムな値が割り当てられる。
- slot: どのスロットに配置されたときにこの補正値が所持者であるエンティティに効果を発揮するかを指定する値。「mainhand(利き手)」「offhand(オフハンド)」「feet(足)」「legs(脚)」「chest(胴体)」「head(頭)」のいずれかの値で指定する必要がある。
- slot: 取りうるスロットの値からランダムに選択したい場合に使用するリスト。上述の取りうる値のなかから、候補に使用したい値をリストに記述する。複数記述した場合はその分だけ選択の比重が高まる。
- : それぞれの属性補正値。
- modifiers: 追加する属性補正値のリスト。
- set_contents - 収納ブロックのアイテムに中身のアイテムを設定する。
- entries: アイテムを設定するためのルートテーブルの項目生成子のリスト。
- type:
BlockEntityTag.id
タグを書き込むブロックエンティティの種類。
- set_count - アイテムの個数を設定する。
- count: アイテムの個数を設定する数値生成子。
- add:任意の要素。
true
の場合は指定された個数のアイテムを既存の個数に加算する。デフォルトではfalseであり、この場合はそのままアイテムの個数を新規に置き換える。
- set_damage - アイテムの耐久値減耗度を設定する。
- damage: 数値生成子。減耗分の割合を指定する(全体を1とする)。
- add:任意の要素である。
true
の場合、生成された減耗度を現在のものに加算する。デフォルトではfalseであり、この場合はそのまま減耗度を新規に置き換える。
- set_enchantments - アイテムのエンチャントを変更する。本に関しては、エンチャント付与の際にエンチャントの本に変化する。
- enchantments: 変更するエンチャント。
- <エンチャントID>: キーの名前はエンチャントのIDであり、値は数値生成子で決定される。上限は255であり、1以下のレベルではエンチャントが削除される。加算式で作用させた場合は、計算結果が1以下になった時にやはりエンチャントが削除される。
- add: 任意の要素である。
true
の場合、生成されたエンチャントのレベルを現在のものに加算する。作用時点で適用されていなかったエンチャントに関しては、レベルが0であったものとして処理される。デフォルトではfalse。
- enchantments: 変更するエンチャント。
- set_instrument - 楽器タグの中からランダムに選択し、楽器アイテムのデータタグの値とする。
- options:
#
から始まる楽器タグの名前空間ID。このタグの内含要素からランダムに選択される。
- options:
- set_loot_table - 収納ブロックの設置時、および開いたときにルートテーブルを設定する。
- name: 使用するルートテーブルの名前空間ID。
- seed: 任意の要素。ルートテーブルの生成に使用するシード値を設定する。指定しない場合および0を指定した場合はアイテム関数のNBTには組み込まれず、収納ブロックを開いた際にランダムなシード値を用いてルートテーブルを生成する
- type:
BlockEntityTag.id
を書き込むブロックエンティティの種類。
- set_lore - アイテムの説明文を追加または変更する。
- lore: アイテムの説明文の各行のリスト。
- Raw JSONテキストフォーマットで記述した1行分の説明。値の確定が必要なコンポーネントに関しては、 entityに対応するターゲットが正常に発見された場合にのみ機能する。
- entity: JSONテキスト内で
@s
(実行したエンティティ)として機能し、スコアボードの値やエンティティ名、NBTタグの値をテキストとして出力する際の基準として使用されるエンティティ。ルート状況に基づいてthis
、killer
、direct_killer
、killer_player
で指定する。 - replace:任意の要素である。 loreに既存の行がある際に、
true
の場合はこれをすべて新規に置き換える。false
の場合は既存の行の後ろに新しく指定された行を追加する。デフォルトではfalse。
- lore: アイテムの説明文の各行のリスト。
- set_name - アイテムのカスタム名を変更する。
- name: Raw JSONテキストフォーマットで記述された、アイテムの新しい名前。値の確定が必要なコンポーネントに関しては、 entityに対応するターゲットが正常に発見された場合にのみ機能する。
- entity: JSONテキスト内で
@s
(実行したエンティティ)として機能し、スコアボードの値やエンティティ名、NBTタグの値をテキストとして出力する際の基準として使用されるエンティティ。ルート状況に基づいてthis
、killer
、direct_killer
、killer_player
で指定する。
- set_nbt- アイテムのNBTデータを追加・変更する。
- tag:アイテムの
tag
タグに併合するNBTタグ。JSONテキストで記述し、外側の波括弧{ }
は必須である。またNBT内に引用符"
を記述する際は\を前置してエスケープする必要がある。
- tag:アイテムの
- set_potion- アイテムの Potionタグを編集する。
- id: ポーションの効果ID。空で指定すると Potionタグが削除される。
歴史[]
Java Edition | |||||
---|---|---|---|---|---|
1.17 | 20w46a | アイテム修飾子が追加された。 | |||
1.18 | 21w39a | アイテム関数set_potion が追加された。 | |||
? | ? | アイテム関数set_instrument が追加された。 | |||
1.20 | 23w14a | アイテム関数reference が追加された。 | |||
1.20.2 | 23w32a | アイテム関数sequence が追加された。 |
問題点[]
「アイテム修飾子」に関する問題点は、バグトラッカーにて管理されている。問題点の報告はそちらで行ってほしい。
要素 |
| ||
---|---|---|---|
データパック |
| ||
チュートリアル |