diff options
author | snowleo <schneeleo@gmail.com> | 2011-12-14 11:56:09 +0100 |
---|---|---|
committer | snowleo <schneeleo@gmail.com> | 2011-12-14 11:56:09 +0100 |
commit | 867e66e774bca268fccc696ef9d724ca47763796 (patch) | |
tree | 5a0092ed104aecf4dfae14a09514baa7f2df3e74 | |
parent | 45ffeaffeca33813d9f7c12e2fbcbbb2e37f80b8 (diff) | |
parent | 9eaebadaaa3fd164b841dd8c99b03a162a632545 (diff) | |
download | Essentials-867e66e774bca268fccc696ef9d724ca47763796.tar Essentials-867e66e774bca268fccc696ef9d724ca47763796.tar.gz Essentials-867e66e774bca268fccc696ef9d724ca47763796.tar.lz Essentials-867e66e774bca268fccc696ef9d724ca47763796.tar.xz Essentials-867e66e774bca268fccc696ef9d724ca47763796.zip |
Merge branch 'refs/heads/master' into releasestable-2.7.1
4 files changed, 70 insertions, 48 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; } } diff --git a/EssentialsGroupManager/src/Changelog.txt b/EssentialsGroupManager/src/Changelog.txt index b3a95d830..47a0f6b79 100644 --- a/EssentialsGroupManager/src/Changelog.txt +++ b/EssentialsGroupManager/src/Changelog.txt @@ -84,4 +84,5 @@ v 1.7: - GM now supports offline players without having to mantogglevalidate
- Offline player checks now support partial name matches.
- Added custom events so plugins can now be notified of changes within GroupManager.
- - GM now registers with Bukkits ServicesManager.
\ No newline at end of file + - GM now registers with Bukkits ServicesManager.
+ - deleting the contents of GlobalGroups.yml will no longer thrown a NullPointerException.
\ No newline at end of file diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GlobalGroups.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GlobalGroups.java index 33b7b46f1..f1bf10985 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GlobalGroups.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GlobalGroups.java @@ -107,49 +107,53 @@ public class GlobalGroups { throw new IllegalArgumentException("The following file couldn't pass on Parser.\n" + GlobalGroupsFile.getPath(), ex);
}
- // Read all global groups
- Map<String, Object> allGroups = (Map<String, Object>) GGroups.getConfigurationSection("groups").getValues(false);
-
- // Load each groups permissions list.
- if (allGroups != null) {
- // Clear out old groups
- resetGlobalGroups();
- for (String groupName : allGroups.keySet()) {
- Group newGroup = new Group(groupName.toLowerCase());
- Object element;
-
- // Permission nodes
- element = GGroups.get("groups." + groupName + ".permissions");
-
- if (element != null)
- if (element instanceof List) {
- for (String node : (List<String>) element) {
- newGroup.addPermission(node);
- }
- } else if (element instanceof String) {
- newGroup.addPermission((String) element);
- } else
- throw new IllegalArgumentException("Unknown type of permission node for global group: " + groupName);
-
- // Info nodes
- element = GGroups.get("groups." + groupName + ".info");
-
- if (element != null)
- if (element instanceof MemorySection) {
- Map<String, Object> vars = new HashMap<String, Object>();
- for (String key : ((MemorySection) element).getKeys(false)) {
- vars.put(key, ((MemorySection) element).get(key));
- }
- newGroup.setVariables(vars);
- } else
- throw new IllegalArgumentException("Unknown type of info node for global group: " + groupName);
-
- // Push a new group
- addGroup(newGroup);
+ // Clear out old groups
+ resetGlobalGroups();
+
+ if (!GGroups.getKeys(false).isEmpty()) {
+ // Read all global groups
+ Map<String, Object> allGroups = (Map<String, Object>) GGroups.getConfigurationSection("groups").getValues(false);
+
+ // Load each groups permissions list.
+ if (allGroups != null) {
+ for (String groupName : allGroups.keySet()) {
+ Group newGroup = new Group(groupName.toLowerCase());
+ Object element;
+
+ // Permission nodes
+ element = GGroups.get("groups." + groupName + ".permissions");
+
+ if (element != null)
+ if (element instanceof List) {
+ for (String node : (List<String>) element) {
+ newGroup.addPermission(node);
+ }
+ } else if (element instanceof String) {
+ newGroup.addPermission((String) element);
+ } else
+ throw new IllegalArgumentException("Unknown type of permission node for global group: " + groupName);
+
+ // Info nodes
+ element = GGroups.get("groups." + groupName + ".info");
+
+ if (element != null)
+ if (element instanceof MemorySection) {
+ Map<String, Object> vars = new HashMap<String, Object>();
+ for (String key : ((MemorySection) element).getKeys(false)) {
+ vars.put(key, ((MemorySection) element).get(key));
+ }
+ newGroup.setVariables(vars);
+ } else
+ throw new IllegalArgumentException("Unknown type of info node for global group: " + groupName);
+
+ // Push a new group
+ addGroup(newGroup);
+ }
}
+
+ removeGroupsChangedFlag();
}
-
- removeGroupsChangedFlag();
+
setTimeStampGroups(GlobalGroupsFile.lastModified());
GroupManager.setLoaded(true);
//GlobalGroupsFile = null;
|