[ECON] WurkIt v1.2.0 - Let your players earn iConomy\BOSEconomy money for playing Minecraft!!  Version: 1.2.0 This plugin allows you to set a price to pay your players for every type of block that they could find in minecraft. Unlike other jobs plugins WurkIt gives you the ability to set everyone the same job meaning that everyone is on the same even ground to earn currency making for a more stable (all beit semi communist) economy. If you'd like to buy me a beer for staying up building you a plugin you can donate here: Because of Bukkit's BS adfly links ban that is the only way to support me, sorry. You can download WurkIt here: Download the Jar there Or the Zipped Jar here Requirements: - iconomy v5.0; or - BOSEconomy v0.6.2 or above only Optional: - Permissions v3.1.6 only any older versions will not work Compatible With: - ItemCraft v1.4.1 Tutorial Videos: Watching these videos is highly recommended for all admins who have WurkIt whether this is the first time you are installing or you've been on board since 0.2. These videos outline all of the old and new features and how to use them. The first two videos have admin and player stuff and is all the stuff that WurkIt can do in game. The last two videos are admin only videos and go through how to configure WurkIt and all the funky new features for admins. The total running time is 40 minutes but that is a damn sight quicker than it would take you to learn it all by reading, plus you get to listen to my velvet vocals if you watch the videos Spoiler (Move your mouse to the spoiler area to reveal the content) Show Spoiler Hide Spoiler Part 1 of the Player and Admin Tutorial Part 2 of the Player and Admin Tutorial Part 1 of the Admin configuration Tutorial and overview of new admin commands Part 2 of the Admin configuration Tutorial and overview of new admin commands New Features in this version: Spoiler (Move your mouse to the spoiler area to reveal the content) Show Spoiler Hide Spoiler - Wurk places have been put in! With Wurk places you can set an area in your server where if players break or place blocks in that area you will automatically pay them extra for working in that area. In this way you can pay players for helping you will projects in your server. - Heaps of bug fixes include, spelling mistakes in WurkIt items. Beds and Iron doors not working is fixed. Fixed the anti farming being broken. Every bug that was reported in the thread before the 1.2 annoucement has been fixed. - Updated to work with RB #1000. - WurkIt can only use Permissions 3.1.6 and BOSEconomy 0.6.2 or above now. - Added in commands to fill in your config with all blocks available in WurkIt and another to remove all 0 valued blocks. So when you want to add heaps of blocks at once you can all available blocks to your config, change the values of the ones you want to add and then run the strip out command to get rid of the left over blocks you don't want. - WurkItItems and your config will now always be ordered by minecraft ID even if you take them out of order in your config if you run a priceset then they will be reordered again. Features: Spoiler (Move your mouse to the spoiler area to reveal the content) Show Spoiler Hide Spoiler - Set a break and a place price for the blocks you want to and a default price for every other block your players may break. All blocks in 1.7.2 supported! - In game commands to edit your price list in the config and also check the prices you currently have set for placing and breaking blocks you are near in game. - Players can choose whether they are notified about their payday or not. - Choose if you want to display to the player that they have been paid for their recent activity on the server. Also you can set the exact message that they see when they get paid. - Choose the frequency of when your players get paid. Anything from once a second to once a whenever the hell you want (in seconds!) - Players can't just place a block and then break it again for money or vice versa. There is a break, placed buffer which keeps a rolling window of the blocks placed and broken so once a block is placed or broken on a square that square will not give any money until the buffer has been reset or when the window moves off the square. This is all configurable - Debug mode can be turned on to make sure that your players are always getting paid correctly. - Latest versions of BOSEconomy and iConomy support. - Permissions v3.1.6 only support. Older Versions will not work. - This plugin is compatible with ItemCraft v 1.4.1 Please note that is compatible but not supported! What this means is that it will run without problems but you will not be able to set prices for custom blocks they will all just get the default price. One thing to note however was that the way I made this compatible was to make it so if your server is an ItemCraft server then WurkIt's support for long grass, trap doors and dead bushes had to be taken away because currently they are not supported within ItemCraft. So if you have an ItemCraft server then these blocks will only use the default price along with all the other ItemCraft blocks. I have changed the plugin to regenerate its WurkItItems.txt every time it starts up now so if you are unsure of what blocks are supported based on your server just check that. Also if you have a non ItemCraft server you can still use long grass, trap doors and dead bushes if you do want to make your players gardeners! LOL! - Put in functionality to pay for placing blocks. This has all been built into the anti farming functionality so you can farm with placing blocks. - Edited all the commands to involve this placing functionality. - WurkIt will now automatically edit your config so that you have all the necessary settings for it not to break when upgraded. All you need to do is stop your server, delete the old Wurkit.jar put in the new one and restart Wurkit will automatically upgrade your config file without blowing away your current settings! Installation: Simply place the jar in your plugins folder and reload your config. This will create the WurkItConfig.yml, WurkItVersion.txt and the WurkItItems.txt files in the WurkIt folder. If you have previously installed versions of WurkIt then all you need to do is replace your .jar file with the new one and Wurkit will do all the work of rebuilding your config to the latest version. Configuration: WurkIt.config Spoiler (Move your mouse to the spoiler area to reveal the content) Show Spoiler Hide Spoiler Code: # The pricelist is what you pay the player for breaking or placing certain blocks # default is what the player is paid if you don't specify how much a certain block is # For example if you only have Stone and default setup in your price list then your players # will get your set break price everytime they break stone and if they break any other block they will get your default price # default is mandatory and must be in the config, if you do not want to use it then set it to zero but # if you remove it you will crash the plugin. # The format is: # <item_name>: # break: 0.0 # place: 0.0 # the item names can be found in the items WurkItItems.txt in the plugin folder but generally # it is just the grammatically correct item name so stone is "Stone" # all spaces are replaced with _'s and word after also starts with a capital so cobbelstone stairs is Cobblestone_Stairs # if you are unsure check the WurkItItems.txt but to use an item it must be written in the config exactly as it is # in the WurkItItems.txt and it is case-sensitive so if in your config you do this # sToNe: # break: 3.0 # place: 1.0 # it's not going to work and your stone will just get the default value. It must be "Stone" PriceList: default: break: 3.0 place: 1.0 # Set your message in the message field. Use the text $$ where you want to put your amount # your currency units are automatically picked up. Coloured messages are currently not supported # set enabled to false if you do not want to get the payday messages sent to your players. PaydayMessage: message: "It's payday! You earned $$" enabled: true # The PaydayInterval is how often your players get paid and it is in second. Only put integers (whole numbers) in here # the buffer size dictates how many blocks are recorded as being placed or broken and thus have no value if broken or palced at any one time # now this buffer lives in memory on your server so if you don't want to pwn your server I suggest you keep this modest # at a guess I'd say 1000 is reasonable for most servers without causing too much trouble but if you find you are getting # performance issues after installing this plugin then I'd say reduce the buffer size # by default the buffer runs a moving window so when it hits the max size the first entry is deleted to make room for the last one # the buffer is cleared by default whenever there is a payday but if you want to keep your rolling window constant then change # your clearBufferOnPayday value to false. Its true by default to give your poor server memory a break from time to time # rather than being at max capacity all the time but if you think your server can hack it then you can set it there # debugType takes three different values and is just used to make sure that your payday is firing correctly # you can use none, simple or verbose. Simple will tell only when the payday task fires and verbose # will show you when it fires and also how much each player is paid PaydayInterval: interval: 60 clearBufferOnPayday: true debugType: none bufferSize: 1000 # This section sets out the wurkplace variables. The first variable wurkPlaceTool is the id of the tool that is to be # used to mark out the wurkplaces when creating a wurkplace. The next for default variables set out what a wurkplace # information will be set to when a new wurk place is first created on your server. It is important # that the break and place type variables are set to either flat or percent in lower case and not mispelled. # WurkPlaceGreeting and Farewell are what is displayed to the player when they walk into or out of a wurkplace # wurkPlaceSaveInterval is how often (in seconds) wurk it should save the changes made to the wurkplaces that are in # memory at the moment down to your server for safe keeping. # entryExitRefreshRate is how often in server ticks wurk it should be checking if a player has entered or exited if you # are experiencing any lag after installing wurkit you might try increasing this so you check players postions less often # Finally debugType takes two options either none or simple. If this is set to simple then a message will be logged in your # server log every time a save event is fired. WurkPlaceSettings: wurkPlaceTool: 268 defaultBreakType: percent defaultBreakAmount: 10 defaultPlaceType: percent defaultPlaceAmount: 10 wurkPlaceGreeting: "You just entered a Wurk Place." wurkPlaceFarewell: "You just left a Wurk Place." wurkPlaceSaveInterval: 360 entryExitRefreshRate: 10 debugType: none There is a lot of documentation within auto generated config file but let me re-iterate here. The first section is: PriceList: This holds all the prices for the blocks that will be broken or placed by your players. You have to put them in the format of: <item_name>: break: 0.0 place: 0.0 This is where the <item_name> comes from the WurkItItems.txt and the price is a number with either one or two decimal places. The <item_name> must be the same as what is written in the WurkItItem.txt but is pretty intuitive basically you just start every new word with a capital letter and any space is replaced with a _ so a cobblestone stairs would be Cobblestone_Stairs. If you are ever in doubt then just consult the WurkItItem.txt for the correct case sensitivity and spelling. If you have misspelled or got the case-sensitivity wrong on an entry then it will get the default amount you have set rather than the price you have set for the block itself. default must feature somewhere as a block type. What default does is apply a price to any block that you have not applied a price to. If you don't want a price applied to EVERY block you haven't given a break or place price to then simply set default to 0.0. You must always have a default entry or the plugin will crash if you don't want to use it set it to zero. The second section is the PaydayMessage section. This contains two variables being message and enabled. The message is what you want to be displayed to the player when they get paid you can type any text here. If you want to have the amount to be paid displayed including the units of your iConomy currency put the symbols $$ so you could put "$$ earned today" and it would display "50 Dollars 20 Cents earned today" for example. The enabled property let's you dictate if you want to display to your players that they got paid or not if you have this set to false your players will not get the payday message. If you have the message disabled leave the message there as you may get unexpected results if you have no message and besides if you have it disabled it will not show anyway! The third section is the PaydayInterval section. The interval takes an integer (a whole number) describing how often in seconds you want to pay your players. Mind you the players will only get paid if they are online so if you set this to every 12 hours and they are not online when this ticks over on the server then they wont be paid so be good to your players when setting this. Do not set this interval to zero or you may find that the plugin acts unexpectedly. If you want to pay your players instantly then just set this to 1. The difference between instantly and after 1 second is barely noticeable but massively more reliable. If clearBufferOnPayday is set to true then the placed buffer is cleared down and started again after every payday. This is a good way to minimize the plugins memory foot print as you wont be constantly running at the full placed buffer size. If you have this set to false then you will a persistent moving placed block window. debugType accepts three different values: none, simple and verbose. None will obviously turn the debugging information off. Simple will place a line in the server logs every time the payday task fires successfully. Verbose will do the same as simple with the addition that it will also tell you how much it is paying the players that it pays. This is helpful if you aren't sure if your payday task is firing correctly or not or if you think it has stopped. The bufferSize refers to how many blocks you want to have in your moving window. The placed buffer keeps track of all the blocks placed by player if these blocks are broken again they do not give payment to the player this also works the other way around i.e. broken then placed. This stops Farming the same block for cash. This buffer is kept in memory so I strongly recommend you do not set this bazillion if you don't want to pwn your server. I have tested this on the default setting of 1000 and the memory footprint was minimal but I would say if you are going to increase this then do so in small intervals and observer what happens to your servers memory so that you don't chew through your RAM. 1000 is more than enough to avoid farming because a player would have to place a block, then guess when the 1000 blocks have been placed and then break it again. This functionality doesn't make farming impossible but it makes it impractical. WurkPlaceSettings holds all variables used by the wurk place functionality in WurkIt. Wurkplacetool is the minecraft id of the tool that you want to use to select the points that you want a new wurkplace to be built in. The next six variables are what the plugin uses as the settings for new wurk places that are created. It is important that for the Break and Place types that you spell this right or you may break wurkit. You must set this to either percent or flat in lower case. Percent means that players get paid a percentage of the amount they would normally get paid for breaking blocks that are in a wurkplace the percentage amount is held in the amount variables. Flat means that the players get paid a set amount for each block they break in a wurkplace once again the amount that is added in held in the amount variables. wurkPlaceSaveInterval is how often changes to wurkplaces are saved down to disk on the server. This is in seconds. This shouldn't really ever need to be changed. entryandexitrefresh is how often the player positions are checked to see if a player has just entered or exited a wurkplace. This is in server ticks so 10 is a half a second. Once again this shouldn't need to be changed but if you do change it then you should only increase it. You might do this if you are experiencing lag. Finally debugType takes either simple or none. Simple will log an entry in the server log every time the wurkplaces are saved down to disk. Commands: Spoiler (Move your mouse to the spoiler area to reveal the content) Show Spoiler Hide Spoiler /wurkit - Shows help for wurkit and the version info /wurkit - reload - Reloads the configuration file. /pricecheck <on: off> - Turns on and off the price check feature. When the price check feature is on any time you right click a block it will give you the price that you will be paid for breaking and for placing it. Just a tip here make sure you have an item such as a pickaxe in your hand when you right click and not a block. If you right click with a block in your hand your will still get a price check but you'll also place a block which is a bit annoying! Right clicking with an item in your hand avoids this. /paydaymessage <on: off> - Turns on and off the payday message on for yourself. This is a per player setting it will not affect the payday setting in the config file. /priceset <break: place> <newPrice> - This command will change your WurkItConfig.yml and will set the break or place price of the next block that you right click to <newPrice>. Obviously <newPrice> must be a number. /wurkplace create <newname> - This will create a new wurkplace with the <newname>. This will only work if you have two points selected with your wurkplace selection tool /wurkplace rename <oldname> <newname> - This will rename the wurkplace with <oldname> to <newname>. You can only do this if you own the wurk place or have the correct permissions to do so. /wurkplace delete <wurkplacename> - This will delete the wurkplace with the name <wurkplacename>. You can only do this if you own the wurkplace or have the correct permissions to do so. /wurkplace info - This will display information about the wurkplace you are currently standing in. /wurkplace set <wurkPlaceSetting> <value> - Use this command to set one of the wurk place settings for the wurk place you are currently standing in to /completewurkconfig - Use this command to rebuild your config adding in every block that you don't currently have in the config. The new blocks will have a zero break and place value /stripwurkconfig - Use this command to strip the current config of any blocks that have zero values against both their break and place values<value> Available wurk place settings: breakType - Can take either percent or flat. Percent to pay a percentage of the normal payment to the employees. Flat to pay them a flat rate for every block. breakAmount - The amount of percentage or flat rate to pay. placeType - Can take either percent or flat. Percent to pay a percentage of the normal payment to the employees. Flat to pay them a flat rate for every block. placeAmount - The amount of percentage or flat rate to pay. A quick word about pricecheck and payday message: Pricecheck defaults to off and payday message defaults to what ever is in the server config. Both of these settings are stored in memory for each user and are not saved down to file. So if you have a server that has the payday message turned on and you turn it off with the command this will only stay off during your current session. If you log off and log on again the payday message will turn itself back on. Also if the payday message is off in the config using the paydaymessage command will have no affect. Permissions Nodes: Code: ---Admin Permissions---- wurkit.admin.* - all admin commands wurkit.admin.priceset - /priceset <newPrice> wurkit.admin.reload - /wurkit -reload wurkit.admin.completeconf - /completewurkconfig wurkit.admin.stripconf - /stripwurkconfig wurkit.admin.wurkplaces.* - all wurk place admin commands wurkit.admin.wurkplaces.rename - allows the player to rename any wurkplace even if they don't own them wurkit.admin.wurkplaces.delete - allows the player to delete any wurkplace even if they don't own them wurkit.admin.wurkplaces.editvars - allows the player to edit the wurkplace settings for any wurk place even if they don't own it. ----Player Permissions------ wurkit.player.* - all player commands wurkit.player.pricecheck - /pricecheck <on:off> wurkit.player.paydaymessage - /paydaymessage <on:off> wurkit.player.allowpay - Players will only be paid by WurkIt if they have this permission wurkit.player.wurkplaces.* - all player wurk place commands wurkit.player.wurkplaces.create - /wurkplace create <wurkplacename> wurkit.player.wurkplaces.rename - /wurkplace rename <oldname> <newname> wurkit.player.wurkplaces.delete - /wurkplace delete <wurkplaceName> wurkit.player.wurkplaces.info - /wurkplace info wurkit.player.wurkplaces.editvars - /wurkplace set <wurkplacesetting> <value> Changelog: Spoiler (Move your mouse to the spoiler area to reveal the content) Show Spoiler Hide Spoiler v1.2.0 - Added Wurk places - Heaps of bug fixes including item spelling mistakes, bed and iron doors not working and anti farming not working. - Upgrade to RB 1000 and compatible with 1.7.3 - Upgraded to use Permissions 3.1.6 and new BOSEconomy. v1.1.1 - Fixed the show stopping bug that was invluded in v1.1.0 v1.1.0 [BUGGED] - Built in functionality to pay players for placing blocks. - Increased default buffer size after further optimizations. - Upgrade to RB 953 and made compatible with new blocks in 1.7.2. - Built better version control to help admins update their config file correctly. - Updated all commands to handle new placing functionality. v1.0.1 - OMFG new release of Bukkit RB only hours after v1.0 release. Now 935 compatible. - A few other little buglets I cleaned up whilst testing new build. v1.0 - Optimized code used around the placed block buffers in preparation for block placing functionality. - Optimized permissions and command related code. - Change the way that the payday task is scheduled to address payday task stopping periodically. - Added version control so that WurkIt wont blow away your config every time you upgrade WurkIt and it will add missing functionality when upgrading. - Updated to Bukkit RB. - Built in BOSEconomy support. - Added debugging in the PaydayInterval settings - Added the priceset function. v0.3 - Made Wurkit compatible with ItemCraft v1.4.1 - Made Wurkit support Permissions - Added /pricecheck and /paydaymessage commands v0.2 - Added the placed buffer to stop "farming" - Added the help and version info commands - Added necessary changes to config file for the user to setup all the new functionality v0.1 - Initial build Future Plans: - Upload source code to github for everyone. - More customization features for wurk places.