diff options
author | ementalo <ementalodev@gmx.co.uk> | 2012-08-29 14:30:37 +0100 |
---|---|---|
committer | ementalo <ementalodev@gmx.co.uk> | 2012-08-29 14:30:37 +0100 |
commit | cc82d2ccc230a9d41bd239a6411d39f610fe018a (patch) | |
tree | 3f4c7f8c5fd921993fbc375748946b737a704cb0 | |
parent | 1b725c79990e542e8bd9736c4131592bf7f5b0a6 (diff) | |
download | Essentials-cc82d2ccc230a9d41bd239a6411d39f610fe018a.tar Essentials-cc82d2ccc230a9d41bd239a6411d39f610fe018a.tar.gz Essentials-cc82d2ccc230a9d41bd239a6411d39f610fe018a.tar.lz Essentials-cc82d2ccc230a9d41bd239a6411d39f610fe018a.tar.xz Essentials-cc82d2ccc230a9d41bd239a6411d39f610fe018a.zip |
Change user matching for enderchest.
Update SetExpFix to 2.9 Version
-rw-r--r-- | Essentials/src/net/ess3/commands/Commandenderchest.java | 2 | ||||
-rw-r--r-- | Essentials/src/net/ess3/craftbukkit/SetExpFix.java | 55 |
2 files changed, 43 insertions, 14 deletions
diff --git a/Essentials/src/net/ess3/commands/Commandenderchest.java b/Essentials/src/net/ess3/commands/Commandenderchest.java index 8fc725835..54214f812 100644 --- a/Essentials/src/net/ess3/commands/Commandenderchest.java +++ b/Essentials/src/net/ess3/commands/Commandenderchest.java @@ -12,7 +12,7 @@ public class Commandenderchest extends EssentialsCommand { if (args.length > 0 && Permissions.ENDERCHEST_OTHERS.isAuthorized(user)) { - final IUser invUser = ess.getUserMap().getUser(args[0]); + final IUser invUser = ess.getUserMap().matchUser(args[0], false, false); user.getPlayer().openInventory(invUser.getPlayer().getEnderChest()); user.setEnderSee(true); } diff --git a/Essentials/src/net/ess3/craftbukkit/SetExpFix.java b/Essentials/src/net/ess3/craftbukkit/SetExpFix.java index 17efe7514..54f6792e9 100644 --- a/Essentials/src/net/ess3/craftbukkit/SetExpFix.java +++ b/Essentials/src/net/ess3/craftbukkit/SetExpFix.java @@ -16,13 +16,13 @@ public class SetExpFix player.setExp(0); player.setLevel(0); player.setTotalExperience(0); - + //This following code is technically redundant now, as bukkit now calulcates levels more or less correctly //At larger numbers however... player.getExp(3000), only seems to give 2999, putting the below calculations off. int amount = exp; while (amount > 0) { - final int expToLevel = getExpToLevel(player); + final int expToLevel = getExpAtLevel(player); amount -= expToLevel; if (amount >= 0) { @@ -39,27 +39,56 @@ public class SetExpFix } } - private static int getExpToLevel(final Player player) - { - return getExpToLevel(player.getLevel()); + private static int getExpAtLevel(final Player player) + { + return getExpAtLevel(player.getLevel()); } - - private static int getExpToLevel(final int level) - { - return 7 + (level * 7 >> 1); + + public static int getExpAtLevel(final int level) + { + if (level > 29) + { + return 62 + (level - 30) * 7; + } + if (level > 15) + { + return 17 + (level - 15) * 3; + } + return 17; } + public static int getExpToLevel(final int level) + { + int currentLevel = 0; + int exp = 0; + + while (currentLevel < level) + { + exp += getExpAtLevel(currentLevel); + currentLevel++; + } + return exp; + } + //This method is required because the bukkit player.getTotalExperience() method, shows exp that has been 'spent'. //Without this people would be able to use exp and then still sell it. public static int getTotalExperience(final Player player) { - int exp = (int)Math.round(getExpToLevel(player) * player.getExp()); + int exp = (int)Math.round(getExpAtLevel(player) * player.getExp()); int currentLevel = player.getLevel(); - - while (currentLevel > 0) { + + while (currentLevel > 0) + { currentLevel--; - exp += getExpToLevel(currentLevel); + exp += getExpAtLevel(currentLevel); } return exp; } + + public static int getExpUntilNextLevel(final Player player) + { + int exp = (int)Math.round(getExpAtLevel(player) * player.getExp()); + int nextLevel = player.getLevel(); + return getExpAtLevel(nextLevel) - exp; + } } |