WebAuctionPlus
WebAuctionPlus - eBay for Minecraft!
A minecraft/bukkit shop plugin for your website! This is a rewrite of the original WebAuction with many new features and improvements. I've made to many improvements to the code to list on one page. Many of my plans require big changes and a lot of new code. As with any new code, bugs are to be expected, so please bare with me and report any bugs you come across.
Note: It is strongly recommended you backup your database before using or updating this plugin. Some of the bug fixes and performance improvements I'm making require big changes to the database. The WebAuctionPlus plugin will convert and update the database automatically the first time it's run.
New virtual inventory MailBox has been added with the update of Minecraft 1.3 and WebAuctionPlus 1.1. When a player right clicks on a MailBox sign, it opens up their virtual mailbox inventory and locks their website account to prevent item dups. When they close their mailbox, it updates their inventory and unlocks their website account. NOTE: This feature is new and running single threaded. If you experience lag related to this, I can see what I can do to make it multi-threaded.
Requires: Vault - http://dev.bukkit.org/server-mods/vault/
Requires: Web server with PHP and MySQL
Optional: SignLink - http://dev.bukkit.org/server-mods/signlink/
A few improvements by lorenzop
- new ajax listing code (fast!)
- new virtual inventory mailbox
- all new web interface
- all new item deposit/withdraw code
- database connections are handled better
- connection pool limits can be set in config
- task update times are now configured in seconds
- tasks can be disabled by setting the update frequency to -1
- new announcement system
- added "/wa reload" and "/wa save" commands
- accounts can be created or passwords changed from the console
- multi-language support
To do
- server shops (unlimited stock improved)
- better support for vault economies
- custom description for items being sold
- wish list / auto sales
- track all wa signs to prevent unauthorized signs
Youtube Videos
Languages
If you'd like this plugin translated to another language, feel free to download the en.yml file from the link above, translate it to your own language, and send it to me.
Signs
WebAuctionPlus signs can be created by placing a sign with [WebAuction], [WebAuction+], or [wa] on the first line. Case doesn't matter, the plugin will fix it for you.
Note: you cannot use the deposit mailbox sign while in creative mode. this shouldn't ever be needed in the normal operation of the plugin, so as a general protection, it's always denied.
Note: withdraw mailbox signs can now have a quantity of stacks on the last line, or leave it blank for all mail.
SignLink
- %waTitle - items name
- %waPrice - price each
- %waSeller - sellers name
- %waType - Buy Now or Auction
Source Code
Development Builds
Development Builds can be found at the link below. Development builds aren't approved by the bukkit team and they might be buggy.
Commands
- /wa password <apassword> - Changes your Web Auction Plus account password, or creates an account if you don't have one. This command can also be used from console in the format: wa password <playername> <apassword> and short-hand aliases "pass" or "pw" can be used in place of "password". For example, /wa pw mypassword123
- /wa mailbox - Opens the WebAuction mailbox.
- /wa deposit <amount> - Deposit money into your Auction account.
- /wa withdraw <amount> - Withdraw money from your Auction account.
- /wa reload - This feature is currently broken and disabled. It will be working again soon.
- /wa update - Forces recent signs to update. Also updates SignLink signs.
- /wa version - Displays the current running version of Web Auction Plus.
Permission nodes
note: these may change at some point
- wa.use.mailbox (use mailbox sign)
- wa.use.deposit.money (use money deposit sign)
- wa.use.withdraw.money (use money withdraw sign)
- wa.use.command.mailbox (use the mailbox command)
- wa.use.command.deposit (use the deposit command)
- wa.use.command.withdraw (use the withdraw command)
- wa.announcer.receive (can see auto announcements)
- wa.password.create (can create a new account)
- wa.password.change (can change their password for an existing account)
- wa.canbuy (can buy from web auction)
- wa.cansell (can sell with web auction)
- wa.create.sign.mailbox (create mailbox sign)
- wa.create.sign.deposit (create money deposit sign)
- wa.create.sign.withdraw (create money withdraw sign)
- wa.create.sign.shout (create a new auction shout sign)
- wa.create.sign.recent (create a recent auction sign)
- wa.webadmin (user account is admin on the website)
- wa.remove (remove WA signs)
- wa.reload (reloads the WebAuctionPlus config)
How to Install
Join us and chat some time on our irc channel. #webauctionplus on esper.net webchat.esper.net
Plugin Usage
As I've said in comments, I don't agree with the mojang buyout. as much as I've enjoyed working on this plugin and want to see it continue, I'm no longer doing all the work. MarioG1 has stepped up to work on the plugin. I may still help somewhat if he wants, but I'm passing the torch to him as the lead. good luck, hope you write some good code and features.
@confuz3d Ok, but I dont understand one thing. If lets say lorenzo_p worked with RPGEssentails to get it working it shouldnt be a problem at all. Simply cuz it doesnt need to have a Block ID if it was working directly with RPGE...
Isnt that right? I dont see what you mean otherwise. I dont think lorenzo_p want to take that step to integrate with RPGEssentials but it sure cant be impossible to accomplish. Or am I missing something here?
I know the whole story with Spout how blocks work, and with what I know it shouldnt be a problem if you was working with the plugin that is handling all the custom blocks.
@SparvCraft
It wouldn't be possible to do that right now due to spout limitations. Mainly cuz of the way spout loads custom blocks.
@mumblerit
Exactly. Luckily none of those features have the highest amount of votes :)
Features such as banking and shops are already handled by other plugins, or multiple other plugins, which is why this plugins was so valuable when it came out, it added a new function. I would stay away from bogging it down with functions that can already be done.
One problem with the poll. The ones who has voted already cant do it again :( If they had voted before this was added ofc. not that to spam the poll ^^
Sounds great, I hope people will start voting for it then :)
@SparvCraft
ok, that's good then. I'll try it out some time. maybe I'll run it on my own server since spout isn't a requirement to log in. I'll have to do some testing, but it might not be very hard to do. it's half planned out in my head already :-)
I added spout/custom items to the poll at the top right of the page.
Oh, forgot to add this before. You need to get the spoutcraft launcher as its needed for any custom material. If you connect without the custom launcher all custom items will be shown as stone or flint.
It would be awsome if you want to try RPGEssentials, it does not require any client more than that you need the SpoutCraft launcher. But that is just a download away and then it will work for you. Its basicly the same as the normal Minecraft launcher just that it handles downloading custom textures for blocks etc.
The items on the website would be best if we could just put our custom images in a folder and direct them to each "custom entry" on the website. Dont really know how the custom stuff should be added to the site though.
@SparvCraft
does RpgEssentials require a client mod? or does spout handle the custom items or something? does it still let people connect if they don't have any client mods? I might try out spout on my server, but as I understand, it's not a requirement for people to connect and use the server like normal. I'll try out RpgEssentials on my server if it doesn't require a client mod.
I have 2 pages to finish in the web interface, that I can think of, then it should be ready. that should take a day or 2 yet, if I can get focused. then I'd like to do a day of testing on my own server before I release it. should be done sometime before the end of the week, I'm guessing. this update also adds a new settings system to the database. it's only used for currency prefixes so far, but it's in place to be used for customizable features. this would probably work for adding custom items too.
I have fixed the plugin to support Tim The Enchanter (unnatural enchantment levels), that was easy enough to do. I'm not sure yet what I'd have to change to support custom items. the item images for the website, I could probably include right with the install package, like how dynmap does for a few plugins.
haha, it hope they come soon *holding my thumbs*
When do you expect the release to be of the next version? So we could hammer those nasty bugs out for you :)
Also another thing, are you going to add the possibility to add custom items to the auctions? As my server is going to start using custom items now on our re-release of the server and we want to be able to sell custom items. Is this something you think you might add later on? We are going to do this through spout with either RPGessentials or MoreMaterials (probably it will go with RPGessentials. But as I have understood you are not to familiar with spout and custom stuff, right? Then it might not be to interesting for you :)
@SparvCraft
it sounds like a good idea, and not to hard to do. but I don't really have a use for it myself, and already have a lot on my plate. one day another dev will see how awesome this plugin is and offer to help :-)
along with all my new code and fixes, will probably come a bunch of new bugs. hopefully nothing big, but it's to be expected. this should be a good update if all goes well.
@lorenzo_p Yeah, your improvements sounds awsome indeed. It should work great until/if you want to add something else.
Haha, you might think its because of a cheap host, but actually Im on one of swedens best hosts (for companies that is) and they dont allow it due to security reasons. They did start to block outside connections due to DDOS attacks through the MySQL system, dont ask me how the attackers did it though ;)
I have to agree with you that it sounds an awful alot like a plugin on it own :P Haven't seen it around but that doesn't mean it dont exist ! I guess it might be a bit much to handle for this plugin alone. It would have been nice though with a plugin that does all this and other plugins can hook into it and use their connection for MySQL stuff they need sent to the sites MySQL.
@SparvCraft
most of what I've been working on is to speed things up and make way for future plans. I've merged all the queries to get item and auction lists into a single left join query each. this speeds things up phenomenally, and can easily add custom filters/searches just by adding an argument to a function.
the remote database issue you speak of, hm.. I think those people should get a better host! jk. I could pass all the queries from the web interface to the plugin and have that run them. that would fix the problem, but should be made multi-threaded in the plugin, and would need some security in place. actually, this sounds like it should be a plugin of its own. maybe one already exists?
One other thing that I got to think of about this is, if you decide to make a system with a MySQL database on the same host as the website host is to make the site run a small webserver all the time handling the connections for the MySQL.
This is because most webhosting companies dont allow connections to their database clusters from the outside leaving a server based script useless to many people including me :)
But it should be able to handle this if its done on the website fetching data and sending it direct to the MySQL. Again I dont know if its doable just an idea that came to my mind :)
Or the most basic thing must be to get all things stored on a MySQL on the server and the copy it with a MySQL handler each minute and then use it on the website :) (Note! This was just a silly little idea=) )
Nah, it might be a very tricky thing to do optional. But does it have to be optional? I think its a big thing to have and I am sure that it would be appreciated by many if it could speed up things.
And all the performance issues should be blown away with a system like this as it would only read the online storage when a page is loaded. Sure there would be a small delay perhaps before things goes from the server to be shown online, but it would make the website very fast and save your server connection many connections that very needed at times.
But its great if you have solved the performance part already. But as a future I think something more like this would help big servers. This should make it easy to create advanced searches etc. east for the website. And the delay for the website shouldnt be any higher than lets say a common CMS that uses a database.
I cant really give you a server under heavy load as we are currently remaking our server from the ground up.
Dont want to sound like Im selling you a cheap vacuum cleaner here, just that I think it would be a great system to build on even further than what we have said here.
@SparvCraft
I think it's very doable, just don't know if I could make it an optional feature easily. I have servers I can test on, but I don't have anything slow or under a lot of load, so I can't really tell how it would be on a not so fast server. someone did report 30 second page load times using a remote database and under 200 items. this next update I'm working on will fix those issues and speed it up a TON. it might be interesting to see what page load times are on that server once I finish this.
@lorenzo_p And as you said, the connection time would still be a problem. But if you have a busy server it would help a lot to have a "on site" db or similar to store the current amount and that will be the only thing talking to the server. So if you have 100 persons trying to connect you wont stress the server further and cause lag on the server and even more delay on the website. It would only talk to the much calmer storage on the site.
Thats just me thinking about it, but it could very well be "not doable" if reality.
This system must be a great way to handle online inventory aswell.
@lorenzo_p That sounds great, as you might have understood im not the code savvy one in our team, I just like to come up with solutions to different problems :)
So Im afraid I cant really help you with any code, but I would be happy to test it for you as soon as someone has made a bit of code for it.
@SparvCraft
yeah, something like that might work. I might just be to picky, but I'm still kinda worried about that connection time. could easily have it update once a minute or so, then always make an update when about to buy something, and remove the money from the players account right away.
you're close, it's something like a small web server. it's actually just a tcp server and transfers JSON data. very small bursts of data between the website and the plugin. it could be pretty fast. I'll have to do some testing and see how this works. something like this could be done for inventories too, but that would be a bit more data to transfer.
if someone would want to put together some test code for the above, it would help me out a lot.