Lonewolfi
本帖最后由 Lonewolfi 于 2021-8-17 20:16 编辑

player.getInventory().getItemInHand().getItemMeta().getAttributeModifiers(Attribute.GENERIC_ATTACK_SPEED)返回值一直是空
把getAttributeModifiers换成getDisplayName是可以得到物品的自定义名字
所以说是1.12.2版本没有getAttributeModifiers吗......






南柯郡守
emmmmm 或许你可以考虑下手上物品是否有这个属性 比如方块物品就没有这个属性

Lonewolfi
南柯郡守 发表于 2021-8-17 19:01
emmmmm 或许你可以考虑下手上物品是否有这个属性 比如方块物品就没有这个属性 ...

我是注册了一个指令来测试的 输入指令的时候拿着剑  还来回切换了几次  确实返回为空

南柯郡守
Lonewolfi 发表于 2021-8-17 19:08
我是注册了一个指令来测试的 输入指令的时候拿着剑  还来回切换了几次  确实返回为空 ...

那啥 我看错了

这个方法意思应该是获取改变的值?  如果要获取属性的话 emmmmmm

我居然没找到 凎  你试试读nbt?

我是不知道了  等大佬吧

贺兰兰
本帖最后由 贺兰兰 于 2021-8-17 19:46 编辑
getAttributeModifiers
@Nullable
Collection<AttributeModifier> getAttributeModifiers​(@NotNull
Attribute attribute)
Return an immutable copy of all AttributeModifiers for a given Attribute
Parameters:
attribute - the Attribute
Returns:
an immutable collection of AttributeModifiers or null if no AttributeModifiers exist for the Attribute.
Throws:
NullPointerException - if Attribute is null

因为你根本没有AttributeModifiers,所以他当然是空的啊
或者说其实你理解错了什么,AttributeModifiers 代表一个修改器,当玩家持有这个 ItemMeta 的时候给予玩家一些 Attribute 的增益
但是这不代表 ItemMeta 就包含 Attribute,Attribute 是实体属性,而不是物品属性

要想获取一个实体的 Attribute 信息,只需要
@Nullable
AttributeInstance getAttribute​(@NotNull
Attribute attribute)
Gets the specified attribute instance from the object. This instance will be backed directly to the object and any changes will be visible at once.
Parameters:
attribute - the attribute to get
Returns:
the attribute instance or null if not applicable to this object

使用这个 Attributable 接口的方法即可获得 AttributeInstance 实例,然后就可以通过 getBaseValue() 或者 getDefaultValue() 方法获得你需要的数据了
很明显,Player 也是 Attributable 接口的实例

第一页 上一页 下一页 最后一页