From 1543bfd5504eeaa83c48b27077bdf7a66f5bc715 Mon Sep 17 00:00:00 2001 From: ElgarL Date: Tue, 11 Oct 2011 22:05:21 +0100 Subject: v 1.4: - Updated for Bukkits new YamlConfiguration. - Cleared remaining Cast errors cause by object cloning. --- EssentialsGroupManager/src/Changelog.txt | 5 ++++- .../src/org/anjocaido/groupmanager/GMConfiguration.java | 10 +++++----- .../src/org/anjocaido/groupmanager/GroupManager.java | 4 ++-- .../src/org/anjocaido/groupmanager/data/DataUnit.java | 2 +- .../src/org/anjocaido/groupmanager/data/Group.java | 6 +++--- .../src/org/anjocaido/groupmanager/data/User.java | 2 +- EssentialsGroupManager/src/plugin.yml | 2 +- 7 files changed, 17 insertions(+), 14 deletions(-) diff --git a/EssentialsGroupManager/src/Changelog.txt b/EssentialsGroupManager/src/Changelog.txt index fe33a9f15..2fc8cf71c 100644 --- a/EssentialsGroupManager/src/Changelog.txt +++ b/EssentialsGroupManager/src/Changelog.txt @@ -39,4 +39,7 @@ v 1.3: - Fix for Bukkit passing a null To location on a player Portaling - Fixed manudelsub not correctly selecting the group to remove. - Added two new permission nodes - groupmanager.notify.self & groupmanager.notify.other - These allow players/admins to be notified when players are moved between groups. \ No newline at end of file + These allow players/admins to be notified when players are moved between groups. +v 1.4: + - Updated for Bukkits new YamlConfiguration. + - Cleared remaining Cast errors cause by object cloning. \ No newline at end of file diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GMConfiguration.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GMConfiguration.java index aa838d9e8..0d9f927d9 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GMConfiguration.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GMConfiguration.java @@ -10,7 +10,7 @@ import java.util.Map; import java.util.logging.Level; import org.anjocaido.groupmanager.utils.Tasks; -import org.bukkit.util.config.Configuration; +import org.bukkit.configuration.file.YamlConfiguration; /** * @@ -20,7 +20,7 @@ public class GMConfiguration { private GroupManager plugin; private File configFile; - private Configuration GMconfig; + private YamlConfiguration GMconfig; public GMConfiguration(GroupManager plugin) { this.plugin = plugin; @@ -41,10 +41,10 @@ public class GMConfiguration { } } - GMconfig = new Configuration(configFile); + GMconfig = new YamlConfiguration(); try { - GMconfig.load(); + GMconfig.load(configFile); } catch (Exception ex) { throw new IllegalArgumentException("The following file couldn't pass on Parser.\n" + configFile.getPath(), ex); } @@ -57,7 +57,7 @@ public class GMConfiguration { @SuppressWarnings("unchecked") public Map getMirrorsMap() { - return (Map) GMconfig.getProperty("settings.permission.world.mirror"); + return (Map) GMconfig.getList("settings.permission.world.mirror"); } public Integer getSaveInterval() { diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java index ac822908f..92d50ca5d 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java @@ -1770,10 +1770,10 @@ public class GroupManager extends JavaPlugin { for(Player test: Bukkit.getServer().getOnlinePlayers()) { if (!test.equals(player)){ if (test.hasPermission("groupmanager.notify.other")) - test.sendMessage(ChatColor.YELLOW + name +" was " + msg); + test.sendMessage(ChatColor.YELLOW + name +" was" + msg); } else if ((player != null) && ((player.hasPermission("groupmanager.notify.self")) || (player.hasPermission("groupmanager.notify.other")))) - player.sendMessage(ChatColor.YELLOW + "You we're " + msg); + player.sendMessage(ChatColor.YELLOW + "You we're" + msg); } } diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/DataUnit.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/DataUnit.java index f17d8b21e..7b027a94d 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/DataUnit.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/DataUnit.java @@ -102,7 +102,7 @@ public abstract class DataUnit { * @return a copy of the permission list */ public ArrayList getPermissionList() { - return (ArrayList) permissions.clone(); + return new ArrayList(permissions); } public void sortPermissions() { diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/Group.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/Group.java index c881fc95d..84d4fceed 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/Group.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/Group.java @@ -41,7 +41,7 @@ public class Group extends DataUnit implements Cloneable { @Override public Group clone() { Group clone = new Group(getDataSource(), this.getName()); - clone.inherits = ((ArrayList) this.getInherits().clone()); + clone.inherits = new ArrayList(this.getInherits()); for (String perm : this.getPermissionList()) { clone.addPermission(perm); } @@ -60,7 +60,7 @@ public class Group extends DataUnit implements Cloneable { return null; } Group clone = getDataSource().createGroup(this.getName()); - clone.inherits = ((ArrayList) this.getInherits().clone()); + clone.inherits = new ArrayList(this.getInherits()); for (String perm : this.getPermissionList()) { clone.addPermission(perm); } @@ -76,7 +76,7 @@ public class Group extends DataUnit implements Cloneable { * @return the inherits */ public ArrayList getInherits() { - return (ArrayList) inherits.clone(); + return new ArrayList(inherits); } /** diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/User.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/User.java index a95018fa9..8a0e6cdbb 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/User.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/data/User.java @@ -183,7 +183,7 @@ public class User extends DataUnit implements Cloneable { } public ArrayList subGroupListStringCopy() { - return (ArrayList) subGroups.clone(); + return new ArrayList(subGroups); } /** diff --git a/EssentialsGroupManager/src/plugin.yml b/EssentialsGroupManager/src/plugin.yml index a247c7ad0..596b4a8d8 100644 --- a/EssentialsGroupManager/src/plugin.yml +++ b/EssentialsGroupManager/src/plugin.yml @@ -1,5 +1,5 @@ name: GroupManager -version: "1.3 (Phoenix)" +version: "1.4 (Phoenix)" main: org.anjocaido.groupmanager.GroupManager website: http://www.anjocaido.info/ description: Provides on-the-fly system for permissions system created by Nijikokun. But all in memory, and with flat-file saving schedule. -- cgit v1.2.3 From 03adb56d256315924fd3cb14e5281dec28967195 Mon Sep 17 00:00:00 2001 From: ElgarL Date: Wed, 12 Oct 2011 00:16:53 +0100 Subject: Added a config setting - bukkit_perms_override: false Enable to allow default Bukkit based permissions to remain enabled, unless directly negated within GroupManager. --- EssentialsGroupManager/src/Changelog.txt | 5 +++- EssentialsGroupManager/src/config.yml | 3 +++ .../anjocaido/groupmanager/GMConfiguration.java | 3 +++ .../org/anjocaido/groupmanager/GroupManager.java | 13 ++++++---- .../permissions/BukkitPermissions.java | 29 +++++++++++++++++----- 5 files changed, 41 insertions(+), 12 deletions(-) diff --git a/EssentialsGroupManager/src/Changelog.txt b/EssentialsGroupManager/src/Changelog.txt index 2fc8cf71c..272a792e2 100644 --- a/EssentialsGroupManager/src/Changelog.txt +++ b/EssentialsGroupManager/src/Changelog.txt @@ -42,4 +42,7 @@ v 1.3: These allow players/admins to be notified when players are moved between groups. v 1.4: - Updated for Bukkits new YamlConfiguration. - - Cleared remaining Cast errors cause by object cloning. \ No newline at end of file + - Cleared remaining Cast errors cause by object cloning. + - Removed extra notification messages for the player issuing the group move command. + - Added a config setting - bukkit_perms_override: false + Enable to allow default Bukkit based permissions to remain enabled, unless directly negated within GroupManager. \ No newline at end of file diff --git a/EssentialsGroupManager/src/config.yml b/EssentialsGroupManager/src/config.yml index 1c5e3e32d..0977362a5 100644 --- a/EssentialsGroupManager/src/config.yml +++ b/EssentialsGroupManager/src/config.yml @@ -2,6 +2,9 @@ settings: config: # With this enabled anyone set as op has full permissions when managing GroupManager opOverrides: true + # If enabled any bukkit permissiosn which default to true will be left enabled. + # If the player is op any permissions set to Op will follow suit. + bukkit_perms_override: false data: save: # How often GroupManager will save it's data back to groups and users.yml diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GMConfiguration.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GMConfiguration.java index 0d9f927d9..af21b31bb 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GMConfiguration.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GMConfiguration.java @@ -52,6 +52,9 @@ public class GMConfiguration { } public boolean isOpOverride() { + return GMconfig.getBoolean("settings.config.bukkit_perms_override", true); + } + public boolean isBukkitPermsOverride() { return GMconfig.getBoolean("settings.config.opOverrides", true); } diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java index 92d50ca5d..1f55f73ad 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/GroupManager.java @@ -57,7 +57,7 @@ public class GroupManager extends JavaPlugin { private boolean validateOnlinePlayer = true; private boolean isReady = false; private static boolean isLoaded = false; - private GMConfiguration config; + protected GMConfiguration config; private GMLoggerHandler ch; public static BukkitPermissions BukkitPermissions; private static WorldListener WorldEvents; @@ -369,7 +369,8 @@ public class GroupManager extends JavaPlugin { //PARECE OK auxUser.setGroup(auxGroup); - sender.sendMessage(ChatColor.YELLOW + "You changed player '" + auxUser.getName() + "' group to '" + auxGroup.getName() + "'."); + if (!sender.hasPermission("groupmanager.notify.other")) + 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); @@ -1590,7 +1591,8 @@ public class GroupManager extends JavaPlugin { } //PARECE OK auxUser.setGroup(auxGroup); - sender.sendMessage(ChatColor.YELLOW + "You changed " + auxUser.getName() + " group to " + auxGroup.getName() + "."); + if (!sender.hasPermission("groupmanager.notify.other")) + sender.sendMessage(ChatColor.YELLOW + "You changed " + auxUser.getName() + " group to " + auxGroup.getName() + "."); targetPlayer = this.getServer().getPlayer(auxUser.getName()); if (targetPlayer != null) BukkitPermissions.updatePermissions(targetPlayer); @@ -1648,7 +1650,8 @@ public class GroupManager extends JavaPlugin { } //PARECE OK auxUser.setGroup(auxGroup); - sender.sendMessage(ChatColor.YELLOW + "You changed " + auxUser.getName() + " group to " + auxGroup.getName() + "."); + if (!sender.hasPermission("groupmanager.notify.other")) + sender.sendMessage(ChatColor.YELLOW + "You changed " + auxUser.getName() + " group to " + auxGroup.getName() + "."); targetPlayer = this.getServer().getPlayer(auxUser.getName()); if (targetPlayer != null) BukkitPermissions.updatePermissions(targetPlayer); @@ -1773,7 +1776,7 @@ public class GroupManager extends JavaPlugin { test.sendMessage(ChatColor.YELLOW + name +" was" + msg); } else if ((player != null) && ((player.hasPermission("groupmanager.notify.self")) || (player.hasPermission("groupmanager.notify.other")))) - player.sendMessage(ChatColor.YELLOW + "You we're" + msg); + player.sendMessage(ChatColor.YELLOW + "You were" + msg); } } diff --git a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java index 19d90854b..6a5968c22 100644 --- a/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java +++ b/EssentialsGroupManager/src/org/anjocaido/groupmanager/permissions/BukkitPermissions.java @@ -43,6 +43,7 @@ import org.bukkit.event.server.ServerListener; import org.bukkit.permissions.Permission; import org.bukkit.permissions.PermissionAttachment; import org.bukkit.permissions.PermissionAttachmentInfo; +import org.bukkit.permissions.PermissionDefault; import org.bukkit.plugin.Plugin; import org.bukkit.plugin.PluginManager; @@ -124,15 +125,31 @@ public class BukkitPermissions { User user = worldData.getUser(player.getName()); - // clear permissions - for (String permission : attachment.getPermissions().keySet()) { - attachment.unsetPermission(permission); - } + // clear permissions + for (String permission : attachment.getPermissions().keySet()) + attachment.unsetPermission(permission); - // find matching permissions + /* + * find matching permissions + * + * and base bukkit perms if we are set to allow bukkit permissions to override. + */ Boolean value; for (Permission permission : registeredPermissions) { - value = worldData.getPermissionsHandler().checkUserPermission(user, permission.getName()); + + value = worldData.getPermissionsHandler().checkUserPermission(user, permission.getName()); + + // Only check bukkit override IF we don't have the permission directly. + if (value = false) { + PermissionDefault permDefault = permission.getDefault(); + + if ((plugin.getGMConfig().isBukkitPermsOverride()) + && ((permDefault == PermissionDefault.TRUE) + || ((permDefault == PermissionDefault.NOT_OP) && !player.isOp()) + || ((permDefault == PermissionDefault.OP) && player.isOp()))) + value = true; + } + if (value == true) attachment.setPermission(permission, value); } -- cgit v1.2.3