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

    hyperch

    Josch likes this.
  3. Offline

    Blank1268

    for some reason when ever i start the server I get this error
    Code:
    java.lang.NullPointerException
        at org.anjocaido.groupmanager.dataholder.WorldDataHolder.load(WorldDataHolder.java:589)
        at org.anjocaido.groupmanager.dataholder.worlds.WorldsHolder.loadWorld(WorldsHolder.java:351)
        at org.anjocaido.groupmanager.dataholder.worlds.WorldsHolder.initialLoad(WorldsHolder.java:64)
        at org.anjocaido.groupmanager.dataholder.worlds.WorldsHolder.<init>(WorldsHolder.java:56)
        at org.anjocaido.groupmanager.GroupManager.onEnable(GroupManager.java:76)
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:118)
        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:414)
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:187)
        at com.nijikokun.bukkit.Permissions.Permissions.onEnable(Permissions.java:64)
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:118)
        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:414)
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:187)
        at org.bukkit.craftbukkit.CraftServer.loadPlugin(CraftServer.java:83)
        at org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:61)
        at net.minecraft.server.MinecraftServer.e(MinecraftServer.java:204)
        at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:191)
        at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:131)
        at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:246)
        at net.minecraft.server.ThreadServerApplication.run(SourceFile:366)
    and when ever I log in I get this error
    Code:
    2011-03-06 10:21:50 [SEVERE] java.lang.NullPointerException
    2011-03-06 10:21:50 [SEVERE]     at com.sk89q.bukkit.migration.NijiPermissionsResolver.inGroup(NijiPermissionsResolver.java:70)
    2011-03-06 10:21:50 [SEVERE]     at com.sk89q.bukkit.migration.PermissionsResolverManager.inGroup(PermissionsResolverManager.java:90)
    2011-03-06 10:21:50 [SEVERE]     at com.sk89q.worldguard.bukkit.WorldGuardPlugin.inGroup(WorldGuardPlugin.java:1375)
    2011-03-06 10:21:50 [SEVERE]     at com.sk89q.worldguard.bukkit.WorldGuardPlayerListener.onPlayerJoin(WorldGuardPlayerListener.java:68)
    2011-03-06 10:21:50 [SEVERE]     at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:125)
    2011-03-06 10:21:50 [SEVERE]     at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:59)
    2011-03-06 10:21:50 [SEVERE]     at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:225)
    2011-03-06 10:21:50 [SEVERE]     at net.minecraft.server.ServerConfigurationManager.a(ServerConfigurationManager.java:98)
    2011-03-06 10:21:50 [SEVERE]     at net.minecraft.server.NetLoginHandler.b(NetLoginHandler.java:87)
    2011-03-06 10:21:50 [SEVERE]     at net.minecraft.server.NetLoginHandler.a(NetLoginHandler.java:27)
    2011-03-06 10:21:50 [SEVERE]     at net.minecraft.server.NetworkListenThread.a(SourceFile:87)
    2011-03-06 10:21:50 [SEVERE]     at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:357)
    2011-03-06 10:21:50 [SEVERE]     at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:272)
    2011-03-06 10:21:50 [SEVERE]     at net.minecraft.server.ThreadServerApplication.run(SourceFile:366)
    2011-03-06 10:21:50 [SEVERE] java.lang.NullPointerException
    2011-03-06 10:21:50 [SEVERE]     at com.sk89q.bukkit.migration.NijiPermissionsResolver.inGroup(NijiPermissionsResolver.java:70)
    2011-03-06 10:21:50 [SEVERE]     at com.sk89q.bukkit.migration.PermissionsResolverManager.inGroup(PermissionsResolverManager.java:90)
    2011-03-06 10:21:50 [SEVERE]     at com.sk89q.worldguard.bukkit.WorldGuardPlugin.inGroup(WorldGuardPlugin.java:1375)
    2011-03-06 10:21:50 [SEVERE]     at com.sk89q.worldguard.bukkit.WorldGuardPlayerListener.onPlayerJoin(WorldGuardPlayerListener.java:72)
    2011-03-06 10:21:50 [SEVERE]     at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:125)
    2011-03-06 10:21:50 [SEVERE]     at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:59)
    2011-03-06 10:21:50 [SEVERE]     at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:225)
    2011-03-06 10:21:50 [SEVERE]     at net.minecraft.server.ServerConfigurationManager.a(ServerConfigurationManager.java:98)
    2011-03-06 10:21:50 [SEVERE]     at net.minecraft.server.NetLoginHandler.b(NetLoginHandler.java:87)
    2011-03-06 10:21:50 [SEVERE]     at net.minecraft.server.NetLoginHandler.a(NetLoginHandler.java:27)
    2011-03-06 10:21:50 [SEVERE]     at net.minecraft.server.NetworkListenThread.a(SourceFile:87)
    2011-03-06 10:21:50 [SEVERE]     at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:357)
    2011-03-06 10:21:50 [SEVERE]     at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:272)
    2011-03-06 10:21:50 [SEVERE]     at net.minecraft.server.ThreadServerApplication.run(SourceFile:366)
    any help?
     
  4. Offline

    Vaughan

    I'm getting the same issue. The data.yml file has renamed itself to NOT_USED_ANYMORE_data.yml. Waiting on a fix.
     
  5. Offline

    BearFather

    For those having issues with GroupManager spitting out errors, and have Essentials. I had issues with all my plugins till I removed EssentialsGroupBridge.jar for my plugin's. Now all plugins work flawlessly. with bukkit 493
     
  6. Offline

    Snookieboy

    Hey,

    I was playing with the Multiworld Setup and could't get it working as I hoped, is this possible with GroupManager?:

    I'd like one global User file which is used across all worlds, as we use it for whitelisting (and admin groups), and we use manuadd ingame to whitelist people. HOWEVER:
    We would like to have different Group Permissions in different Multiworld's. For example LWC and some other Mods don't work in Multiworld, so we would like to remove permisions to them, but only in the second world.

    I tried making the relevent folders for my 2nd world, and only putting groups.yml file in and not users, didnt work. So then I put users.yml in it also, but when I did manuadd, it only affected the world standing in, not the user in general. So to sum it up, is it possible to share users.yml across all worlds, but have different groups.yml between multiworlds?

    Thanks :)
     
  7. Offline

    IronFerret

    ok i got the colors working and fixed the eco problem (i didn't actualy have an economy plugin, but that will be good if i add it)

    The main issue still stands, i can't use the /manuadd as an admin with '*' permission and i can't give my mods permission with 'groupmanager.*' to add people, so everything has to be done by the text file. :/
     
  8. Offline

    PandaVidya

    Can someone help me? whenever someone joins it says this:

    2011-03-06 18:13:57 [WARNING] Missing a prefix or suffix for X

    X=the group they're supposed to be in
    and even though I added myself to admins its not recognizing it. heres my group and users files:

    Code:
    groups:
      Default:
        default: true
        permissions:
        - essentials.help
        - essentials.home
        - essentials.motd
        - essentials.sethome
        - essentials.spawn
        inheritance: []
        info:
          prefix: '&2'
          build: false
          suffix: '&2'
      SemiAdmin:
        default: false
        permissions:
        - +groupmanager.mandemote
        - +groupmanager.manpromote
        - -groupmanager.*
        - '*'
        inheritance:
        - moderator
        info:
          prefix: ''
          build: false
          suffix: ''
      Admins:
        default: false
        permissions:
        - '*'
        inheritance:
        - semiadmin
        info:
          prefix: ''
          build: false
          suffix: ''
      Moderator:
        default: false
        permissions:
        - essentials.tp
        - essentials.tphere
        - essentials.item
        - essentials.give
        inheritance:
        - default
        info:
          prefix: ''
          build: false
          suffix: ''
    
    
    Code:
    users:
      anjocaido:
        permissions: []
        group: Admins
        info:
          prefix: '&c'
          suffix: King
      PandaVidya:
        permissions: []
        group: Admins
        info:
          prefix: '&c'
          suffix: SemiKing
      zenexer:
        permissions:
        - essentials.god
        group: Moderator
        info:
          prefix: '&c'
          suffix: Mod
    
     
  9. Offline

    anonymous

    I'm having the same issue as Panda. Craftbukkit 499
     
  10. Offline

    Lookatmego

    is tehre a way to add color to my players NAME not prefix or suffix but the name from ingame???
     
  11. Offline

    Damien711

    Hi Im having trouble with this plugin i have the latest version and everything works fine except for the ingame promoter I'm not sure why this wont work but when i do a command such as /manuadd it says I don't have acces to that command deleted the other 2 group manager commands that come with the original config and just kept the one with the * at the end and that still didn't solve my problem. Any help would be much appreciated as this is a problem I would like to get fixed soon.
     
  12. Offline

    Spurious

    I have the GroupManager from the Essentials package installed which I assume is the same as this. When I try to set permissions per user/group it doesn't work. In fact the only way I can give people access to things is to op them giving them everything which I really don't want to have to do.

    groups.yml
    Code:
    groups:
      Default:
        default: true
        permissions:
        - essentials.spawn
        - essentials.motd
        - essentials.help
        - essentials.home
        - essentials.sethome
        inheritance: []
        info:
          prefix: ''
          build: false
          suffix: ''
      Cooldudes:
        default: false
        permissions:
        - essentials.depth
        - essentials.getpos
        - essentials.compass
        - essentials.top
        - essentials.jump
        - essentials.back
        - essentials.msg
        - essentials.afk
        - essentials.rules
        - essentials.motd
        - essentials.me
        - essentials.list
        - essentials.mail
        - essentials.mail.send
        - essentials.helpop
        - essentials.whois
        - essentials.clearinventory
        - essentials.nick
        - essentials.i
        - essentials.kit
        - essentials.kit.*
        - essentials.time
        - essentials.help
        - essentials.worth
        - essentials.sell
        - essentials.balance
        - essentials.pay
        - essentials.tp
        - essentials.tpahere
        - essentials.tpaccept
        - essentials.tpdeny
        - essentials.tppos
        - essentials.god
        - essentials.home
        - essentials.sethome
        - essentials.spawn
        - essentials.warp
        - essentials.setwarp
        - worldedit.*
        inheritance:
        - default
        info:
          prefix: ''
          build: true
          suffix: ''
      SemiAdmin:
        default: false
        permissions:
        - +groupmanager.mandemote
        - +groupmanager.manpromote
        - -groupmanager.*
        - '*'
        inheritance:
        - moderator
        info:
          prefix: ''
          build: true
          suffix: ''
      Admins:
        default: false
        permissions:
        - '*'
        inheritance:
        - semiadmin
        info:
          prefix: ''
          build: true
          suffix: ''
      Moderator:
        default: false
        permissions:
        - essentials.tp
        - essentials.tphere
        - essentials.item
        - essentials.give
        inheritance:
        - default
        info:
          prefix: ''
          build: true
          suffix: ''
    
    users.yml
    Code:
    users:
      mcgimp:
        permissions: []
        group: Admins
        info:
          prefix: ''
          suffix: ''
      crisphanson:
        permissions: []
        group: Admins
        info:
          prefix: ''
          suffix: ''
      MightyHeffer:
        permissions: []
        group: Cooldudes
        info:
          prefix: ''
          suffix: ''
      thespurious:
        permissions: []
        group: Admins
        info:
          prefix: ''
          suffix: ''
      richolds:
        permissions: []
        group: Cooldudes
        info:
          prefix: ''
          suffix: ''
    
     
  13. Offline

    Nader

    guys whenever i add the line -worldedit.selections.* to the groups file, the server starts fine, though the line gets deleted on server start! its driving me crazy... it only happens with that line
    please help..?
     
  14. Offline

    anonymous

    @Spurious same issue here. When you start the server does it say something like "missing prefix or suffix"?
     
  15. Offline

    ledhead900

    Has anyone come up with a way to read files like this yet and grab the /command related to the permission node and display this in a handy /help menu that FILTERS per group.

    I don't see why its soo hard to do this,I realize some of the implications but honestly how hard would it be to have the permissions plugin read its own permission config, create a help file config consiting of the node commands for each group listed in the permission file under the group name the node was in.

    When looking up the node command check the nodes plugin name and then the plugin.ymal file within its .jar for the corrosponding command to the node in the help file. Create a /help command and show the inforation under the relevant group to the user in game using handy pages like it has been doing since yesteryear.

    before you respond consider this I'm not posting this as a rant im just generally curiouse as to why no one has attempted to create a auto help plugin since they changed the way command work in bukkit.

    The last ones as far as I know never read the plugin jar for info so im curiouse to see what happens if you try and match a node to the command referenced by that node in the plugin.ymal config stored inside the plugins jar.

    If anyone anything else to add to this or knows anything more fill me in please!
     
  16. Offline

    Spurious

    I get this:
    2011-03-07 06:50:52 [WARNING] Missing Permissions/GroupManager; chat prefixes/suffixes will be disabled.

    On closer inspection it seems to be throwing me some weird errors.

    Code:
    2011-03-07 06:49:40 [INFO] Starting minecraft server version Beta 1.3
    2011-03-07 06:49:40 [INFO] Loading properties
    2011-03-07 06:49:40 [INFO] Starting Minecraft server on *:25565
    2011-03-07 06:49:40 [INFO] This server is running Craftbukkit version git-Bukkit-0.0.0-493-g8b5496e-b493jnks (MC: 1.3)
    2011-03-07 06:49:40 [INFO] Preparing level "world"
    2011-03-07 06:49:40 [INFO] Preparing start region
    2011-03-07 06:49:42 [INFO] Preparing spawn area: 97%
    2011-03-07 06:49:42 [INFO] ScrapBukkit version 0.2.1 is enabled!
    2011-03-07 06:49:42 [INFO] ChatBukkit v0.0.1 is enabled!
    2011-03-07 06:49:42 [INFO] §eLoaded Essentials build 2.0.249 maintained by Zenexer, ementalo, Aelux, and Brettflan
    2011-03-07 06:49:42 [INFO] Loaded EssentialsTele build 2.0.249 by Zenexer, ementalo, Aelux, and Brettflan
    2011-03-07 06:49:42 [INFO] GroupManager - INFO - Scheduled Data Saving is set for every 10 minutes!
    2011-03-07 06:49:42 [INFO] GroupManager version 1.0(pre-alpha-3) is enabled!
    2011-03-07 06:49:42 [SEVERE] org.anjocaido.groupmanager.GroupManager.getPermissionHandler()Lcom/nijiko/permissions/PermissionHandler; loading Permissions v2.0 (Is it up to date?)
    java.lang.NoSuchMethodError: org.anjocaido.groupmanager.GroupManager.getPermissionHandler()Lcom/nijiko/permissions/PermissionHandler;
        at com.nijikokun.bukkit.Permissions.Permissions.onEnable(Permissions.java:67)
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:118)
        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:414)
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:187)
        at org.bukkit.craftbukkit.CraftServer.loadPlugin(CraftServer.java:83)
        at org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:61)
        at net.minecraft.server.MinecraftServer.e(MinecraftServer.java:204)
        at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:191)
        at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:131)
        at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:246)
        at net.minecraft.server.ThreadServerApplication.run(SourceFile:366)
    2011-03-07 06:49:42 [INFO] Loaded EssentialsHelp build 2.0.249 by Zenexer, ementalo, Eris, and EggRoll
    2011-03-07 06:49:42 [SEVERE] org.anjocaido.groupmanager.GroupManager.getPermissionHandler()Lcom/nijiko/permissions/PermissionHandler; loading Permissions v2.5 (Is it up to date?)
    java.lang.NoSuchMethodError: org.anjocaido.groupmanager.GroupManager.getPermissionHandler()Lcom/nijiko/permissions/PermissionHandler;
        at com.nijikokun.bukkit.Permissions.Permissions.onEnable(Permissions.java:67)
        at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:118)
        at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader.java:414)
        at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManager.java:187)
        at org.bukkit.craftbukkit.CraftServer.loadPlugin(CraftServer.java:83)
        at org.bukkit.craftbukkit.CraftServer.loadPlugins(CraftServer.java:61)
        at net.minecraft.server.MinecraftServer.e(MinecraftServer.java:204)
        at net.minecraft.server.MinecraftServer.a(MinecraftServer.java:191)
        at net.minecraft.server.MinecraftServer.d(MinecraftServer.java:131)
        at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:246)
        at net.minecraft.server.ThreadServerApplication.run(SourceFile:366)
     
  17. Offline

    ledhead900

    Seems to me its looking for Nijis or TheYeti's permission file and its not there. My understanding is that this converts that then you can remove the other permission config. Im sure someone else can make more sense of it then me tho.
     
  18. Offline

    anonymous

    so wait... how do we go about fixing it?
     
  19. Offline

    Spurious

    It seems like deleting the old backup folder an older version of this plugin created fixed it.
     
  20. Offline

    ledhead900

    Oh I forgot about that I had an issue but it was not like the one you posted when he updated this plugin to make world folder names leaving the old one there made it fail to start.
     
  21. Offline

    Olat

    @AnjoCaido

    Previously with Permissions we were not allowed to have multiple groups per user, is this already possible with GM, is this possible at all? and if so is there an ETA?
     
  22. Offline

    Dawodo

    This Plugin is just pure win. We've used old Permission for a long time but it just didn't work properly although it was configured perfectly. Sorry, can't understand why someone would continue Permissions if you have GM :S
     
  23. Offline

    Volitle

    Anyone having problems with setting permissions for sole players. Because i gave a donator the kit command and only she can use it, but it doesn't actually work. Yet it did before i upgraded to this GroupManager build.
     
  24. Offline

    AnjoCaido

    No, that's not possible.

    But I have an idea for you: Create a group with multiple groups inherited, that will create the effect you expect.
    --- merged: Mar 7, 2011 2:22 PM ---
    Remove old Permissions.jar, FakePermissions.jar and EssentialsGroupBridge.jar if you have any. Then put the FakePermissions.jar included in the same GM package.
    --- merged: Mar 7, 2011 2:28 PM ---
    It's not possible to share users.yml across all worlds but have different groups.yml. It just doesn't make sense.

    To manage users from a different world you are standing in use /manselect <world>. There is no way for GM guess which world you are trying to edit if it's other than the one you are in.
     
  25. Offline

    Olat

    If you have 4 Factions
    4 Weapons Classes
    and 4 Professions.
    Thats quite alot of groups to inherit from.
    So thats 4^3 = 64 Combonations....
    So how would I make it so that I can add a Player to a single group and then get1 faction 1 class and 1 professions
    So your saying to just make 64 Groups and inherit the abilities from the base class?

    Ontop of that until some one makes an automatic permission group assigner based on User input, EVERY new player must be manually added to the correct permissions group. When there is 64 permissions groups thats kind of confusing and over bearing on the Moderators / admins
     
  26. Offline

    Kossusukka

    We need command that reloads permissons from config. If i edit groups.yml, i have to restart the server to apply changes.
     
  27. Offline

    Devilyoda

    hey i have a question with the groupmanager. where do i get fake permissions at and do i need to create users and groups inside the groupmanger to get them to work?
     
  28. Offline

    AnjoCaido

    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).

    ====
    Note for Users:
    Now with the next EssentialsHelp... users that doesn't have access to such GroupManager permission, won't be showed when listing commands with /help

    At the time of this post, the new EssentialsHelp isn't released yet, but you can get it here:
    http://www.mdn.fm/files/275652_rermi/EssentialsHelp.jar.zip

    Commands for other plugins will not be listed as soon they update their plugin with just a simple change in plugin.yml file. Nag the developer for your plugin to support this idea.


    ====
    Note for Developers:
    I added a feature in EssentialsHelp that reads the plugin.yml file, and if there is a node called "permission" there, it will test if the user has such permission. So /help will list only commands a user has access to it.
    The good news? It is TOO DAMN EASY TO CHANGE YOUR PLUGIN!

    An example of two commands o GM, on plugin.yml, using this feature:
    Code:
    commands:
      manuadd:
        description: Change player group to one desired.
        usage: /<command> <player> <group>
        permission: groupmanager.manuadd
      manudel:
        description: Take user to default group. Removes user specific permissions.
        usage: /<command> <player>
        permission: groupmanager.manudel
     
  29. Offline

    godgodgodgo

    This fixed all of my permissions problems!
     
  30. Offline

    IronFerret

    :O -tries it out right now-
     
  31. Offline

    AnjoCaido

    I know what is your problem. I already face it when starting GroupManager.

    Making that will change the whole concept of user-group system.
    How will you decide which prefix return for a user that has three groups and nothing specific on him?

    To do what you want, everything should be different than it is now.
    Because this plugin was made in the same concept Permissions was. That was the decision I made while doing this.
     
Thread Status:
Not open for further replies.

Share This Page