Merge remote branch 'remotes/ess/groupmanager' into essmaster

This commit is contained in:
KHobbits 2011-10-12 17:10:31 +01:00
commit d732821e06
9 changed files with 56 additions and 24 deletions

View File

@ -39,4 +39,10 @@ v 1.3:
- Fix for Bukkit passing a null To location on a player Portaling - Fix for Bukkit passing a null To location on a player Portaling
- Fixed manudelsub not correctly selecting the group to remove. - Fixed manudelsub not correctly selecting the group to remove.
- Added two new permission nodes - groupmanager.notify.self & groupmanager.notify.other - Added two new permission nodes - groupmanager.notify.self & groupmanager.notify.other
These allow players/admins to be notified when players are moved between groups. 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.
- 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.

View File

@ -2,6 +2,9 @@ settings:
config: config:
# With this enabled anyone set as op has full permissions when managing GroupManager # With this enabled anyone set as op has full permissions when managing GroupManager
opOverrides: true 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: data:
save: save:
# How often GroupManager will save it's data back to groups and users.yml # How often GroupManager will save it's data back to groups and users.yml

View File

@ -10,7 +10,7 @@ import java.util.Map;
import java.util.logging.Level; import java.util.logging.Level;
import org.anjocaido.groupmanager.utils.Tasks; 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 GroupManager plugin;
private File configFile; private File configFile;
private Configuration GMconfig; private YamlConfiguration GMconfig;
public GMConfiguration(GroupManager plugin) { public GMConfiguration(GroupManager plugin) {
this.plugin = plugin; this.plugin = plugin;
@ -41,10 +41,10 @@ public class GMConfiguration {
} }
} }
GMconfig = new Configuration(configFile); GMconfig = new YamlConfiguration();
try { try {
GMconfig.load(); GMconfig.load(configFile);
} catch (Exception ex) { } catch (Exception ex) {
throw new IllegalArgumentException("The following file couldn't pass on Parser.\n" + configFile.getPath(), ex); throw new IllegalArgumentException("The following file couldn't pass on Parser.\n" + configFile.getPath(), ex);
} }
@ -52,12 +52,15 @@ public class GMConfiguration {
} }
public boolean isOpOverride() { public boolean isOpOverride() {
return GMconfig.getBoolean("settings.config.bukkit_perms_override", true);
}
public boolean isBukkitPermsOverride() {
return GMconfig.getBoolean("settings.config.opOverrides", true); return GMconfig.getBoolean("settings.config.opOverrides", true);
} }
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public Map<String, Object> getMirrorsMap() { public Map<String, Object> getMirrorsMap() {
return (Map<String, Object>) GMconfig.getProperty("settings.permission.world.mirror"); return (Map<String, Object>) GMconfig.getList("settings.permission.world.mirror");
} }
public Integer getSaveInterval() { public Integer getSaveInterval() {

View File

@ -57,7 +57,7 @@ public class GroupManager extends JavaPlugin {
private boolean validateOnlinePlayer = true; private boolean validateOnlinePlayer = true;
private boolean isReady = false; private boolean isReady = false;
private static boolean isLoaded = false; private static boolean isLoaded = false;
private GMConfiguration config; protected GMConfiguration config;
private GMLoggerHandler ch; private GMLoggerHandler ch;
public static BukkitPermissions BukkitPermissions; public static BukkitPermissions BukkitPermissions;
private static WorldListener WorldEvents; private static WorldListener WorldEvents;
@ -369,7 +369,8 @@ public class GroupManager extends JavaPlugin {
//PARECE OK //PARECE OK
auxUser.setGroup(auxGroup); 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()); targetPlayer = this.getServer().getPlayer(auxUser.getName());
if (targetPlayer != null) BukkitPermissions.updatePermissions(targetPlayer); if (targetPlayer != null) BukkitPermissions.updatePermissions(targetPlayer);
@ -1590,7 +1591,8 @@ public class GroupManager extends JavaPlugin {
} }
//PARECE OK //PARECE OK
auxUser.setGroup(auxGroup); 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()); targetPlayer = this.getServer().getPlayer(auxUser.getName());
if (targetPlayer != null) BukkitPermissions.updatePermissions(targetPlayer); if (targetPlayer != null) BukkitPermissions.updatePermissions(targetPlayer);
@ -1648,7 +1650,8 @@ public class GroupManager extends JavaPlugin {
} }
//PARECE OK //PARECE OK
auxUser.setGroup(auxGroup); 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()); targetPlayer = this.getServer().getPlayer(auxUser.getName());
if (targetPlayer != null) BukkitPermissions.updatePermissions(targetPlayer); if (targetPlayer != null) BukkitPermissions.updatePermissions(targetPlayer);
@ -1770,10 +1773,10 @@ public class GroupManager extends JavaPlugin {
for(Player test: Bukkit.getServer().getOnlinePlayers()) { for(Player test: Bukkit.getServer().getOnlinePlayers()) {
if (!test.equals(player)){ if (!test.equals(player)){
if (test.hasPermission("groupmanager.notify.other")) if (test.hasPermission("groupmanager.notify.other"))
test.sendMessage(ChatColor.YELLOW + name +" was " + msg); test.sendMessage(ChatColor.YELLOW + name +" was" + msg);
} else } else
if ((player != null) && ((player.hasPermission("groupmanager.notify.self")) || (player.hasPermission("groupmanager.notify.other")))) 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);
} }
} }

