Get an Epic Experience with Premium

Minecraft Spotlight - floAuction

Welcome to the latest Minecraft Spotlight! In this week's issue we will be covering "floAuction", a plugin created by incredinex.

While trading related plugins are available in large quantities, most of them focus on selling items by setting up a shop. This plugin however, allows players to hold an auction to sell their items to the highest bidder!

You can easily start your own auction by following these simple steps:

  • Hold the item you want to sell
  • Execute the following command: "/auction start (amount) (price) (increase) (time)"
  • Alternatively, you can use the basic "/auction start" command to start an auction using predetermined values

When the command has been executed, the auction will be announced to all players. After which they will be able to bid on it. During the auction, the item on offer will be reserved until the auction is finished and the same applies to the bidding players' money. When the auction ends without any bids the item will be returned to the owner and if more than one player has bid on an item, those who lose the auction will get their money back as well.

Bidding on auctions is also done by using commands. Players can either increase the bid by the default minimum or by an amount they choose themselves, of which the latter has to be higher than the default increase.

  • /bid - raises the bid by the minimum increment
  • /bid (amount) - raises the current bid by the specified value

Once the time is up, the auctioned item will be transferred to the winner's inventory. If the winner suddenly gets disconnected from the server before the end of the auction, the item will be kept in reserve until the winner logs back into the game.

Similarly to eBay, players also have the option to place bids automatically; a feature that will come in handy when they are busy with something else. All they have to do to start bidding automatically is executing the same command, specifying both their first bid and their maximum bid. When other players raise the bid, they will immediately get outbid until your maximum bid has been reached.

  • /bid (amount) (maximum bid) - raises the current bid by the specified amount, increases your bid automatically upon getting outbid until reaching maximum bid

As usual, many of the plugin's aspects can be customized by editing the included config file. Some of these features can even be disabled conpletely, allowing you to fit the plugin to your needs easily. These features include:

  • Default starting bid, increment and time
  • Allow damaged items or not
  • Auction queue
  • Collecting taxes for holding auctions
  • ..,and much more!

The latest version of this plugin includes a number of features that were not covered in this spotlight, but are still worth mentioning: such as sealed bidding and silent bidding. With sealed bidding, nobody knows what everyone else is bidding, until an announcement is displayed at the end of the auction. And when bidding silently, players will only get notified once they get outbid.

floAuction is a worthy alternative to existing trading plugins. Combining the plugin with other shop plugins will offer more variety in trading possibilities, satisfying more players as a result. Players can easily hold auctions to sell their items to the highest bidder. Both setting up the auctions and bidding are done by using commands. These commands, especially the most basic ones, are pretty straight forward. An explanation of each command can be looked up within the game if necessary. Server owners are also able to customize many features of the plugin to suit their needs.

We also managed to hold an interview with incredinex, the creator of floAuction. Check it out below to learn more about the development process behind this plugin!

What inspired you to start this project?
First off, I'd like to thank you guys for everything you do for Minecraft; you're a great unifying aspect to this worldwide community of millions.  And thanks for this spotlight; it was a complete surprise and I'm very excited about all this!

floAuction came about effectively as a necessity.  About the time Rob took over iAuction, but before he really got the hang of it, we needed bugs fixed.  I forked off and one thing led to another; I started adding ideas of my own, some from other players on the server and even some on the iAuction page itself.  By this point, I wanted to share all of this new intellectual wealth outside of Aerial Heights, the server I play on, but Bukkit's terms disallowed forks.  So I rewrote the entire thing from scratch, and that gave me an opportunity to reorganize it to allow additional improvements I had in my idea list.  This rewrite is what became floAuction 2, more stable and more flexible than the original iAuction fork I called floAuction. 

The name came from the standard I used at that time of prefixing my programs and libraries with "flo" because my normal online moniker is "flobi."  It was taken on this server, which is why I'm using an old chat handle I use to use, "incredinex."  flobi (pronounced like "flowbee") is also my real life nickname that many of my friends and coworkers actually call me. 

How was your plugin received by the community at its first public release?
It had a small and unassuming start, but the community was encouraging. They had been looking forward to it.  The atmosphere was very positive, especially on Aerial Heights which had the pleasure of enduring the torture of my pre-release builds. 

Roughly how much time did it take to finish the first working version of floAuction?
It took over a month to get it to a point where I would call it "working" with basic auction functionality.  I took my time with this for a number of reasons. 

This was my first plugin, and except the bit I learned while tinkering with floAuction 1, I had no experience with Java.  It was definitely a learning experience with lots of tutorials and googling. 

But I really wanted to do it right, well, as right as I could with my limited knowledge of Java.  There were a number of core improvements I wanted to improve versatility and reliability. 

Did you come across any problems during development and, if any, how did you solve them?
There were 2 big hurdles I had to face when developing this.

The first big issue I came across was that there is no way to get friendly names of items. The best advice at the time was to hardcode all the item names, or worse, convert the ENUM to a string which looked terrible, but I wanted something more versatile, so I wrote another plugin, WhatIsIt, that could be reused by other developers facing the same dilemma, though I don't know of any who actually took advantage of this. WhatIsIt uses a yml file to store the names, so it should be fully language compatible and generally doesn't need updates except to the name list itself when new items are added. Mentally, I suppose I still consider this a part of floAuction, but it's there for anyone to access. Today, Vault offers something similar, but even that is just moving the hardcoded list into some other plugin which has to be updated each time Minecraft gets new items.

