summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorementalo <ementalodev@gmx.co.uk>2012-08-29 14:30:37 +0100
committerementalo <ementalodev@gmx.co.uk>2012-08-29 14:30:37 +0100
commitcc82d2ccc230a9d41bd239a6411d39f610fe018a (patch)
tree3f4c7f8c5fd921993fbc375748946b737a704cb0
parent1b725c79990e542e8bd9736c4131592bf7f5b0a6 (diff)
downloadEssentials-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.java2
-rw-r--r--Essentials/src/net/ess3/craftbukkit/SetExpFix.java55
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;
+ }
}