Latest version should be compatible with servers from 1.4 to 1.7.4 (if not, please report).

Development builds can be acquired at my Jenkins.


  • Changes in database structure: all columns which are the parts of UNIQUE KEYs are NOT NULL now, their default values changed to empty strings. Plugin will automatically ALTER TABLEs so you do not need to heat your head about it.
  • Due to this importing from sql backend of PermissionsEx should not create duplicate rows but it need more testing. If you can, please try to do this.
  • Fixed promotion/demotion in some complicated scenarios. Chat log for promotion/demotion is more fancy now.
  • Added new permission nodes:
    User with this permissions can promote/demote just self on specific ladders.
  • Improved destination parsing: region or world can include both text and instantiator ?, not only one of them. For example, you can set some permission's destination to "?_shop:world" for group Test and it will fire in region oldschool_shop if the player inherits from Test.oldschool. Earlier you was able enter only text OR only instantiator (OR asterisk OR nothing).


  • Working importer from PermissionsEx! But currently only from it's SQL backend. Migrate pex from yaml backend into sql backend using it's manual. Database for pex and rscp tables should be the same. Enter command: /rscp import pex-sql.
    Currently I'm confused with MySQL behaviour on using NULLs in UNIQUE keys. They aren't work as I thought and I need time to find workaround for this. Maybe in future all NULL values becomes empty strings. Right now just DO NOT enter import command more than once — it will create dupllicate rows (for the first call it also possible).
  • Now includes Updater v2.0 by Gravity! When update is found rscp will inform administrators (users with rscp.admin permission node) that update is available. To download new version just enter command /rscp update. However, downloaded file will have the same name as running version. It is a limitation of Updater/CraftBukkit so I hope it will be resolved in the near future.
    Just keep in mind that file rscPermissions_v0.7.2 can be in fact v0.8.9 or something else :)
  • Prefixes/suffixes can now include instantiator ? from group inheritance.
  • Also, prefixes/suffixes can include upper value on the inheritance resolution tree. For example: user Notch inherits group Group G inherits group A. Group A has prefix "§4[w1]§r ". Group G has prefix "%§2[m2]§r " and suffix "§7 (§8?§7)§r". In chat, user Notch will have resulting name: "§4[w1]§r§2[m2]§rNotch§7 (§8abc§7)§r" (decolored version: "[w1] [m2] Notch (abc)"). Very good for complex inheritance structures.
  • In the end, prefixes/suffixes can contain special color codes from our Pages/Configuration.
  • Bans feature was completely moved away from rscp into new separate plugin rscBans. WIll appear on DBO at Jan 2014, I hope.
  • Another one plugin should appear in the near future: rscPayments. It will gather items/money/levels from player, execute commands from the face of server/player (with special temporary assigned permissions) and refunds items/money/levels back. May be it will add inheritances and realize some other vault and rscp posibilities.
  • /rscp user <user> list permissions now lists permission nodes alphabetically.


  • Permissions for promotion are changed slightly.
    • rscp.promote.<ladder>[.<instance>]
      to promote/demote other people on simple or templated ladder.
      <ladder> can be replaced by * if no instance is specified; <instance> can be replaced by * for specified ladder template.
    • rscp.promotable.<ladder>[.<instance>]
      to be able to be moved on some ladder by others.
    • rscp.admin.promote
      Admin can promote/demote anybody on any ladder ignoring all other permissions.
    • Read Pages/Ladders explained for details.
  • Fixed 'collate' for Rewards and Bans tables.
  • Better colored chat answers for all commands.
  • Minor internal fixes.


  • Improvements in destinations working: now you can replace regionId or world's name with symbol ? and this will mean to use instantiator of group (user) inheritance.
    For example, group Citizens has permission worldguard.region.teleport.? inside destination ?:@RolePlay, and player is inside group Citizens.MyTown (Citizens = group template, MyTown = instance), so when player is inside region called MyTown, he can teleport to city's spawn.
    Sorry, but you cannot use symbol ? as a serverId value.
  • Fixed prefix/suffix visibility for groups/users with upper-case chars.
  • New commands:
    • /rscp user <user> list permissions
    • /rscp user <user> prefix [prefix]
    • /rscp user <user> suffix [suffix]
    • /rscp group <group> prefix [prefix]
    • /rscp group <group> suffix [suffix]
  • To set null prefix/suffix values just enter empty doublequotes ("").


  • Ladders are working! You can give players permissions and they can promote/demote each other on different ladders!
  • Ladders can work as prototypes like groups! I will write a guide for this feature.
  • If there was a memory leak (I do no sure if it was) — it should be gone. Please report ticket if you find memory leak.
  • New table will be created — servers. Now it is write-only with the settings from config.yml.
  • All tables have explicit collocation set to utf8_general_ci (case insensitive).
  • Added command /rscp fetch with the old /rscp reload behavior — only fetches rows from database and updates permissions for online users. /rscp reload still completely disables and re-enables plugin.
  • As every time — some fixes and refactoring.
  • You will see exceptions with the "climber_UNIQUE" text, but this is normal and you should not worry about this.


  • Multiple destinations in one table row! destination column rised up to 256 chars long and can contain several destinations separated by ';' or ',' or new lines. Exact splitting regexp is \s*(;|,|\r|\n)+\s*. For example, "myregion:@freebuild;[email protected];dang23:MineZ". In background, it is the same as you can create 3 separate rows with 3 different destinations and all other data will be identical. This feature is related to the columns of the permissions and inheritance tables. Plugin will alter DB tables automatically.
  • Command /rscp reload completely reloads config.yml settings.
  • Added example rows for tables permissions, inheritance and ladders.
  • Minor NPE and other fixes.


  • There are many bug fixes from minor to critical.
  • Added command /rscp examplerows to generate examples in db (but only entities at now).
  • /rscp reload now completely disables and enables plugin; config.yml is also reread.
  • Localizations for maintenance modes thought config.yml. Read Pages/Configuration for some details.
  • When Rewards are enabled, players will see list of available rewards for self after login.
  • Third-party plugins are able to setup prefixes and suffixes though Vault.


  • Maintenance mode works on 100% — now saving state into config.yml and kicks all players without permissions.
  • Vault integration removed. Otherwise, I forked Vault and added hook for rscp; waiting for Pull Request acception. After that chat prefixes and suffixes will appear. My own build of the latest Vault + my code can be downloaded here.
  • Rewards started: work with commands and permissions only; currently they are infinite — column `activated` not changing in db. Conditional inheritance from groups will be implemented later.
  • Bans and Rewards become optional features; disabled by default (you can enable them in config.yml).
  • Little performance improvements, bug fixes and refactoring.
  • Tested a little bit on 1.6.2, I see no any problems.


  • Fixes in building inheritance tree. Sometimes players haven't any permissions.
  • Added base permission calculation at onAsyncPlayerPreLogin event: region, world and expirience are unknown and interpreted as nulls/zeroes. Without that some plugins were unable to find permissions and allow player connection (MaintenanceMode, maybe some ban or whitelist plugins, etc).


  • Fixed a way to live with Vault together due to BDO recommendations.


  • Breaking change: renamed some configuration nodes: autoreloaddelaysec to auto-reload-delay-sec, defaultgroup to default-group, metrics to use-metrics; added boolean treat-asterisk-as-op (true by default). This was done is the aims of readability.
  • Added configuration option settings.region-finder-thread-granularity-msec that determines how ofter parallel thread will rescan players for being in WG regions. Hardcoded limits are 20 (lower) and 10000 (higher), default value is 1000 (1 sec).
  • Implemented commands /rscp lock [maintenancemode] and /rscp unlock. At now it doesn't kick online players but prevent others from logging in. To allow player log in give him rscp.maintenance.<maintenancemode> or rscp.maintenance.* permissions. Ironically, the default maintenance mode is called "default". When maintenance is enabled testing of a player's permissions is made in event's thread and results in some insignifficant delay during logging in.
  • Vault is now truly optional — no more exceptions at startup if you haven't it.
  • Minor performance increases; more thread-safety; little bug fixes.


  • Group prototyping working! Perhaps we should create page to describe it in details...
  • Prototyping symbol # changed to ?.
  • Breaking change: all permission nodes renamed from rscPermissions.blablabla to rscp.blablabla due to simplicity and shortness. However, only one permission was implemented earlier (reload) ...
  • Breaking change: list of MySQL servers in config.yml is now realized as a list of hashmaps. This gives the ability to setup any reasonable number of permission sources. Look at Pages/Configuration to see new format. Testers of v0.3.2b can see old format in their config.yml.
  • Asterisk permision * gives OP! But if you set some permission values to false (zero) - OP will not have them (Bukkit's behavior!).
  • Removed debug message "ThPrmUpd" to the players whose permissions were recalculated.


  • Fixed exception in StopRecalcThread() on startup.
  • Entity names are case-insensitive now.
  • Added settings.defaultgroup in configuration.


  • Fixed some threading ussues.
  • Code improvements.


  • Automatic creation of empty database tables (if they aren't exist).
  • Scheduled autoreload is working.
  • Two-db mode is working: if primary database cannot read from it's tables, secondary is asked for them. If primary database cannot write data into it's tables, secondary is asked to do that.
  • Code improvements.


  • Prefixes for database tables can be set in config.yml.
  • Metrics ( included.


  • Initial public build.