rscPermissions is a Bukkit/Sponge/Nakkit permission management plugin with an impressive and unique features designed especially for multiserver environments.
Different default groups on servers, you can set it on config.yml. Here you should not enter user in database completely.
Set different server-ids in your server.properties file (for example, server-id=server1 and server-id=server2). In rscp's inheritance table add two rows with user entity (entity type = 1), use user's name (1.7.x or below) or UUID (1.7.x or upper, can be '-' separated or not). Enter different parent groups for these two rows and set your server-Ids into destination column: @server1 and @server2.
Inherit your default group from other groups based on destinations @server1 and @server2.
Hi! Ok, I've published source code on GitHub. Currently making a little cleanup but feel free to learn it's internals and making pull requests if something you found wrong.
All my free time now is taken by preparing my own server to start so I won't make huge changes in code. But I will check issues and pull requests everyday two or more times :)
I'm a developer on the same network as Edgxxar. We are really looking forward to use your plugin for our multiserver network, but we are facing new issues and questions every day.
What about the voting regarding publication of the plugin as opensource on Github?
I think this would help other developers like us to identify and fix problems faster.
Hi! On prelogin event player entity is put into async query to build permission tree for him. Parallel thread gets it, calculates permissions and assigns them to player on the nearest tick. But at prelogin we have no location so player is supposed to be on concrete server but In no world and no one region. After join event we have location so I put his entity to recalculation again. This is why you can observe little delay. Also region-finder-thread config option can affect it (default 1 sec delay).
Prefixes and suffixes become known during the same process of permission tree resolution. I should think about it at morning )) Sorry, end of post Zzzz
We are using Vault to get prefixes of players (using net.milkbowl.vault.chat.Chat.getPlayerPrefix(Player)) in the PlayerJoinEvent. If a player joins the first time after the server startet, this method often returns null. After a relog it works fine in most cases. Is there a better way to get prefixes of players, maybe directly through a method of rscPermissions?
Also sometimes players seem to dont have certain permissions on join, but a few seconds later they have.
Ok thank you for this clarification. I was implementing some utility commands for our servers to add users to groups etc. and was wondering why some lines kept disappearing^^
Plugin always delete rows from table entities where prefix is null or empty AND suffix is null or empty. If any of it set then it will be kept.
Plugin always delete rows from tables permissions and inheritance if their lifetime is expired.
Plugins is build in that way he internally knows about players and groups if they are present in only one any table (e/p/i/l). You have not to create rows in all or entities tables if you want just to assign permissions or inheritance. My original idea was to keep tables simplicity and sufficiency of minimum number of rows in it.
Lifetime column (MySQL's TIMESTAMP) has meaning "this row is applicable until" and the value should be entered in the form 2014-05-31 23:59:59, e.g.
Also if you have separate database server look at your clock synchronization. On connect plugin drop all expired rows based on db's time but internally it has only jvm host's time. Can have some minor inconsistencies here =)
P.S. Sorry if some mistakes, my english is not good too :)
Hi, on my servers temporary groups and permissions appear to not work, if the plugin is in readonly mode. The livetime is simply ignored. If the connection to the database is set to fullaccess, the plugin deletes groups it should not delete (groups without prefix or suffix, maybe more).
EDIT: Maybe the plugin is deleting entities without prefix or suffix on purpose, and is getting groups from the inheritance/permission table? I dont know...
I am very impressed of the features of this plugin, and are looking into getting this implemented on our multi-server network, unfortuently due to previous plugins, we only choose open source ones.
Sorry to be that person, but...
would it be possible to open source it?
Thanks!
I would like to see how this plugin develops as I've been using droxperms. although it works fine, it is waaaay out of date and I need to find something new soon.
oh, sweet! thank you for the quick response! I'm temped to switch from PermissionsEx just because of that little feature.
..one thing you could do is have the prefixes set by permission.. rsc.prefix.RankA would give a player the rank A prefix. that way multiple prefixes would be easier to manage. :)
Rollback Post to RevisionRollBack
To post a comment, please login or register a new account.
I'm making newer version (0.9.x branch) with separated API/Engine, Bukkit and Sponge implementations. It has (will have) some improvements.
Look at github for details, download is available at Jenkins (links are present in description).
@ultrafastphil
Of cause. Several ways can help you reach this:
@SimSonic Is it possible to have a user in one group on one server and a different group on another server.
Ok, very nice SimSonic. Thank you! We will have a look into the code and send you some pull requests. =)
@thecutter13
Hi! Ok, I've published source code on GitHub. Currently making a little cleanup but feel free to learn it's internals and making pull requests if something you found wrong.
All my free time now is taken by preparing my own server to start so I won't make huge changes in code. But I will check issues and pull requests everyday two or more times :)
Hey SimSonic,
I'm a developer on the same network as Edgxxar. We are really looking forward to use your plugin for our multiserver network, but we are facing new issues and questions every day.
What about the voting regarding publication of the plugin as opensource on Github? I think this would help other developers like us to identify and fix problems faster.
Thanks for this cool plugin! =)
Hi! On prelogin event player entity is put into async query to build permission tree for him. Parallel thread gets it, calculates permissions and assigns them to player on the nearest tick. But at prelogin we have no location so player is supposed to be on concrete server but In no world and no one region. After join event we have location so I put his entity to recalculation again. This is why you can observe little delay. Also region-finder-thread config option can affect it (default 1 sec delay).
Prefixes and suffixes become known during the same process of permission tree resolution. I should think about it at morning )) Sorry, end of post Zzzz
Hi, I've got another question :P
We are using Vault to get prefixes of players (using net.milkbowl.vault.chat.Chat.getPlayerPrefix(Player)) in the PlayerJoinEvent. If a player joins the first time after the server startet, this method often returns null. After a relog it works fine in most cases. Is there a better way to get prefixes of players, maybe directly through a method of rscPermissions?
Also sometimes players seem to dont have certain permissions on join, but a few seconds later they have.
@SimSonic
Ok thank you for this clarification. I was implementing some utility commands for our servers to add users to groups etc. and was wondering why some lines kept disappearing^^
@Edgxxar
Plugin always delete rows from table entities where prefix is null or empty AND suffix is null or empty. If any of it set then it will be kept. Plugin always delete rows from tables permissions and inheritance if their lifetime is expired.
Plugins is build in that way he internally knows about players and groups if they are present in only one any table (e/p/i/l). You have not to create rows in all or entities tables if you want just to assign permissions or inheritance. My original idea was to keep tables simplicity and sufficiency of minimum number of rows in it.
Lifetime column (MySQL's TIMESTAMP) has meaning "this row is applicable until" and the value should be entered in the form 2014-05-31 23:59:59, e.g. Also if you have separate database server look at your clock synchronization. On connect plugin drop all expired rows based on db's time but internally it has only jvm host's time. Can have some minor inconsistencies here =)
P.S. Sorry if some mistakes, my english is not good too :)
Hi, on my servers temporary groups and permissions appear to not work, if the plugin is in readonly mode. The livetime is simply ignored. If the connection to the database is set to fullaccess, the plugin deletes groups it should not delete (groups without prefix or suffix, maybe more).
EDIT: Maybe the plugin is deleting entities without prefix or suffix on purpose, and is getting groups from the inheritance/permission table? I dont know...
Sorry if there are some typos :)
@SimSonic
Okay, thanks for considering. :)
@Zack_Piper
Hi, we're thinking about advantages and disadvantages of opening source code. Decision will be made some time later.
I am very impressed of the features of this plugin, and are looking into getting this implemented on our multi-server network, unfortuently due to previous plugins, we only choose open source ones.
Sorry to be that person, but... would it be possible to open source it? Thanks!
@gwinny7
Report please if not. I have limited possibilities to testing it but nobody creates bug tickets so I always think it is working :)
I hope that this plugin will work!
I would like to see how this plugin develops as I've been using droxperms. although it works fine, it is waaaay out of date and I need to find something new soon.
@SimSonic
feel free to PM me if you want snippets of code, or other ideas. :) im always thinking up new things. :)
@octoshrimpy
It seems to be a good idea! I should think about it i details... Thanks :)
@SimSonic
oh, sweet! thank you for the quick response! I'm temped to switch from PermissionsEx just because of that little feature.
..one thing you could do is have the prefixes set by permission.. rsc.prefix.RankA would give a player the rank A prefix. that way multiple prefixes would be easier to manage. :)