Broker

THE BROKER HAS RETURNED FOR 1.14!
Broker is a trading plugin that allows players to buy and sell items to other players via a MMORPG style broker. What I mean by that is, the seller lists that they have an item to sell and specifies their price, a buyer browses through the sales orders (which they can do using a very clever virtual chest based browsing system) to find something they want to buy. The buyer buys, the seller receives their money.
Alternatively, the Buyer lists a Buy Order stating what they want to buy and the maximum they are willing to pay, and when a players has the item to sell, they can list it and the two orders are automatically matched up to each other!
This method will allow multiple players to list multiple items in ONE shop, where the buyer gets an easy to use interface for buying. This shop can be accessed either via commands or by right-clicking a [Broker] sign.
Features
- Easy Selling and Buying of items
- Sell the item in your hand and set your price with one easy command
- Express your interest in buying an item using Buy Orders
- List admin store orders for infinite supply
- Works with item economies by allowing multiple items to be listed for one price (1 Emerald for 16 items)
- Visual interface for buying from the broker
- Optional 'sales tax' charged to seller on completion of a sale (fixed rate or percentage)
- Option to pay taxes to a player or list of players
- Optional listing limit to avoid people using the broker for extra storage
- Use commands or create a [Broker] sign to access the store
- Automatically sell the item in your hand at the highest Buy Order price using an Auto Sell sign!
- Trade with Villagers or directly with other players by crouching and Right-Clicking them
- Use personal broker stores to list only items listed by one player (try a broker sign with a player's name in line 4)
- Easy setup and configuration
- NO SPOUT, NO MYSQL !!
It's difficult to describe the concept in detail so here's a video which helps:
(NOTE this video is based on a pre-release version and some aspects have changed)
Interface
By request, I've uploaded a screenshot of the buying interface. The paper on the bottom row of the chest inventory indicates the number of pages. Click them to change page. Click an item to see listed sell orders.
Requirements
This plugin requires Vault and some form of economy plugin.
Installation and Configuration
- Drop the JAR in your plugins folder
- Restart your server/plugins
- Edit the newly created config.yml (instructions in the file)
- Restart your server
- Have fun (Important!)
Suggestions
If you have a suggestion, now's the time to add it
Donations
If you like this plugin (or any of my other plugins) and want me to continue putting hard work into maintaining this standard, PLEASE consider donating using the donate button in the top right corner. If nothing else, this will help me justify to my wife why I spend so much time staring at code! :)
Other Projects
Have a look at some of my Other Projects
-
View User Profile
-
Send Message
Posted May 12, 2013@ellbristow
I didnt realise the two click feature worked like that. That is definitely how it should work for anything that has multiple entries. The first "Header" item doesnt have any info on it, but once you get inside the folder to see the actual deals, those will have the info when hovered over.
Dont bother changing the order of the command actually, this can easily be done with MyCommand or another command shortener.
So for selling/buying there are two methods.
1. Having it all in one command. Buyers type /buy [Item] [Quantity] [Price]. This is simple for experienced users, but new players can struggle. This is also the method for users selling to buyers currently.
2. Having a step by step question system. Buyers type /buy. It brings up the creative mode item selection, they select the item, it asks them how many they want to buy and at what price. Similarly, sellers type /sell and it brings up the available buy orders which they click and get asked how many they want to sell. Players just answer with regular chat.
Personally I think the best way is to make a blend. Have both methods available so people who want the fastest possible method can get it, and players who want a simple method can get it. Basically, the player attempts to type the whole /broker buy command with all the parameters. If they leave out a paremeter, or make an error on one, it goes to the simple method. So if they type "/broker buy" (leaving out all the parameters) it goes through the whole simple method. If they type "/broker buy gold_ingot", it just asks them the quantity and price. If they type "/broker buy ingotofgold 10 20", it brings them to the item selection menu and doesnt ask them for the price and quantity. With buy, most players would eventually move towards the full command. With /sell however, I think people would stick more towards the simple option so they can see who they are buying from.
Lastly, if this were to be implemented, there would need to be one last screen added to the end of any session. A confirmation screen that tells them what item they are buying/selling, the price, and the quanity. Then the player just types yes or no. This is to ensure players dont accidentally buy/sell something they dont want to.
This is the perfect blend of simplicity and efficiency. The trouble is though, that this is geared towards a buy oriented system. With the system above, players cannot buy from sell orders, and players cannot put up sell orders. For the above method to work, we would need to seperate the two systems. Personally I think this makes sense anyway because it can be confusing to players to have the same command be doing very different things. The idea of posting up a buy order, and buying from a sell order are different. Perhapse we add a new syntax. /broker buy and /broker sell are for players that want to interact with a pre-existing order. So a player would type /broker sell to see the available buy orders and sell to them. Then, "/broker create buy" and "/broker create sell" are for players who want to create orders. So for creating a buy order, the new syntax would be "/broker create buy [Item Name:ID{:data}] [Quantity] [Max Price Each]". This would still be compatible with the system layed out above. Finally there is "/broker buy help", "/broker buy create help" and the same two for sell. These give all the parameters so players know what to type.
This system is very complex from a coding standpoint, which is a major drawback. It may lead to so much bloat that it isnt worth it. If however it could be done without greatly increasing memory usage and decreasing speed, it would definitely be worth it. True, players on servers using Broker already will have to get used to a new system, but once they do, they will be much happier. It will be faster and easier for everyone. I know it is asking a lot to throw such a difficult job at you, but I really think this would make the plugin the best it can be.
-
View User Profile
-
Send Message
Posted May 12, 2013@gustebeast
Hi gustebeat. Thanks for the feedback. This should really have gone in a suggestion ticket but never mind.
The issue with trying to use a one click system is when items have variations.... for example, on the first screen you might click a sword, then it shows multiple different swords, enchanted, damaged, different prices, named etc. To show all the variations on the first screen would make it far too cluttered. I realise that when you are buying/selling something like stone or dirt there will be no variations.... so I may take a look at shortening the process in cases where there is only one type of product listed and only one price. However if there are multiple listings with different variations or at different prices etc the second screen is still needed. I will indeed look into this.
I will also look into adding Qty Available/Requested to the info presented in the chat window.
Book cancel button... I'll definitely look into this, naming the book is a great idea now it's possible, I'll rename the paper for the page numbers too... I agree that now they've changed the portal texture it doesn't look quite right i might just leave them empty unless there are extra pages.
As far as changing the command order, it's possible... but I'm not sure if I want to do that now, since it would mean everyone who currently uses the plugin would have to reteach their users how to use it.
Permissions for buy and sell commands are already there: broker.commands.buy broker.commands.buy.orders broker.commands.sell boroker.commands.sell.orders
The item names for /broker buy are all customisable. If you notice, in the Broker folder on your server there is a itemNames.yml file folder which you can customise to your hearts content to provide for any weird names your users might try to type in for their items. There are plenty of examples already provided. for example /broker buy green_dye 64 1 works fine with the default setup.
Thanks again for the support. Let me know if you have any other comments... but perhaps next time send in your suggestion as a ticket.
-
View User Profile
-
Send Message
Posted May 8, 2013The system is very good, but it could be better.
The "/broker sell" system (players looking to sell to existing buy orders).
The first page is fine. Shows all the item types available for selling.
When someone clicks on an item, things can get confusing. It does a good job of telling you how many of the item you can buy, but you get no indication of the price. In fact you need to click a second time to get the window to close out and give you a price. Much easier and faster would be to reduce this to the one click. When you click on an item, it should give you all the information you need. Basically you just add a new text line for the item. In gray font (similar to the enchantment display on a tool) it says "$<price> Each". I have seen many plugins make selection screens like yours using this technique, and for this plugin it would improve the selling process drastically.
Then, they have all the info they need, they simply click the item again. A chat prompts them "How many would you like to sell?". They just type a number and they are done. Easy. The current system makes them type another command and read several lines of text. The only text lines in my system are "How many do you want to buy?" and the player name of the person requesting the item.
Also, the book cancel button should just be renamed to "Cancel". Easier for players to understand. And finally you may want to change the "null" items in the bottom row. They changed the texture for ender portal so it looks a bit intrusive now.
Im not sure if this is legitimatly the better way to do it or if it is just my personal preference, but either way, I would flip around the /broker buy command. Currently it is "/broker buy [Item Name:ID{:data}] [Quantity] [Max Price Each]". Here is what I think to be the intuitive format. "/broker buy [Quantity] [Item Name] [Price]". I think this because when you say it in words you say "I want to buy 5 logs for 3$ each" not "I want to buy logs 5 for 3$ each".
Is there any way you could either have a permission or config node to disable either the placing of buy or sell orders? For example if you wanted to use the plugin as a standard auction plugin, you would disable buy orders and people would only be able to place sell orders, and buy from other sell orders. Contrarily, you could disable sell orders and just have players put up buy orders when they need something.
The only other thing missing is a good way to do the "/broker buy [Item Name:ID{:data}] [Quantity] [Max Price Each]" command. The issue with it currently is that the player needs to have the right item name which is not always easy. This is especially true for more complicated items like dyes and staircases. What if the plugin instead made a mock creative mode inventory. Basically it would be a large inventory window with all the items in it. Then in the bottom right and left corners there are "Back" and "Next" buttons to advance the window. If you click the next button it brings you to another slide of items. The players simply clicks the item they want to buy. You could also put the most used items like gold, diamond, and wood on the first page so most players wouldnt even need to switch. This may be overcomplicated, but if you like the idea it may be worth adding.
Well those are my suggestions. Once again I think the plugin is very well made, and these are just the few things that I thought could be improved. If these changes were made, I think the plugin would be preety much ideal.
-
View User Profile
-
Send Message
Posted May 5, 2013v1.6.2 has just been uploaded, with a few much needed fixes (including one for the ebean error some people were getting)
I have started the language file but it's not complete... at this stage it was mor important to get a bug-fixed version out. Watch this space for updates on that front.
-
View User Profile
-
Send Message
Posted Apr 21, 2013Where is the link for 1.5.1?
-
View User Profile
-
Send Message
Posted Apr 8, 2013No news for this plugin ?
-
View User Profile
-
Send Message
Posted Mar 18, 2013Thanks for your plugin :) Is it possible to make a language configuration file ? I would like to translate your plugin in french, I'll could send it to you if you want. :)
-
View User Profile
-
Send Message
Posted Mar 17, 2013As for updating to 1.5, will you update the item names soon or should we edit them ourselves? EDIT: Never mind. I noticed that you had already done so :)
-
View User Profile
-
Send Message
Posted Mar 16, 2013"Added: Buy Orders, Auto Sell and Price Check signs!"
Interesting, but how do they look like?
The documentation needs some love ;-)
-
View User Profile
-
Send Message
Posted Mar 14, 2013@AlmostLuckyDucky
Yes, a fix for the MCPC issue would be nice.
-
View User Profile
-
Send Message
Posted Mar 14, 2013been waited for a fix but this problem is still showing in v1.6.1
http://pastebin.com/43YNyQwV
i did add a ticket as requested and was hoping it would be looked at and sorted as thi sis a handy plugin but has had to be removed again as it seems to be a problem with a MCPC bukkit core instead of a Craftbukkit jar
-
View User Profile
-
Send Message
Posted Mar 13, 2013@ellbristow
But that would remove both the cool GUI of the plugin, and also the nice personalization that players get from using it. Just using a sale sign makes the process feel just like /sell from the sellers perspective. As for the custom titles for items, it's not a necessity, although from what I have heard from other developers it isnt that difficult. What parts about the idea would be difficult?
-
View User Profile
-
Send Message
Posted Mar 13, 2013@gustebeast
Thanks for the feedback. All suggestions are welcome.
Unfortunately implementing this the way you have suggested would be a pig of a task, however you might be able to achieve something similar already.
Don't give anyone the permission node to use /broker sell ... then user the new [AutoSell] and [PriceCheck] signs I added in 1.6.0 which will only allow a player to sell if someone has listed a Buy order!
-
View User Profile
-
Send Message
Posted Mar 13, 2013@ellbristow
ellbristow, can you check out my post below? http://dev.bukkit.org/server-mods/broker/#c136
-
View User Profile
-
Send Message
Posted Mar 12, 2013All good, thanks a lot for the fix! We were going nuts with darn players having millions everywhere!
-
View User Profile
-
Send Message
Posted Mar 12, 2013v1.6.1 has just been uploaded which fixes the massive dupe bug where sellers were getting way too much money!
Should have picked up on it sooner!
Thanks go to myiume for helping me track this one down.
-
View User Profile
-
Send Message
Posted Mar 11, 2013Hm .. maybe the best thing todo is to get the source code and disable listing more than 1 item per price ...
-
View User Profile
-
Send Message
Posted Mar 11, 2013any sign of a fixed version for use with MCPC bukkit builds??
-
View User Profile
-
Send Message
Posted Mar 5, 2013Expecting a v1.6.1 release soon ...
I've disabled broker on my server until that is fixed :/
-
View User Profile
-
Send Message
Posted Mar 4, 2013Here is what I personally would like to see.
First off I would like to be able to just use the buy feature and have selling only work for existing buy orders. The reason I say this is because almost always in any minecraft economy there are way more sellers than buyers so the shops get flooded with things like cobble and dirt. It's much better (in my opinion) to do it from the buyer perspective where the buyers put up what they want, and the sellers give it to them. Basically, players would type /broker buy dirt 5 2 to put up the request. Then anyone else could type /broker sell, and bring up the selling menu. They would see the dirt there, and they could sell that dirt to the player using the clicking method you have in place now. For some reason the current way it works is that the player selling has to type a command. The only reason that selling couldnt just be a "how many do you want to sell" sort of question is for the price, but how many people honestly are going to sell items for less than they could be getting. The price should just be what the buyer requested. So the seller clicks the dirt block, clicks it again to confirm, then they get a chat where they can type how many they want to sell. Lastly, I just want to emphasize that I do not suggest you remove any features. Other people may like the seller stance better than the buyer one, I understand that, I just think that this should be an option.
Also, you should create labels for the menue items. For example the book shouldnt say "book" when you hover over it. It should say "Cancel", this would make the process much easier for beginners.
Lastly, I feel the <Broker> tag you added to all the GUI's doesnt look that great. I would rather it just say 'Buy' or maybe 'Broker'.