凉凉丶
游戏中设置玩家经验为100此时经验等级为7
但使用 player.giveExp(-100)减少经验时 游戏中输入XP 经验值变为0 经验等级依旧为7
应该如去让经验等级和经验值一致

Ir.Nep
1、玩家总经验值不起作用
2、giveExp函数没有在浮动经验小于0时的处理
该问题在1.14.4上测试已修复
旧版本建议自写函数调用setLevel和setExp
  1. public void giveExp(Player player, int exp) {
  2.                 int level = player.getLevel();
  3.                 int toNextLevel = getUpgradeExp(level);
  4.                 int floatExp = (int) (player.getExp() * toNextLevel) + exp;
  5.                 while(floatExp >= toNextLevel) {
  6.                         floatExp -= toNextLevel;
  7.                         toNextLevel = getUpgradeExp(++level);
  8.                 }
  9.                 while(floatExp < 0) {
  10.                         floatExp += (toNextLevel = getUpgradeExp(--level));
  11.                         if(level < 0)
  12.                                 level = floatExp = 0;
  13.                 }
  14.                 player.setLevel(level);
  15.                 player.setExp( (float) floatExp / toNextLevel);
  16.                 player.setTotalExperience(getTotalExp(level) + floatExp);
  17.         }
  18.        
  19.         public int getUpgradeExp(int level) {
  20.                 return level < 16  ? level * 2 + 7 : level < 30 ? level * 5 - 38 : level * 9 - 158;
  21.         }
  22.        
  23.         public int getTotalExp(int level) {
  24.                 return (int) (level < 17 ? level * (level + 6) : level < 31 ? level * (level * 2.5 - 40.5) + 360 : level * (level * 4.5 - 162.5) + 2220);
  25.         }
复制代码