Minecraft Wiki
Advertisement
Information icon
この項目はJava Edition限定の要素です。 

アイテム修飾子(英:Item Modifier)とは、データパック内に作成し、/itemを使ってアイテムアイテム関数を適用するためのJSONファイルである。

本記事では、アイテム修飾子の定義方法と呼び出し方、およびアイテム修飾子の基本的なJSON構造について解説する。

定義方法[]

アイテム修飾子は、アイテムに施すアイテム関数およびその配列から成り、JSON形式で定義される。

アイテム修飾子は、データパックの次の位置に保存する。

  • (データパック名)
    • pack.mcmeta
    • pack.png
    • data
      • (名前空間)
        • advancements
          • (進捗名).json
        • functions
          • (関数名).mcfunction
        • item_modifiers
          • (アイテム修飾子名).json
        • loot_tables
          • (ルートテーブル名).json
        • predicates
          • (プレディケート名).json
        • その他のフォルダ...

アイテム修飾子の最上位の構造は後述のアイテム関数の構造を取る オブジェクトか、複数のアイテム関数の 配列のどちらかを用いる。

呼び出し方[]

アイテム修飾子は、/itemを用いてのみ呼び出すことができる。この際、修飾子が作用する対象となるスロットを、対象とするエンティティのインベントリおよび収納ブロックの中身から指定する必要がある。

このコマンドには次の2種類の用法がある。先ず、/item modifyは対象となるスロットに対して修飾子のみを呼び出して作用させる。一方で、/item replaceは対象のスロットのアイテムを別のアイテムで置き換え、そこに引き続いて修飾子を作用させる。それぞれの構文は次の通り。

item modify (block <ブロックの座標> | entity <対象のエンティティ>) <作用するスロット> <修飾子>
item replace (block <ブロックの座標> | entity <対象のエンティティ>) <作用するスロット> from (block <ブロックの座標> | entity <対象のエンティティ>) [<修飾子>]


なお、アイテム修飾子はコマンドでしか呼び出すことができないが、アイテム関数(アイテム修飾子の下位構造)はルートテーブルなどほかのファイルにも使用することができる。

アイテム関数のJSONフォーマット[]

