属性数据 (AttributeData)

属性数据

如何获取玩家身上的数据

AttributeAPI 已提供了 getAttrData(Entity entity) 方法,该方法可以获取玩家身上的属性数据

AttributeData data = AttributeAPI.getAttrData(entity);

如何获取玩家身上某一项属性的值呢?

可通过 getAttrData(Entity entity) 获取实体 AttributeData 数据 AttributeData 内有 getAttributeValue(String attributeName) 方法,该方法可以获取玩家身上指定属性的值

AttributeData data = AttributeAPI.getAttrData(entity);
double health = data.getAttributeValue("生命力");

如果是获取 AttributePlus 本身自带的属性,那么 getAttributeValue(String attributeName) 内的 attributeName 必须为 attribute.yml 刚生成默认的属性名称而不是修改后的名称,外部注册的属性则根据注册时的属性名称即可

2.2.5 版本起提供了 AttributeName 枚举类,可以通过该类的 toDefaultName() 来获取属性默认名

我要获取玩家物理伤害的最小值跟最大值该怎么做?

同样是通过 getAttributeValue(String attributeName) 方法 像 物理伤害 这种 最小值-最大值随机 的属性,获取时 attributeName 必须加上 [0] [1] 外部注册的属性也相同

//2.2.5 之前方法
@Deprecated
AttributeData data = AttributeAPI.getAttrData(entity);
double minDamage = data.getAttributeValue("物理伤害");
double maxDamage = data.getAttributeValue("物理伤害[1]");

//2.2.5 之后开始更加方便的方法
//2.2.5 版本开始提供的 AttributeName 枚举类
String defaultName = AttributeName.DAMAGE.toDefaultName();
Number[] damage = data.getAttributeValues(defaultName);
double minDamage = damage[0].doubleValue();
double maxDamage = damage[1].doubleValue();

最后更新于