UltiMarket
UltiMarket
UltiMarket is a global Item market/shop plugin which automatically determines item prices based on supply and demand! UltiMarket acts as a globally accessible self-adjusting item shop on your server from which players can buy or sell almost any in-game item using in-game currency from any economy plugin!
As items are bought, their prices increase incrementally.
As items are sold, their prices decrease incrementally.
This means that over time, the prices of items on your server will adjust to reflect how much players want or don't want them and also how rare they are.
NEW in v1.1.4:
- /setprice command!
- Now you can set the prices of items in-game!
- Also tonnes of bug fixes xD
REQUIRES VAULT!
Vault: http://dev.bukkit.org/bukkit-plugins/vault/
Also requires an Economy plugin!
It really doesn't matter which economy plugin you use, I'm pretty sure they'll all work, but I have tested it with BOSEconomy, and I know for a fact that that works fine.
BOSEconomy: http://dev.bukkit.org/bukkit-plugins/boseconomy/
Below is an example of a typical purchase with UltiMarket:
Commands:
Player:
- /buy [item] [amount]
- Buys [amount] [item]s from UltiMarket!
- /sell [item] [amount]
- Sells [amount] [item]s to UltiMarket!
- /price [item]
- Checks the price of an item!
- /expensive
- Gives you a list of the most expensive items on the server! - (Has a small bug which causes some items not to appear for some reason.)
- /cheap
- Gives you a list of the least expensive items on the server!
- /sellall
- Sells all sellable items in your inventory!
Admin:
- /setprice [item] [price]
- Sets the price of [item] to [price]!
You can also use "hand" to buy, sell, check the price of, etc. the item that's in your hand, eg. /sell hand 23, or /buy hand 20, or /price hand, or /setprice hand 2.30.
Permissions:
Player:
- ultimarket.buy - Allows usage of /buy
- ultimarket.sell - Allows usage of /sell
- ultimarket.price - Allows usage of /price
- ultimarket.sellall - Allows usage of /sellall
Admin:
- ultimarket.setprice - Allows usage of /setprice
This can open up a whole new aspect to your server:
Imagine a player, who we'll call Bob, notices the price of bread is surprisingly high. This would probably be because many other players have been buying bread for a food source. Our player has his wits about him and realises the potential profitability of this. He can build a huge wheat farm, turn the wheat into bread, and sell it, making a big profit! With this new found money, he can buy those bookcases he needed to complete his enchanting room. Also, he can't sell bread and make a large profit forever, as the price will be decreasing as he sells more! All this has been brilliant for the players who were using bread as a food source, because now their food is cheaper to buy! Everybody wins!
Players can even use the plugin like a stock market! They can buy items when they're cheap and then sell them when their price has gone up!
I have also added random price drops and raises of randomly selected items to happen every so often! You can turn this on or off in the config and also adjust it.
UltiByte Plugin Review:
Você fala Português?
Clique na bandeira para um vídeo Português por AbsintoJ!
Config:
First, you should start and stop your server so the UltiMarket config generates, then you can go in and change the settings to whatever you wish. All the settings are explained within the config at the top :P
To-Do
- Imminent:
- Deny buying and selling if the player is in creative mode.
- Soon:
- Add "all" argument, so players can do, for example, /sell hand all
- Add config option to use Stock for items
- Add price floor and ceiling option for individual items (disabled by default)
- Future:
- Add ability to purchase and sell enchantments
- Add shop GUI
- Restructure plugin so it adds items based in what items exist in the current server rather than which items I have pre-programmed into it
- Add config option (disabled by default) to use % price changes
- Change plugin database to MySQL, so it runs faster
- Make an UltiMarket API
- Maybe?
- Allow prices to be passed to other plugins
- Make UltiMarket work with StrangeWeapons in some way, eg. buying/selling keys
I created this plugin because a plugin I used to really like, (DynaMark by smickles), unfortunately stopped working as Bukkit updated. I had been looking around for any plugins which resembled DynaMark in terms of its simplicity of usage and its mechanic, but could only find either broken or insanely complicated ones. About a year passed and by this time I had learned Java and the Bukkit API with the help of woutwoot. I then decided to make UltiMarket! I should make it clear that this is NOT an update to DynaMark. This is a completely new plugin who's main mechanic resembles what DynaMark's was.
Bugs? Feature requests? General comments?
Please leave a comment so I know! =D Any bugs I'll try to squash for future updates and feature requests are welcomed as long as they're sensible xD, i.e. not "MAEK IT GIV EVERYONE A MILLION DIAMONDS BECOZ LOL"
Thank you!
Feel free to post your IP below if you're using UltiMarket by the way (making sure you say that you're posting it because you're using UltiMarket), that way people can go on your server and try it out before they download it :D, also I might come and have a peek xD, my Minecraft name is Warby579 :P
Download Count
- 50 - Thank you! :D
- 100 - :O, that was quick!
- 500 - !!! :D :D
Another suggestion: How about a feature for minimum and maximum price an item can have due to random price changes? Say, a random event can't increase the price to more than double, nor decrease it below 20% of the initial price? Those should be configurable values, of course... I wouldn't mind if sales and purchases adjust the values higher, but these random events seem to make things nasty.
What I mean is that if an item gets a 50% increases multiple times with no price drops at all, the price will go insanely high. This isn't exactly a good thing in my configuration. At the moment, watch costs about 9 times it's initial price on my server... It's now worth about 35 gold ingots, which is quite absurd, don't you think? Or is it a Rolex perhaps? :P
Some chance from this have a SIGN SHOP?
@Bldin
I see what you mean, and adding it as an option would certainly make sense.
"Obviously the current fixed price change system has to stay in as so many users are used."
This isn't the main reason I want it to remain default, it's because it's easy to understand and works fine from what I can see.
"more potential exploiting in the current system if the random price changes are turned on."
This I think actually is a misunderstanding. Sometimes players will gain, sometimes players will lose. On average there will be 0 extra gain/loss, simply because it's random. The gains and losses on average equal out.
"My starting prices were set up to be as realistic as possible; for example, buying 8 diamonds would cost a little bit less than a finished diamond chest plate, basically to allow a "crafter" to gain a little bit of profit."
This should occur over time anyway, it shouldn't require any manual intervention to happen if it's left for long enough and there are enough players participating in the economy. People prefer to buy the finished article rather than have to make it by buying its constituents. Therefore, people are prepared to pay a little more for the finished article, and this should eventually reflect in its price as players buy and sell.
"if an expensive item such as the diamond chest plate suddenly gets a 50% price increase, current minuscule price changes will allow an insane amount of diamonds to be bought and chest plates to be sold before the price of those chest plates gets even back to the original level. Price of diamonds would of course go up in the process, but both of those prices will be changing so slowly that it allows really insane amounts of profit to be made."
This of course depends on the initial price of diamonds, and how much you have set the price change amount to be. But yes indeed. This was the intention. Players can sometimes (though rarely due to the randomness) get lucky (just like in the real world), and with that money they gain, they could buy many building materials to build bigger and better stuff! =D I understand your point though that the exploitability would be lessened by using % price changes, but it would, I s'pose, depend on the way you want to run your server's economy as to whether or not you'd want to temper players' gains. Personally I wouldn't want the player's apparent loot to be decreased, I see the fact that they'd sometimes, but rarely, gain a large loot by chance, as a catalyst for more activity on the server. More building, advancing, etc. though I understand many people would not want that, so that can be added as an optional feature.
That's exactly what I'm hoping for - more options. Obviously the current fixed price change system has to stay in as so many users are used to it. I'm a new user for this plugin, so I wasn't used to the old system and immediately thought if there was something that could be improved.
I'm actually seeing more potential exploiting in the current system if the random price changes are turned on. My starting prices were set up to be as realistic as possible; for example, buying 8 diamonds would cost a little bit less than a finished diamond chest plate, basically to allow a "crafter" to gain a little bit of profit.
Now, if an expensive item such as the diamond chest plate suddenly gets a 50% price increase, current minuscule price changes will allow an insane amount of diamonds to be bought and chest plates to be sold before the price of those chest plates gets even back to the original level. Price of diamonds would of course go up in the process, but both of those prices will be changing so slowly that it allows really insane amounts of profit to be made.
This is where the percentage based change would be very welcome, as it would even out the price back much quicker when the prices have such big differences, and thus reduce the possibility of "exploiting" in my type of configuration.
@Bldin
Your suggestion of adding a % feature which can be enabled seems sensible, and I understand why you'd want it. My only worry is it could possibly open up exploits, and that it could slightly overcomplicate an otherwise very simple to understand plugin.
I will add this to the to-do's on the page. It is quite possible I think, and probably fairly easy to add, but I would have to make sure there are no exploits. If I can make it so there are no exploits then I'd be more than happy to add it in, but only after some other problems with the plugin are fixed first. If/when I add it, it will be an optional feature which can be enabled and configured in the config but is disabled by default.
@skyref
I understand what you're saying, but it would require a complete restructure of the plugin to make it deal with numbers rather than Material IDs due to the way I have made it, and I don't have time to do this at the minute :/
Perhaps for version 3.0 or 4.0, but not soon I'm afraid, I just don't really have the time. I'll add it to the To-Do's :P
It seems that price changes are currently fixed values. This would work fine if everything was very cheap, but not when the items have huge price differences.
For example, changing the price of dirt that is priced at 0.50$ by default in my config by 0.01$ per sale or purchase is fine. However, changing the price of a diamond chest plate, which is priced at 4200$ by default in that config, by the same 0.01$ per sale or purchase feels kind of pointless.
Would it be possible to get percentage based price changes implemented? This would balance the system when users adjust their default pricing in a way I have decided to do it. As an example, 1% per sale would be quite a good value, I'd say. Random price changes are already based on percentage, and they work very nicely regardless of the original price. They make much more sense with expensive items than those minuscule changes.
Change you type of thinking, don't care what the item is it. Let sell/buy anything.
I don't expect from you adding price for all items, just let add more by users of plugin :) Or use like I say if item isn't on list add this item for price list - by script (but you must use number codes of item instead names, beginning price predefinied for others, for each work later as normal item). When you save items with codes instead of names plugin will be much more universal. Check only numbers of item, save numbers, and allow use predefinied names from list - that work CommandBook and allow take any item (eg. from FTB)- even if it wasn't designed to work with it. With names it not let specify type :1 or :2 or :3 etc. Items from others plugins work only with number codes or when you add it names in 1 file in WE.
GUI is much more to do than let use by plugins any code of item. Use for all items the same script for dynamic price, only save (and load if that item is on list) what you need for each new item. Price from default, available numers of items etc. (mayby how much players want sell, buy I don't know how you determine change price).
@skyref
I sort of understand what you mean. It probably would indeed be a good idea if I looked in the source code of WE, that would have to have some differentiation between items with extra data. It may indeed help me fix the problem.
Regarding mod items, the way I have made the plugin would just not allow for new items without me making code for them unfortunately. I'd have to make an FTB version or whatever, and that would take forever due to the number of items xD, I don't have the time to do that unfortunately.
Regarding a GUI, that is planned. When I get time to add that, and I've fixed the items with extra data problem, that's on the To-Do list :P
I will check if that supports 1.5.2, because I use this version, and probably not change so fast because of mods with forge.
Mayby it help: in CommandBook/WorldEdit you can give anything you want even :2 if it exist (WE can move it cut, paste) - mayby sk89q will able help you in more details. Use codes not names, allow all code (egzample: 64384:3, even not mentioned on config - just add them at this situation to price list, how much - with default price for new items) even which is not default in mc - plugin will allow them use other plugins for new items eg. from singleplayer mods working with forge. Change format of config file - one line for one item. You can temporaly let sell any of type, and buy what smb want, even don't know which type was selled. Mayby look at NEI GUI - it let take any item from game in any type which egzist, even from plugins adding new items. Mayby do overlay to NEI allowing take specifity numbers of item on changed dynamicaly price.
@Roshanbo82
Dragonegg is available in the config, but it seems you can't buy it. This is a bug, I'll fix it for 1.1.4.
Regarding the diamond equipment, I've just been on your server and it is indeed the case that some items aren't appearing in the /price top list. I have no idea why this is. Supposedly another bug, I'll do some tests on it.
Love this plugin just got it. One thing dragonegg is always in the top prices but isn't even listed in the config. Diamond equipment doesn't show in the top prices either. Here's my server IP 198.24.180.218:26861
@spazmonkey777
Ok, fixed all known bugs and uploaded new version for approval :D (Update: Now approved), now working on main problem.
Update: Managed to get some things working for the main problem, though some things still baffling me xD, will continue to work on it this week :P
@spazmonkey777
ETA, hmm...
I understand your cringe xD, the answer often has a huge air of ambiguity about it. The time it takes me to finish 1.2 really depends on how quickly I can figure out how to fix this big problem which is preventing me from allowing purchasing and selling of items with extra data, such as wood planks, saplings etc. That's the main improvement for 1.2. Once that's figured out though, the rest should be fairly easy.
If I had no college work, I can tell you that after I have figured out the main problem, it would probably take me somewhere between 3 days and a week to finish the rest depending on how addicted I am to GTA V xD. The time it takes me to figure out the main problem, and the college work, however, are unpredictable.
So really it will take me (Unknown amount of time) + (3 to 7 days) to complete 1.2, which, I realise, isn't much help xD
I'll get started on it again as soon as I fix the few bugs that have been discovered, which should only take me about 30 minutes now.
@UltiByte
Awesome, glad to hear it! I cringe to even ask this of a developer, but any ETA on 1.2? I only ask, because I was hoping to have my Hardmode Survival server open to my community by the end of the month, and one of my last things to do on this server is figure out what kind of economy to go with. Thanks for the quick response as well :)
@spazmonkey777
"Do you ever plan on having a feature to set stock in the global market?"
I just thought out how to do this in the code and actually I don't think it would be too hard. I'll see if I can add that for UM 1.2, but it will be optional and disabled by default. You'll just have to change one setting in the config when it's implemented to enable it :P
"when typing like /price top or /price bottom, the top and bottom lines has way too many dashes"
Ah xD, I thought I'd fixed that. Clearly hadn't xD
I'll get that fixed as soon as I can :P
I have been looking for a very simple dynamic market plugin for a while! HyperEconomy just had too many features, and was very tough to get used to.
One question though: Do you ever plan on having a feature to set stock in the global market? I run a survival server, and plan on opening up a new one soon, and want to use this plugin. But I don't want players to be able to just buy things generated out of thin air, I want them to only be able to buy items that were sold to the shop to start with.
Oh also, just a minor thing, when typing like /price top or /price bottom, the top and bottom lines has way too many dashes, and it is uneven when viewed in game lol. Just a minor thing, but annoying to see visually.
Otherwise, awesome plugin, and would love to use it if there can be some way to only buy stuff that is sold to the market. I know it's a big change, but it would be well worth it :)
@GavanandKali
Thanks on both counts :D
Do you already know Java? If not: http://docs.oracle.com/javase/tutorial/index.html
If so, you can look at code for other plugins that the developers have made open source, and get a feel for how to make plugins from those, but don't copy their code. Just use their code to understand the structure of Bukkit plugins. You can also look at this: http://wiki.bukkit.org/Plugin_Tutorial to help you understand. Then you can head off and make your own!
Then, if you're not sure how to do something when making your own, just Google it or ask any developers you know, there's almost always an answer on the Bukkit forums or the developers' brains :P
Wow I love this plugin, and I'm a fan of your channel! Is it possible for you to teach me how you created this plugin? I'd love to start coding plugins for bukkit! Thanks :D