diff --git a/.gitignore b/.gitignore
index 6c25fbdd7..eda2b5917 100644
--- a/.gitignore
+++ b/.gitignore
@@ -37,4 +37,6 @@
/WebPush/apikey.php
/WebPush/nbproject/private
/.idea
-*.iml
\ No newline at end of file
+*.iml
+/EssentialsGroupManager/bin
+/EssentialsGroupManager/.externalToolBuilders
\ No newline at end of file
diff --git a/Essentials/src/com/earth2me/essentials/commands/Commandr.java b/Essentials/src/com/earth2me/essentials/commands/Commandr.java
index 7d8ee481d..fe2a4e5b1 100644
--- a/Essentials/src/com/earth2me/essentials/commands/Commandr.java
+++ b/Essentials/src/com/earth2me/essentials/commands/Commandr.java
@@ -53,7 +53,7 @@ public class Commandr extends EssentialsCommand
final CommandSender target = replyTo.getReplyTo();
final String targetName = target instanceof Player ? ((Player)target).getDisplayName() : Console.NAME;
- if (target == null || ((target instanceof Player) && ((Player)target).isOnline()))
+ if (target == null || ((target instanceof Player) && !((Player)target).isOnline()))
{
throw new Exception(_("foreverAlone"));
}
diff --git a/Essentials/src/com/earth2me/essentials/craftbukkit/FakeWorld.java b/Essentials/src/com/earth2me/essentials/craftbukkit/FakeWorld.java
index e78e508f7..57e2eda63 100644
--- a/Essentials/src/com/earth2me/essentials/craftbukkit/FakeWorld.java
+++ b/Essentials/src/com/earth2me/essentials/craftbukkit/FakeWorld.java
@@ -548,4 +548,10 @@ public class FakeWorld implements World
{
throw new UnsupportedOperationException("Not supported yet.");
}
+
+ @Override
+ public boolean canGenerateStructures()
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
}
diff --git a/Essentials/test/com/earth2me/essentials/FakeServer.java b/Essentials/test/com/earth2me/essentials/FakeServer.java
index b5ecc1e08..7090c26b6 100644
--- a/Essentials/test/com/earth2me/essentials/FakeServer.java
+++ b/Essentials/test/com/earth2me/essentials/FakeServer.java
@@ -648,4 +648,10 @@ public class FakeServer implements Server
{
throw new UnsupportedOperationException("Not supported yet.");
}
+
+ @Override
+ public boolean useExactLoginLocation()
+ {
+ throw new UnsupportedOperationException("Not supported yet.");
+ }
}
diff --git a/EssentialsGroupManager/.project b/EssentialsGroupManager/.project
index 6ad74b347..c0e5a6f5e 100644
--- a/EssentialsGroupManager/.project
+++ b/EssentialsGroupManager/.project
@@ -10,6 +10,16 @@
+
+ org.eclipse.ui.externaltools.ExternalToolBuilder
+ full,incremental,
+
+
+ LaunchConfigHandle
+ <project>/.externalToolBuilders/GroupManager.launch
+
+
+
org.eclipse.jdt.core.javanature
diff --git a/EssentialsGroupManager/src/Changelog.txt b/EssentialsGroupManager/src/Changelog.txt
index 127346f82..41b5613af 100644
--- a/EssentialsGroupManager/src/Changelog.txt
+++ b/EssentialsGroupManager/src/Changelog.txt
@@ -124,4 +124,5 @@ v 1.9:
- Trap errors in fetching the mirrors map.
- Fixed an infinite loop error when using '/manudel' on a logged in player. It caused setDefaultGroup to trigger a bukkit update when no GM User existed yet.
- do not allow inherited permissions to negate higher perms.
- - Fixed a bug when pushing superperms in the wrong order.
\ No newline at end of file
+ - Fixed a bug when pushing superperms in the wrong order.
+ - Fix players retaining permissions when demoted.
\ No newline at end of file
diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java
index c0ed77adc..43b764faf 100644
--- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java
+++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java
@@ -415,9 +415,9 @@ public class GroupManager extends JavaPlugin {
if (!sender.hasPermission("groupmanager.notify.other") || (isConsole))
sender.sendMessage(ChatColor.YELLOW + "You changed player '" + auxUser.getName() + "' group to '" + auxGroup.getName() + "'.");
- targetPlayer = this.getServer().getPlayer(auxUser.getName());
- if (targetPlayer != null)
- BukkitPermissions.updatePermissions(targetPlayer);
+ //targetPlayer = this.getServer().getPlayer(auxUser.getName());
+ //if (targetPlayer != null)
+ // BukkitPermissions.updatePermissions(targetPlayer);
return true;
// break;
@@ -450,6 +450,7 @@ public class GroupManager extends JavaPlugin {
dataHolder.removeUser(auxUser.getName());
sender.sendMessage(ChatColor.YELLOW + "You changed player '" + auxUser.getName() + "' to default settings.");
+ // If the player is online, this will create new data for the user.
targetPlayer = this.getServer().getPlayer(auxUser.getName());
if (targetPlayer != null)
BukkitPermissions.updatePermissions(targetPlayer);
@@ -494,9 +495,9 @@ public class GroupManager extends JavaPlugin {
else
sender.sendMessage(ChatColor.RED + "The subgroup '" + auxGroup.getName() + "' is already available to '" + auxUser.getName() + "'.");
- targetPlayer = this.getServer().getPlayer(auxUser.getName());
- if (targetPlayer != null)
- BukkitPermissions.updatePermissions(targetPlayer);
+ //targetPlayer = this.getServer().getPlayer(auxUser.getName());
+ //if (targetPlayer != null)
+ // BukkitPermissions.updatePermissions(targetPlayer);
return true;
case manudelsub:
@@ -534,9 +535,9 @@ public class GroupManager extends JavaPlugin {
auxUser.removeSubGroup(auxGroup);
sender.sendMessage(ChatColor.YELLOW + "You removed subgroup '" + auxGroup.getName() + "' from player '" + auxUser.getName() + "' list.");
- targetPlayer = this.getServer().getPlayer(auxUser.getName());
- if (targetPlayer != null)
- BukkitPermissions.updatePermissions(targetPlayer);
+ //targetPlayer = this.getServer().getPlayer(auxUser.getName());
+ //if (targetPlayer != null)
+ // BukkitPermissions.updatePermissions(targetPlayer);
return true;
case mangadd:
@@ -1614,9 +1615,9 @@ public class GroupManager extends JavaPlugin {
if (!sender.hasPermission("groupmanager.notify.other") || (isConsole))
sender.sendMessage(ChatColor.YELLOW + "You changed " + auxUser.getName() + " group to " + auxGroup.getName() + ".");
- targetPlayer = this.getServer().getPlayer(auxUser.getName());
- if (targetPlayer != null)
- BukkitPermissions.updatePermissions(targetPlayer);
+ //targetPlayer = this.getServer().getPlayer(auxUser.getName());
+ //if (targetPlayer != null)
+ // BukkitPermissions.updatePermissions(targetPlayer);
return true;
// break;
@@ -1670,9 +1671,9 @@ public class GroupManager extends JavaPlugin {
if (!sender.hasPermission("groupmanager.notify.other") || (isConsole))
sender.sendMessage(ChatColor.YELLOW + "You changed " + auxUser.getName() + " group to " + auxGroup.getName() + ".");
- targetPlayer = this.getServer().getPlayer(auxUser.getName());
- if (targetPlayer != null)
- BukkitPermissions.updatePermissions(targetPlayer);
+ //targetPlayer = this.getServer().getPlayer(auxUser.getName());
+ //if (targetPlayer != null)
+ // BukkitPermissions.updatePermissions(targetPlayer);
return true;
// break;
diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java
index 396b49583..d1193510e 100644
--- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java
+++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java
@@ -28,7 +28,6 @@ import java.util.Map;
import java.util.Set;
import org.anjocaido.groupmanager.GroupManager;
-import org.anjocaido.groupmanager.dataholder.OverloadedWorldHolder;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
@@ -136,33 +135,30 @@ public class BukkitPermissions {
}
PermissionAttachment attachment;
+
// Find the players current attachment, or add a new one.
if (this.attachments.containsKey(player)) {
attachment = this.attachments.get(player);
} else {
attachment = player.addAttachment(plugin);
- this.attachments.put(player, attachment);;
+ this.attachments.put(player, attachment);
}
if (world == null) {
world = player.getWorld().getName();
}
- OverloadedWorldHolder worldData = plugin.getWorldsHolder().getWorldData(world);
- Boolean value = false;
-
// Add all permissions for this player (GM only)
// child nodes will be calculated by Bukkit.
- List playerPermArray = new ArrayList(worldData.getPermissionsHandler().getAllPlayersPermissions(player.getName(), false));
+ List playerPermArray = new ArrayList(plugin.getWorldsHolder().getWorldData(world).getPermissionsHandler().getAllPlayersPermissions(player.getName(), false));
LinkedHashMap newPerms = new LinkedHashMap();
// Sort the perm list by parent/child, so it will push to superperms correctly.
playerPermArray = sort(playerPermArray);
-
+ Boolean value = false;
for (String permission : playerPermArray) {
value = (!permission.startsWith("-"));
-
newPerms.put((value? permission : permission.substring(1)), value);
}
@@ -178,7 +174,8 @@ public class BukkitPermissions {
// Then whack our map into there
orig.putAll(newPerms);
// That's all folks!
- attachment.getPermissible().recalculatePermissions();
+ //attachment.getPermissible().recalculatePermissions();
+ player.recalculatePermissions();
} catch (IllegalArgumentException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
diff --git a/lib/bukkit.jar b/lib/bukkit.jar
index 394d5b667..a06058767 100644
Binary files a/lib/bukkit.jar and b/lib/bukkit.jar differ
diff --git a/lib/craftbukkit.jar b/lib/craftbukkit.jar
index 52bda3246..188d0cabb 100644
Binary files a/lib/craftbukkit.jar and b/lib/craftbukkit.jar differ