Inactive [RPG]DayJobs v2.2 - A plugin to enforce and enhance Role Playing [1337]

Discussion in 'Inactive/Unsupported Plugins' started by LartTyler, Sep 4, 2011.

  1. Offline

    LartTyler

    DayJobs
    A plugin to enforce and enhance role playing




    We're on BukkitDev! Please direct all comments to the project page on BukkitDev, thanks!​


    After hosting an RP server for several months, I became tired of having to settle disputes between players, and having to monitor who's doing what. Most of my time went into ensuring player's kept true to RPing, rather then shaping the server as I had wanted to.

    Which is why I designed DayJobs. DayJobs is a plugin that takes some of the load off the shoulders of admins and moderators by restricting how players interact with the world. At the moment, that simply means the tools the players can use, and the blocks they can place. In the future, we at Daybreak Studios plan to add many features that will turn this simple plugin into a full suite to manage role playing in the Minecraft world.

    Current features:
    • Limit block placement and tool usage based on a players job class
    • Completely configurable classes
    • Job change request and ticketing system
    • Restrict armor usage by class
    • Configurable zones! Create guild halls, private mines, and various other locations accessible to only select classes!
    • New configuration option "can-break" allows even further fine-tuned control over what a player can and can't destroy!
    • Configurable damage types! Let some jobs survive harsher conditions longer then others, or fall prey to select environments in the blink of an eye!
    • Set respawn locations and first spawn location (with configurable messages to display to the player being spawned).
    • Restrict items from being crafted on a per job class basis.
    • Support for Permissions, PermissionsBukkit, PermissionsEx.
    • Restrict crafting, smelting, and many more elements of Minecraft's game mechanics on a per class basis.
    Coming soon!

    • Starter kits! Allow players to receive special Starter Kits when the first pick a job, or even on each subsequent job change
    • Support for custom items added via Spout using item ID's
    • Other features on request. Please PM me or leave a message in this thread if you have any feature requests.
    Downloads:

    Requirements:

    This plugin now requires the server-side version of Spout.​

    Configuration:
    Setting up DayJobs is simple. Simply drop the jar into your plugins folder and go. The plugin will function without Permissions and will use Op status for moderators. However, for a more personalized experience, we do suggest installing Permissions. Yes, it's inactive and outdated, but it still works very well, and we use it on our personal servers.​

    Once Permissions has been added, you can use the following permission nodes to control command access:​
    Code:
    dbstudios.dayjobs.admin.reload
        Can reload configuration files
    dbstudios.dayjobs.admin.change
        Can change a players class
    dbstudios.dayjobs.admin.tickets
        Can access/close tickets
    dbstudios.dayjobs.admin.debug
        Can toggle debug mode
    dbstudios.dayjobs.admin.zones
        Can create and delete zones
    dbstudios.dayjobs.admin.exempt
        Allow usage of the admin "exempt" command
    dbstudios.dayjobs.admin.spawn.set.deathspawn
        Allows setting of the death spawn location
    dbstudios.dayjobs.admin.spawn.set.newspawn
        Allows setting of the new spawn location (for first time players)
    dbstudios.dayjobs.admin.spawn.tp.deathspawn
        Allows teleporting to the death spawn
    dbstudios.dayjobs.admin.spawn.tp.newspawn
        Allows teleporting to the new player spawn
    
    dbstudios.dayjobs.player.list
        Can list available jobs
    dbstudios.dayjobs.player.whois
        Can 'whois' other players
    dbstudios.dayjobs.player.change
        Can request a job change
    dbstudios.dayjobs.player.info
        Can view job descriptions
    
    Example configuration files can be found on our GitHub page.​

    Commands:
    Code:
    /job list
        List available jobs
    /job info [<job>]
        Display your job info, or <job> if given
    /job whois <player>
        Display basic info for <player>
    /job change <job>
        Request to be changed to <job>
    /job admin reload
        Reload configuration files
    /job admin change <player> <job>
        Change <player>'s job to <job>
    /job admin tickets [close <player>]
        Display open tickets, or close ticket by <player>
    /job admin debug
        Toggle debug mode
    /job admin exempt <player>
        Toggle exempt status for <player> (they wont be affected by job limitatons).
        Run again on the same player to remove exempt status.
    /job admin spawn set death
        Set the respawn location to your current location
    /job admin spawn set new
        Set the new player spawn to your current location
    /job admin spawn tp death
        Teleport to the current respawn location
    /job admin spawn tp new
        Teleport to the current new player spawn location
    
    
    /job zone create <zone>
        Begin creation of <zone>
    /job zone set (upper/lower)
        Set the upper-left or lower-right coordinate of the zone
    /job zone order ("allow,deny"/"deny,allow")
        Set the access order (allow first, then deny, or deny first, then allow)
    /job zone (allow/deny) <access_list>
        Allow or deny for <access_list>
    /job zone commit (yes/no)
        Commit zone changes ("yes"), or delete them and start over ("no")
    
    Using the zoning system:
    The zone system in DayJobs is simple. In order to create a new zone, begin by ensuring that you have the correct permission node (dbstudios.dayjobs.admin.zones). Next, initialize zone creation by typing:
    Code:
    /job zone create MyZone
    Next, you need to set the upper-left and lower-right coordinate points that define the bounding box the zone takes up. Keep in mind that the zone does not have to encompass an entire structure; often, it's enough to simple place a zone across the door or entry way that will deny players access.
    To define a coordinate, look at the upper-left or lower-right block you want to use, and type:
    Code:
    /job zone set upper
    or​
    Code:
    /job zone set lower
    Now, you will need to define an order type. For those familiar with the Apache web server, you may recognize the syntax.
    The zone system uses an allow or deny system (ADS) to determine if a player is allowed in a given zone. Valid order types are: "allow,deny", meaning allow all job classes first, then deny those on the given list, or "deny,allow", meaning deny all job classes, and only allow those implicitly allowed. Notice the lack of space between the two access types. To set the order type, enter:
    Code:
    /job zone order allow,deny
    or​
    Code:
    /job zone order deny,allow
    The final step before committing a zone is to set the access list. The syntax of this command will change depending on your order type. For example, the order type "allow,deny" would replace <access_type> in the following command with "deny", and "deny,allow" would replace <access_type> with "allow":
    Code:
    /job zone <access_type> <access_list>
    <access_list> is a comma separated list of job classes to deny or allow. Be sure, just as in the order type, not to use spaces between the comma and the different job classes.
    The final step is to commit the zone. To do this, type:
    Code:
    /job zone commit yes
    This will write all changes to your zone file. However, if you are not satisfied with the changes, or decide midway through creation that you don't want the zone, type:
    Code:
    /job zone commit no
    You must commit or discard a zone before attempting to create another.

    You can also delete zones from in-game. Simply type:
    Code:
    /job zone delete MyZone

    Let's say I wanted to create a zone named "MinersGuild", and only allow the two jobs, "Miner" and "Blacksmith" inside. I would type the following:
    Code:
    /job zone create MinersGuild
    *Looking at the block above and to the left of the entry way, I would type:*
    /job zone set upper
    *Looking at the block below and to the right of the entry way, I would type:*
    /job zone set lower
    /job zone order deny,allow
    /job zone allow Miner,Blacksmith
    /job zone commit yes
    
    Special Characters
    In config.yml, there are many options you can use to change what text is displayed to a player on certain events. Each option allows for certain special characters, denoted by a percent sign ("%"). Currently, the only supported special characters are:
    • %p - The player's name
    • %j - The player's job
    As more and more features are added, there will be more special characters to choose from.


    As an example, in config.yml, you can set the message to display to a user the first time they connect to the server (new-player-msg). If I wanted to make it welcome the new player using their name, I would use:
    Code:
    new-player-msg: Welcome, %p, to The Four Kingdoms. You have joined with the default job class, %j.
    Changelog:
    Version 2.2
    • Fixed a bug that caused errors for servers using PermissionsBukkit.
    • Added 'init.yml'. Allows individual features to be enabled/disabled.
    • Small code tweaks in the interest of performance.
    Version 2.1
    • The item value "NOTHING" can now be either "NOTHING" or "NONE", it will evaluate to the same thing.
    • Placing a "-" in front of a block or item will except it from any previous allow statements. For example:
      Code:
      can-place:
                - ALL
                - -OBSIDIAN
                - -TNT
      Would allow all blocks, except for obsidian and TNT to be placed.
    • Placing a "+" in front of a block or item will add it to the list of allowed items/blocks, regardless of previous statements. For example:
      Code:
      can-place:
                - NOTHING
                - +COBBLESTONE
                - +DIRT
      Would disallow all blocks, but will allow Cobblestone and dirt to still be placed.
    • Item usage on mobs and other entities now denies correctly. Restricted weapons/blocks/items no longer work on mobs.
    • Changed some output text colors, and re-worded the more "awkward" phrases.
    • New configuration option, "can-smelt" allows you to restrict what a player is capable of smelting in a furnace.
    • Configurable message structure in config.yml has been changed. Please see the provided example config.yml for an example of the new structure.
    Version 2.0

    • Configuration files renamed: "player.yml" is now "players.yml", "ticket.yml" is not "tickets.yml"
    • New configuration options: place-deny-msg, break-deny-msg, use-deny-msg, wear-deny-msg, wear-deny-inv-full-msg
    • New option: Set new player join message by changing new-player-msg in config.yml. Supports the following tokens:
      • %p - The player's name
      • %j - The player's job
    • Various text changes and optimization
    • Corrected a bug where damage done could be increased, but not set to a value below the default.
    • Corrected a bug where players could still use a restricted item to attack an entity.
    • NOTHING or ALL in a jobs permit node now correctly overrides those present in "all".
    • Cleaned up output for verbose logging servers.
    • Corrected DayJobs attempting to initialize Spout, Permissions, or other dependencies before the dependencies were initialized on the server.
    • Added support for PermissionsBukkit.
    • Corrected zones occasionally killing players when permission was denied.
    • Set death spawn locations and new player spawn locations
    • Restrictable, per-job crafting
    Version 1.3

    • Corrected a bug that prevented normal players from using commands if Permissions was not present.
    • Player names are no longer case sensitive in commands.
    • An admin job change now notifies the target player of the change.
    • New command "/job admin exempt <player>" will toggle exempt status on target <player> and disable job limitations on them until the command is run again.
    • Exempt is no longer a permission node. See above.
    • New usage options. Enter "NOTHING" under a usage node (such as "can-use" or "can-break") to remove ALL usages from that category for that job. Enter "ALL" to allow usage of everything for that category.
    • Prettier job information output :3
    Version 1.2

    • Added configurable zones
    • Added the new configuration option "can-break"
    • Fixed a bug that could return null for certain configuration options if not set
    Version 1.1

    • Added configurable armor limitations
    • Changed message colors to a more standard motif
    • Fixed a bug that prevented help output from being displayed
    • Fixed a bug that could cause a debugging console to be spammed with NullPointerExceptions
    • DayJobs now requires the server-side version of Spout
    Version 1.0

    • Initial release
    Bug reporting:

    If you encounter any bugs or errors while using this plugin, please report it ASAP. If at all possible, it is preferable that you use the issue tracker provided by GitHub. Just follow this link to open the issue tracker for DayJobs. Please be as detailed as possible about your issue, and use a service such as Pastie for including stack traces and debug output.​

    Any bugs reported on the forum will most likely be addressed, eventually. But I will guarentee a quick response time for anything submitted to the issue tracker on GitHub.​

    Donating

    Like this plugin? Then consider donating! Not only will donations help keep this plugin active and alive, but for every $100 in donations I receive, I will guarantee a new release packed full of awesome new features. That's not to say I won't do releases otherwise, you don't have to worry about that. But for every $100 I'll drop whatever I'm doing and pump out a new version as fast as I possibly can! Interested? Click here to donate.

    Follow Daybreak Studios on Twitter! See updates, news, and other information related to Daybreak Studios as it happens. Also, I tend to get a bit bored while I'm working, so you can always feel free to watch me talk to myself as I work :p
     
    Fengi, Retaks, Parideis and 1 other person like this.
  2. Offline

    thedark54

  3. Offline

    LartTyler

    @thedark54
    The problem could either be caused by a conflict between my plugin and one of the many others on your server, or (more likely) by the presence of both Permissions _and_ PermissionsBukkit. Try removing one and see if that fixes the problem. If it doesn't matter which you keep, I would suggest keeping Permissions, as it is the one that I will offer most support for.
     
  4. Offline

    thedark54

    Hi, SuperpermsBridge-1.2.jar is permission :)
     
  5. Offline

    LartTyler

    Ah, I see. Well, the problem with using both is that my plugin checks for the existence of Permissions and PermissionsBukkit. If it finds that both are present, whether through SuperpermsBridge or otherwise, there could be errors that are beyond my control to correct. I only offer support for either or, but I haven't done any testing using SuperpermsBridge. I'm sorry, but I do not have a fix at this time. Perhaps in later releases, but at the moment there is no solution to your issue.
     
    thedark54 likes this.
  6. Offline

    thedark54

  7. Offline

    arnie231

    No commands working RB1185 latest RB spout Pex 1.14 and latest dayjob build :S no errors

    btw once fixed please add a donation button

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 19, 2016
  8. Offline

    LartTyler

    Am I correct in assuming that Pex is PermissionsEx? I dOnt support it at the moment, but I've already begun working on adding it. You can expect support for Pex, along with an awesome new feature, on the next release.
     
  9. Offline

    arnie231

    Thank you so much ive beenworking on a plugin like this but having you dev before me makes my life easyar and dude donation button ;)
     
  10. Offline

    LartTyler

    There's a donation button on the DevBukkit page here. Thanks for your interest! :)
     
  11. Offline

    Dungeon_Master

    Great update Lart, thankyou! I've just finished redesigning my config file. I ditched all the prestige classes in favour of more complicate core classes, of which there are now 5. I only have a handful of players on my server so this suits me. I may create a config that supports many more classes if the demand rises (For people running busy servers and want more diversity).

    I've done some testing. I uninstalled all other plugins during this process so I could get a clean test run of this plugin. I am running #1185 and Spout (Both the latest stable Server & Client) on Minecraft 1.8.1

    Restricted weapons can still be used to attack mobs. The game must process mobs differently than blocks. If you cant find a way to restrict it like a block, perhaps you can change weapon damage on restricted weapons to zero? Just a suggestion, hope you can find a work around.

    The new craft restrictions are fantastic and really held distinguish classes even further, loving it! I noticed however you cannot restrict smelting in the forge at present. Is this something that can be addressed in a later version? I'd like the farmer/chef to be the only one able to cook meat.

    Damage appears to be working again, I need to play around with this a little more, on a scale of 0 to 100 i noticed that 0 is essentially immortal, is 100 normal game damage (as in the previous version 100 would instant kill you if you dropped 2 blocks in height - way above normal)?
     
  12. Offline

    LartTyler

    It's not on any scale, it's simply the amount of damage dealt. 0 is literally zero damage, while 100 is literally 100 damage. I can work on a way to modify how fall damage is dealt, since that's the only damage that scales as the fall increases, if you would like to see a feature like that. But as of now, whatever value assigned to that damage modifier is the exact damage dealt to the player.

    After uploading the final version for 2.0, I had noticed the bug with using disallowed weapons on mobs still existed. It will be patched (for sure this time :p) in 2.1.

    Also, I hadn't thought of restricting smelting as well as crafting. I can certainly add that in 2.1 in addition to the other huge feature I had planned. There was a very small hint towards this feature in the files that were part of 2.0's archive, for those of you who payed close attention :p

    My current release time frame for 2.1 is hopefully by the end of this weekend. Not totally sure what my obligations are for the rest of the week, but barring any unusually time consuming events, you can expect 2.1 by Sunday night at the latest.


    Thanks again so much for all your interest and feed back!
     
  13. Offline

    dxwarlock

    hmm I have a question this looks like the plugin I need to get ride of my messy and confusing perms/worldguard config for jobs!...but cant find an easy way to do what Im looking for.

    is there way a to add 'blacklist item" instead of 'whitelist item" to options? say I want my miners to be the only ones that can mine obsidian. (everyone can mine everything BUTbut obsidian, only miners get -ALL) do I have to add every blocktype to all the other classes? or is there a "- -OBSIDIAN" option I'm missing?
     
  14. Offline

    LartTyler

    Currently, entering -OBSIDIAN won't do anything, but it is on my to do list. You can expect such a feature in the next release.
     
  15. Offline

    dxwarlock

    that would be amazing! tried to go and setup all the blocks for all the other jobs types..but it makes for a loooooong config.yml, and a bit tedious when miners get obsidian, farmers get melons/pumpkins/ etc :)
     
  16. Offline

    LartTyler

    I understand :p I realized it the other day when I saw Dungeon_Master's config, and I was like "Whoa :confused:"

    It'll be a very simple and quick fix, perhaps I'll even release a version with that fix in it before the big update I had planned. We'll see :p
     
  17. Offline

    Dungeon_Master

    Here is my latest config file, it contains all the objects up to and including 1.8.1 (and some 1.9?). I thought I would throw it up here as it has the basics that most people are probably looking for. Feel freed to edit it to suit your server. Instead of classes I made races, simply because it defined what I wanted to do on my server better, but again, you can change these to suit whatever you want.

    Dwarf - Mining, Stonecraft, Metalcraft
    Elf - Tree Felling, Carpentry, Leathercraft
    Halfing - Farmer, Cook
    Gnome - Engineer, Surveyor
    Human - Warrior

    I typically use MCMMO as well, so you can see how this clicks in nicely with that. I haven't added any damage variation to any particular race yet.

    You can speed the whole creation process up quite easily. I created a Excel Spreadsheet with all the Bukkit Values an then simply put " - " in front of them all and arranged them into catagories. Then I simply copy & paste into the config file using notedpad++. Once the 'guts' of it are there you can easy cut & paste within the config file to suit your needs.

    I haven't had a chance to thoroughly test that config file, it boots and seems to do as it should within the game, but let me know if I missed something.

    One other thought Lart, I'm not sure if it's possibly at the moment (Haven't tried it), would it be possible for a player to have multiple classes? In the case of my config say Dwarf/Warrior? Rather than creating the 20 "Prestige" classes like I did last time. I'm sure it wouldn't be hard to implement. This allows for smaller servers to merge classes or for prestige classing. ie your Players.YML might read "Class 1 = X" "Class 2 = Y" Class 3 = <none>" or simply everything listed after Job is added to the kitty.
     

    Attached Files:

    Last edited by a moderator: May 19, 2016
  18. Offline

    LartTyler

    @Dungeon_Master
    Good thought, I'll see what I can do. It'll require some command restructuring, but it should be fairly easy. Don't expect it to be in 2.1, but I will certainly add it to my to do list for future releases.
     
  19. Offline

    Williamsson

    Is it possible to set a max limit of jobs? :) I just came up with an idea of how to design jobs on our server, but I'd like the users to have the option to choose two jobs :p
    Perhaps adding some sort of xp system, and when the user have reaced X experience he/she is able to choose yet another job?
     
    thedark54 likes this.
  20. Offline

    LartTyler

    @Williamsson
    Perhaps I'll look into utilizing Notch's experience bar for something like that in the future. However, @Dungeon_Master pointed out that it may be better to allow multiple classes per player, and I think that will be what I do for the time being. If an experience system becomes a popular demand, then I will certainly look into the possibility of adding it, or something similar.
     
    Williamsson likes this.
  21. Offline

    madmac

    Are you able to make it to where there are children and parent permission nodes per Job?

    For example You have premade groups for your RPG server
    One being BlackSmith(group) Another being Wool Specialist(WS).

    You create the jobs of what blacksmith(job) can do as well as WS(job)

    But you only want the group to be allowed to use the blacksmith job as well as the WS job.

    so for example You would do something like this

    dbstudios.dayjobs.player.join.blacksmith
    OR
    dbstudios.dayjobs.player.allow.blacksmith

    I dunno I am just tryna through ideas out there this plugin is awesome but I do not want allmy users to be able to have access to all the jobs
     
  22. Offline

    thedark54

    Hello, what permission plugin works well with your plugin
     
  23. Offline

    LartTyler

    @madmac
    My plugin doesnt work that way. A player can REQUEST to join any group, but it's up to a moderator to approve or deny that request. For example, if I were a player on your server, and I typed "/job change Miner", my job wouldnt instantly change. A ticketing system logs the request, which an admin could review by typing "/job admin tickets". You could then either change my job with the admin change command, or not do anything and just close the ticket

    @thedark54
    Permissions by TheYeti is the recommended permissions plugin for DayJobs. Not only was it the first permission system I deigned DayJobs to work with, but it is also the permissions plugin I use on the RP server I own, The Four Kingdoms.
     
  24. Offline

    Williamsson

    Concerning permissions.
    I couldn't find anything in the first post about supporting more permissions than Permissions 3.1.x/whatever.
    Since that's inactive and probably pretty abandoned, I'd suggest you to (at least) support PEX, or preferably superperms (or whatever the API bukkit has for permissions's called).

    I used permissions before, and was one of the haters to using superperms, but now as I switched to PEX my life has become much easier, haha :)


    If I missed something in the first post about support for several permission systems, I'm sorry :)
     
  25. Offline

    LartTyler

    No, you're right, I still haven't updated the original post. DayJobs currently supports Permissions and PermissionsBukkit, and will support PermissionsEx in version 2.1.
     
  26. Offline

    thedark54

    Hello, You have found the problem of permissions bukkit ?
     
  27. Offline

    LartTyler

    @thedark54
    It was never a problem with PermissionsBukkit, it was an issue unique to your server because you had both Permissions (through SuperpermsBridge) and PermissionsBukkit. There's no fix for it at the moment, but I may be able to fix that in version 2.1.
     
  28. Offline

    Williamsson

    Ah, great! Thanks! :)
     
  29. Offline

    MeMySelfAndI

    The hoe doesnt work at all.. and when tre player of this class try to right click it say : You have no idea how to set this item down properly...
    The deny place message . I tryd to put the hoe in the can place doesnt work either
    can-use:
    - STONE_HOE
    - IRON_HOE
    - GOLD_HOE
    - DIAMOND_HOE
     
  30. Offline

    nichiatu

    Try adding it in "can-place" as well.

    Throws me an error every time I break outside of a towny protected area. I want to use towny instead of the integrated "zones" thing, but it throws me an error. Should this load before Towny?

    EDIT by Moderator: merged posts, please use the edit button instead of double posting.
     
    Last edited by a moderator: May 19, 2016
  31. Offline

    LartTyler

    @nichiatu
    Unless you have a zone configured, the integrated zoning system won't affect any other plugin. The error you're getting is probably caused by the order in which Towny handles events. Chances are, it expects to have final say in what happens, and my plugin is attempting to override it. As much as I wish there was something I could do to fix that, I can't support problems that occur due to compatibility issues between plugins. I will certainly look into it before the next release, but I can't make any promises.
     

Share This Page