View File

@ -102,7 +102,7 @@ public abstract class DataUnit {
* @return a copy of the permission list * @return a copy of the permission list
*/ */
public ArrayList<String> getPermissionList() { public ArrayList<String> getPermissionList() {
return (ArrayList<String>) permissions.clone(); return new ArrayList<String>(permissions);
} }
public void sortPermissions() { public void sortPermissions() {

View File

@ -41,7 +41,7 @@ public class Group extends DataUnit implements Cloneable {
@Override @Override
public Group clone() { public Group clone() {
Group clone = new Group(getDataSource(), this.getName()); Group clone = new Group(getDataSource(), this.getName());
clone.inherits = ((ArrayList<String>) this.getInherits().clone()); clone.inherits = new ArrayList<String>(this.getInherits());
for (String perm : this.getPermissionList()) { for (String perm : this.getPermissionList()) {
clone.addPermission(perm); clone.addPermission(perm);
} }
@ -60,7 +60,7 @@ public class Group extends DataUnit implements Cloneable {
return null; return null;
} }
Group clone = getDataSource().createGroup(this.getName()); Group clone = getDataSource().createGroup(this.getName());
clone.inherits = ((ArrayList<String>) this.getInherits().clone()); clone.inherits = new ArrayList<String>(this.getInherits());
for (String perm : this.getPermissionList()) { for (String perm : this.getPermissionList()) {
clone.addPermission(perm); clone.addPermission(perm);
} }
@ -76,7 +76,7 @@ public class Group extends DataUnit implements Cloneable {
* @return the inherits * @return the inherits
*/ */
public ArrayList<String> getInherits() { public ArrayList<String> getInherits() {
return (ArrayList<String>) inherits.clone(); return new ArrayList<String>(inherits);
} }
/** /**

View File

@ -183,7 +183,7 @@ public class User extends DataUnit implements Cloneable {
} }
public ArrayList<String> subGroupListStringCopy() { public ArrayList<String> subGroupListStringCopy() {
return (ArrayList<String>) subGroups.clone(); return new ArrayList<String>(subGroups);
} }
/** /**

View File

@ -43,6 +43,7 @@ import org.bukkit.event.server.ServerListener;
import org.bukkit.permissions.Permission; import org.bukkit.permissions.Permission;
import org.bukkit.permissions.PermissionAttachment; import org.bukkit.permissions.PermissionAttachment;
import org.bukkit.permissions.PermissionAttachmentInfo; import org.bukkit.permissions.PermissionAttachmentInfo;
import org.bukkit.permissions.PermissionDefault;
import org.bukkit.plugin.Plugin; import org.bukkit.plugin.Plugin;
import org.bukkit.plugin.PluginManager; import org.bukkit.plugin.PluginManager;
@ -124,15 +125,31 @@ public class BukkitPermissions {
User user = worldData.getUser(player.getName()); User user = worldData.getUser(player.getName());
// clear permissions // clear permissions
for (String permission : attachment.getPermissions().keySet()) { for (String permission : attachment.getPermissions().keySet())
attachment.unsetPermission(permission); 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; Boolean value;
for (Permission permission : registeredPermissions) { 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) if (value == true)
attachment.setPermission(permission, value); attachment.setPermission(permission, value);
} }

View File

@ -1,5 +1,5 @@
name: GroupManager name: GroupManager
version: "1.3 (Phoenix)" version: "1.4 (Phoenix)"
main: org.anjocaido.groupmanager.GroupManager main: org.anjocaido.groupmanager.GroupManager
website: http://www.anjocaido.info/ 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. description: Provides on-the-fly system for permissions system created by Nijikokun. But all in memory, and with flat-file saving schedule.