DynamicEconomy
DynamicEconomy introduces your server to an economy where the prices constantly change based on the supply and demand of items. |
---|
Depends on [Vault] Vault Download Link |
---|
Download
Here's a video with an overview of some of DE's features, graciously made by WoopaGaming!
Plugin is in BETA - Meaning it is not as perfect as I would like as of yet. I am still constantly adding features. Once I'm happy with the feature list, it'll be released into v 1.0. Expect v1.0 to have Chest Shops.
Support Pages
There's a lot to understand about DynamicEconomy, so visit some of these helpful pages!
-
Features
- Buy and Sell items in a global shop.
- Price automatically adjusts based on supply and demand!
- Customizable price ceiling & floor!
- Prefix the chat output with anything you'd like!
- Choose whether price changes are announced globally, locally, or not at all!
- Includes a custom alias file, so you can customize the aliases you use (Add whatever word in the world to stand in for, say, diamond, so if you call /buy purpleelephant it can buy you diamond!) - Even better, it already includes hundreds of aliases.
- Add items to items.yml at your whim! Just make sure to add aliases for them in alias.yml!
- Sort items into different groups, and then limit users to only being able to purchase or sell items from particular groups!
- You choose the default amount sold/bought if the user leaves out the amount argument.
- Features 340 items: the most commonly traded and used, as well as non-obtainable items and potions!
- Also, you can sell and buy enchantments! Enchant your items with any enchantment at any level, and then sell items from an item instead of selling the entire item itself!
- Custom Items.yml puts you in control of item prices, minimums, maximums, descriptions, and everything else!
- Change the price, price floor, price ceiling, price velocity, and stock, all from in-game without a restart or reload!
- Custom in-game command allows you to reload the DynamicEconomy config.yml
- Features help screen of all commands, usages, and descriptions
- Assess which features of your config are on and off from in-game.
- Simple permissions: permission is the same as the command name.
- DynamicSign - Signs that show the price, stock, velocity, ceiling, or floor of any item in REAL TIME! You can also change the colors the sign displays in!
- Find out the durability of any item in your inventory, or your armor!
- When you sell a tool or armor, the price you receive is proportionate to how much of the durability was used up. If an item is 25% used up, a player will only get 75% of the total price when he sells it! Stops "Infinite tool" abuses.
- Update Checker & Downloader!
- Sell and buy EXP!
- Data values for all woods, wools, saplings, slabs, and inks!
- Option to use either set-amount item velocities, or a percent velocity.
- The option to turn on "Price-Decay-Over-Time", meaning, if items aren't purchased for a long time, their prices will decrease! This is fully customize-able to the last bit; customize percent of price decrease, what's considered a "long time", and how often to check for these items! Or disable it all-together!
- Also, in addition to price decay over time, there's also price inflation over time, so items that aren't sold for a while will have an increase in price! This encourages sale of those items!
- Multi-World support!
- /sell hand and /price hand for selling or checking price of the item you're holding!
- Ban items from in-game instantaneously!
- Customizable random events! Make your own wacky random events that change the prices of items!
- Customize standard DE messages! Up to 32 of them, currently!
- Use your own custom currency.
- Custom log.txt file personalizes logging of all user commands for very intuitive, useful, and helpful logs for Server admins. No need to fuss over confusing server logs and exceptions. (You can disable it, if you want, too!)
- Sales & Purchase Taxes!
- Set taxes from in-game!
- Extensive region control! Select your own 3D regions in which users can buy and sell items!
- Alternative commands for /buy and /sell, so you can use other popular economy plugins in conjunction!
- Basic location control, such as setting a minimum height from bedrock in order to access the economy.
- Loans! With custom payback times, minimum and maximum loans, as many loans as you'd like, and more!
- Dynamic Interest rates for loans!
- Ability to ban the sale OR purchase of certain items!
Planned Future Features
Optional Interest Rates/Taxes on purchases and sales[ Completed 2/6/2012 5:47 pm in v .5.1]Loans with Optional Interest Rates[ Completed 2/23/2012 11:31 pm in v .7]- Chest Shops!
Option to either set IR/Tax statically, or have it dynamically change based on economy conditions.[ Completed 2/25/2012 12:08 AM in v .7.2 ]Sale of tools will give amount appropriate to current durability (A tool almost worn out will receive a very little percent of total price when sold)[ Completed 1/6/2012 11:05 pm in v .2]Optional Random Events that change item prices[ Completed 3/4/2012 1:07 AM in v .8.0 ]Price decreases over time if item is not purchased[ Completed 2/26/2012 1:42 AM in v .7.6 ]Option to not allow some items in the market.[ Completed 2/25/2012 12:36 AM in v .7.3 ]- Option to lose money upon death
- Option to store money in a bank account
Option to log all transactions[ Completed 1/22/2012 8:41 pm in v .4]- Extended abuse prevention: Looking through the kinks to ensure the dynamics of the economy are not abused by players
Update Checker[ Completed 1/21/2012 2:12 pm in v .3.2]- Prevent you from buying if you do not have enough inventory space
Data Values (35:1 etc)[ Slight addition in v.5.3 ] [ Completed 2/25/2012 11:32 pm in v .7.5 ]Location-based controls[ Slight addition in v.5.2 ] [ Completed 2/19/2012 9:24 pm in v .6 ]- MySQL Databases
Alternative Commands[ Completed 2/7/2012 10:18 pm in v .5.2]Marquee Signs (Signs that show the price and info of a given item)[ Completed 3/18/2012 1:27 AM in v .8.1 ]EXP Transactions[ Completed 3/19/2012 12:44 am in v .8.3 ]- Region Flags
- Much much more!
Donation
Your donation helps my development of this plugin and possibly more!
https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=USZYP9PCHSVJW
Very good Plugin. I have some Ideers for the Future.
Is it Possible so save the Items, Prices, Stock etc in a, for example, mysql database? The reason why i'm asking is to show realtime Prices and Stock on a website. And i think its better for editing the Items.
Another thing is, that anyone can write a webshop for the items with ingame money and/or real money via PayPal for example. I think a optional setting to use a real database is a very good idea for other authors to write own plugins and extensions for your very very great plugin.
What did you think abount it?
If you want i can help you a little bit to set up and fill the database etc.
Another thing is the java error i had too for /price ITEMNAME
Maybe you should post a message to explain the right usage of the command.
Kind regards Damont
I am slightly confused.. Is this all command driven or can I fill the "server store" I just built with chests to hold items for sale using this plugin?
Also, how are local economies designated? << OH, thats for announcements :P
@ksafin
Sorry wasn't being clear enough haha. I mean data values as in wool colors, different slabs, different dyes, different tree logs, different saplings, etc. Orange wool is 35:1, red is 35:14, etc.
@babebudder
That's more of a client-side issue. I spent an hour or so making a price list for my server.
Here's my items list if that helps you http://pastebin.com/pY6eF58L
Also /price (item) doesn't seem to work. I get this error.
2012-01-15 21:33:50 [SEVERE] null org.bukkit.command.CommandException: Unhandled exception executing command 'price' in plugin DynamicEconomy v0.1 at org.bukkit.command.PluginCommand.execute(PluginCommand.java:42) at org.bukkit.command.SimpleCommandMap.dispatch(SimpleCommandMap.java:168) at org.bukkit.craftbukkit.CraftServer.dispatchCommand(CraftServer.java:382) at net.minecraft.server.NetServerHandler.handleCommand(NetServerHandler.java:768) at net.minecraft.server.NetServerHandler.chat(NetServerHandler.java:728) at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:721) at net.minecraft.server.Packet3Chat.a(Packet3Chat.java:33) at net.minecraft.server.NetworkManager.b(NetworkManager.java:226) at net.minecraft.server.NetServerHandler.a(NetServerHandler.java:96) at net.minecraft.server.NetworkListenThread.a(SourceFile:108) at net.minecraft.server.MinecraftServer.w(MinecraftServer.java:534) at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:432) at net.minecraft.server.ThreadServerApplication.run(SourceFile:465) Caused by: java.lang.ArrayIndexOutOfBoundsException: 1 at me.ksafin.DynamicEconomy.Item.getPrice(Item.java:427) at me.ksafin.DynamicEconomy.DynamicEconomyCommandExecutor.onCommand(DynamicEconomyCommandExecutor.java:64) at org.bukkit.command.PluginCommand.execute(PluginCommand.java:40) ... 12 more
You should change the default price of apple/goldenapples now that they're easier to get.
@enilsss
datavalues?
Thanks! :)
Any support for datavalues coming soon? Good work on fixing the /buy then /sell exploit.
The DynamicEconomy.customer permission doesn't seem to be working with permissionsEX? I've looked through the comments and it appears this has happened before. Will there be a fix incoming or is it something I have done wrong? Thanks in advance.
Sorry for the long wait guys, v .3 is OUT! :)
http://dev.bukkit.org/server-mods/dynamiceconomy-v-01/files/5-dynamic-economy-v-3/
Features the new transaction engine, as well as a modified price command to make the transition easier, and make transactions more understandable.
As always, your feedback and bug reports help me improve this mod, so please keep them coming.
Similarly, your support is the reason I keep going :)
Works on the latest bukkit DEV build for 1.1 by the way!
PS: How do you guys like the durability sale for percentage of the price feature? And /getdurability?
You need to add enchanted items!!!
@ksafin
I look forward to trying v.3.
Glad you guys like the idea!
I'll be implementing it and putting up v .3 soon, I've been busy with school and robotics :)
FYI, the price command will be modified to something like:
/price stone sell 100 This will tell you how much profit you will get by selling 100 stone
/price brick buy 56 This will tell you the cost of buying 56 brick
Because the calculations are so intensive, there's no way a user can figure out the cost, so I implemented this.
@ksafin
Perfect idea, that's how it should work!
@ksafin
I think that is a freaking BRILLIANT solution. I would happily allow Mr members to be a bit confused by the increased complexity in exchange for preventing economy abuse. After all, real life economies are complicated and confusing as hell!!
Thanks dude, I'll definitely be giving this a try when/if you implement that idea.
@ksafin
Cool! Cannot wait :-)
Guys, I'm working on v .2.1 and I think it'll be released today or tomorrow;
I (think) fixed permissions by using Vault perms, so you should have less or no problems with that.
I'm working on a new buy/sell system that's a little bit more complicated.
Instead of the price of the item increasing after your purchase, the price increases for every unit purchased; so if you buy 10 stone, the first stone is at say, $0.50, the second will increase by the velocity of stone so you're paying $0.51 for the second, and $0.52 for the third and so on. Similarly, when you sell the price decreases by the velocity each additional unit sold.
This completely prevents abuse, however it's more complicated for some users to understand.
So I'll be including a price command that takes an amount argument and determines the cost/sale.
Let me know what you think of this :)
@Dockozel
Very easy, it's just that they'll still be able to do it once the cooldown is over, so it won't work well if they buy a rarely-purchased item.
Very cool, I'm glad that works for you, I assume that means all the prices are static and don't change until you change them, right?
Glad you're using it though :)
I'm looking for some mathematical solution to this, I'll get it soon enough. I haven't been able to dedicate too much time recently because I have some robotics I'm doing on the site of plugin development and other work, but I'll be sure to work on this whenever I get the chance and do my best to deliver a good solution.
I'm aware that it is in beta. It is an awesome plugin! I've come up with a temporary solution/workaround though. For the time being: 1. I've set both velocity and spread to zero. 2. I've maintained the min/max values (customized for my server, of course) and occasionally I change the price of a given item directly. This has stabilized things a bit. Perhaps, a suggestion would be to put a transaction cool down time in place. 1. If a player buys item 1, player may not perform another transaction involving item 1 for a configurable amount of time. This would allow for other players to possibly affect the price of an item in between an individual's transactions. I'm no coder, so I don't know whether this would be easy or hard, or even work.
@enilsss
I've gone over that idea before and found a few faults hehe.
I haven't found the perfect solution yet, but I'm toying with a few ideas.
Ultimately, the idea will be that when you sell items, you will get slightly less than the amount times the price, because in a real world economy, when you buy something at the buy price, say $5, you can't sell it back for $5.
To simulate this, the spread variable in Items.yml will later be used to implement this.
Upon further thinking of my idea, it might be flawed in that someone can buy an odd item that no one else ever buys and sell them a day later. Also would not work well in very unpopulated servers.
You could perhaps make it so an item's price change occurs x minutes after it has been bought. X would be configurable in the config file. Making X be random between 2 set times would even be better!
I would personally set my server's price-change time to maybe around 2 hours after the item has been bought/sold. So say I bought 200 of an item now, then randomer99 sold 201 of those 2 minutes later. 2.5 hours later, I try to abuse the system by selling those 200 items cuz I'm a die-hard abuser like that, but it turns out that hey, someone else sold 201 of those and I ended up losing money. My investment in that item failed.
That's my idea at least, not sure if it's a plausible solution.