summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKHobbits <rob@khobbits.co.uk>2011-12-14 03:41:24 +0000
committerKHobbits <rob@khobbits.co.uk>2011-12-14 03:41:24 +0000
commitf251cd14bad0b578990661c429d8b00480159bad (patch)
treec51ca470cb914a097b723436036401cb09842e0d
parent9d984faefe7603fecea8ba0e3c54bdba7ab26f12 (diff)
downloadEssentials-f251cd14bad0b578990661c429d8b00480159bad.tar
Essentials-f251cd14bad0b578990661c429d8b00480159bad.tar.gz
Essentials-f251cd14bad0b578990661c429d8b00480159bad.tar.lz
Essentials-f251cd14bad0b578990661c429d8b00480159bad.tar.xz
Essentials-f251cd14bad0b578990661c429d8b00480159bad.zip
Read current exp, instead of stored exp.
This means that exp used in enchanting is subtracted from total exp.
-rw-r--r--Essentials/src/com/earth2me/essentials/Trade.java6
-rw-r--r--Essentials/src/com/earth2me/essentials/craftbukkit/SetExpFix.java23
2 files changed, 23 insertions, 6 deletions
diff --git a/Essentials/src/com/earth2me/essentials/Trade.java b/Essentials/src/com/earth2me/essentials/Trade.java
index ca9db12a7..6cd9ce93a 100644
--- a/Essentials/src/com/earth2me/essentials/Trade.java
+++ b/Essentials/src/com/earth2me/essentials/Trade.java
@@ -81,7 +81,7 @@ public class Trade
}
if (exp != null && exp > 0
- && user.getTotalExperience() < exp) {
+ && SetExpFix.getTotalExperience(user) < exp) {
throw new ChargeException(_("notEnoughExperience"));
}
}
@@ -116,7 +116,7 @@ public class Trade
}
if (getExperience() != null)
{
- SetExpFix.setTotalExperience(user, user.getTotalExperience() + getExperience());
+ SetExpFix.setTotalExperience(user, SetExpFix.getTotalExperience(user) + getExperience());
}
return success;
}
@@ -155,7 +155,7 @@ public class Trade
}
if (getExperience() != null)
{
- final int experience = user.getTotalExperience();
+ final int experience = SetExpFix.getTotalExperience(user);
if (experience < getExperience() && getExperience() > 0)
{
throw new ChargeException(_("notEnoughExperience"));
diff --git a/Essentials/src/com/earth2me/essentials/craftbukkit/SetExpFix.java b/Essentials/src/com/earth2me/essentials/craftbukkit/SetExpFix.java
index caf6e71c7..5b1161851 100644
--- a/Essentials/src/com/earth2me/essentials/craftbukkit/SetExpFix.java
+++ b/Essentials/src/com/earth2me/essentials/craftbukkit/SetExpFix.java
@@ -17,7 +17,7 @@ public class SetExpFix
int amount = exp;
while (amount > 0)
{
- final int expToLevel = getExpTolevel(player);
+ final int expToLevel = getExpToLevel(player);
amount -= expToLevel;
if (amount >= 0)
{
@@ -34,8 +34,25 @@ public class SetExpFix
}
}
- private static int getExpTolevel(final Player player)
+ private static int getExpToLevel(final Player player)
+ {
+ return getExpToLevel(player.getLevel());
+ }
+
+ private static int getExpToLevel(final int level)
+ {
+ return 7 + (level * 7 >> 1);
+ }
+
+ public static int getTotalExperience(final Player player)
{
- return 7 + (player.getLevel() * 7 >> 1);
+ int exp = (int) (getExpToLevel(player) * player.getExp());
+ int currentLevel = player.getLevel();
+
+ while (currentLevel > 0) {
+ currentLevel--;
+ exp += getExpToLevel(currentLevel);
+ }
+ return exp;
}
}