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

    BioRage

    Booked Marked :)

    And how come your not a plugin developer if this is in releases?
     
  3. Offline

    LartTyler

    @PDemon
    No problem :) Glad you like my work

    @BioRage
    I have no idea :p Kinda been wondering that myself, but I figured it'll happen whenever it happens haha
     
  4. Offline

    BioRage

    You should msg a mod; because dev's get access to a dev section; for dev purposes.

    Also, Your plugin seems great; however, I'll have to look over it, because I use Spout Mainly, and in return I have custom weapons; so I wonder if it's possible to add custom crafting variables to restrict, for example a number would be "264:1035" ..

    Example Plugin:
    http://dev.bukkit.org/server-mods/ultraitems/

    Maybe spout would be something you would be interested in :)
     
  5. Offline

    LartTyler

    @BioRage
    I don't really feel like bugging anyone for something as trivial as a dev tag :p If I ever need access to the dev section, perhaps I will, but until then I'm happy just chugging along here haha

    Also, the plugin already uses Spout to enforce crafting and armor restrictions. Custom weapon restrictions wouldn't be possible at the moment since my plugin only recognizes the items listed in Bukkit's Material Enum, but I can look into adding support for item ID's as well if it's something you would like to see :) I have alot on my plate right now, I haven't even released an update in a month, but I will add it to my to do list.
     
  6. Offline

    BioRage

    Sounds good, It's exam season for most, so if you are in the same seasons, I understand.

    That would be great if you could add support for item ID's as a more "top" priority, for it would work well with up coming plugin's!

    Serenity
    MoarStuph
     
  7. Offline

    LartTyler

    @BioRage
    To be honest, I had no idea that was even possible yet. I had heard that Spout would be able to do something like that eventually, but I had idea that plugins like that were already in development/released. Thanks for pointing that out to me, I'll definitely add that to the top of my to do list :)
     
    BioRage likes this.
  8. Offline

    BioRage

    Spout has a lot more to offer! the possibilities are endless. No worries.

    That's what this community is for, open-source, sharing is caring.
     
  9. Offline

    Sich

    ok thanks for the answers... I will try to manage this.

    Thanks, exactly what I was searching :)
     
  10. Offline

    LartTyler

    @BioRage
    I knew Spout was capable of alot, that was why I turned to it when I wanted to solve my problem of armor and crafting restrictions. I can't wait until I have a bit more free time and I can really go over Spout's javadoc, I'm excited to see what I'll be able to do with it ^_^
     
    Monk3y and BioRage like this.
  11. Offline

    BioRage

    I'll keep the thread on a watch, I can't full use it until the custom stuff comes in :)

    Cheers & Good Luck. Talk to you in some time.
     
  12. Offline

    LartTyler

    @BioRage
    Thanks! And thanks again for pointing out the custom items through Spout, I probably would have missed it for a long time had you not said something :)
     
  13. Offline

    Sich

    Just for information, I am not sure, but I think that the mod levelcraft, the forgery addon manage the furnace.
    Perhaps could you find something usefull.

    Good luck :)
     
  14. Offline

    LartTyler

    @Sich
    Oh lord o_o You're right, that does hook into furnaces, but the code behind it is unbelievable! Ahahah I'd have to spend a while working on adding something like that, but I will definitely see what I can do :) It's something I know I will add, but when depends on how long it takes me to figure out a good way to hook into furnace events.
     
  15. Offline

    Monk3y

    you just got on my -watch list- :)
     
  16. Offline

    LartTyler

    @Monk3y
    Glad to hear it! :)

    To everyone,
    I've managed to find a bit of free time during this week, so you should be able to expect an update within the next two or three days :) Sorry for the long wait between versions, I'll do my best not to let that happen again. Thanks for all your interest and support!
     
  17. Offline

    Nick392

    Is it possible to have 1 or more classes that people can pick? Sorry if you put this in the op, must of missed it. But if it isn't possible any chance to add it?
     
  18. Offline

    LartTyler

    @Nick392
    I'm a bit confused as to what you're asking. Do you mean is it possible for a single user to have more then one job?
     
  19. Seems very interesting for RP, i'll test it ;)
     
  20. Offline

    Nick392

    Yes
     
  21. Offline

    LartTyler

    @Nick392
    At the moment it is not, but it has been requested. Since it'll require a pretty decent amount of work and a complete overhaul of the current job tracking system, it will take some time. I'm not sure when I'll add the feature, but it is planned, and will be implemented as soon as I have the time to make the necessary changes.
     
  22. Offline

    BioRage

    @LartTyler

    Do you think your plugin would work with Heroes?
     
  23. Offline

    LartTyler

    @BioRage
    I'm not sure, but I can't see why not. I can't guarantee anything, but if you do try and there are any errors, PM me with information and I'll see about adding some form of compatability. If it's an easy fix then I'd be happy to see what I can do about it.
     
  24. Offline

    BioRage

    Haha alright, I hope it works with 1337, testing it now!

    And than with heroes, hope for you to add custom id when you can bud!
     
  25. Offline

    LartTyler

    @BioRage
    I'm currently working on a build for 1337. I don't think I'll have time to add ID support, but we'll see. If not, I'll start work on it immediately after release, and should be finished in a day or two.

    Version 2.1 is out! This release features plenty of bug fixes, including a bug that allowed restricted items and weapons to be used on mobs and other entities, as well as the option to restrict what items each job class can smelt! See the change log for a full list of changes. Enjoy!

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

    dxwarlock

    which order would I place restirctions on items for an "ALL but X"
    such as

    Code:
        all:
            can-use:
            - ALL
            - - OBSIDIAN
    
    
    would that be correct? or is it like permissions where I need the not nodes first?
     
  27. Offline

    LartTyler

    @dxwarlock
    The order does not matter. If you were to enter:
    Code:
    can-place:
        - -OBSIDIAN
        - -TNT
        - ALL
    It would have the same effect as typing:
    Code:
    can-place:
        - ALL
        - -OBSIDIAN
        - -TNT
     
  28. Offline

    dxwarlock

    thank you sir! wanted to make sure before I started plugging away at the config I had it the right way!
     
  29. Offline

    LartTyler

    @dxwarlock
    You did indeed have it right :) happy to help! Let me know if you have any more problems!
     
  30. Offline

    PDemon

    06:38:20 [SEVERE] Could not pass event PLAYER_JOIN to DayJobs
    java.lang.NullPointerException
    at me.dbstudios.dayjobs.DayJobs.addJobPerms(DayJobs.java:176)
    at me.dbstudios.dayjobs.DJPlayerListener.onPlayerJoin(DJPlayerListener.j
    ava:57)
    at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.ja
    va:260)
    at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.jav
    a:58)
    at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.j
    ava:339)
    at net.minecraft.server.ServerConfigurationManager.c(ServerConfiguration
    Manager.java:129)
    at net.minecraft.server.NetLoginHandler.b(NetLoginHandler.java:121)
    at net.minecraft.server.NetLoginHandler.a(NetLoginHandler.java:39)
    at net.minecraft.server.NetworkListenThread.a(SourceFile:94)
    at net.minecraft.server.MinecraftServer.h(MinecraftServer.java:471)
    at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:374)
    at net.minecraft.server.ThreadServerApplication.run(SourceFile:417)

    i got this from the console ..using bukkit 1337 and permissionsbukkit 1.2 and spout 510

    EDIT: superpermbridge 1.2 aswell
     
  31. Offline

    LartTyler

    @PDemon
    I had thought I disabled that lol... -___- before the release, I was playing around with per-job permissions. I never finished though, and had thought I'd removed the extra code. It seems I was wrong :p I'll get a fix out for that as soon as possible, thank you for bringing that to my attention.

    Edit:
    This bug should not affect those using PermissionsEx or the default Op status. It seems to be caused solely by SuperPerms/PermissionsBukkit.
     

Share This Page