1.0

Details

  • Filename
    zPermissions-1.0.jar
  • Uploaded by
  • Uploaded
    Jun 14, 2013
  • Size
    319.01 KB
  • Downloads
    2,018
  • MD5
    4136c9a9be35142b1d9cce26936eb9d6

Supported Bukkit Versions

  • 1.6.1
  • CB 1.5.2-R1.0

Changelog

1.0

This version will upgrade your database schema. Please read Schema Updates and take any necessary precautions.

This version will also upgrade your config.yml to add a new option: interleaved-player-permissions

  • Many, many improvements to the Bukkit side of things, namely: setting permissions more efficiently and handling out-of-order events (like when a player loses network connectivity and reconnects).
  • Fix memory/storage synchronization bug when setting group parents or purging groups with parents.
  • Fix potential race conditions in expiration and background refresh handlers.
  • Add support for multiple parents.
  • Add "clone" and "rename" sub-commands for players and groups.
  • Add hidden command to delete all players and groups (to allow for clean import). The new command is /permissions purge and requires confirmation. It requires the zpermissions.purge permission, which is now part of zpermissions.* (which in turn is granted to OPs by default).
  • Add "diff" sub-command for comparing effective permissions of groups and players.
  • Add ZPermissionsPlayerUpdateEvent, a Bukkit event fired off whenever an online player's permissions are updated by zPermissions.
  • If there are any problems initializing, disallow all login attempts.
  • Also accept "meta" as an abbreviation for the "metadata" sub-command.
  • Be less strict in determining when to unset in prefix/suffix aliases.
  • UI change: All references to "priority" are now "weight."
  • rank-admin-broadcast defaults to false now.
  • Add interleaved-player-permissions option which changes when player permissions are applied.
  • Make it so rank in setrank command is no longer case-sensitive.
  • Switch to quote-aware parsing.
  • On export, sort base groups alphabetically.
  • Optimize loading of players/groups/permissions. Don't go overboard on fetches/joins.
  • Set permissions more efficiently without the need for reflection. This removes the need for the optimize-set-permissions option.
  • Listen on PlayerJoinEvent as well. Also handle case if player gets booted during PlayerLoginEvent.
  • Remove "p" as an alias for "permissions." Add to bukkit.yml if you miss it.
  • Minor polish to "dump" sub-command.

Multiple Parents

zPermissions now supports groups that inherit from multiple parents. The sub-command to set multiple parents is setparents (or the alias parents). The old command (setparent) is still supported and is now an alias for setparents.

/permissions group <group> setparents <parent1> <parent2> <parent3> etc.

When resolving permissions, the permissions from parent groups are applied in reverse order so that <parent1>'s permissions are applied last. This means <parent1>'s permissions will override permissions from all other parents.

To support this new feature, a schema update is necessary.

Changes to Defaults

This release changes a number of defaults. However, these changes should only affect new installations of zPermissions. If you used zPermissions prior to this release, the defaults were:

interleaved-player-permissions: true
rank-admin-broadcast: true

If you have an existing config.yml, these options should retain their pre-1.0 values. (Note that interleaved-player-permissions is a new option. However, true is the pre-1.0 behavior.)

New installations of zPermissions (that is, where zPerms creates the config.yml from scratch) will have the aforementioned options set to false.

Should I Change These Options?

It depends. A full explanation of the interleaved-player-permissions option can be found in the FAQ. The false setting is more intuitive and was actually the intended behavior from the beginning (version 0.9). However, since this setting affects how permissions are resolved, it is only set to false in new installations.

Setting rank-admin-broadcast to false offers more control over who gets notifications from rank commands (promote/demote/etc.). See the permissions doc for more details (Notification Permissions section). Note that no one, not even OPs, gets the notify permissions by default. If you switch rank-admin-broadcast to false, you will have to set these permissions on the desired groups/players yourself.

"Priority" vs. "Weight"

This is strictly a cosmetic change. All references to "priority" are now "weight." The old commands and aliases (such as "setpriority" or "priority") remain for import/export backwards compatibility.

The rationale for this change is that "priority" usually evokes the meaning where the "highest priority" would be the lowest number, e.g. 1st priority vs. 10th priority.

I did not want to change any of the underlying logic or schema, so "priority" is now "weight" in both command output (e.g. /permissions group ... show) and commands (/permissions group ... setweight).

Quote Awareness

Double quotes (") are now significant and may be used to quote arguments with strings. This is probably most useful with the metadata/prefix/suffix commands.

As a result, backslashes (\) now have meaning as well — as the beginning of an escape sequence. There are only two recognized escape sequences:

  • \\ — Double backslash is transformed into a single backslash.
  • \" — A backslash followed by a double quote is transformed into a double quote without any special meaning.

Escape sequences may be used inside or outside quoted arguments.

Loss of "p" Alias

It's been pointed out to me that the /p alias for /permissions is probably too short and ambiguous. Since Bukkit assigns command aliases on a first-come first-served basis, and zPermissions tries to start as early as possible (because it's a permissions plugin), other plugins never really have a chance of grabbing /p. :P

If you miss /p, you can restore it as an alias by adding it to bukkit.yml:

aliases:
  p:
  - permissions

Note that the /perm and /perms aliases remain. Also note that tab completion does not work with Bukkit aliases for some reason.