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

    sibbo7

    Can someone help me with an Error Message ?

    It's the first time i want to setup a Minecraft Server.. i attached my data.yml and the server_log with the Error Message(s)

    Thanks in Advance.

    and sorry if its some stupid Problem.. i dont understand all the Error Messages because my English isnt perfect.
     

    Attached Files:

  3. Offline

    gsgrego

    Any idea why group manager when the server is shutdown breaks the data yml file by turning it into a 2 line mess? I am running 440, this, monstertamer, tombstone, mobrider, inventorysort, and mcmmo.
     
  4. Offline

    Drat333

    holy poopnuggets i love this plugin, SUCH an improvement over permissions, but you REALLY have to keep up with the guy continuing permissions.

    *hint hint* multiworld!?
     
  5. Offline

    The24man

    Does this support Permissions 2.5 yet? I get this error message from LoginMessage, and I'm pretty sure it has something to do with permissions.
    Code:
    2011-03-01 17:31:51 [SEVERE] Could not pass event PLAYER_JOIN to LoginMessage
    java.lang.NoSuchMethodError: com.nijiko.permissions.PermissionHandler.getGroup(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
    	at com.tahkeh.loginmessage.LoginMessagePlayerListener.sendMultiMessage(LoginMessagePlayerListener.java:164)
    	at com.tahkeh.loginmessage.LoginMessagePlayerListener.onPlayerJoin(LoginMessagePlayerListener.java:57)
    	at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:130)
    	at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:59)
    	at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:225)
    	at net.minecraft.server.ServerConfigurationManager.a(ServerConfigurationManager.java:98)
    	at net.minecraft.server.NetLoginHandler.b(NetLoginHandler.java:87)
    	at net.minecraft.server.NetLoginHandler.a(NetLoginHandler.java:68)
    	at net.minecraft.server.Packet1Login.a(SourceFile:46)
    	at net.minecraft.server.NetworkManager.a(SourceFile:230)
    	at net.minecraft.server.NetLoginHandler.a(NetLoginHandler.java:34)
    	at net.minecraft.server.NetworkListenThread.a(SourceFile:87)
    	at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:357)
    	at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:272)
    	at net.minecraft.server.ThreadServerApplication.run(SourceFile:366)
     
  6. Offline

    Jobsti

    Heyho @AnjoCaido

    What's about an update, so the permissions 2.5 compatible plugins would work with GroupManager?
     
  7. Offline

    4am

    I'm afraid it seems this does not support Permissions 2.5.1, so it breaks some other plugins for me (HeroChat, etc). Hope we get updated soon, I must say I prefer the way GroupManager handles things!
     
  8. Offline

    ledhead900

    I love this new system, Sure it breaks a couple plugins if they support permission above 2.1 but eh I notified the ones that broke for us and there considering swapping to this.
     
  9. Offline

    anklesneeze

    Argh, I made the switch today from Permissions to Group mgr. Although it acted like it was working it seems things are not, people were able to build that shouldn't have been able too. I logged in with my sons account set him to default and he couldn't build as expected, however a new person logged in and was able to place and destroy blocks instantly.
    BIG PROBLEM keeps booting ppl as soon as they log in even me and my wife on same LAN.
    After adding new people to group they don't get the groups permissions.
    I checked my data yaml in parser, it says its good.
    Below is error when booting ppl at login [IP addr replaced for security] Why is it saving so much? i didn't touch any settings just made sure data had correct users in it.
    I guess its back to Vanilla till I get this figured out.
    THANKS FOR this plug in i know how hard it must be to keep these going! you guys are our heroes!

    Code:
    2011-03-01 23:09:53 [INFO] Deb_Frank lost connection: disconnect.overflow
    
    2011-03-01 23:09:53 [INFO] Forcing MCServerlist update.
    
    2011-03-01 23:09:54 [INFO] Freed 84.06217193603516 MB.
    
    2011-03-01 23:10:01 [INFO] Deb_Frank [0.0.0.0] logged in with entity
    
    id 2576
    
    2011-03-01 23:10:01 [INFO] Forcing MCServerlist update.
    
    2011-03-01 23:10:05 [INFO] Deb_Frank lost connection: disconnect.overflow
    
    2011-03-01 23:10:05 [INFO] Forcing MCServerlist update.
    
    2011-03-01 23:10:07 [INFO] Freed 125.83712768554688 MB.
    
    2011-03-01 23:10:18 [INFO] Deb_Frank [0.0.0.0] logged in with entity
    
    id 2817
    
    2011-03-01 23:10:18 [INFO] Forcing MCServerlist update.
    
    2011-03-01 23:10:22 [INFO] Deb_Frank lost connection: disconnect.overflow
    
    2011-03-01 23:10:22 [INFO] Forcing MCServerlist update.
    
    2011-03-01 23:10:23 [INFO] Freed 89.27691650390625 MB.
    
    2011-03-01 23:10:27 [INFO] Deb_Frank [0.0.0.0] logged in with entity
    
    id 3053
    
    2011-03-01 23:10:27 [INFO] Forcing MCServerlist update.
    
    2011-03-01 23:10:31 [INFO] Deb_Frank lost connection: disconnect.overflow
    
    2011-03-01 23:10:31 [INFO] Forcing MCServerlist update.
    
    2011-03-01 23:10:32 [INFO] Freed 71.0000991821289 MB.
    
    2011-03-01 23:15:45 [SEVERE] java.net.SocketException: Connection reset by peer:
    
    socket write error
    
    2011-03-01 23:15:45 [SEVERE] at java.net.SocketOutputStream.socketWrite0(Nati
    
    ve Method)
    
    2011-03-01 23:15:45 [SEVERE] at java.net.SocketOutputStream.socketWrite(Unkno
    
    wn Source)
    
    2011-03-01 23:15:45 [SEVERE] at java.net.SocketOutputStream.write(Unknown Sou
    
    rce)
    
    2011-03-01 23:15:45 [SEVERE] at java.io.DataOutputStream.writeInt(Unknown Sou
    
    rce)
    
    2011-03-01 23:15:45 [SEVERE] at net.minecraft.server.Packet30Entity.a(SourceF
    
    ile:119)
    
    2011-03-01 23:15:45 [SEVERE] at net.minecraft.server.Packet31RelEntityMove.a(
    
    SourceFile:63)
    
    2011-03-01 23:15:45 [SEVERE] at net.minecraft.server.Packet.a(SourceFile:149)
     
    2011-03-01 23:15:45 [SEVERE] at net.minecraft.server.NetworkManager.e(SourceF
    
    ile:130)
    
    2011-03-01 23:15:45 [SEVERE] at net.minecraft.server.NetworkManager.d(SourceF
    
    ile:9)
    
    2011-03-01 23:15:45 [SEVERE] at net.minecraft.server.NetworkWriterThread.run(
    
    SourceFile:83)
    
    2011-03-01 23:15:45 [SEVERE] java.net.SocketException: Connection reset
    
    2011-03-01 23:15:45 [SEVERE] at java.net.SocketInputStream.read(Unknown Sourc
    
    e)
    
    2011-03-01 23:15:45 [SEVERE] at java.net.SocketInputStream.read(Unknown Sourc
    
    e)
    
    2011-03-01 23:15:45 [SEVERE] at java.io.FilterInputStream.read(Unknown Source
    
    )
    
    2011-03-01 23:15:45 [SEVERE] at net.minecraft.server.Packet.b(SourceFile:113)
     
    2011-03-01 23:15:45 [SEVERE] at net.minecraft.server.NetworkManager.f(SourceF
    
    ile:155)
    
    2011-03-01 23:15:45 [SEVERE] at net.minecraft.server.NetworkManager.c(SourceF
    
    ile:9)
    
    2011-03-01 23:15:45 [SEVERE] at net.minecraft.server.NetworkReaderThread.run(
    
    SourceFile:62)
    
    2011-03-01 23:15:46 [INFO] Bluesolidsnake lost connection: disconnect.genericRea
    
    son
    
    2011-03-01 23:15:46 [INFO] Forcing MCServerlist update.
    
    2011-03-01 23:15:47 [INFO] Freed 188.26000213623047 MB.
    
    2011-03-01 23:17:40 [INFO] Forcing MCServerlist update.
    
    2011-03-01 23:18:09 [INFO] GroupManager - Backing up your data...
    
    2011-03-01 23:18:09 [INFO] GroupManager - Backup done!
    
    2011-03-01 23:18:09 [INFO] GroupManager - Saving your data...
    
    2011-03-01 23:18:09 [INFO] GroupManager - Backing up your data...
    
    2011-03-01 23:18:09 [INFO] GroupManager - Backup done!
    
    2011-03-01 23:18:09 [INFO] GroupManager - Saving your data...
    
    2011-03-01 23:18:09 [INFO] GroupManager - Saving done!
    
    2011-03-01 23:18:09 [INFO] GroupManager - Saving done!
     
  10. Offline

    ledhead900

  11. Offline

    4am

    Make sure you only have one copy of the jar in your plugins folder - I have this installed and working perfectly (although I must disable plugins which expect Permissions 2.1 or higher). it saves a LOT but not twice in one second - that says to me that you have multiple instances of this running somehow and they're fighting.

    Also, why would you go back to vanilla? Revert to your old configuration instead until your problem is solved? After the hMod vacation I could never play vanilla again lol
    --- merged: Mar 2, 2011 5:41 AM ---
    I can't tell if you're helping or trying to insult him...:p (I'll be here all week - be sure to tip your waitress!)
     
  12. Offline

    Johannes

    Only help =) I had a similar issue, where every time I manually edited the file it would overwrite it if I did /reload or stopped the server. When I used /manload however it would load the edited file correctly and would retain my manual changes when it wrote to the file again.
     
  13. Offline

    rareshutzu

    Make it for 440 PLEASE! :D
     
  14. Offline

    vClizBy

    When my default group users type /help as a command, all of the groupmanager commands show up. How do i make it so that when default users type /help it doesnt show them all, as they cant use them anyway?
     
  15. Offline

    Lunar Delta

    Please update soon, I can't run my server well without Herochat.
     
  16. Offline

    alexjj

    I've tried looking through the past posts but didn't quite make it through all 22 pages...also I'm at work so haven't installed and tried it yet...

    So if I wanted to add the /give permission when using essentials plugin to a group (called givers) I'd type:
    Code:
    /mangaddp givers essentials.give
    Correct?

    For installation on a server which does not have Permissions plugin (and so nothing to copy) is there any other setup that needs doing?

    Thanks.
     
  17. Offline

    AnjoCaido

    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.

    Note1: This is an alpha release, it's for testing purposes only. It is for developers have time to make changes for the new multiworld system. I hate having to refactor, but I did a lot of it this time.
    Every plugin that depends directly on GroupManager will break. (sorry!)
    But is for a good cause… a permanent one.

    NOTE2: This is an alpha version(again!). The support for plugins that uses directly Permissions 2.1+ might not work if they changes permissions during the game(like a jail system changing group when you jail them)
    This problem will not occur with most Permissions 2.1+ plugins, and sure will not occur with GroupManager plugins.


    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.


    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
     
  18. Offline

    ghj290

    Tried this yesterday as In thought it had so many improvements over Permissions, however, it completely trashed my Permissions world.yml file and rendered it unreadable in Notepad. I had ot download and insatall Notepad++ to be able to read the yml again. This didn't help a lot as it decided that rather than leave the format of the file as standard is it moved the users from the top of the file to the bottom and placed all the permissions for a group in square brackets seperated buy commas. E.G:-

    regulars:
    default: false
    permissions: [essentials.list, essentials.rules, essentials.compass, essentials.spawn,
    essentials.msg, essentials.afk, essentials.home, essentials.sethome, Essentials.world nether,
    Essentials.world normal, travelportals.portal help, travelportals.portal name,
    travelportals.portal warp, monsterhunt.usercmd.hunt, monsterhunt.usercmd.huntscore,
    monsterhunt.usercmd.huntstatus, stats.stats, stats.ach, iConomy.payment, iConomy.access,
    iConomy.rank, iConomy.list, iConomy.withdraw, iConomy.deposit, iConomy.reset,
    repairshop.repair, iMonster.User, iConomyChestShop.shop.use, mcmmo.motd, mcmmo.chat.partychat,
    mcmmo.commands.ptp, mcmmo.commands.party, mcmmo.commands.whois, mcmmo.commands.myspawn,
    mcmmo.skills.mining, mcmmo.skills.woodcutting, mcmmo.skills.unarmed, mcmmo.skills.archery,
    mcmmo.skills.herbalism, mcmmo.skills.excavation, mcmmo.skills.swords, mcmmo.skills.acrobatics,
    mcmmo.skills.axes, essentials.signs.trade.create, essentials.signs.trade.use,
    essentials.signs.buy.create, essentials.signs.buy.use, essentials.signs.sell.create,
    essentials.signs.sell.use, essentials.eco, essentials.worth, essetials.sell,
    essentials.balance, essentials.help, essentials.protect, essentials.world, essentials.portal,
    essentials.warp, essentials.setwarp, essentials.delwarp, essentials.who, iConomy.payment,
    iConomy.access, iConomy.list]
    inheritance: []
    info: {prefix: a, build: true, suffix: ''}

    All permissions then, suddenly stopped working, including admin. After this I gave up and went back to Permissions. This plugin is a great idea and the features and commands are really a great improvment, so long as it works. Unfortunately, at the moment, for me it isn't realiable enough to run on a live server and the,
    Unnecessary, changes made the to yml files format are a pain when you need to carry out trouble shooting.

    Please make it so that it leaves the yml file config as Permissions uses it.
     
  19. Offline

    AnjoCaido

    I dont know the version you had. But since the version 0.99d it saves in a format very close of the same from permissions. It's the closest I can get without creating a file manager.

    Yet, all of them(my old format, my new format and permissions format) are still YAML.
    It means any valid Parser should be able to read them, and deliver to a program the same data.

    And still I never touched your original Permissions file, if you want to go back to Permissions, fell free to use your old file instead of data.yml(deprecated in 1.0).
    --- merged: Mar 2, 2011 1:01 PM ---
    Correct!
     
  20. Offline

    alexjj

    Thank you! :)
     
  21. Offline

    anon

    Version 1.0 works great for me :D
     
  22. Offline

    stavos

    It appears GroupManager V1.0 Pre-alpha breaks iChat 2.06. Not sure which developer I should bring this attention too.
     
  23. Offline

    anon

    Use this one: http://forums.bukkit.org/threads/chat-ichat-1-6-rebirth-continuing-the-legacy-440.6416/

    2 developers took iChat plugin, so... there is an Ichat 2.06 of drakia, and iChat 1.6 of yeti. It doesnt means that 2.06 is newer than 1.6 thou.

    Tested on Craftbukkit build 440 and it worked. If it doesnt, you are not using the recomended build.
     
  24. Offline

    stavos

    Would I have to change my color coding for the prefix, suffix etc in the group Manager data.yml, for the different iChat version?
    --- merged: Mar 2, 2011 3:08 PM ---
    I love all the in game permission commands. Could you possibly make a list to show all players in a specific group? That seems to be the only missing list for all the group management.
    Something like: /mangp vip
    displays VIP: John Smith, Tom jones, bobcat
     
  25. Offline

    TerraPlay

    Isn't working for me. Is Permissions necessary for this? Because i don't have permissions and deleted the FakePermissions.jar because I think it's uneccessary if i'm not using Permissions.

    I set myself as admin and set build to true, set a prefix and * as permissions, but nothing works. Here are my files:

    groups.yml:
    Code:
    groups:
        Default:
            default: true
            info:
                build: false
                prefix: '&7[Guest] '
                suffix: ''
            inheritance: []
            permissions:
        Member:
            default: false
            info:
                build: true
                prefix: '&7'
                suffix: ''
            inheritance:
            - Default
            permissions:
        VIP:
            default: false
            info:
                build: true
                prefix: '&8[Vip] '
                suffix: ''
            inheritance:
            - Member
            permissions:
        Moderator:
            default: false
            info:
                build: false
                prefix: '&b[Mod] '
                suffix: ''
            inheritance:
            - VIP
            permissions:
        SuperModerator:
            default: false
            info:
                build: true
                prefix: '&2[Super-Mod] '
                suffix: ''
            inheritance:
            - Moderator
            permissions:
        Admin:
            default: false
            info:
                build: true
                prefix: '&c[Admin] '
                suffix: ''
            inheritance: []
            permissions:
            - '*'
    
    users.yml:
    Code:
    users:
        TerraPlay:
            group: Admin
            permissions: []
    
    Settings are default.
     
  26. Offline

    axebyte

    awesome plugin, being able to change ranks on command is very nice.
    Quick question though:
    I cant seem to update users that are not online (says no player), then when i go into the Data folder its really messy in there..
    Is there a way to either Change offline player ranks by command. or set up the Data file so its alot easier to look thru and manually modify? It says it uses the same config as Permissions, and it does just when you update a rank the entire date file collapses and looses set up to easily configure manually.
    This would be helpful for addin a new group to instead of all the commands to set name, prefixes, commands, and such i can just open the data and plug it in.
     
  27. Offline

    anon

    Yes you need fake permissions I think


    Thats strange, mine data is is a good structure. I can read it and its very organized. Try changing the notepad stuff you use to edit it. Use notepad++

    Anyway, yes you area able to add and modify offline people doing this comand:
    Code:
     mantogglevalidate:
        description: Toggle on/off the validating if player is online.
        usage: /<command>

    Then doing this you can disable the validate, and you can use /manuadd on offline players.
     
  28. Offline

    axebyte

    Yup thank you notepad++ was alot of help :D
    okay well then...
    Nice plugin works great and thanks for help! :D

    And yes i think you need fake permissions as well, since it is not a standalone replacement yet.
     
  29. Offline

    smurph077

    I'm really kind of dumb at this [​IMG] I'm using Notepad++ to edit this but whenever i load up the server it says: 17:00:37 [SEVERE] null
    java.lang.NullPointerException
    at org.anjocaido.groupmanager.dataholder.DataHolder.load(DataHolder.java
    :362)
    at org.anjocaido.groupmanager.GroupManager.prepareData(GroupManager.java
    :112)
    at org.anjocaido.groupmanager.GroupManager.onEnable(GroupManager.java:75
    )
    at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:117)
    at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader
    .java:419)
    at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManage
    r.java:187)
    at org.bukkit.craftbukkit.CraftServer.loadPlugin(CraftServer.java:80)
    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:00:37 [SEVERE] Permissions file is in wrong format (Is it up to date?)
    java.lang.IllegalArgumentException: Permissions file is in wrong format
    at org.anjocaido.groupmanager.GroupManager.prepareData(GroupManager.java
    :116)
    at org.anjocaido.groupmanager.GroupManager.onEnable(GroupManager.java:75
    )
    at org.bukkit.plugin.java.JavaPlugin.setEnabled(JavaPlugin.java:117)
    at org.bukkit.plugin.java.JavaPluginLoader.enablePlugin(JavaPluginLoader
    .java:419)
    at org.bukkit.plugin.SimplePluginManager.enablePlugin(SimplePluginManage
    r.java:187)
    at org.bukkit.craftbukkit.CraftServer.loadPlugin(CraftServer.java:80)
    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)

    What do these words mean? D:
     
  30. Offline

    Wulfspider

    The link to GroupManager-1.0-pre-alpha-2.zip is not correct. It's linking to the JavaDocs for that version.
     
  31. Offline

    AnjoCaido

    If you are using 0.99d: It means that you don't have a node called "users" in your data.yml.
    If 0.99c: I'm not sure.

    And I'm sure that you aren't using 1.0.
    --- merged: Mar 2, 2011 5:11 PM ---
    fixed.
     
Thread Status:
Not open for further replies.

Share This Page