The other big issue actually came within a week of the initial release. The server I played on then, and still do, decided to entirely remove the currency plugin...ironically, at my own recommendation. So, how do you auction if there's no money? I decided to let people pay with gold from their inventory if there was no currency plugin installed (there were no emeralds in Minecraft yet) and we were able to keep the auction software despite having no economy. Later, that aspect was split into it's own plugin, GoldIsMoney (now, a Vault supported currency plugin).

So the biggest two problems became solutions other people can use. I'm happy about that. While they are separate plugins, they are deeply emotionally tied to floAuction.

What was your favourite development tool for this project?
Eclipse practically writes half of my code for me. Being someone who didn't really know Java, this is awesome. Sincerely, it's the best IDE I've ever used of any language.

Have you learned anything new from creating this plugin?
I learned a lot about Java doing this. When I started tweaking iAuction way back then, I didn't know any Java. This isn't the first time I've build auction software in a language I didn't know. Back in the 90's, I built an auction website for a local non-profit in PERL which I didn't know when starting that project.

What stage of floAuction's development process did you enjoy most?
Unlike at my day-job at Powerserve where we have very defined development stages, when I'm developing for pleasure, like with floAuction, my development process is a bit more organic than I imagine most are.  There's not a real distinction between planning, developing and testing.  It feels more like a conversation with the computer to me.  It's an intellectual intercourse which spawns a new entity I feel very emotionally attached to.  I feel proud of it in an almost fatherly way.  I don't know if I even enjoy teaching it the mathematics of how to calculate hidden max bids, or teaching it to remember to give people's items back if they're not logged in when the auction ends, but I feel such satisfaction when it finally understands and remembers. 

And what is your favourite aspect of the plugin itself?
My favorite aspect is the customizability of floAuction. It has nearly all the features of all the other chat based auction plugins combined, plus protections and features none of the other ones have, but nearly all of the features can be toggled in the configuration file. It's an ironic favorite because on Aerial Heights, we use all the default options. But I really enjoy that people can turn off and on most things in the plugin.

I think my users like this too because when someone requests a feature, maybe not all of floAuction users want this feature, so when they download an update to floAuction, they can be assured that they're not forced to use the new feature. This goes all the way back to the beginning too; floAuction 2 uses completely different mathematics for the hidden max bid than iAuction, but even to today there's a configuration toggle to go all the way back and use that (or the mathematical equivalent anyways).

Are you working on any other plugins or updates at the moment?
I am currently rebuilding floAuction from scratch again for version 3.  One of the ideas I intended to build into floAuction 2 from the beginning didn't turn out quite right.  I initially wanted to have multiple auctions simultaneously running in different areas of the map or in different chat channels.  The work I did in that area did help when I added queuing of auctions, but proved not quite sufficient to handle the grander idea. 

This rebuild has actually been going slower than the initial floAuction 2 build because of a heavier professional workload, but also because I'm trying to build this in a more modular way so I can easily expand into some newer ideas I've had, like integrating with other region plugins like Towny and WorldGuard as well as a web interface and/or remote API

I'm also trying to get some sort of chest or enderchest integration for GoldIsMoney and trying to get head block information for WhatIsIt. 

In addition to Minecraft, have you ever released any plugins, mods or maps for other games?
I have made a number of things for The Sims, no plugins or mods there though. I created a Civilization 1 tileset for Civilization 4 and mapped the Civilization 1 earth map for Civilization 4. And I created a handful of maps for StarCraft and Quake 2, but they were only used by my local friends (except the Quake 2 stuff because my computer wasn't powerful enough to actually compile the world I designed).

Besides your own creations, what are some of your favourite plugins from other developers and why?
I have to give a shout-out to Sleaker and the Vault team; without Vault my plugins and many other plugins would be a lot less versatile.  I love Lockette's protection mechanism for chests, etc.  And I literally won't play on a server without Dynmap.  Other than these necessities, I think that Blue Telepads is a wonderful toy and I'm trying to convince the owner of the server I play on to install it as a donator perk. 

Do you have any advice for other potential plugin developers?
Never let "not knowing" get in your way.  Never admit anything is impossible, but freely admit when it's well outside the range of being realistic. 

Don't let the harsh and sometimes cruel words of other developers hinder your enthusiasm when you ask what they think is a stupid question.  Remember that it's them being a jerk that is noticed when your well worded question makes it to the top of Google.com.  The real "noob" (or whatever degrading term they use now, I frankly don't care to pay attention) is the jerk who won't answer a simple (to him, obviously not to you) question.  I've been programming for over 20 years in some language or the other and in the open source world, our greatest asset is each other.  Speaking of which, search the web before asking questions because it's likely someone has asked it before. 

I have to close this out with a big thanks to MechaTech84, ZedicusZul and RaesWolf from Aerial Heights server who have been a huge help with helping me create floAuction. These guys have been awesome. The guys who previously created and took care of iAuction as well as Rob who takes care of it now have been an inspiration.  Obviously, Notch, Jens and the rest of the Mojang crew who (except taking so long to add horses) have been totally awesome. And the people here at Curse and at Bukkit for all the work they put in have to be applauded. Kudos, friends, and thanks for noticing me.

Thanks to incredinex for creating this plugin and for participating in our interview!

Thanks to MadPixel for the Minecrafter font.

Comments

Popular News

Login to Curse

Don't have an account? Create One.

Get an epic experience with Curse Premium
  • Faster addon downloads
  • Premium-Only Beta Giveaways
  • Ad-Free Curse experience
  • Premium Curse Client
  • and many More Features
  • Learn More »

Maingear

ENTER NOW