Changelog v 1.1: - Fixed users being able to use 'manuadd' to add users to higher groups than their own. - Added SuperPerms support so GM will update and provide the permissions to plugins which only support Bukkit Perms. - Added more helpful output to errors on argument lengths. - GroupManager will now attempt to select the default world when using commands instead of failing and telling you to use '/manselect '. - Invalid groups assigned to players in users.yml will no longer cause a crash. GM will now set them to the default group instead. - Fix for Users.yml containing only 'users:' causing a crash. - GroupManager will now generate a fresh Users and Groups yml if either file is empty. - Fix for an infinite loop bug with the new Bukkit Perms during a new user creation. - Fixed BukkitPerms population. Wasn't correctly setting superperms. - Push updates to superperms for all valid GM commands. - All GroupManager commands issued by players are now echoed in the console. - Reverted WorldHolder static change to maintain backward plugin compatibility. - Update to handle 'getDescription().getPermissions(') returning a list (CB 1172). - Fix for null in PLAYER_TELEPORT for bukkit perms. - Fixed wasteful updating of perms on a manload. - manulistp now accepts an additional + to list ALL Superperms effective permissions (/manulistp +). - manucheckp also outputs superperms results. - Removed superperms update on plugins unloading. Unneeded and created undesired lag on shutdown. - Added a BukkitPermsUpdateTask to only update superperms once on a load/reload. - Fix for GM not checking inheritance for known superperms nodes. - Optimized getAllPlayersPermissions and fixed pushing unknown perms to superperms. v 1.2: - Changed priority of Registered events to lowest. - Fixed an issue with superperms where plugins define perms with inheritance after the root perms v 1.3: - Rewrote Config loading to use Bukkits Configuration features - Added an opOverride setting in config. If present and set to false, op's will not get overriding permissions in GroupManager. (one op will not be able to alter another op's settings) - GM will now create all relevant world data files for non mirrored worlds. (for all worlds named in config.yml) - Attempt to stop GM wiping groups/users yml's on a bad shut down. - Added event handling to manage new world creation at runtime. - Added the ability to handle unknown worlds at server start. (GM will create the data files for any worlds it finds which are not in the config.yml) - 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. 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. - Fixed reading world mirrors from the config. - Simplified config.yml while retaining backwards compatibility. - Added data.save.hours setting to config. This allow control over how long backups are retained. v 1.5: - Fixed opOverrides and bukkit_perms_override to read the correct entries. - Better commenting in config.yml - Fixed GM to recognize Superperm child nodes. If you add a node like Towny.admin GM will now correctly report on all child nodes. - Fixed GM loading world data files twice at startup. - Improved error reporting for invalid groups.yml - Added Global Groups Defined in groupmanager/globalgroups.yml. Create groups in the yml with a g: prefix, then inherit in the worlds groups files. - Added Info node support to Global Groups. - Fixed an error on 'manucheckv'. If the users doesn't have the variable it fell through causing an exception. - Added checking of subgroups for Info nodes. - Expanded 'canUserBuild()' to include inheritance and subgroups. - Added a config.yml setting of 'validate_toggle' for those who prefer 'mantogglevalidate' to always be off. - Prevent setting 'minutes' in the config to zero causing an error. - GM will now check to see if it's data files have been changed at each scheduled save. If the files have been altered (on disc) it will reload, so long as the in-memory data hasn't changed. If the files on Disc have changed AND there have been changes to it's in-memory data it will show a warning. You then MUST issue a '/mansave force' to overwrite the disc files, or a '/manload' to overwrite the memory data. - Fix for an error in checkFullUserPermission caused by players disconnecting mid perms update. - Notification of being moved to the default group only happens if it's a demotion/promotion (not on join). - Fixed GM holding files open and causing the time stamp to be incorrect. This caused GM to require a '/mansave force' when it shouldn't be needed. - Fixed a crash on reload due to bukkit not unloading plugins before reloading. v 1.6: - Prevent Group.equals tests throwing a NullPointerException for GlobalGroups. - Stop throwing errors on an empty users file. - Optimize sorting to speedup permission tests. - Fix superperms to pass all tests http://dev.bukkit.org/server-mods/superpermstest/ - Optimizations include changing the return of comparePermissionString.