热烈的马 发表于 7 天前

求助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);
    }求大佬解答

huzpsb 发表于 6 天前

在低版本中,血量显示的是占比而不是真实值,真实血量以SpigotAPI显示的为准。
如果对此不舒适,可以考虑发负的伤害吸收的包,但是这属于黑魔法范畴。
页: [1]
查看完整版本: 求助spigot-api设置玩家最大血量的问题