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

    Werzieq

    2 Things:
    Those this work:
    Can-place:
    - -OBSIDIAN

    And can I change, for example, how much the Warrior Job does damage with a wooden sword? Or just how much damage he recieves?
     
  3. Offline

    LartTyler

    @Werzieq
    Using -BLOCK_NAME does not work at the moment, but it will in 2.2. And ns for now, you can only change the damage they take, but I can look intoodifying damage dealt as a feature in 2.3. I can try and pit it in 2.2, but no promises, I'll have to see how much time I have free this weekend.
     
  4. Offline

    Werzieq

    @LartTyler with the addition of permission-nodes that you said you might add, I will love you forever(no homo). I have an RP server just like you, and its difficult to manage everyone's permissions according to class for special skills etc.

    I'll try to take some of our server's donations if the Owner Approves to help speed ya up ok :D
     
  5. Offline

    Sich

    One thing who could be interesting is what the monster drop... Like we can block the drop for the pig if the player didn't have the right job. Or the same for the cow to obtain milk..
    This will allow to create a new job like "Farmer".
    Same for fishing... But I think if you limit the usage of the fishing rod this will be enough...

    When the 1.9 will be out it will be good if you can use some restrictions for the "love mode" for the animals...

    With this all we can allow the "farmer" to be the only one who can product food...


    One other thing :
    Manage the job through permissions... You create a list of job in your config file, and then you give the perm to the user... Like dayjobs.job.job_name... This will allow to give more than one job for each user...
     
  6. Offline

    LartTyler

    @Sich
    I had thought about granting jobs through permissions, but I was trying to avoid forcing players to use a permission system. The plugin works exactly the same with a permissions system and just using the default Op status, and it was always my goal to keep it that way.

    Also, modifying drops would be very simple, I can certainly add it. If I have the free time this weekend, I'll try and get it on the next release, but if not, expect it in 2.2. The breeding mode for animals can only be a tentative maybe though, until I know how Bukkit handles rhe API for those events.

    @Werzieq
    If re per-class permission nodes are that big of a feature, then o will get to it as soon as I have the time. I had moved it to the back burner while I worked on 2.1, but I'll see about adding it in before I post the official release.
     
  7. Offline

    Sich

    No problem, my suggestion was just to manage all the "rights" through permissions and not on all single plugin. But if you don't have the time no worry about this :)

    Take your time, I only think about using your mod when the 1.9 will be out for bukkit, because I will probably reset all my server.
     
  8. Offline

    Werzieq

    @LartTyler your doing an awfully good job on this. The permissions thing allows you to use other skill plugins and incorporate them with this one. At the moment, my classes are permission based, but with this, its just like a Heroes without Skills.

    I currently use OtherDrops for my custom drops @Sich, its 100% configureable.
     
  9. How about a MySql feature, so the Jobs from users can be see/change online in our webinterface ?
     
  10. Offline

    LartTyler

    @Werzieq
    I'm glad you found a good work around using OtherDrops, but the next release will most likely have configurable drops built in. Just putting that out there :p

    @Parideis
    I could create a system that mirrors jobs and such to a SQL database purely for information purposes if that's a feature you'd like to see. I doubt I'd ever use it to store the true records, I'll keep to using YML files, but if you'd like a feature like that I'll see what I can do about adding it when I can.
     
    Parideis likes this.
  11. Offline

    Sich

    Thanks ! Exactly what I need :)
     
  12. You should keep using YML files and not replace it with The database. This function is an optional function for those who wants to interact with it.
    You can make the tables simple like that: "id|Name|Job" thats enough for that I have planed.
    How much time will you need for it around?
     
  13. Offline

    LartTyler

    @Paideis
    It won't be in 2.1, the next realease, since I've been so swamped I haven't even had time to finish the few features and bug fixes I had planned. Depending on how difficult it is to learn Java's SQL interface, I'll see what I can do about putting it in 2.2.
     
  14. Thank You!Good luck and have fun!
     
  15. Offline

    Sich

    ouch, can this mod manage the multi world ? (not active everywhere)
     
  16. Offline

    LartTyler

    @Sich
    How do you mean manage? It will support multiworld, such as different zones or spawns for different worlds, however a players job will remain the same across each world. If that's not what you were asking, could you be more specific?
     
  17. Offline

    Sich

    I wan't to be able to disable the jobs restrictions on specific world like :
    - world 1 : dayjobs enabled
    - world 2 : dayjobs disabled
    - world 3 : dayjobs enabled
    - etc...

    Or through permissions like I sayed the last time... Then we can be able to have different jobs on different world.. Or no restrictions on specific world to.
    But if I can disable dayjobs on one world and enable it on an other world, then it will be enough for me.

    It's because I have a semi-rp world with jobs, and a freebuild world with no restrictions (close to a vanilla server).

    Sich
     
  18. Offline

    LartTyler

    @Sich
    I'm a bit hesitant to promise new features this release, as I haven't even had the Time to finish what I promised would be in 2.1. But I will definitely add that to my to do list, since that wouldnmost definitely be a good feature to have. If I don't put it on 2.1, you can expect to see it in 2.2.
     
  19. Offline

    Sich

    As I say before, I will only use your mod when the 1.9 will be out...Because I will reset all my server.
    There is no need to hurry for me :)
     
  20. Offline

    WhiteDragon

    well for part of this plugin you could just use the heroes plugin.
     
  21. Offline

    LartTyler

    @WhiteDragon
    Some of the features in this plugin are available in others, I know, but my goal was to create a single, "end all" role playing plugin that had all the features an RP admin would need in a single plugin, that was guaranteed to work, no trying to figure out compatibility, or why plugin A causes plugin B to crash.
     
  22. Offline

    WhiteDragon

    thats cool. just wanted to point to towards some info in case you needed it.
     
  23. Offline

    Werzieq

    Any news on when 2.1 is coming?
     
  24. Offline

    LartTyler

    @Werzieq
    It'll be out as soon as I can finish it... Things have been busy here, so I haven't had very much time to work on it. I'm hoping to have it out by the end of the weekend, but no promises.
     
  25. Offline

    Werzieq

    @LartTyler
    Tyt, I know what you mean :) I used to make SSP Mods around beta 1.3

    Yet my java is terrible :/ I'd try to help you, but U can't
     
  26. Offline

    LartTyler

    @Werzieq
    Well, I knew absolutely no Java before I started on DayJobs :p It was the project I started in order to learn Java, and it seems to have turned into something people like ^_^
     
  27. Offline

    Werzieq

    @LartTyler
    I'll try to look at your source and try to remember my Java, then I'll try to look at the mc code and try to make something for ya or help you out where you need for new features :)
     
  28. Offline

    PDemon

    @LartTyler would it be possible to have a "true/false" option for spawn and damage ? Aka turn it off totally within your super plugin
     
  29. Offline

    Sich

    Hello,

    Can you give some information about the name in the config file, and the item ID ?
    Like for craft wooden_planks I have to use WOOD in the config...

    I will just have the item list with their name in the config, and the minecraft item ID...


    And one more thing, it is possible to add one more condition : can burn ?
    For crafting glass, stone or thing like this...

    Thanks :)
     
  30. Offline

    LartTyler

    @Werzieq
    If you want to get in on helping develop this plugin, that would be fantastic! :) I'm working on my own here, and it's surprisingly difficult to keep up with everything :p If you're interested, just PM me and we can talk more

    @PDemon
    In 2.1 there will be a new config file called 'init.yml'. In it, you will be able to enable/disable each feature of the plugin as desired.

    @Sich
    I'm looking into adding a feature like that, but there are very few ways to catch smelt events. The few methods that exist that would let me work with such events are not user specific, and don't give me a way to restrict per job. I'm not giving up on a feature like that, I know there's a way to do it, but it'll most likely have to wait for version 2.2 at the earliest.

    EDIT:
    Also, Sich, I'm a bit confused about what you're asking. Are you asking about the correct item names? Or how to use their ID's? The plugin only supports their enum names that Bukkit uses, at the moment, a list of which can be found here.
     
  31. Offline

    PDemon

    @LartTyler Thank you :) and please do keep up the super good work :-D
     

Share This Page