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