Skip to content

[1.16.5]能否做到同一套护甲根据nbt不同而拥有不同的护甲值/护甲韧性/耐久度 #116

Answered by 3TUSK
KeNickGong asked this question in Q&A
Discussion options

You must be logged in to vote

护甲的防御值、韧性由 Multimap<Attribute, AttributeModifier> getDefaultAttributeModifiers(EquipmentSlotType slotType) 的返回值直接决定(见 ArmorItem 类),因此覆盖此方法就可以提供非常规的装备属性值。
Forge 提供了带 ItemStack 版本的 Multimap<Attribute, AttributeModifier> getAttributeModifiers(EquipmentSlotType slotType, ItemStack theItem)(位于 IForgeItem 下,但 Item 类已实现该扩展接口),你可以 @Override 这个带 ItemStack 的版本来提供更复杂的防御、韧性计算逻辑。
顺带一提,手持物品的攻击力、攻击速度也是此方法决定的。

耐久计算也类似,有名为 int getMaxDamage(ItemStack theItem) 的方法可供 @Override

Replies: 1 comment 1 reply

Comment options

You must be logged in to vote
1 reply
@KeNickGong
Comment options

Answer selected by SeraphJACK
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Category
Q&A
Labels
None yet
2 participants