Guides / Commands & Data

/attribute: 基本値と修飾子、そして値がリセットされ続ける理由

基本値の設定は永続的ですが、修飾子の設定はそうではありません。ただし、間違った操作を選択した場合を除きます。3つの操作、スタック順序、そしてスロットの落とし穴について説明します。

/attributeは3つのサブコマンドを持つ1つのコマンドのように見えます。しかし、実際には名前を共有しているだけで、2つの異なるシステムです。これらを混同することが、値が元に戻ってしまう原因です。

基本値と修飾子

/attribute @s minecraft:max_health base set 40
/attribute @s minecraft:max_health modifier add my_buff 20 add_value
  • base setはエンティティ自身の値を書き換えます。これはリロード後も永続し、他のbase set以外によって削除されることはありません。
  • modifier addは一時的な調整を重ねます。これにはIDがあり、そのIDによって削除できます。

ログアウトすると変更が消える場合、修飾子を使用しており、何かがそれをクリアしています。変更が消えない場合、base setを使用しており、base resetが必要です。

3つの操作と適用順序

操作内容適用順序
add_value値 + n最初
add_multiplied_base値 + (基本値 × n)2番目
add_multiplied_total累積合計 × (1 + n)最後

順序は固定されており、重要です。基本値20から始まり、次にadd_value 10add_multiplied_total 0.5を適用します。

20 → 30 → 45          not  20 → 30 → 30 + 10 = 40

add_multiplied_baseは常に元の基本値を乗算し、累積合計ではありません。そのため、2つのadd_multiplied_baseは複合的ではなく、加算的にスタックします。

修飾子IDは名前空間付きになりました

以前のバージョンではUUIDを使用していました。最新バージョンでは名前空間付きIDを使用します。

/attribute @s minecraft:attack_damage modifier add my_pack:rage 5 add_value

同じIDを持つ2番目の修飾子を追加すると、スタックするのではなく、最初の修飾子が置き換えられます。これはバフを更新するための意図された方法であり、最初に削除する必要はありません。

装備修飾子はエンティティではなくアイテムに存在します

エンチャントされた剣のダメージボーナスはattribute_modifiersアイテムコンポーネントであり、適切なスロットにアイテムがある場合にのみ適用されます。

/give @s diamond_sword[attribute_modifiers=[{type:"attack_damage",amount:5,
  operation:"add_value",slot:"mainhand",id:"my:bonus"}]]

slotは必須であり、よくある間違いです。これを省略すると、修飾子はすべてのスロットに適用されるため、インベントリにある剣がそこにある間、あなたを強化します。

有効なスロット: mainhandoffhandheadchestlegsfeetarmorbodyany

値の読み取り

/attribute @s minecraft:max_health get

基本値を返し、有効な合計ではありません。修飾子を含む合計を取得するには、スコアボードでexecute store resultを使用し、それを読み取ります。

これらのいずれか(スロットが設定されたアイテムコンポーネント形式を含む)は、エンティティ&戦闘コマンドビルダーで作成できます。

エンティティ & 戦闘コマンドビルダー →

More guides

Browse all →

ほかのマインクラフトツールをお探しですか?

ブラウザだけで動くジェネレーター・ビューア・変換ツールの数々。すべて無料です。