游戏中设置玩家经验为100此时经验等级为7
但使用 player.giveExp(-100)减少经验时 游戏中输入XP 经验值变为0 经验等级依旧为7
应该如去让经验等级和经验值一致
但使用 player.giveExp(-100)减少经验时 游戏中输入XP 经验值变为0 经验等级依旧为7
应该如去让经验等级和经验值一致
1、玩家总经验值不起作用
2、giveExp函数没有在浮动经验小于0时的处理
该问题在1.14.4上测试已修复
旧版本建议自写函数调用setLevel和setExp
复制代码
2、giveExp函数没有在浮动经验小于0时的处理
该问题在1.14.4上测试已修复
旧版本建议自写函数调用setLevel和setExp
- public void giveExp(Player player, int exp) {
 
-                 int level = player.getLevel();
 
-                 int toNextLevel = getUpgradeExp(level);
 
-                 int floatExp = (int) (player.getExp() * toNextLevel) + exp;
 
-                 while(floatExp >= toNextLevel) {
 
-                         floatExp -= toNextLevel;
 
-                         toNextLevel = getUpgradeExp(++level);
 
-                 }
 
-                 while(floatExp < 0) {
 
-                         floatExp += (toNextLevel = getUpgradeExp(--level));
 
-                         if(level < 0) 
 
-                                 level = floatExp = 0;
 
-                 }
 
-                 player.setLevel(level);
 
-                 player.setExp( (float) floatExp / toNextLevel);
 
-                 player.setTotalExperience(getTotalExp(level) + floatExp);
 
-         }
 
-         
 
-         public int getUpgradeExp(int level) {
 
-                 return level < 16  ? level * 2 + 7 : level < 30 ? level * 5 - 38 : level * 9 - 158;
 
-         }
 
-         
 
-         public int getTotalExp(int level) {
 
-                 return (int) (level < 17 ? level * (level + 6) : level < 31 ? level * (level * 2.5 - 40.5) + 360 : level * (level * 4.5 - 162.5) + 2220);
 
- }