本項では、各アイテム関数のJSONフォーマットを解説する。修飾子内・ルートテーブル内どちらで定義する場合も、JSON配列としてアイテム関数を列挙することで、複数のアイテム関数を一つのアイテム修飾子に使用することも可能である。

  • :アイテム関数の最上位のタグ。
    •  function:適用する関数の名前空間ID。有効な値は下記の通り。
    •  conditions:この関数が適用されるために通過が必要なプレディケートのリスト。
      • :各プレディケート。プレディケートのJSON構造は、当該ページを参照のこと。
    •  functionに対応した他のパラメータ(下記)。

 functionの値として有効な名前空間ID(名前空間minecraft:は省略した)およびそれに対応したパラメータは、以下の通りである。

  • apply_bonus - そのアイテムに付与されているエンチャントのレベルに応じて、アイテムの個数を変更する。
    •  enchantment: レベルの値を参照したいエンチャントのID
    •  formula: 個数を設定する公式の名前空間IDbinomial_with_bonus_countn=level + extrap=probabilityとしたときの二項分布に従って個数を設定する)、uniform_bonus_count0以上level * bonusMultiplier以下の範囲の均一分布に従って個数を設定する)、ore_dropsCount *= (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_entitythiskillerkiller_playerdirect_killerは不可)のいずれかで、ブロックエンティティおよびエンティティを指定する。
  • copy_nbt - ブロックエンティティおよびエンティティ、あるいはNBT保存領域からNBTをコピーする。
    •  source:  typecontextに設定した、 sourceの略記版。ルート状況に基づき、block_entitythiskillerdirect_killerkiller_playerのいずれかを用いてコピー元のエンティティを指定する。
    •  source: コピー元のエンティティの情報。
      •  type: エンティティおよびブロックエンティティをコピー元とする場合はcontext、NBT保存領域をコピー元とする場合はstorageを指定する。
      •  target: typecontextに指定した場合に使用される。ルート状況に基づき、block_entitythiskillerdirect_killerkiller_playerのいずれかを用いてコピー元のエンティティを指定する。
      •  source:  typestorageに指定した場合に使用される。コピー元の保存領域を名前空間IDで指定する。
    •  ops: コピーの操作内容のリスト。
      • コピー一回の操作内容。
        •  source: コピー元のNBTパス
        •  target: コピー先のNBTパス。アイテムの tagから記述する。
        •  op: コピーの形式。replace(コピー先の既存のNBTタグを、コピー元の内容で上書きする)、append(コピー先の配列の最後に、コピー元のNBTタグの内容を追加する)merge(コピー先のコンパウンドに、コピー元の内容を併合する)から指定する。
  • copy_state - ルート状況に基づいて与えられたブロックのプロパティを、アイテムのBlockStateTagタグにコピーする。
    •  block: ブロックID。ブロックに propertiesに対応するプロパティが存在しない場合は関数は失敗する。
    •  properties: コピーするプロパティのリスト。
      • コピーするブロック状態の名前。
  • enchant_randomly - ランダムにエンチャントを選択して付与する。エンチャントのレベルも、対応している範囲でランダムに設定される。本に関しては、エンチャント付与の際にエンチャントの本に変化する。
    •  enchantments: 任意の要素。このリストに含まれるエンチャントのIDからランダムにエンチャントを付与する。省略された場合は、そのアイテムに対応しているエンチャントからランダムに選択される(ソウルスピードスニーク速度上昇のみ指定しないと検出されない)。
  • exploration_map - 現在位置がルート状況によって与えられている場合に、白紙の地図を最寄りの構造物を目指す探検家の地図へ変化させる。
    •  destination: 目的地となる構造物のタグ。デフォルトではon_treasure_mapsとなる。
    •  decoration: マップ上で目的地を指し示すアイコン。地図のアイコンの文字列ID(大文字・小文字区別)で指定する。海底神殿、森の洋館、村、ウィッチの小屋、ジャングルの寺院に対応する値を設定した場合は、アイテムのテクスチャ上の線の色も対応した色に変化する。デフォルトではmansion
    •  zoom: 地図の拡大率。デフォルトでは2。
    •  search_radius: 構造物を検索する範囲。チャンク単位の距離で指定し、その範囲は円形ではなく正方形になる。例えば0なら現在いるチャンクのみが、1なら現在いるチャンクと隣接する8つのチャンクが検索される。デフォルトは50。
    •  skip_existing_chunks: 既に生成されているチャンクで検索を行わないかどうかを設定する。デフォルトはtrue。
  • explosion_decay - ルート状況によって爆心からの半径が与えられたときに、スタックの一部を消滅させる。スタック内の1つ1つのアイテムが消滅する確率は、半径の逆数に相当する。
  • fill_player_head - プレイヤーの頭に必要なタグを設定する。
    •  entity: このプレイヤーの頭のテクスチャに使用するプレイヤーを指定する。ルート状況に基づいて指定され、状況パラメータthiskillerdirect_killerkiller_playerのうちいずれか値を取る。
  • furnace_smelt - アイテムの数を変えずに、かまどで製錬した場合と同様にアイテムを変換する。
  • limit_count- アイテムの個数を制限する。
    •  limit: アイテムの個数をこの値丁度に設定したい際に使用する。
    •  limit: アイテムの個数を、特定の値ではなく特定の値域で制限したい場合に使用する。
  • looting_enchant - ルート状況によって与えられた状況パラメータkillerに付与されたドロップ増加のエンチャントに基づいて、個数を変更する。
    •  count: 数値生成子。ドロップ増加1レベルに対するアイテムの増加分を指定する。分数も可で、乗算後に四捨五入される。
    •  limit: 計算後のアイテム数の上限を設定する。0の場合は制限なしで、デフォルトではこれに設定されている。
  • reference - 他のアイテム関数を実行する。
    •  name: 実行するアイテム関数のリスト。
  • sequence - 複数のアイテム関数を連続して実行する。修飾子内にアイテム関数の配列を記述した際と同様に振舞う。
    •  functions: 実行するアイテム関数のリスト。
  • set_attributes- 属性補正値をアイテムに与える。
    •  modifiers: 追加する属性補正値のリスト。
      • : それぞれの属性補正値。
        •  name: 補正値の名称。コマンドの結果として返ってくるメッセージに表示される以外の機能はない。
        •  attribute: この補正値が作用する属性の名前空間ID
        •  operation: 補正値の補正形式。詳細は当該項目を参照のこと。
        •  amount: 数値生成子。補正値の補正度合いである Amountを決定する。
        •  id: 任意の要素。ハイフン付き16進数表現で記述された、補正値のUUID。指定しなかった場合は新規にランダムな値が割り当てられる。
        •  slot: どのスロットに配置されたときにこの補正値が所持者であるエンティティに効果を発揮するかを指定する値。「mainhand(利き手)」「offhand(オフハンド)」「feet(足)」「legs(脚)」「chest(胴体)」「head(頭)」のいずれかの値で指定する必要がある。
        •  slot: 取りうるスロットの値からランダムに選択したい場合に使用するリスト。上述の取りうる値のなかから、候補に使用したい値をリストに記述する。複数記述した場合はその分だけ選択の比重が高まる。
  • set_banner_pattern - 旗の模様を追加または上書きする。旗以外のアイテムに対して呼び出された場合でも、関数は正しく機能する。
    •  patterns: 追加または上書きする模様のリスト。
      • : それぞれの模様。
        •  pattern: の模様。
        •  color: 模様の色。whiteorangemagentalight_blueyellowlimepinkgraylight_graycyanpurplebluebrowngreenredおよびblackから指定する。
    •  append: 必須の要素。Trueの場合には、この模様が既存の模様の最前面に追加される。
  • set_contents - 収納ブロックのアイテムに中身のアイテムを設定する。
  • 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。
  • set_instrument - 楽器タグの中からランダムに選択し、楽器アイテムのデータタグの値とする。
    •  options: #から始まる楽器タグの名前空間ID。このタグの内含要素からランダムに選択される。
  • set_loot_table - 収納ブロックの設置時、および開いたときにルートテーブルを設定する。
    •  name: 使用するルートテーブルの名前空間ID
    •  seed: 任意の要素。ルートテーブルの生成に使用するシード値を設定する。指定しない場合および0を指定した場合はアイテム関数のNBTには組み込まれず、収納ブロックを開いた際にランダムなシード値を用いてルートテーブルを生成する
    •  type: BlockEntityTag.idを書き込むブロックエンティティの種類。
  • set_lore - アイテムの説明文を追加または変更する。
    •  lore: アイテムの説明文の各行のリスト。
    •  entity: JSONテキスト内で@s(実行したエンティティ)として機能し、スコアボードの値やエンティティ名、NBTタグの値をテキストとして出力する際の基準として使用されるエンティティ。ルート状況に基づいてthiskillerdirect_killerkiller_playerで指定する。
    •  replace:任意の要素である。 loreに既存の行がある際に、trueの場合はこれをすべて新規に置き換える。falseの場合は既存の行の後ろに新しく指定された行を追加する。デフォルトではfalse。
  • set_name - アイテムのカスタム名を変更する。
    •  name: Raw JSONテキストフォーマットで記述された、アイテムの新しい名前。値の確定が必要なコンポーネントに関しては、 entityに対応するターゲットが正常に発見された場合にのみ機能する。
    •  entity: JSONテキスト内で@s(実行したエンティティ)として機能し、スコアボードの値やエンティティ名、NBTタグの値をテキストとして出力する際の基準として使用されるエンティティ。ルート状況に基づいてthiskillerdirect_killerkiller_playerで指定する。
  • set_nbt- アイテムのNBTデータを追加・変更する。
    •  tag:アイテムのtagタグに併合するNBTタグ。JSONテキストで記述し、外側の波括弧{ }は必須である。またNBT内に引用符"を記述する際は\を前置してエスケープする必要がある。
  • set_stew_effect - 怪しげなシチューのステータス効果を設定する。怪しげなシチュー以外のアイテムに対して呼び出されると失敗する。
    •  effects: 与える効果のリスト。
      • 一つ一つの効果。
        •  type: ステータス効果のID。
        •  duration: 数値生成子。効果の持続時間を指定する。

歴史[]

Java Edition
1.1720w46aアイテム修飾子が追加された。
1.1821w39aアイテム関数set_potionが追加された。
??アイテム関数set_instrumentが追加された。
1.2023w14aアイテム関数referenceが追加された。
1.20.223w32aアイテム関数sequenceが追加された。

問題点[]

「アイテム修飾子」に関する問題点は、バグトラッカーにて管理されている。問題点の報告はそちらで行ってほしい。

Advertisement