Inactive [ADMN/INFO] GroupManager v1.0 alpha-3 - A Permissions replacement [440-531]

Discussion in 'Inactive/Unsupported Plugins' started by AnjoCaido, Feb 17, 2011.

Thread Status:
Not open for further replies.
  1. Offline

    AnjoCaido

    GroupManager - The Permissions 2.x plugin sucessor.
    Version: v1.0 alpha-5

    Yes, it has multiworld and multigroup users support now. When 1.0 final release, next step is database (SQLite/MySQL).

    ---

    If you use Essentials:
    - Don't use both EssentialsGroupManager.jar and GroupManager.jar! Just choose one, because they are the same!
    - Don't use both EssentialsGroupBridge.jar and FakePermissions.jar! Just choose one, because they are the same!


    ---

    As the growth of this plugin is getting faster and faster, I needed to put multiword support the soon as I could.
    Now it's here. And GroupManager is keeping all of it's good stuff! Did I say it is going to bring a lot more of new stuff too?

    Purpose of the plugin:
    The purpose has changed. Permissions got better. But it still not enough. Why I did, and keep doing this?
    I started it thinking that it would make me happy. Now it's because it will make YOU happy.

    Advantages against Permissions:
    • User multigroup support.
    • Full command list to change anything during game or thru the console.
    • Good API to change things. You to change a player group you can do getPlayer(name).setGroup(getGroup(name))
    • Exception nodes.
    • It separates groups files from users files.

    New Features:
    • User multigroup support(yay!)
    • Multiworld support(meh).
    • It has world permission mirroring(you can make a world nether having the same permissions of world2 instead of default world1).
    • It saves only the files that will have contents changed.
    • It separates groups files from users files.
    • It cleans old backup files older than 24h.

    Previous Features(included):
    • It has the same file format as Permissions, no need to get used with anything new.
    • It comes with a fake Permissions plugin, that attaches GroupManager to all your permissions dependent plugins. No need to make any changes, nor update other plugins. Just adjust your permissions files and GO!
    • Commands to change users permissions are REALLY on-the-fly(no touching files).
    • It saves the permissions data periodically.
    • It backups every file before overwrites.
    • Tons of commands for complete user/group/permission management during game/console.
    • It has a fantastic temporary permissions system, that let's you to make changes in users, with the possibility to go back at any time(and it never is saved on files).
    • Negative nodes(aka '-'): You can take off specific permissions from users that have a full set.
    • Exception node(aka '+'): Used when a user/group has a set of negative nodes, and you want to allow a specific one.

    User's subgroups: a brief explanation
    You can see on the file structure(down here on same post), that users have an optional node called subgroups. That node is a list, just like "permissions" node. There you can list a user subgroup, it can be as many as you want.
    What a user inherits from subgroups? Only permissions. It means nothing on a subgroup's info node(prefix, suffix, build and other variables) will be considered.
    The user will still be considered as a member of that group, but will only inherits it's permissions, like some commands, kits, etc.

    This reduces the needs of a nest of groups inheriting each other.
    You can have one user in Peasant group, which has only some basics, and them let him join in Miner as a subgroup, where he can get Miner kits, or other related to miner group.
    Later, when your town needs a railer, you can just add the group Railer to him as subgroup, and he will have both things at same time. When the job is done, you just remove the subgroup.
    This gets even more interesting when you have groups related to towns, factions, teams… etc.

    World mirroring: a brief explanation
    Let's say you have a config file like this:
    Code:
    settings:
      data:
        save:
          minutes: 10
      logging:
        level: INFO
      permission:
        world:
          mirror:
            world1:
              - world2
              - world3
            world4:
              - world5
    It means that all your permissions of world2, and world3 will be the same of world1. And it means all permissions of world5 will be the same of world4.
    It won't copy any file. In fact, it won't matter if there is files for world2… when the permissions get load, every request for world2 will be redirected for world3. Simple as that.

    If no mirroring is specified, any world not loaded will automatically mirror the default world of the server.

    File structure: a brief explanation
    The files read for GroupManager 1.0+ for data management are two files per world. The users file are users.yml. The groups file are groups.yml.
    The thing is that those files are located in:
    plugins/GroupManager/worlds/WORLDNAME

    So the file structure for the world called anjoCaidoWorld and netherWorld will be:
    plugins/GroupManager/worlds/anjoCaidoWorld/groups.yml
    plugins/GroupManager/worlds/anjoCaidoWorld/users.yml
    plugins/GroupManager/worlds/netherWorld/groups.yml
    plugins/GroupManager/worlds/netherWorld/users.yml

    The files might look like this:
    groups.yml
    Code:
    groups:
        Admins:
            default: false
            info:
                build: false
                prefix: ''
                suffix: ''
            inheritance:
            - SemiAdmin
            permissions:
            - '*'
        Default:
            default: true
            info:
                build: false
                prefix: ''
                suffix: ''
            inheritance: []
            permissions:
            - essentials.spawn
            - essentials.motd
            - essentials.help
            - essentials.home
            - essentials.sethome
        Moderator:
            default: false
            info:
                build: false
                prefix: '&c'
                suffix: 'Mod'
            inheritance:
            - Default
            permissions:
            - essentials.tp
            - essentials.tphere
            - essentials.item
            - essentials.give
        SemiAdmin:
            default: false
            info:
                build: false
                prefix: '&c'
                suffix: 'SemiAdmin'
            inheritance:
            - Moderator
            permissions:
            - +groupmanager.mandemote
            - +groupmanager.manpromote
            - -groupmanager.*
            - '*'
        Peasant:
            default: true
            info:
                build: false
                prefix: '&e'
                suffix: 'Peasant'
            inheritance:
            - Default
            permissions: []
        Miner:
            default: false
            info:
                build: false
                prefix: ''
                suffix: ''
            inheritance:
            permissions:
            - essentials.kit
            - essentials.kit.miner
            - flashlight.regular
        Healer:
            default: false
            info:
                build: false
                prefix: ''
                suffix: ''
            inheritance:
            permissions:
            - essentials.kit
            - essentials.kit.healer
            - essentials.heal
        Farmer:
            default: false
            info:
                build: false
                prefix: ''
                suffix: ''
            inheritance:
            permissions:
            - essentials.kit
            - essentials.kit.farmer
            - essentials.spawnmob
        Railer:
            default: false
            info:
                build: false
                prefix: ''
                suffix: ''
            inheritance:
            permissions:
            - essentials.kit
            - essentials.kit.railer
    users.yml
    Code:
    users:
        anjocaido:
            group: Admins
            info:
                prefix: '&c'
                suffix: King
            permissions: []
        gmcouto:
            group: SemiAdmin
            permissions: []
        zenexer:
            group: Moderator
            permissions:
            - essentials.god
        aMiner:
            group: Peasant
            info:
                prefix: '&d'
                suffix: Miner
            permissions: []
            subgroups:
              - Miner
        aHealer:
            group: Peasant
            info:
                prefix: '&d'
                suffix: Healer
            permissions: []
            subgroups:
              - Healer
        aFarmer:
            group: Peasant
            info:
                prefix: '&d'
                suffix: Farmer
            permissions: []
            subgroups:
              - Farmer
        tempRailer:
            group: Peasant
            info:
                prefix: '&d'
                suffix: Miner
            permissions: []
            subgroups:
              - Miner
              - Railer
    You can see that the node structure are exactly the same used for GroupManager 0.99d(-) and Permissions, it means you can use the same files here.
    Note: Every node that doesn't make part of the respective file is ignored. So if you are migrating from older GroupManager or Permissions you can just duplicate your files as groups.yml and users.yml. When comes the time where is needed to save the file, all unused data for each file will be discarded. So you don't need to split files, just duplicate them with correct names, it will work.

    Negative and Exception nodes: a brief explanation
    Let's say you have a group SemiAdmin like this.
    Code:
    groups:
      SemiAdmin:
        default: false
        permissions: [+groupmanager.manpromote, -groupmanager.*,
          '*']
        inheritance: [Moderator]
        info: {prefix: '', build: false, suffix: ''}
    You should read this way:
    '*' -> means this group will have access to all commands.
    '-groupmanager.*' -> Where all his commands of groupmanager where removed.
    '+groupmanager.manpromote' -> Except manpromote.

    It means he can do everything that is not of GroupManager, AND manpromote.

    It's like listing essentials.*, worldedit.*, worldprotect.*, everyotherthing.* and groupmanager.manpromote.

    It gives a very big flexibility on permissions.

    Note:
    For every level of inheritance,
    Every permission starting with '+' is tested first. Then comes permissions starting with '-'. Then comes normal permissions(including '*').

    Commands:
    • Now on multiword support, every command will act only on the selected world.
    • If none/invalid world is selected, it will run on the default world.
    • If the world selected is a mirrored world, it will work on the mirror world.
    (on next version, when a command involves a player, there will be a toggle that will automatically act on the victim(player) world is in)
    Code:
    commands:
      manuadd:
        description: Move a player to desired group.(Adds to the file if not exists)
        usage: /<command> <player> <group>
        permission: groupmanager.manuadd
      manudel:
        description: Remove any user specific configuration. Make him default group.
        usage: /<command> <player>
        permission: groupmanager.manudel
      manuaddsub:
        description: Add a group to a player's subgroup list.
        usage: /<command> <player> <group>
        permission: groupmanager.manuaddsub
      manudelsub:
        description: Remove a group to a player's subgroup list.
        usage: /<command> <player> <group>
        permission: groupmanager.manudelsub
      mangadd:
        description: Add group to the system.
        usage: /<command> <group>
        permission: groupmanager.mangadd
      mangdel:
        description: Removes group from the system(all it's users become default)
        usage: /<command> <group>
        permission: groupmanager.mangdel
      manuaddp:
        description: Add permission diretly to the player.
        usage: /<command> <player> <permission>
        permission: groupmanager.manuaddp
      manudelp:
        description: Removes permission diretly from the player.
        usage: /<command> <player> <permission>
        permission: groupmanager.manudelp
      manulistp:
        description: List all permissions from a player.
        usage: /<command> <player>
        permission: groupmanager.manulistp
      manucheckp:
        description: Verify if user has a permission, and where it comes from.
        usage: /<command> <player> <permission>
        permission: groupmanager.manucheckp
      mangaddp:
        description: Add permission to a group.
        usage: /<command> <group> <permission>
        permission: groupmanager.mangaddp
      mangdelp:
        description: Removes permission from a group.
        usage: /<command> <group> <permission>
        permission: groupmanager.mangdelp
      manglistp:
        description: Lists all permissions from a group.
        usage: /<command> <group>
        permission: groupmanager.manglistp
      mangcheckp:
        description: Check if group has a permission, and where it comes from.
        usage: /<command> <group> <permission>
        permission: groupmanager.mangcheckp
      mangaddi:
        description: Add a group to another group inheritance list.
        usage: /<command> <group1> <group2>
        permission: groupmanager.mangaddi
      mangdeli:
        description: Remove a group from another group inheritance list.
        usage: /<command> <group1> <group2>
        permission: groupmanager.mangdeli
      manuaddv:
        description: Add, or replaces, a variable to a user (like prefix or suffix).
        usage: /<command> <user> <variable> <value>
        permission: groupmanager.manuaddv
      manudelv:
        description: Remove a variable from a user.
        usage: /<command> <user> <variable>
        permission: groupmanager.manudelv
      manulistv:
        description: List variables a user has (like prefix or suffix).
        usage: /<command> <user>
        permission: groupmanager.manulistv
      manucheckv:
        description: Verify a value of a variable of user, and where it comes from.
        usage: /<command> <user> <variable>
        permission: groupmanager.manucheckv
      mangaddv:
        description: Add, or replaces, a variable to a group (like prefix or suffix).
        usage: /<command> <group> <variable> <value>
        permission: groupmanager.mangaddv
      mangdelv:
        description: Remove a variable from a group.
        usage: /<command> <group> <variable>
        permission: groupmanager.mangdelv
      manglistv:
        description: List variables a group has (like prefix or suffix).
        usage: /<command> <group>
        permission: groupmanager.manglistv
      mangcheckv:
        description: Verify a value of a variable of group, and where it comes from.
        usage: /<command> <group> <variable>
        permission: groupmanager.mangckeckv
      manwhois:
        description: Tell the group that user belongs.
        usage: /<command> <player>
        permission: groupmanager.manwhois
      tempadd:
        description: Creates a temporary permission copy for that user.
        usage: /<command> <player>
        permission: groupmanager.tempadd
      tempdel:
        description: Remove the temporary permission copy for player.
        usage: /<command> <player>
        permission: groupmanager.tempdel
      templist:
        description: List players in overload-permissions mode made by /tempadd.
        usage: /<command>
        permission: groupmanager.templist
      tempdelall:
        description: Remove all overrides made by command /tempadd.
        usage: /<command>
        permission: groupmanager.tempdelall
      mansave:
        description: Save all permissions on file.
        usage: /<command>
        permission: groupmanager.mansave
      manload:
        description: Reload current world and config.yml. Or load given world.
        usage: /<command> [world]
        permission: groupmanager.manload
      listgroups:
        description: List the groups available.
        usage: /<command>
        permission: groupmanager.listgroups
      manpromote:
        description: Promote a player in the same heritage line to a higher rank.
        usage: /<command> <player> <group>
        permission: groupmanager.manpromote
      mandemote:
        description: Demote a player in the same heritage line to a lower rank.
        usage: /<command> <player> <group>
        permission: groupmanager.mandemote
      mantogglevalidate:
        description: Toggle on/off the validating if player is online.
        usage: /<command>
        permission: groupmanager.mantogglevalidate
      mantogglesave:
        description: Toggle on/ff the autosave.
        usage: /<command>
        permission: groupmanager.mantogglesave
      manworld:
        description: Prints the selected world name
        usage: /<command>
        permission: groupmanager.manworld
      manselect:
        description: Select a world to work with next commands.
        usage: /<command> <world>
        permission: groupmanager.manselect
      manclear:
        description: Clear world selection. Next commands will work on your world.
        usage: /<command>
        permission: groupmanager.manclear
    All commands that changes permissions only allow you to change users below in a inheritance level(eg. Admins can't mod other Admins, but can modify Moderators).
    Except for Console, he can modify anyone.

    So, what happens with all of these plugins that already use Permissions?
    They will still work. I made a fake Permissions plugin, that will replace your old Permissions plugin. And the new fake one will attach directly on GroupManager system. So all plugins will think they are working with Permissions, but they will work with GroupManager.
    The most incredible thing is that all those plugins will receive the benefit of instant changes.

    I'm a server Administrator, what should I do to use it?
    If you already have Permissions, do this:
    1. Remove Permissions.jar from you plugins folder. (leave the Permissions folder there, if it is named diferently than this, the automatic import will not work)
    2. Paste GroupManager.jar with FakePermissions.jar on your plugins folder.
    3. Run.
    4. With all file structure done, you create your worlds folder and copy your files there.

    All your old plugins will still work like a charm.

    I'm a plugin developer, how should I use this plugin?
    You can read the java-doc, linked below. It's not complete yet, but it has the essential.
    Here is some code examples...

    Loading in your plugin:
    Code:
    import org.anjocaido.groupmanager.GroupManager;
    import org.anjocaido.groupmanager.dataholder.worlds.WorldsHolder;
    import org.anjocaido.groupmanager.dataholder.WorldDataHolder;
    public void onEnable() {
            Plugin p = this.getServer().getPluginManager().getPlugin("GroupManager");
            if (p != null) {
                if (!this.getServer().getPluginManager().isPluginEnabled(p)) {
                    this.getServer().getPluginManager().enablePlugin(p);
                }
                GroupManager gm = (GroupManager) p;
                WorldsHolder wd = gm.getWorldsHolder();
            } else {
                this.getPluginLoader().disablePlugin(this);
            }
        }
    WorldsHolder contains everything you need. You can easily do anything with it.

    Here is a example of a plugin that in a special circumstance, needed to put the player in a special group, with no permissions at all.
    Code:
    public void markAsNotLoggedIn(Player player) {
                OverloadedWorldHolder perm = gm.getWorldsHolder().getWorldData(player);
                Group lockDown = perm.getGroup("NotLoggedIn");
                if(lockDown == null){
                    lockDown = perm.createGroup("NotLoggedIn");
                }
                perm.overloadUser(player.getName());
                perm.getUser(player.getName()).setGroup(lockDown);
        }
    From now on the user is in this special group. And every change on him is temporary. Until the code below is executed.
    Code:
    public void restorePermissions(Player player){
                OverloadedWorldHolder perm = gm.getWorldsHolder().getWorldData(player);
                perm.removeOverload(player.getName());
        }
    And, finally, how to check a user permission:
    Code:
    public boolean canChangeGroup(Player player){
                return gm.getWorldsHolder().getWorldPermissions(player).has(player,"groupmanager.mangroup");
        }
    F.A.Q.
    Q: It is compatible with permissions... but where it get it's data from?
    - A: It gets from users.yml and groups.yml in the world folder, located properly inside GroupManager worlds folder.
    Q: Can I use commands from other plugins to change permissions?
    - A: No. I made the decision to store data in GroupManager folder because I don't think it is right my plugin mess around with other ones files. Unfortunately, other plugins of group modification tries to access other files than mine.

    Changelog:
    Version 1.0 alpha-5:
    • Fixed a bug in method String[] groups(groupName)
    • Added some functionality to Tasks class
    • Fixed some errors in JavaDoc
    • Changed templates to make use of Roles plugin
    Show Spoiler

    Version 1.0 alpha-4:
    • Fixed subgroups listing when using /manulistp
    Version 1.0 alpha-3:
    • Basic user multigroup support using subgroups concept.
    • Added tracking for minor bugs.
    Version 1.0 alpha-2:
    • Now /manload reloads config.yml(which means mirror configuration receives updates too).
    Version 1.0 alpha:
    • Fixed some issues with /manpromote and /mandemote for multiples inheritances
    • Added permission node for commands in plugin.yml. So the newer EssentialsHelp feature I created will filter commands that people don't have(dev #688).
    Version 1.0 pre-alpha-3:
    • Now /manucheckp and /mangcheckp tells you if the permission was negated by a negation node.
    • Now using Breadth-first search for inheritance harvest. It guarantees that closer groups in inheritance are checked first.
    • Fixed some bugs, where a negation node directly in a user could be ignored.
    • Now it reads old data.yml and auto-install it to default world if none is found.
    • Created a system where plugins can get detailed answers from a permission check.
    • Deprecated some inefficient methods(all of them redirects to the new efficient method), but they still works.
    Version 1.0 pre-alpha-2:
    • World selection is optional, except for console.
    • Not selecting a world makes it run on same world of the command sender.
    • Fixed "temporary permissions" system.
    • Fixed most of commands bugs(I fixed all errors I could see)
    • Fake Permissions says it's 2.5 now, so plugins like HeroChat works now(yay).
    • Fixed some unnecessary file saves.
    • Added /manclear to clear selection
    • /manselect now lists physical worlds if no parameters are given.
    • /manload can load a world not loaded before, if given a parameter.
    Version 1.0 pre-alpha:
    • Refactored a lot of things. Please check the java-docs.
    • Added multiworld support.
    • Split files in users.yml and data.yml
    • Saves only files that needs changes
    • Fixed some bugs
    • World mirroring
    • Basic commands for world selection, to keep old commands working.
    Version 0.99d:
    • Fixed more small bugs.
    • Saves in human readable format
    • Deletes backups older than 24 hours
    Version 0.99c:
    • Fixed small bugs. Like /mangaddi
    • Changed some classes package
    Version 0.99b:
    • Fixed Group Variables, that I broke last version.(restore your backups, yay)
    Version 0.99a:
    • User specific variables. Prefixes, Suffixes and more.
    • Negative permission node(prevails normal nodes). Like '-groupmanager.*'
    • Exception permission node(prevails negative nodes). Like '+groupmanager.manpromote'
    Version 0.9e:
    • It writes a template it self if doesn't find any data.yml file on the folder.
    Version 0.9d:
    • FakePermissions adapted to new CB builds.
    Version 0.9c:
    • Multiple inheritance fixed.
    • Added a command to toggle auto-saving, so you can edit the file while it is disabled.
    • Tested with server 1.3
    Version 0.9b:
    • Now variables work with spaced strings.(you can add prefix with spaces)
    • Fixed some errors while loading files in later 400+ builds.
    • FakePermissions got small update.
    Version 0.9:
    • Added variables manipulation command(things in info node, such as prefix, suffix, build, and custom ones)
    • Improved FakePermissions support for the Nijikokun's original one.
    • FakePermissions force loading of GroupManager before itself.
    Version 0.8:
    • Added tons of commands. Resulting in a complete control, inside the game.
    • Renamed some commands in the same format Wulfspider sugested.
    • FakePermissions.jar updated to take care oc Misc field, which some Permissions plugins need.
    Version 0.7:
    • Added commands /manpromote and /mandemote
    • Fixed a bug where a file with an empty permissions node in a group could fail the plugin to load.
    • now /addpermissions can only add permissions that the player have access.
    Version 0.6c:
    • Removed the debugging messages that occurs while other plugins check permissions.
    • Removed the debugging messages on FakePermissions
    Version 0.6b:
    • Fixed inheritance system I broke in 0.6. Sorry.
    Version 0.6:
    • Fixed some bugs
    • User/Group class modelled in tiny different way(check JavaDocs)
    • Commands work on Console
    Version 0.5:
    • First fully working release.


    Future plans (they are closer than you think):
    • Make commands for cloning files, and world mirroring.
    • Implements Nijiko's interface for permission changing.
    • Make it work, optionally, with SQLite/MySQL(thinking of Persistence plugin, anyone with ideas?).

    Latest Build Download:
    http://www.mdn.fm/files/276497_as2zr/GroupManager-1.0-alpha-5.zip


    ===========================================
    Other Downloads:
    Java Doc:
    http://www.mdn.fm/files/276266_vqd0d/JavaDoc-GroupManager-1.0-alpha-3.zip

    ===========================================
    Plugins I love to use with GroupManager:
    Roles, Essentials, AntiGrief, iChat, MultiVerse, WorldEdit and WorldProtect.


    ===========================================
    Source:
    https://github.com/gmcouto/GroupManager
    Fake Permissions Source:
    https://github.com/gmcouto/FakePermission
     
    TNC, Kohle, pat8u and 17 others like this.
  2. Offline

    user_2408

    You are a good chap! =) Thanks again eh. I'll be back, I'm sure, with bug reports in some form another. I love the plugin, it's precisely what we needed.
     
  3. Offline

    fugue2005

    so i can edit my own group, move myself from admin to guest by typing the command in the console?

    i need to be able to move myself from one group to another and back at will.
     
  4. Offline

    Vidar

    When might this work on permissions 2.1?
    OH and thanks alot for this plugin ;) Keep up the good work!
     
  5. Offline

    Ultratone

    Very nice plugin. The Fakepermission works perfectly on my #424 Server.
    Now I just have to install all the "Essentials Plugins" and my Server will be back :)
    Hava a nice day.
    Peace
     
  6. Offline

    fffizzz

    Hrmm.. need to rework my php scripts since this basically rebuilds your permissions file backwards... i used to add vip's to the bottom of the config via web based scripts (had to manual reload).. Can any of the commands be run from console? I can do those easily via bash :D
     
  7. Offline

    DierWolf

    Anjo!!!

    I think you passed over my post unknowingly.... Having a problem.. (PS this plugin rocks, whoever up there asking
    why this is needed, simply doesnt run a large server).

    Ok everythng works except inherritence (For me anyways) when i do inherritance command with group1 group2 server gives errors

    Was tryin : mangaddi Member Premium

    Trying to have Premium inherit Member permissions

    Not home right now so really cant paste the error but it was parsing error of some sort, buteverything else works perfect.
     
  8. Well this forum has no "search thread" feature it seems.

    So hope it's not too redundant, is MySQL support planned? Or will that only be possible once Bukkit itself does user/groups in MySQL?
     
  9. Offline

    Foffy123

    Watching!
     
  10. Offline

    Ultratone

    Do we have to install an extern "Anti-Build"-Plugin, for setting the "build: false"?
     
  11. Offline

    fffizzz

    Yes, use anti-grief though as antibuild is outdated and doesnt work.
     
  12. Offline

    Ultratone

    Thanks for the Information. AnjaCaido should post this in his/her post. :)
     
  13. Offline

    BeerBaron

    is there a command to add player in to groups without editing the files everytime?
     
  14. Offline

    anon

    On the first page, there is a giant list of comands.
    commands: manuadd: description: Change player group to one desired. usage: /<command> <player> <group>
     
  15. Offline

    fffizzz

    Ok, now that I have this working properly, can I not add someone from console unless they are online?

    Previously, i had some PHP scripts that would add the person to the config.yml file, and I had to do a /pr in game to enable. I see its not advised to add manually because of the autosave, so I want to add via console from a bash script. however, when I process VIP requests, most users arnt online when Im able to get to them. Can we make it so we can add people who arnt online?
     
  16. Offline

    DierWolf

    Player has to be online for you to add them if not your'll going to have to go the Old Permissions route and hard code it in the data file manually.
    --- merged: Feb 24, 2011 2:41 PM ---
    no its not advised to modify file manually while server is running... let the autosave happen stop server and add them manually if you MUST have them added right away... Personally i add them in game as they come in.
    --- merged: Feb 24, 2011 2:45 PM ---
    NO not advisable to add while server is running stop server and add manually into data file if you MUST have them in... Personally i add them as they come in, rather do that than make a typo and when they come in they dont get there permissions anyways because of my typo.
     
  17. Offline

    nemakulis

    Getting following error from LWC using GourpManager v0.9e. If player has only lwc.protect, this pops-up after pressing left mouse button on chest, if player is admin with permissions *, everything works fine. Using LWC 1.54 and latest craftbukkit build

    Code:
    2011-02-24 16:49:05 [SEVERE] Could not pass event BLOCK_DAMAGED to LWC
    java.lang.ArrayStoreException
            at java.lang.System.arraycopy(Native Method)
            at java.util.ArrayList.toArray(Unknown Source)
            at org.anjocaido.groupmanager.AnjoPermissionsHandler.getGroups(AnjoPermi
    ssionsHandler.java:586)
            at com.griefcraft.lwc.LWC.enforceProtectionLimits(LWC.java:757)
            at com.griefcraft.listeners.LWCBlockListener.blockTouched(LWCBlockListen
    er.java:587)
            at com.griefcraft.listeners.LWCBlockListener.onBlockDamage(LWCBlockListe
    ner.java:127)
            at org.bukkit.plugin.java.JavaPluginLoader$23.execute(JavaPluginLoader.j
    ava:242)
            at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
    a:59)
            at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
    ava:225)
            at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:346)
            at net.minecraft.server.Packet14BlockDig.a(SourceFile:42)
            at net.minecraft.server.NetworkManager.a(SourceFile:230)
            at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:70)
            at net.minecraft.server.NetworkListenThread.a(SourceFile:100)
            at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:338)
            at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:253)
            at net.minecraft.server.ThreadServerApplication.run(SourceFile:366)
     
  18. Offline

    fffizzz

    I have a web interface I setup, I dont want mods making people donators and other groups. I have it set so they can make them VIP/VIP2. All users are stored in a DB on myside, so the script adds them to the DB, and also adds them to the file. Id just have it add them to the file which was easy, but i cant simply add to bottom of file anymore...
     
  19. Offline

    PeterPAwN

    What does that mean? Theres no data.yml anymore? But where is data saved in cause of a server restart or if i want to set up new groups i get a better overview when working with a file editor. Im a little bit confuzzled. :)
     
  20. Offline

    DierWolf

    Dont worry what it means, it will create the file on first run. The data is saved in data file in the groupmanager folder. when you first run it go in the game with your login and via the console add yourself as Admin.

    from there in the game you can create your groups ect ect ect. As you make these groups, users ect its all placed
    in memory... (not saved yet, but you get instant update without having to reload) default groupmanager saves every 10 minutes, so be sure it saves first before you stop the server.

    you cn change the config file to whatever amount of minutes you like, i have mine set for every 3 minutes
    --- merged: Feb 24, 2011 3:16 PM ---
    LWC plugin is not compatible with mc1.3 or current bukkit release..

    you'll have to wait on the author to update it.
     
  21. Offline

    Jobsti

    Hi,

    so, I tried to test you plugin, but it won't copy the permissions data.
    - deleted permissions.jar
    - imported your 2 .jars
    - tested to paste the data from my permissions config manual to your data.yml, but I always get a default data.yml file

    What's wrong?! I'm on #437
     
  22. Offline

    DierWolf

    1. You cant directly paste old Permisions content into groupmanager permissions did each permission on seperate line while groupmanager is on one line in [ ] seperated by commas.

    2. Are you editing the file while the server is running?? if so naturally you will get the old one back as when the server is running group manager has the info in memory and when it saves on exit will put back the old info that it loaded orginally in memory.

    Suggest you run the server add yourself as an admin via the consol with the correct groupmanager plugin command (you have to be in the game to do this) then add 2 or 3 permissions via the game to say default group. wait for groupmanager to autosave the changes you made in game (Default its set for every 10 minutes) keep a look at the console to see when it saves, once its done STOP! the server and open the data file and see how its arranged from
    there if you must copy and paste manually (which defeats the purpose of this plugin, as then you might as well stay with hardcoding permissions) .

    Also make sure your essencials dont have essencials.groupmanager.jar in your plugins.
     
  23. Offline

    fitofinsanity

    Hello all.

    I've got a couple of questions. Is there a way to stop autosave in its configuration file i.e. without having to use /mantogglesave every time I restart the server? The reason I need to do this is I use cron to switch maps on certain days and each map requires different permission. Anybody know a better way? I like how Permissions 2.1 supports multiple worlds, but I don't want to use it because I'm not confident the plugin dev will be supporting his stuff anymore.

    -Edit-

    NVM I just wrote some scripts to enter in the commands I want. +1 vote for multiple world support! [​IMG]
     
  24. Offline

    cavillis

  25. Offline

    DierWolf

    how are you determining they have access to all? have you logged in as a non admin and tested yourself?
    all i see in the file is one person used (or tried to use) /i fire
    just because you dont see an error response doesnt mean it worked for him.

    also unlike permissions they get full help file but doesnt mean they have access to the command

    Other than that i dont see anything wrong in your data file other than your not putting single quotes around
    the prefix... which might be screwing it up... put the quotes they were there to beging with so leave them in.

    e.g. 'Sapling'
    --- merged: Feb 24, 2011 5:16 PM ---
    Also on your permissions... when typing them out DO NOT goto next line manually, continue typing let
    it wrap around on its own.. in your file you have a huge amount of spaces and a carriage return
    to get it to look like the default.

    simply continue typing blahblah, blahbla1, etc, ect1] dont hit enter and space to match what you saw.
     
  26. Offline

    davispuh

    This plugin is great, but it would be very nice if it have little more features :D
    • Per-World permissions (in different worlds different permissions)
    • MySQL support
    That shouldn't be too hard to implement them :) anyway thanks for your effort
     
  27. Offline

    fffizzz

    MySQL x2!!!!
     
  28. Offline

    KimKandor

    Actually at the start you can paste your permissions 2.0 file directly to data.yml, it will convert it when it saves the backup.
     
  29. Offline

    anon

    So, I was trying the chickenbombplugin, and it had a conflict with another plugin. Then i started removing the plugins to find witch one. I found it was a conflict wit a jar called NewPermissions.jar.

    I have no idea of where that came from, and I have tons of plugins, so I suspect this one. Its not fake permissions.
    Could you guys look on your plugin folder and see if you have it? I removed it, but didnt seem to change anything.
     
  30. Offline

    cavillis

    i've set myself as Default and I'm able to use any command, I included log as evidence of what plugins are loading, not to show the plugin isn't working.

    The whitespacing you mention was added by the permissions plugin - the only changes I ever made to the file were adding the groups. I will try fixing the prefix with quotes
     
  31. Offline

    Leavaris

    ok having issues.
    1. i cant manually edit the file to add groups/people, i know this defeats its purpose but i want both in game and file edits. So i started the server, generated the file, added myself as admins, let it save, stoped the server, deleted all backups, modifiyed the file and saved, re-started the server and it still reverted back to before i made my edits.

    2. i then tried to make a new group. this worked, made that group with * permissions, all is good. went to sdd s prefix, doesnt work. it saved without the ' ' around it. so by command i deleted it and tried again adding ' ' arounf the prefix, it now saved 4 of them in front and back of prefix '''' ''''

    love this type of mod, love your work, love bukkit but this is getting to be a big pain in the dam ass. all I want is a working server, and easy to maintain group system with prefix, both in game and file editing of the groups and basic commands. all this permissions 1, 2.0, 2.1, groupmanager, fakepermissions is BS. To top it off bukkit(i know its still dev) is suposed to be far better than any other mod for MC but so far all I got is 2 dozzen mods that need updating every day or so just to run a basic server. Now im being to see mods needing mods, this is ridiculous.

    Edit: again im sorry i know this isnt your fault your a great plugin author.
    I jsut tried to reinstall it and before starting it paste in my old permissions config and name it data, this seems to have worked, then waited for the save, it looks like it converted good, however still no prefix, its there, and looks proper but is not showing ingame.

    Edit2: alright got this fully working with the essentials version. TY anyways.
     
Thread Status:
Not open for further replies.

Share This Page