Skip to content
MJP
/ NMS 屬性修改器

NMS · NMS 實體

NMS 屬性修改器

透過 NMS AttributeMap/AttributeModifier 動態修改實體屬性,實現 RPG 裝備加成與 Buff/Debuff 系統。

NMS已發布v1.0.0nms-attribute-modifier更新於 2026年4月30日

觸發關鍵字

attribute modifier屬性修改AttributeMap動態屬性entity attributeMAX_HEALTHATTACK_DAMAGEMOVEMENT_SPEED屬性加成Buff Debuff

NMS Attribute Modifier

目的

透過 NMS AttributeMap、AttributeInstance、AttributeModifier 精確控制實體屬性,支援加法、倍乘、基底值修改,實現 RPG 裝備加成、Buff/Debuff 系統。


平台需求

  • Paper 1.21.11 / 26.2(兩版皆經編譯驗證;版本差異以行尾 // @1.21.11: 標註)
  • Paperweight userdev 2.0.0-beta.24+
  • Mojang 官方名稱(Minecraft 26.1 起不再混淆)
  • Java 21(1.21.11)/25(26.2)

產生的代碼

AttributeUtil.java

// 取得屬性最終值(含所有 modifier 計算後)
double hp = AttributeUtil.getValue(player, Attributes.MAX_HEALTH);

// 新增加法 modifier(+10 攻擊力)
AttributeUtil.addModifier(player, Attributes.ATTACK_DAMAGE,
    ModifierBuilder.addition("myplugin", "sword_bonus", 10.0));

// 移除指定 modifier(1.21 起 id 為 Identifier,舊稱 ResourceLocation)
AttributeUtil.removeModifier(player, Attributes.ATTACK_DAMAGE,
    Identifier.fromNamespaceAndPath("myplugin", "sword_bonus"));

ModifierBuilder.java(建立器)

// 加法(baseValue + amount)
AttributeModifier mod = ModifierBuilder.addition("myplugin", "buff_id", 5.0);

// 倍乘基底(baseValue + baseValue * amount)
AttributeModifier mod = ModifierBuilder.multiplyBase("myplugin", "speed_boost", 0.2);

// 倍乘全部(totalValue * (1 + amount))
AttributeModifier mod = ModifierBuilder.multiplyTotal("myplugin", "debuff", -0.1);

執行緒安全

  • AttributeUtil 存取實體狀態,必須在主執行緒呼叫