- Tested Minecraft Versions:
Auctions is a Bukkit/Spigot plugin that allows players on your server to put up items for sale and have other users place bids to win the item. This plugin utilizes the fanciful library to provide tool tips that show the items information rather than having the chat barraged with text-form item information.
Source code is available at https://github.com/sainttx/Auctions
Here are some of the features this plugin offers:
- Full language customization
- Herochat channel intergration
- Item tooltip messages
- Action bar auction information broadcasts
- Fully configurable auction settings ranging from start prices, bid increments, queue size limit, and more!
- Auction anti-scam (delays between new auctions) and advanced anti-snipe prevention
- Sealed auctions
- Modify how time and money is formatted (shortened times and truncated $$$ [ie. 100K vs. 100,000])
- Dozens of ways to limit what players can do to your desire including blocking specific worlds, commands, item types, etc.
- No annoying external plugin dependencies asides from Vault
- An expansive API which allows your developers to add countless custom features with ease
ConfigCode (YAML):auctions.bypass.cancel.otherauctions: Gives a player permission to cancel other players auctions
auctions.bypass.cancel.timer: Gives a player permission to bypass timer restriction when cancelling auctions
auctions.bypass.end.otherauctions: Gives a player permission to end other players auctions
auctions.bypass.general.bannedlore: Gives a player permission to bypass banned lore restrictions
auctions.bypass.general.bannedmaterial: Gives a player permission to bypass banned material restrictions
auctions.bypass.general.blockedcommands: Gives a player permission to use blocked commands when auctioning
auctions.bypass.general.creative: Gives a player permission to start auctions while in creative mode
auctions.bypass.general.damageditems: Gives a player permission to bypass damaged item restrictions
auctions.bypass.general.disabled: Gives a player permission to start auctions when the plugin is toggled off
auctions.bypass.general.disabledworld: Gives a player permission to start, bid, and teleport in disabled worlds
auctions.bypass.general.nameditems: Gives a player permission to bypass named item restrictions
auctions.bypass.start.maxprice: Gives a player permission to bypass the max start price restrictions
auctions.bypass.start.maxautowin: Gives a player to bypass max autowin price restrictions
auctions.command.bid: Gives a player permission to bid on auctions
auctions.command.cancel: Gives a player permission to cancel their own auction
auctions.command.end: Gives a player permission to end their own auction
auctions.command.ignore: Gives a player permission to ignore broadcasts from the plugin
auctions.command.impound: Gives a player permission to impound any auction
auctions.command.info: Gives a player permission to view information about the current ongoing auction
auctions.command.queue: Gives a player permission to view auctions that have been placed in queue
auctions.command.reload: Gives a player permission to reload the auctions configuration file
auctions.command.spam: Gives a player permission to toggle spammy messages
auctions.command.start: Gives a player permission to start auctions
auctions.command.toggle: Gives a player permission to toggle the plugins auction status
# Auctions #
# by SainttX #
# Configuration options for various plugin integration
# settings can be defined in this section. Each integration
# option has an enable option that tells the plugin whether
# or not the option should be used. These integrated plugins
# are essentially the same things as 'chatSettings.groups'
# and stack with any defined chat setting groups.
# Herochat plugin integration options
# Find the plugin here: http://dev.bukkit.org/bukkit-plugins/herochat/
# Defines your Herochat chat channel that players must be joined
# to receive messages from the auction plugin. Messages that
# are only sent to a single player ignore this and will send no
# matter what.
# Configuration options for various chat group and handler features
# are defined in this section. As the plugin expands, more options
# will be added to this section.
# Configure which plugin groups view messages. All groups stack with
# each other so players from multiple groups can be defined to view
# 'global' is the standard broadcast group, this groups recipients
# is all players online.
# The handler is the mechanism for how messages get delivered.
# Current options are: TEXT, ACTION_BAR. The ACTION_BAR mechanism
# will still send messages through the TEXT channel, however it
# unlocks a new message option
# ('messages.auctionFormattable.actionBarMessage') that is sent to
# players whenever any broadcast message is sent. In the case that
# you don't want the TEXT channel sending its respective messages,
# you should disable the message by setting the message to "" (empty)
# Configuration options for various settings specific to auctions
# ie. times, bid increments, etc.
# How much money users will be charged to start an auction.
# If a user doesn't have enough money, they will be unable
# to create an auction. Default: 0.
# The percentage of the winning amount to be removed from
# the servers economy. For example, if a user wins an auction for
# $1K and the tax is at 30%, $300 will be removed and the owner
# of the auction will only be given $700 as a result. Default: 0.
# The start time for all auctions. There is currently no
# way to specify how long your auction should last through commands
# and as such all auctions will have a duration of this time. This
# time is configured in seconds and is translated through a utility
# class to English. For example, if the time is set to 600, the
# formatter will output '10 minutes'. Default: 30.
# The delay between all auctions in seconds. This is the time
# between when an auction ends and when a new auction from the queue
# is started. Auctions that are created within the delay are
# automatically added to the queue. Default: 5.
# The default bid increment to be used when a user doesn't specify
# their bid increment through commands. For example, if a user types
# /auction start 1 100, the bid increment will default to this
# amount. Default: 50.
# The minimum bid increment that is allowed to be specified. Users
# who attempt to create an auction with an increment that is less
# than this amount will be denied. Default: 10
# The maximum bid increment that is allowed to be specified. Users
# who attempt to create an auction with an increment that is greater
# than this amount will be denied. Default: 9999
# Whether or not players can set an increment that exceeds the starting
# price of the auction. For example, set to false and a player starts
# an auction with a starting price of $1000, the bidding increment
# set by the player can't exceed $1000. Default: true.
# The minimum amount that is allowed to be defined as an auction start
# price. Users that attempt to create an auction that fail to meet
# this criteria will be denied. Default: 0.
# The maximum amount that is allowed to be defined as an auction start
# price. Default: 99999.
# The maximum amount that is allow to be defined as an auction autowin
# price. Default: 1000000 (1M).
# Whether or not players can auction items that have been named through
# a plugin or anvil. Default: true.
# Whether or not players can auction items that have any durability loss.
# Default: true.
# Whether or not players can specify an autowin amount in their auction.
# If users specify an autowin and this is set to false, they will be
# denied the creation of the auction. Default: true.
# Whether or not players can auction while in creative mode. Default: false.
# Whether or not players can use the /bid command with no arguments. If
# this is set to true, players can type "/bid" and automatically increment
# the auction with the auctions bid increment. When set to false, players
# will be required to specify a bid amount. Default: true.
# The maximum amount of auctions that are allowed inside an auction. Users
# who attempt to create auctions when the queue is full will be denied.
# Default: 3.
# Defines the last time, in seconds, that users are allowed to use
# the "/auction cancel" command. If an auctions time is less than
# what is defined here, users will not be able to cancel their auction
# anymore. Default: 15.
# Various settings regarding auction anti sniping can be defined here.
# Whether or not anti sniping is enabled. Default: true.
# The time left, in seconds, in an auction that anti-snipe can
# be enabled at. For example, if set to 3 and a player places a bid
# at 2 seconds, anti-snipe will trigger if enabled and add
# 'auctionSettings.antiSnipe.addSeconds' seconds to the auction time.
# Default: 3.
# The maximum amount of times an auction can be sniped, this is
# primarily to prevent auctions for going on for indefinite
# amount of times. Default: 3.
# The amount of seconds to add whenever an auction is sniped.
# Default: 5.
# Various settings regarding sealed auctions can be defined here
# Whether or not sealed auctions are enabled. Default: false.
# Typically in sealed/blind auctions, bidders are only allowed to
# submit 1 bid and then they must wait until the auction to see
# who the winner is. This configuration option allows you to configure
# how many bids a player is allowed to place (or raise their previous)
# on the auction. Default: 1.
# Setting this option to true will have an effect on the [topbiddername]
# and [topbid] placeholders when a sealed auctions message is being
# formatted. Rather than giving away the top bidder and top bid, the
# formatter will replace the placeholders with "Hidden" and "hidden"
# respectively (topbidder, topbid). Default: true.
# Various settings unrelated to auction specific options are found in this
# A value that is used by the plugin to determine if your configuration
# is out of date. This value should not be modified. The plugin will
# tell you in console whether or not your config is out of date.
# Whether or not to shorten times that are formatted through the utility
# class. For example, this is the difference between times being shown as
# "5 minutes 5 seconds" vs. "5m, 5s". Default: false.
# Whether or not to truncate any numbers that are formated into messages.
# These numbers are monetary values (top bid amount, buyout, etc). Setting
# this to true will have applicable numbers truncated. For example, the
# number 1234 will be output as "1K", 99874 as "99K", etc. Default: false.
# Whether or not to use the auctioned items display name, if available,
# instead of the items actual name. For example, if a player auctions a
# Diamond Sword with display name "Awesome Sword" and this option is
# set to true then the auction will display "Awesome Sword" as opposed
# to "Diamond Sword" in auction formattable messages. Default: false.
# A list of worlds that the auction plugin is disabled in. World names
# are all case sensitive.
# Various settings settings to block commands found in 'general.blockedCommands'
# on specific occasions.
# This option will block commands when players are the auction owner.
# Default: false.
# This option will block commands when players have an auction in the
# queue. Default: false.
# This option will block commands when players are the top bidder.
# Default: false.
# A list of commands that are blocked if any of the settings in
# 'general.blockCommands.*' are set to true. Commands here should
# be defined as the players type them. For example, if a player
# types /test hello, it will match the command '/test'. Keep in
# mind that all commands are formatted to be all lower cases, so
# commands entered here should be in all lower case.
# A list of Bukkit Materials that are not allowed to be auctioned.
# Valid materials: https://hub.spigotmc.org/javadocs/spigot/org/bukkit/Material.html
# A list of lores that are not allowed to be present inside any
# lore strings on an item. For example, if we have "A string of
# lore" defined in this list (default) and an item contains
# the lore strings "hello", "this is lore", and "lol A string of
# lore" the item will not be allowed to go into auction due to
# the fact that "A string of lore" is present in the third line.
- "A string of lore"
# A list of times that the plugin will broadcast the amount
# of time left in the auction. The format of this list can
# be specified as it currently is ("["#", "#"]") or as above.
broadcastTimes: ["60", "30", "10", "3", "2", "1"]
# Every message that is sent from the plugin is found in this section.
# The message keys are made to be as intuitive as possible so that
# you don't have much difficulty with figuring out what each message does.
# All messages are formatted for chat colors regardless if there are
# placeholder present or not.
# Notes: - ALL messages can be disabled by setting it's respective self
# to "" (empty).
# All messages under 'auctionFormattable' mean that messages sent
# that are from here are first parsed with the current active auction.
# There are various placeholders that you can insert into these messages
# that will be formatted will information from the current auctions
# information. These placeholders are as follows:
# [itemName] - placeholder for the raw name of the item being auctioned
# [itemamount] - placeholder for the amount inside the reward/item
# [time] - placeholder for the formatted time left (ie. 30 seconds)
# [autowin] - placeholder for the autowin balance in the auction
# [ownername] - placeholder for the name of the auctions owner. defaults to "Console" if null.
# [topbiddername] - placeholder for the name of the auctions top bidder. defaults to "Console" if null.
# [increment] - placeholder for the minimum increment inside an auction
# [startprice] - placeholder for the initial start price of an auction
# [topbid] - placeholder for the current top bid in the auction (untaxed)
# [taxpercent] - placeholder for the current tax percent set by 'auctionSettings.taxPercent'
# [taxamount] - placeholder for the current amount of money deducted by the tax
# [winnings] - placeholder for the resulting amount of money that will be won (after tax is deducted)
# SPECIFIC MESSAGES ONLY:
# [snipetime] - only works with antiSnipeAdd
# [queuepos] - only works with queuePosition and queueInfoLine
# Notes: - [ownername] and [topbiddername] will default to "Console" (w/o brackets)
# if there is no valid player entity in those placeholder slots.
# The itemFormat is essentially the way [item] will be formatted inside
# auction messages. For example, if you have a message that contains
# "Hello [item]!", the [item] placeholder will be replaced with the items
# name formatted as seen in itemFormat.
# The actionbar message is sent along ALL broadcasts made by the plugin. If
# you don't want duplicate messages being sent through chat, you'll have to
# disable the specific message by setting them to nothing (ie. "").
actionBarMessage: "&e&lAUCTION: &f[ownername] || [itemamount] [itemName] || [time] || [topbiddername] ($[topbid]) || &e/auction info"
antiSnipeAdd: "&e[Auctions] &f(Antisnipe) [snipetime] were added to the auction"
autowin: "&e[Auctions] &fThe buyout has been set to $[autowin]"
bid: "&e[Auctions] &f[topbiddername] bid $[topbid] on &b[itemamount] [item]"
cancelled: "&e[Auctions] &fThe auction for &b[itemamount] [item] &fwas cancelled"
end: "&e[Auctions] &f[topbiddername] won the auction for &b[itemamount] [item] &fby bidding $[topbid]"
endByAutowin: "&e[Auctions] &fThe auction for &b[itemamount] [item] &fwas bought out by [topbiddername]"
endNoBid: "&e[Auctions] &fThe auction for &b[itemamount] [item] &fhad no winner"
endNotifyOwner: "&e[Auctions] &fYour auction ended. Received $[winnings]"
endTax: "&e[Auctions] &fYou were taxed $[taxamount] ([taxpercent]%)"
increment: "&e[Auctions] &fThe bidding increment is $[increment]"
info: "&e[Auctions] &f[ownername] auctions &b[itemamount] [item] &ffor $[startprice]"
infoTopBidder: "&e[Auctions] &f[topbiddername] is winning with a bid of $[topbid]"
price: "&e[Auctions] &fThe auction will last for [time]"
queueInfoLine: "&e[Auctions] &f#[queuepos]. [ownername] will auction &b[itemamount] [item] &ffor $[topbid]"
queuePosition: "&e[Auctions] &fYou are #[queuepos] in the queue"
start: "&e[Auctions] &f[ownername] auctions &b[itemamount] [item] &ffor $[topbid]"
timer: "&e[Auctions] &fAuction for &b[itemamount] [item] &fhas [time] left"
winner: "&e[Auctions] &fYou won &b[itemamount] [item] &ffor $[topbid]"
# These are messages specific to sealed auctions. All placeholders from above
# will work as intended, however you will have new options available. These
# are as follows:
# [bid] - The current bid that a player just placed
# [previous] - The last valid bid that a player placed
bid: "&e[Auctions] &fYou place a bid of $[bid]"
raise: "&e[Auctions] &fYou have raised your bid from $[previous] to $[bid]"
# Error messages are messages sent to players whenever they have failed
# to define something correctly in their commands, or in other instances
# like if they are lacking permissions to a command, etc.
alreadyHaveAuction: "&cYou already have an ongoing auction"
alreadyInAuctionQueue: "&cYou already have an auction placed in the queue"
alreadyTopBidder: "&cYou are already the top bidder"
auctionQueueFull: "&cThe auction queue is currently full"
auctionsDisabled: "&cAuctions are currently disabled"
autowinDisabled: "&cPlacing autowin amounts on auctions has been disabled"
autowinTooHigh: "&cYour autowin amount is too high"
biddingIncrementExceedsStart: "&cYour bidding increment cannot exceed your start price"
bidOnOwnAuction: "&cYou cannot bid on your own auction"
bidSyntax: "&cUsage: /auction bid <amount>"
bidTooLow: "&cYour bid was too low"
cantAuctionBannedLore: "&cYou can't auction off this item as it contains banned lore"
cantAuctionDamagedItems: "&cYou can't auction damaged items!"
cantAuctionNamedItems: "&cYou can't auction off items that have a name"
cantCancelNow: "&cYou can't cancel the auction at this point"
cantHideSpam: "&cThe current message handler does not allow for spammy message prevention"
cantTeleportToDisabledWorld: "&cYou can't teleport into disabled auction worlds while auctioning or participating in an auction"
cantUseCommandWhileAuctioning: "&cYou can't use this command while auctioning an item"
cantUseCommandWhileQueued: "&cYou can't use this command while having an auction queued"
cantUseCommandWhileTopBidder: "&cYou can't use this command while being the top bidder on an auction"
cantUsePluginInWorld: "&cYou can't use the auctions plugin in this world"
creativeNotAllowed: "&cYou cannot start auctions while in creative"
currentlyIgnoring: "&cYou can't do that while ignoring auctions"
insufficientBalance: "&cYou don't have enough money to do that"
insufficientPermissions: "&cYou don't have enough permissions to use this command"
invalidBidIncrement: "&cYour bid increment was either too high or too low"
invalidItemType: "&cYou are not allowed to auction this item"
invalidNumberEntered: "&cPlease enter a valid number"
noAuctionsInQueue: "&cThere are no auctions in the queue"
noCurrentAuction: "&cThere is no active auction at this time"
notEnoughOfItem: "&cYou don't have enough of that item"
notYourAuction: "&cYou aren't able to modify other players auctions"
sealedAuctionHaveHigherBid: "&cYou have already placed a bid that is equal or greater than that amount"
sealedAuctionsDisabled: "&cSealed auctions are currently disabled"
sealedAuctionsMaxBidsReached: "&cYou have reached the maximum number of bids allowed per player on this auction"
startPriceTooHigh: "&cYour starting price is too high"
startPriceTooLow: "&cYour starting price is too low"
startSyntax: "&cUsage: /auction start <amount> <price> [increment] [autowin]"
# All other messages are just standard messages that are sent to
# players. These messages have no placeholders available asides from
# 'messages.bid', which has the [bid] placeholder.
auctionImpounded: "&e[Auctions] &fThe auction was impounded by [player]"
auctionPlacedInQueue: "&e[Auctions] &fYour auction has been queued"
auctionsDisabled: "&e[Auctions] &fAuctions are now disabled"
auctionsEnabled: "&e[Auctions] &fAuctions have been re-enabled"
bid: "&e[Auctions] &fYou place a bid of $[bid]"
noLongerHidingSpam: "&e[Auctions] &fYou are no longer hiding spammy messages"
noLongerIgnoring: "&e[Auctions] &fYou are no longer ignoring auction messages"
notEnoughRoom: "&e[Auctions] &fYou didn't have enough room in your inventory so some of your winnings were dropped"
notifySealedAuction: "&e[Auctions] &fThis is a &bsealed &bauction&f. All player bids are kept to themselves, the highest bidder wins"
nowHidingSpam: "&e[Auctions] &fYou are now hiding spammy messages"
nowIgnoring: "&e[Auctions] &fYou are now &cignoring &fauction messages"
ownerItemReturn: "&e[Auctions] &fYour items have been refunded"
pluginReloaded: "&e[Auctions] &fThe auctions plugin has been &areloaded"
queueInfoHeader: "&e[Auctions] &fCurrent auctions in the queue:"
savedItemReturn: "&e[Auctions] &fYour auction winnings were saved and have been returned"
- "&e&m----&e[ &fAuctions Help Menu &e]&m-----"
- "&e/auction start &7<amount> <price> [increment] [autowin] &7- &fStart an auction"
- "&e/auction info &7- &fDisplays current auction information"
- "&e/auction bid &7<amount> &e- &fBid on an auction"
- "&e/auction end &7- &fEnds the current auction"
- "&e/auction cancel &7- &fCancels the current auction"
- "&e/auction impound &7- &fImpounds the current auctions contents"
- "&e/auction ignore &7- &fIgnore plugin messages"
- "&e/auction spam &7- &fIgnore only the spammy messages"
- "&e/auction queue &7- &fView all queued auctions"
- "&e/auction toggle &7- &fToggles the plugins disabled/disabled status"
- "&e/auction reload &7- &fReload auction configuration"
An elegant auctioning solution that allows text tooltips for auctioned items
07.04 15:19:56 [Server] WARN Task #1111 for Auctions v2.5.0-SNAPSHOT generated an exception 07.04 15:19:56 [Server] INFO java.lang.NoSuchMethodError: org.bukkit.inventory.Inventory.getStorageContents()[Lorg/bukkit/inventory/ItemStack; 07.04 15:19:56 [Server] INFO at com.sainttx.auctions.util.AuctionUtil.getFreeSlots(AuctionUtil.java:48) ~[?:?] 07.04 15:19:56 [Server] INFO at com.sainttx.auctions.api.reward.ItemReward.giveItem(ItemReward.java:68) ~[?:?] 07.04 15:19:56 [Server] INFO at com.sainttx.auctions.structure.DefaultAuction.end(DefaultAuction.java:194) ~[?:?] 07.04 15:19:56 [Server] INFO at com.sainttx.auctions.structure.AbstractAuction$AuctionTimer.run(AbstractAuction.java:215) ~[?:?] 07.04 15:19:56 [Server] INFO at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftTask.run(CraftTask.java:71) ~[spigot188.jar:git-Spigot-db6de12-18fbb24] 07.04 15:19:56 [Server] INFO at org.bukkit.craftbukkit.v1_8_R3.scheduler.CraftScheduler.mainThreadHeartbeat(CraftScheduler.java:350) [spigot188.jar:git-Spigot-db6de12-18fbb24] 07.04 15:19:56 [Server] INFO at net.minecraft.server.v1_8_R3.MinecraftServer.B(MinecraftServer.java:723) [spigot188.jar:git-Spigot-db6de12-18fbb24] 07.04 15:19:56 [Server] INFO at net.minecraft.server.v1_8_R3.DedicatedServer.B(DedicatedServer.java:374) [spigot188.jar:git-Spigot-db6de12-18fbb24] 07.04 15:19:56 [Server] INFO at net.minecraft.server.v1_8_R3.MinecraftServer.A(MinecraftServer.java:654) [spigot188.jar:git-Spigot-db6de12-18fbb24] 07.04 15:19:56 [Server] INFO at net.minecraft.server.v1_8_R3.MinecraftServer.run(MinecraftServer.java:557) [spigot188.jar:git-Spigot-db6de12-18fbb24] 07.04 15:19:56 [Server] INFO at java.lang.Thread.run(Thread.java:745) [?:1.8.0_121]
I made a test auction and of course no one bid. At the end the plugin said "Your auction for one Blaze Rod had no winner" and than "Your items have been refondet" but than I wanted to cancel the Auction with /auc cancel or /auc end but an internal error occured -.- this is annoying