求助spigot-api设置玩家最大血量的问题
正在写一个死亡扣除血量上限的功能。
当我使用方法
setPlayerMaxHealth(player, -1)
时血量一直在增加...
代码如下:
private voidsetPlayerMaxHealth(Player player, int change) {
double currentValue = player.getMaxHealth();
double newBaseHealth = Math.max(MIN_MAX_HEARTS, Math.min(currentValue + change, MAX_MAX_HEARTS));
double health = Math.round(newBaseHealth*10) / 10.0;
player.setMaxHealth(health);
}第二种实现方法也是一样会增加血量:
private void setPlayerMaxHealth(Player player, int change) {
double currentValue = player.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue();
double newBaseHealth = Math.max(MIN_MAX_HEARTS, Math.min(currentValue + change, MAX_MAX_HEARTS));
double health = Math.round(newBaseHealth*10) / 10.0;
player.getAttribute(Attribute.GENERIC_MAX_HEALTH).setBaseValue(health);
}求大佬解答
在低版本中,血量显示的是占比而不是真实值,真实血量以SpigotAPI显示的为准。
如果对此不舒适,可以考虑发负的伤害吸收的包,但是这属于黑魔法范畴。
页:
[1]