This release fixes a minor exception in the log caused by missing check for Discord API when loading config file.
Tested with and without latest DiscordSRV 1.27.0.
This release is an update to support Spigot 1.20.4.
This release specifically supports Spigot 1.20.2.
Bug Fixes:
- player_head not displaying lore properly
- /ah <player> command deprecated, replaced with /ah show <player>
- /ah menu [player] [flag] changed to remove flag (will always be true)
This release fixes an bug with player heads not displaying lore properly in the listings when the code was migrated to Spigot 1.20 and refactored to use remapped method names.
Player heads have had issues in the past where certain methods that add lore will contact Mojang servers to get updated texture data anytime the meta data is modified. This presented problems in the past with lag during listings and so more low level methods were used to update the lore for display in the menus. This has since been revised to be compatible with the remapping functionality in later versions of Spigot.
Additionally, the /ah <player> command was deprecated, because it was never implemented properly.
The /ah menu <player> command has been changed to remove the flag to select whether the back button is displayed and will always display the back button. The /ah show <player> command is introduced to show the menu without the back button.
These two commands are primarily used by other menu plugins to open up the Auction House interface from other menus.
This version is for Spigot 1.20.1 and includes some changes to check for online users during listing process.
As with all releases, please backup your data and test offline before deploying to a live server.
Regress to DiscordSRV-1.26.0 API dependency to fix issue with Discord messages throwing exceptions.
This release supports 1.19.4.
Updated optional dependencies for DiscordSRV 1.26.2, TokenEnchantAPI 18.37.1, PlaceHolderAPI 2.11.3, please make sure you are using latest versions.
This release specifically supports Spigot 1.19.3.
Workaround for known exploit.
Workaround for known exploit.
This version supports Spigot 1.19.
This release fixes a bug with player head lore not displaying and possibly other meta information not being set correctly.
This is a repost of the 3.2.1 version for 1.18.2.
(Eventually, the builds that support older Spigot version will have separate SpigotMC entries.)
This version supports Spigot 1.13.2, 1.14.4, 1.15.2, and 1.16.5 and includes some fixes for spam in paper as well as updated dependencies for DiscordSRV and Placeholders.
This version is specific for 1.17.1 and includes some fixes for spam in paper as well as updated dependencies for DiscordSRV and Placeholders.
Hopefully fixes some exceptions showing up in Paper.
Updated API dependencies for DiscordSRV (1.25.1), Clip's PlaceHolderAPI (2.11.1), MVDwPlaceholdeAPI (3.1.1), and TokenEnchantAPI (18.37.1).
Set anticheat.spam_check to true by default for new installations.
(This is the config.yml setting that limits spam-clicking on sort)
This version supports 1.18.2. It will not work with earlier versions - if you are running an earlier version of Spigot, please download the appropriate AH version from the Version History tab.
As always, please backup your data before updating to this version in case something goes wrong.
This version of AuctionHouse is a beta and supports Spigot 1.18.
Please report any issues you find with this version working properly on 1.18.
As with all releases, please backup your data.
If you are looking for the latest version for 1.17.1, please use the 3.0.2 version.
Fixes issue with Concurrent Modification Exception on disable or reload of the plugin. This version is specifically for 1.17.1+, for Spigot 1.13.2-1.16.5, please use the 2.2.2 version.
Fixes issue with Concurrent Modification Exception on disable or reload of the plugin.
Recompiled natively for Java 16 since this is a requirement on Spigot 1.17+, previous release was only compiled to Java 11.
This build is only for Spigot 1.17+. The file name has changed to reflect this and reduce confusion.
This is a build release for 1.17.1 - pretty much the same as 3.0-b2, just official.
This is a maintenance release for the versions from 1.13.2 through 1.16.5. Please use the 3.0 version for 1.17.1.
Fixed issue where sometimes the next button would get out of sync with the number of listed items.
Added support for reloading locale information when using /ah reload.
Added new feature in config.yml to check for click-spamming on menu controls.
This build is still technically a beta. It now supports 1.17.1 and hopefully fixes a bug with pagination.
Also included in this is support for translation reloading when using /ah reload to allow better localization editing.
Finally a preliminary feature is added in the config (version 33) to perform click spam checking on most menus.
Note this is a 1.17+ specific build.
Enjoy, and as always backup your data first since you might need to roll back.
This is a beta release. Please backup all your data before even attempting a migration!
This 3.0-b1 release does not support any Spigot versions other than 1.17.
For Spigot versions 1.13-1.16.5, please use the 2.2 release version.
This was released as a beta, but for some reason never released officially.
This version has some minor performance improvements and supports 1.16.4.
Please test before deploying on production server.
Make sure to make a backup of your data first.
Small bug fixes and optimizations:
- Fixed issue with the config.yml option announce.action_bar.purchases: false not silencing the action bar.
- Added color support for trigger names
- Optimized some string usage in menus
- Added an admin command "/ah purge <player>" to remove all listings for a player. This command will remove any player listings, expired listings or sold items from that player from the database. This is useful for resetting a database on a world for a player, such as if used from a script on reset of a skyblock island. It could be used when you ban a user, however, any record of sold items from that seller would also be removed.
This release updates the locale file to version 34 which adds the following strings:
"command.purge": "purge",
"message.purge.listings": "Purged {0} listings for {1}."
Please backup your data before upgrading and always test first on a non-production server.
This release rolls back some 'improvements' to the chat API handling for custom item data that was causing issues. There will still be some inconsistencies in the way custom items are displayed in the menu, but should not affect the actual listed item.
This is a small update, only fixing parsing of color data to display hex colors correctly again.
Reverts a "flattening" feature in 2.1.7 that was causing issues with custom item data.
This release still has a known issue where some custom display name and lore might not be stored and read correctly when the server reboots. This is an inherent design flaw in how Spigot handles text formatting and will require significant rework to remedy the bug.
As with all releases, backup your data and test before installing on a production server. I can't stress this enough.
This release fixes some critical bugs and changes how files are imported.
- Fixed a critical issue with /ah <player> where any player could run this command without permission.
- Removed /ah <player> command (deprecated) and replaced with /ah menu <player> command. This also eliminates a possible lagging if a player mistypes a sub command.
- Implemented support for importing data.db files from the original AuctionHouse by cfilatov.
- Implemented support for upgrading itemstack information from pre-1.13 versions of Spigot when loading auctions.db or auctions.dat files created in AuctionHouse-Legacy or AuctionHouse-Retro.
- Fixed a potential NPE.
As with all releases, please backup your data files, and perform your own testing before deploying to a production environment.
Added support for PlaceHolderAPI and mVdWPlaceholderAPI.
PlaceHolderAPI:
%auctionhouse_active_listings% - count of active listings in the world of a player.
%auctionhouse_player_listings% - listings count for a player.
%auctionhouse_expired_listings% - expired listings count for a player.
%auctionhouse_sold_items% - sold items count for a player.
%auctionhouse_max_listings% - max number of listings permitted for a player.
mVdWPlaceHolderAPI:
{auctionhouse_active_listings} - count of active listings in the world of a player.
{auctionhouse_player_listings} - listings count for a player.
{auctionhouse_expired_listings} - expired listings count for a player.
{auctionhouse_sold_items} - sold items count for a player.
{auctionhouse_max_listings} - max number of listings permitted for a player.
This release adds a permission for auctionhouse.expire.others and adds some optimizations.
This release fixes several reported bugs.
- Fixed NPE when using an economy plugin that returns null instead of a proper EconomyResponse object.
- Fix possible issue with upgrading listings from older .dat format to .db format.
- Fixed issues with wildcard item names in restricted items.
- Added support for persistent_data section in restricted items to allow restricting items from plugins that store information in the persistent data ("PublicBukkitValues" item tag).
- Changed default config.yml to include sample for restricting super ability items from newer mcMMO version.
This release fixes several small bugs.
- Fixed incorrect permission for /ah search command.
- Re-implemented color support for menu titles that was removed due to a bug.
- Fixed issues with textures not working for items in the buttons and listings.
- Fixed issue with display name not working for buttons using custom player head.
- Tested on 1.16.3
No changes to config.yml or localization.
Fixed an issue in event seller uuid causing a stacktrace.
This release fixes some bugs reported in the discussion forum.
- Fixed issue with /ah selling showing syntax about player
- Deprecated support for /ah <player>, at least in tab completion in order to not display all the player names for OPs on /ah
- Fixed issues with tab completion not showing player names for /ah menu
- Added functionality in /ah menu [player] [flag] for option flag that specifies if exit button is shown (true/false)
- Fixed issue where discord message was not localized
- Fixed issue where cancellations from API for listing an item would still list the item.
- Fixed issue where discord message would not show server for server listings
- Fixed issue where multiworld support was not filtering properly
- Changed prefix handling for groupWorlds support to allow any worlds with same prefix to group (not just <prefix>, <prefix>_nether and <prefix>_the_end)
- Limited purchasing of listings from creative mode with same config.yml setting
- Changed behavior of similar lore comparison for restricted items to include 'regex:' and 'fuzzy:' prefixes to allow regular expressions and partial matches.
- Changed behavior of similar name comparison for restricted items to include 'fuzzy:' prefixes to allow partial matches.
- Changed behavior for deleting one or more database listing records to handle multiple inside the runnable task in order to prevent thread issues and JVM faults.
The locale file version has been updated and sorted.
Some keys changed:
days -> duration.days
hours -> duration.hours
minutes -> duration.minutes
seconds -> duration.seconds
now -> duration.now
Some new keys were added:
value.true
value.false
warning.purchase.creative
warning.purchase.spectator
Some keys were removed:
message.help.ah_menu_player
message.help.ah_player
Some values were updated:
message.help.ah_menu
As with any update, please backup your data files. This release changed behavior in how listings are deleted in bulk. I've tried my best to test and ensure this does not break stuff, but best to be safe.
This release fixes an issue with tab completion.
This is the official release for 1.16.2.
It includes numerous bug fixes and changes.
The en_us.json file has been updated. Please diff the changes between it and the backup to see what keys have been added at the end of the file and what formatting has been changed.
Any issues that are still open should be checked on this version and report if they are still an issue to be included in a subsequent point release.
This release fixes several issues including, multi-world support, NBSP in locale currency formatting, discord item naming, command syntax and handling, tab completions, time localization as well as other small changes.
Thanks for your patience on this release.
This release fixes the issue where the description of the item would not appear in the menu (the lore would be empty for some items).
This release also updates the en_us.json file to add an additional string warning.sell.filled_container, and color change to message.listing.purchased.value.
The config.yml file has been updated to add a preventFilledContainers: true/false setting to disable the ability to sell shulkerboxes with items.
This version still does not fully implement tab-completion and another release will be forthcoming with those changes.
As always, backup your data before deploying to your servers. This is still a release candidate and may still have issues.
This release candidate contains critical bug fixes and a revised command handling.
There are still known issues in this release including better implementation for tab-completion which I am still working on, however getting this bug fix out is critical.
The en_us.json file has updated. The changes are too numerous to list, however most are appended to the end of the file. Several descriptions have been revised for clarity as well as color formatting. If you have a localized file, please update accordingly.
This release fixes issues with the menu in the previous RC where items were able to be copied/moved into the menu area using shift click, and also for duplication issues on 1.13 with the confirm listing menu.
This release revises all the command parsing and messages to provide better information as to syntax.
This release changes how lore is updated in the items in the menus to avoid using item meta methods that cause a profile update if any meta data changes on a skull item. Profile updates for skull meta causes blocking methods to be run that connect to Mojang's profile and authentication servers. This behavior in the API causes lag since it was getting called whenever a skull menu item was refreshed (i.e. when the time changed). Hopefully this will reduce some lag issues.
As with any beta/RC, please backup your data and test before deploying. Let me know if any reported issues are resolved with this version. Thanks!
Well, I hope you all got your bug reports in!
This release fixes an issue where using /ah <player> and /ah menu <player> from the console or as a ConsoleSender would not open the menu for the player.
This release revises the restricted items wildcard functionality allowing it to work better, allowing wildcard on all section keys such as damage.
This release adds a permission auctionhouse.pick, that when applied or if the player is OP, allows them to middle click on items in the AH menu to "pick" them to the cursor. This is a dangerous feature, and giving the permission to a player would allow them to grab any listed item in the AuctionHouse menu. The use case of the feature is for admins to inspect items.
As usual, please backup your data folder, and test thoroughly and understand the ramifications if you deploy to your production server.
We are close to release, but not there yet.
This release fixes a problem with locale files not loading correctly.
If we don't have any showstoppers, this code base will be reversioned and released as the official 2.1 release.
Remember how I mentioned that if we didn't have any show-stoppers we would probably be releasing RC3?
Well, this is the "
I should have taken my own advice release"...
- Changed the database table format adding an additional column for listing type.
- Added new /ah list <price> [count] command that allows an OP or someone with the auctionhouse.list permission to create a server listing that does not expire, but can only be purchased once.
- Added new /ah ulist <price> [count] command that allows an OP or someone with the auctionhouse.ulist permission to create an unlimited server listing that does not expire, and can be purchased over and over.
- Made sure that neither of these new server commands pays the staff that lists them.
- Added server.name key to en_us.json localization file to specify the server name that should be used for the seller for these listings.
- Updated en_us.json with modified keys for cancelling/expiring listings.
- Added integerPrice: <boolean> setting in config.yml to round prices given in new listings to nearest integer.
- Added showRepairCost: <boolean> setting in config.yml to display any repair cost associated with an item like an enchanted book if it has one.
- The auctions.db database will now be backed up on startup. This gets overwritten each reboot, so if you need to roll back, stop your server - don't restart it, then copy the backup somewhere safe.
- AuctionItemEvent now included ListingType enumeration.
- Removed formatting from log files (resets we being included)
- Changed permissions to allow common admin commands to be available by default if OP
- Fixed some sound issues.
- Other misc. bug fixes.
The config.yml has been updated as well as the en_us.json locale file for the new features. Please diff the locale file against the backup to see what has changed, and make those changes in your custom locale files accordingly.
Although this is a Release Candidate. The database did change. If you use on production data, you will not be able to roll back unless you have made a backup.
As with all releases, backup your plugin folder prior to installing this version and test. I take no responsibility if you ruin your data. Enjoy.
Another release candidate...
Changed behavior for permission auctionhouse.cancel.others to allow Shift-Right-Click to force-expire the listing and return the item into to the player's expired items.
Added new behavior for permission auctionhouse.cancel.others to allow Shift-Left-Click to cancel the listing and return the item to the player that cancelled (admin). Item in this scenario is not returned to the seller.
Changed pragma setting for sqlite database to auto-vacuum (move empty space to end of database), thus compacting the data after removing listings, but might lead to fragmentation.
Added sqlite vacuum statement to be run when a database is loaded, such as after a reboot. This will fully compact the database tables, reducing space and fragmentation.
Hopefully this is the last candidate for this release. If there are no show stoppers reported, I will bless it as a release version.
Fixed issues with text formatting.
Removed support for 1.13/1.13.1, only supports 1.13.2.
Fixed issue with ah menu command from command block
Cleaned up command parsing
If no significant issues are found, this release will probably end up being renamed as the release version.
Just some small changes including permissions for whether triggers can be used by players on signs, named block or named entities:
auctionhouse.trigger.sign
auctionhouse.trigger.block
auctionhouse.trigger.entity
Removed a log message when listing an item.
Added Soul Speed enchant for enchant formatting.
This is a release candidate for supporting 1.16.1. If all goes well, I and we have minimal issues, it will be rebranded as the offical 2.1 release.
Please note, Spigot 1.16.1 is not the latest supported version of Spigot. That is still 1.15.2. And Mojang is still fixing Vanilla 1.16 and expects a 1.16.2 version out in the next couple weeks.
Please note that with the release of 1.16.2, there might be another release to support that version.
As always, backup and test before deploying.
This update fixes issues with hex color codes on items displayed in the chat and actionbar.
The default for actionbar is now set to true, but will only apply to any new config.yml files.
Please test and let me know if any of the reported issues are still occurring in this beta. We are getting that much closer to a release. I appreciate all your testing and suggestions! Thanks!
As always, please make a backup of you data before using this plugin. Please use on a test environment and not on your production environment unless you absolutely understand what the ramifications are...
More bug fixes...
Changed messages when an item is cancelled by player and admin to be more descriptive. The en_us.json file has been updated, so if you have localizations, please update accordingly.
Fixed parsing issue with Restricted Items including Enchantments, Unbreakable and CustomModelData.
Please test and let me know if any of the reported issues are still occurring in this beta. Thanks!
As always, please make a backup of you data before using this plugin. Please use on a test environment and not on your production environment unless you absolutely understand what the ramifications are...
Many changes in this beta release. I hope we are getting closer to a finalized version for 1.16.1 as I have been trying my best to fix issues
This release changes functional behavior of the cancel and return items and several bug fixes:
If a player cancels their own listing, the item will immediately be returned to them rather than going into the Expired Items menu. This is to curtail players using the Expired Listings menu of the AuctionHouse as an infinite storage chest.
If a player (admin) has permissions to cancel others' listings, the item will not be returned to the seller, but to the player cancelling. So, an admin using the shift-right-click on a unacceptable listing would be able to cancel and not return it to the player, but would have it in their inventory to inspect/return if needed.
Items that expire naturally in an auction will still be placed in the Expired Listings menu for a player. There is no limit to the items, but admins can still set the duration for how long items may stay expired.
Terminology has changed for the Expired Listings menu since it no longer contains any cancelled listings. The en_us.json file has been revised and updated to reflect this terminology change. If you have created a localized file, you will need to compare and update the translations.
Changed the exception handling on parsing items. It should give a more useful message if it can not properly parse the json file.
Changed the /ah sell command to include both a price and optional amount. It will check if the amount of the item in hand is more than the amount to sell and only list the amount to sell.
Change the way floats are parsed in the /ah sell <price> [amount] command. It will now check the locale and parse the price accordingly. Note, prices may not include spaces (for obvious reasons).
Fixed some issues with discord messaging and config settings. Should work again.
Fixed some possible exceptions in mouse click events with indexing listings.
Updated API support for TokenEnchant to 17.1.5. I don't have the latest version available and the author has not provided an updated version of their plugin on SpigotMC, so support is AS-IS with no guarantees.
Tested support for RGB text.
---
Please test and let me know if any of the reported issues are still occurring in this beta. Thanks!
As always, please make a backup of you data before using this plugin. Please use on a test environment and not on your production environment unless you absolutely understand what the ramifications are...
Fixed issue with chat text not displaying item when item is listed.
Fixed issue with New Balance showing whether or not listing fee is disabled.
Added progress check for listing item command.
This release changes the terminology from Blacklist to Restricted Items. The configuration file and localized messages have been updated to use inclusive terminology. Please note this updates the en_us.json localization file, so if you have any customized localization changes, you will need to update those files accordingly.
This release adds preliminary support for Custom Model Data in the Restricted Items list in the configuration file for versions 1.14+. The code for comparing similar items was updated as well with these changes.
This version fixes an issue where leaving a menu title blank in the localization file would prevent the menu click handling from working properly, resulting in the possibility to duplicate menu items. It now will default the title if the translation is missing or intentionally made blank.
Please test and let me know if any of the reported issues are still occurring in this beta. Thanks!
As always, please make a backup of you data before using this plugin. Please use on a test environment and not on your production environment unless you absolutely understand...
Fixed listing fee always showing up.
Fixed issue with purchasing item / villager moans when player first joined but not saved.
Changed defaultMaxListings to 5 in the config.yml.
Updated DiscordSRV library to 1.18.4.
Please test and let me know if any of the reported issues are still occurring in this beta. Thanks!
As always, please make a backup of you data before using this plugin. Please use on a test environment and not on your production environment unless you absolutely understand and accept the risks.
Fix duplication issue with listing fees and rewrite item listing code to be more resilient to duplication.
This fixes searching on enchantments and adds searching on stored enchantments.
This release is a beta. Do not use on your production server unless you have backup of your data and fully understand the risks.
This version adds support for 1.16.x, and provides a temporary-fix for a duplication exploit. It also changes the way items in shulkerboxes are displayed.
I have not extensively tested this release. Please note, 1.16.1 is still pretty much a work-in-progress and bugs are constantly being fixed.
Fixed an issue where plain shulker boxes would not display the contents correctly in the lore.
Changed method for displaying container contents to show amounts first and allow color formatting.
Changed method for displaying container contents to consolidate similar items.
Changed how triggers.block_name and triggers.entity_name are parsed in the config.yml. Now these sections can be either a json string or a list of strings.
General code cleanup.
This release fixes two possible NPE's in parsing the config file that were introduced in the changes from the last release for the locale and decimal format.
This release also fixes an issue where menu mode would not display the exit button if the Auction House was opened first in non-menu mode by the player. Menu mode will now display the exit button in this case where you want to mix the ability to run AH from a menu as well as from a player command.
This release also changes the permission level for the command which runs from the exit button. Before it would run commands only if the player had permission, now it will run these commands as an operator.
This release fixes an TextComponent formatting issue where text formatting would carry over the bold and color formatting between parts of a translation string into other parts of the string.
This release also fixes an issue the locale may not have been parsed correctly for applying the decimal format.
This release fixes a potential Null Pointer Exception in rare circumstances where an auction seller is null.
Finally, this release adds a config.yml flag spawnerInfo that is enabled by default to show the mob contents of a spawner when listed. Disabling this flag is useful for spawner plugins that don't properly store information about the spawner in the actual ItemStack, but record details elsewhere and only applies the infomation when the spawner is placed.
This release includes a few small fixes and new support for Action Bar messages.
Player cooldown was changed to reset the cooldown only after a player confirms listing an item. Before it was reseting the cooldown before the listing confirmation menu.
Fixed issue where glass panes for the Confirm Listing menu were not using the localization strings.
Fixed issue where items in localization strings that contained the &k code to obscure text, was not resetting after the item.
Added support for displaying notifications to the players in an Action Bar message. Several new settings have been added to the config.yml to support the Action Bar.
A boolean setting named
action_bar was added to the
auction configuration section to enable or disable action_bar notifications when a seller is notified of a purchase. It will still send a notification to the seller's chat regardless of this setting.
The
announce under the
auction section currently enables or disables chat notifications for listings and purchases to all players.
A new
announce section was added in the config.yml file with sub-sections for
chat and
action_bar. Each of these sections contain two boolean settings for
listings and
purchases. These will individually control whether an announcement is sent to all players, is sent to their chat window and/or action bar for listings and/or purchases. This provides a bit of granularity in determining how announcements are made.
The config file version has been updated accordingly.
This fixes a critical bug in the recent releases of AuctionHouse that can cause lore information to be lost when an item is sold or returned.
It is recommended that you install this version if you have installed version 2.0.1 or later.
Adds support for SilkTouchSpawners to show the proper mob type.
This release changes the behavior of how the plugin determines the spawner type to put into the lore when displayed in the AuctionHouse. It fixes an issue where some spawners that were not detected. It will now no longer display any mob details if an invalid NBT tag is used for compatibility purposes.
This release adds several usability improvements that have been planned and contributed by users.
CAUTION: This is a big update and there are many changes to the locale files, so don't rush into the upgrade until you read everything carefully that's changed.
Item Drop Behavior
Items that expire go into the expired items menu, however that too has an expiration and after a duration of time, those items become abandoned. The behavior for abandoned items was if the player was logged in, it would try to give the player the items, and if it couldn't fit, it would drop the items on the ground.
This behavior has changed to be consistent with any item being returned to a player or given to a player. If the player doesn't have space in their inventory, they will get a warning message and the transaction / transfer will not take place.
A flag can be set in the config.yml for drop_at_feet. If this is set to true, it will always return or give the item to the player and will just drop the items at their feet. This flag was intended for some cases where compatibility was needed.
This feature was partially implemented in the 2.0.1 release and now is fully working for all cases.
Blacklisting Fixes
This release fixes some more issues with blacklisting and should address all the open issues. Most notably a strange issue where it was not behaving correctly with wildcard item types.
Updated Localization Strings
Have to admit it, I went a little overboard on this release and made a lot of changes to the locale file keys and values. Mostly the changes were to allow for better formatting of some items and buttons and to remove the hard coded newlines in some strings to be replaced with separate blank lines. The only down side is there may be some additional strings that may need translating or reformatting.
Some notable changes we to the title of the Player Listings button, and the Cancelled / Expired Listings buttons to be more consistent with the menu titles.
My suggestion is for those that localized, to diff the two english files (the .json and the backup) to see the differences, since they are too numerous to list.
New Features!
Player Balance
OK, so why all the locale changes, well, first off we added the players Balance to the Player Listings button so you can easily see what your balance is. It updates in realtime.
Similarly, when looking at listings now, it will tell you if you can afford the item or not based on your current balance (also in realtime if your balance changes).
Consistent GUI Buttons
Cancelled / Expired Listing button (that poisonous potato) is now always visible even when there are no items to return. This change was necessary to keep the GUI consistent in functionality with other buttons.
Shulker Box Items
The item listings now show more than 5 items from the contents of storage containers such as Shulker Boxes in the listings. While this is not the most optimal solution to see all the details of the container's items, its a step in the right direction.
Spawner Mobs
The item listings now show the mob type(s) for spawners that are listed. It checks if they support multiple mobs in the SpawnPotentials and will display that information. It will fall back to SpawnData if it doesn't find any. It also looks for SilkSpawner tags and recognizes those.
DISCLAIMER
As with any major update, please backup you data prior to any upgrade. The 2.0.x release uses a different back-end (SQLite) for data storage now, and conversion is a one-way process.
As with any release, there is always the chance that something was not caught in testing (believe me, we've been there). So, I can't emphasize this enough.
Thank you all who have helped to provide positive feedback on this plugin.
This release fixes an issue where expired items have gone unclaimed would be always dropped at the players feet rather that trying to place in their inventory.
It now behaves similarly to if a player manually returns an expired item. The ActionItem for ITEM_DROPPED was removed and this will now trigger the ITEM_RETURNED action instead.
The locale file was updated for the message
warning.unclaimed_listings.notice which is used when items are returned to the online player after being unclaimed.
This release fixes a critical issue with the ordering of the blacklisted items causing strange behaviors, specifically if a wildcard item type is used.
There was an issue in how the keys for the blacklist were loaded and subsequently it would always match for a missing item in the entire blacklist rather than not match in the specific blacklist section. This resulted in other item types being used when no item type was intended for wildcard. It would also pull the next item type in the list.
This seems to be a scope problem in how the ConfigurationSection#contains() method checks for matches.
READ CAREFULLY!
This release changes how AuctionHouse listings are stored from a flat data file to an SQLite database file to improve overall performance.
This release will import your listings from the existing .dat file, and rename the file to .old as a safety measure, and then store the imported listings in the auctions.db SQLite file.
If you plan to run on a test server prior, please copy the usercache.json file, and the world's level.dat and playerdata folders in order for the same players that have made listings to be recognized when the data is imported.
You should run the upgrade on the same server with the players that have the listings. Running the upgrade on a test server may result in listings that can not be purchased if those sellers have never logged into the test server.
This is a one-way process! Testing has been done on the upgrade process, however it is important that you make a backup of your server data, specifically the AuctionHouse folder under the plugins folder in case you need to roll back to the 1.9.x version supporting .dat files.
If you have issues, roll back. Copy the auctions.old to auctions.dat, replace the plugin with the old one and reboot the server.
This release changes some of the methods for the API to allow for future implementation. Please double check your custom plugin code if you are using the API.
The showSeconds option has been added to the config.yml file to allow the disabling of showing seconds on the item durations. This might be useful if you set the updateTicks to something >= 1200.
Roll back due to issue with data loss.
This release improves performance and reduces lag.
This release improves performance.
This release fixes a bug in the permissions where only the first effective permission was being considered. Now it properly checks all effective permissions for the highest value. Effective permissions are what permissions the user has including for the player and their groups.
This release adds support for Spigot 1.15
Discord Support Fix
This release mainly fixes the issues with DiscordSRV API throwing errors that an API method could not be found when using the more recent 1.18.x versions of DiscordSRV. Starting with this release, you must use DiscordSRV 1.18.x or higher for Discord support. Earlier versions are not backward compatible with the new JDA (Java Discord API).
Blacklisting Fix
This release also fixes an issue with blacklisting where name, lore and enchants may not act as wildcards if omitted. This posed some problems for blacklisting an item based on lore that had a custom name.
Localization Error Message Changes
This release fixes an issue where the messages thrown in the console might be confusing if a locale file is mis-configured or key entries missing for translations.
Fix for Potential Duplication Issue
This release also added a check in the Confirm Listing menu that if a player is not online when the menu is closed, the transaction will not be cancelled.
Max Sales Tax
New features in this release include a maxSalesTax setting in the auction section of the config.yml. This is an amount, not a percentage, you would set in addition to salesTax to set a hard cap. The salesTax setting has not changed and is a value from 0.0 to 100.0 that represents the percentage of sales tax to apply to the seller's revenue.
Min Sell Price
Another feature added is a minSellPrice setting in the auction section of the config.yml. This is the minimum price that a player must list any auction.
Duration Formatting
The way that durations are displayed in the plugin have changed. Durations are time values that are represented like 0d0h0m0s. The seconds part is not necessary for parsing in the config file, but the others are required. What has changed is when these durations are displayed to the player in the menus (i.e for expiration), they omit values that are zero from left to right. So, if the value is 0d 0h 26m 36s, it will now only display 26m 36s.
Listing Cooldowns
Finally, a feature was added to the auction section of the config.yml for listingCooldown. This is a duration value and represents how much time must elapse for a player between each listing. So, if you set it to 0d0h1m30s, then a player must wait that period between their listings. This is intended to provide a minimal means to combat spamming of listings.
The revision of the config.yml file is now at 21, and the en_us.json locale file has been updated to 21 as well.
The following localization messages were added...
"warning.sell.min_price": "&cYou can not list an item with a price lower than ${0}",
"warning.listing.cooldown": "&6You must wait &e{0} &6before listing again."
This release fixes an issue where the default value of updateTicks: 20 was not added to the config.yml. It now allows the range to be 1 - 100 (1/20th second to 5 seconds).
This is how often the menus will be called to update the inventory stuff like the elapsed time.
It should default to 20, or once every second. A value of 1 will make it quicker but only adds lag.
This release adds two additional settings to config.yml.
unclaimedCheckDuration: 0d0h1m
unclaimedCheckOnWorldChange: true
The first determines how often the plugin checks all users for any unclaimed listings that might need to be returned. These are listings that are past expired.
The second determines if using the multiworld support, whether to run this check whenever a player changes their world.
The default for the first is 1 minute. This might cause some issues with performance for some, so can increase this value to 30 minutes or so to reduce amount of time plugin is checking.
This release fixes an issue where strict mode was not checking for shift-click and players could move items into the menu.
Fixed some potential null pointer problems, removed unnecessary null pointer checks, removed unused imports, and general code cleanup.
Adds auctions.replacePlayerNames and auctions.dropAtFeet boolean flags into the config.yml.
auctions.replacePlayerNames: true will replace any player name of the seller with that of the buyer in the NBT of the item upon transfer similarly to the auctions.replaceUUIDs: true setting that replaces and UUID strings.
auctions.dropAtFeet: true will force items that are given to a player to be always dropped at their feet rather than directly put into their inventory. This fixes some compatibility problems with plugins that change the item's NBT when transferred to another player on an event when the player picks up an item.
Fixed an issue where the Vault Economy or Chat (Meta) plugins might load after AuctionHouse and not be detected, resulting in the plugin being disabled.
This release changes how seller and buyer is stored internally in the listings when the plugin is running. It now will store buyer and seller as UUID objects rather than OfflinePlayer objects that may become stale while the server is running. There should be no noticeable difference in functionality with this change.
This issue may fix issues where a stale OfflinePlayer object stored could result in a null username with certain economy plugins.
This release updates the localization file (en_us.json) to revision 19 that adds separate messages for the discord announcements:
"discord.sell.player.listed_item": "**{0} listed {1}x {2} for ${3} on the auction house!**",
"discord.sell.player.item_sold": "**{0} sold {1}x &f{2} to {3} for ${4} on the auction house!**",
"discord.prefix": ":shopping_cart: ",
These discord messages do not allow for the color formatting codes, and should use the markdown notation to display the information in text (i.e. "**some text in bold**").
The discord.prefix is displayed before the message and uses the emoji ID such as ":bottag:" from the Emoji 3.0 supported list of emojis.
Please note that the placeholders such as {0} are hardcoded to the message, so if you want to remove one from showing, you just omit it and don't reorder the numbers.
Example, if you wanted just the names and amounts in bold and not to list the buyer, it would be something like:
"discord.sell.player.item_sold": "**{0}** sold **{1}x &f{2}** for **${4}**!",
Added the auctions.discord_channel setting in the config.yml. It is set to 'auctionhouse' by default and this should be the in-game channel that you set in the Channels: setting of DiscordSRV's config.yml.
For example, to have AuctionHouse notifications send to Discord, your DiscordSRV's config.yml might have a Channels entry like:
Channels: {"global": "012345678901234567", "auctionhouse": "012345678901234567"}
where the number is the channel ID given in Discord when you right-click on a channel and select Copy ID.
If you wanted to separate the main channel between DiscordSRV notifications and chat, your Channels entry might look like:
Channels: {"main": "012345678901234567", "chat": "012345678901234567", "auctionhouse": "012345678901234567"}
And if you wanted to disable only the chat messages but leave the notifications it would look like so:
Channels: {"main": "012345678901234567", "chat": "000000000000000000", "auctionhouse": "012345678901234567"}
The config.yml version was updated to revision 15.
Critical fix for all the crap I just broke with 1.8.5.
Fixes NPE in previous 1.8.5 release in the NBT UUID replacement and in the DiscordSRV integration when there's no plugin.
This release adds some miscellaneous improvements to the plugin, some to correct potential issues that may occur in rare situations.
Auction File Improvements
Changed the way listings are loaded on startup so that in the event of an I/O exception, it will now disable the plugin rather that continue with empty listings that might be saved back to file.
Changed the way listings are loaded on startup such that it creates a backup of the auctions.dat file. It overwrites this file on startup, so if you lose your auction data for some reason, stop the server (don't restart it), then restore from the backup, then restart.
Transaction Processing
Improved the way that transactions are processed to prevent an issue where an item would be received if the economy transaction actually fails for reasons other than lack of funds such as an exception.
Announcements
Added a message to all users when a player purchases an item in the auction that is enabled when auctions.announce is set in the config.yml.
Discord Integration
Added a setting in the config.yml for auction.discord that will send both listing announcements and transaction announcements to a DiscordSRV enabled server (requires DiscordSRV plugin).
Better Max Listings
Changed the way the plugin determines the max listings value to use. Instead of meta taking precedence over permissions taking precedence over the config.yml setting, it now will consider all three and take the highest setting. So if you are only using permissions, it would take the higher of a players auctionhouse.auctions.# permission and their rank group's auctionhouse.auctions.# permission. This makes it easier to use temporary permissions to add a higher max listings for a player, including timed permissions (since there is no timed meta).
NBT UUID Replacement
Added a setting in the config.yml for auction.replaceUUIDs that will change any Seller UUIDs inside the NBT data to that of the Buyer upon purchase of an item. This feature is useful for some plugins that store Owner related UUID values as Strings inside the NBT of an item (i.e. vbackpack).
Updated config.yml version to 14. Updated locale file en_us.json to 18. Locale file additions include:
"message.sell.player.item_sold": "&e{0} &6sold &e{1}x &f{2} &6to &e{3} for &b${4} &6on the auction house!",
NOTE: As with and update, please backup your data before the upgrade in case you run into problems.
Fixed an issue with an IllegalStateException caused by changing a bukkit entity in an async thread in the internal DropUnclaimedItemEvent.
Removed debug code that was accidentally left in the 1.8.2 release.
Fixed a strange issue where strict mode would flag AIR in player's inventories as being a menu item and try to remove it from the player's inventory.
Fixes a reported issue where /ah command would not work if you used /ah reload before using /ah.
This changes how /ah reload handles menus. Before it would try to close all the menus for all the players. Now it just sends a refresh to the menus, to allow buttons to be updated after an /ah reload.
No changes to config.yml or locale files.
This release fixes issues with the menu item removal functionality and fixes a check on Active and Player listings to detect if they are no longer active.
- Fixed an issue where menu items may have not been removed in strict mode.
- Improved the handling of the special NBT tag that is used to identify a menu item
- Added more detail (count, item, nbt) to the log message that is displayed when a menu item is found outside of the AH menu.
- Fixed an issue where no check was performed on an Active or Player listing when a player clicked on an AH item.
This release updates the locale files to version 17. The following message was changed and includes new fields:
"message.menu_item.removed": "Removed a menu item {0}x {1} [{2}] from {3}'s inventory!",
NOTE: This version still has an issue with the ah command sometimes not working after a reload!
Well, that didn't go as planned.
Apparently the 1.7.20 version I released was actually the 1.8.0 beta 5 version. Suppose these things will happen when you have 4 builds going and it's 3am.
But the good news is that aside from a small issue with defaults for sorting, its ready to go!
The 1.8.0 Release includes opt-in support for multi-worlds and sorting by price of the listings.
As with any release, backup your data files, since you might need them to roll back.
This release updates your config.yml file to version 13, and your locale file to version 16, but if you installed 1.7.20, you found that out the hard way.
The config.yml file removes the chronological setting in favor of the sortOrder setting.
sortOrder: 'oldest'
Can also be 'newest', 'lowest_price', and 'highest_price'
It also adds the multiworld and groupWorlds boolean settings.
multiworld: true
groupWorlds: false
The multiworld setting enables support for individual AuctionHouse listings for each world on the server.
The groupWorlds setting will group worlds that have a similar prefix (world, world_nether, world_the_end), to use the same listings. It only works if they use '_nether' and '_the_end' in their name.
The following additions were made to the locale file:
"message.listing.order.lowest_price": "Lowest Price First",
"message.listing.order.highest_price": "Highest Price First",
More performance improvements in the menu listener and menu click code...
(This version is actually 1.8.0-b5)
Because you can never have enough of a good thing...
Small fix in how listings are handled in the active listings, player listings, expired listings and sold items menus.
Implemented threading for some player events.
Fixed possible issue with economy transaction failures.
General code cleanup
No changes to the config.yml or locales versions.
As always, backup your data before upgrading to make sure you can roll back if you encounter issues!
Fixed an issue where button material changes in config.yml would only take effect when server restarted. It will now work as well when /ah reload command is issued.
Cleaned up some dependency issues with Chat API. Might fix some issues.
Changed some behavior in removing any AH items including button items that might get moved into the player's inventory.
No changes to the config.yml or locale files.
This is really just a clean up release.
Only notable change is the addition of damage and unbreakable settings under blacklisted items.
Small changes in how unrecognized item names in the blacklist are handled.
This release includes some misc. improvements to how the AH menu is called.
- Added trigger for custom entity name. The config.yml was updated to reflect these changes and now has the following entries under triggers:
signs: '[AuctionHouse]'
block_name: Auction House
entity_name: Auction House
All three are strings that will be checked if either the sign contains the text, or the block or entity's custom name contains the text. It will strip colors out when comparing.
You can summon an invulnerable, persistent, silent entity in Minecraft with no AI and give it a custom name that matches the entity_name and you can open the menu without having to use any NPC plugins.
- Fixed an issue where right clicking on a trigger sign with a dye would open the Auction House menu and not apply the dye color to the sign on 1.14.x.
- Added two additional commands only available from the console:
/ah <player>
/ah menu <player>
These will open the AH menu for the target player if they are logged in and are intended for using in custom menu or NPC commands running on the console. Can be used with Citizens NPC and CitizensCMD.
- Added /auction alias for /ah
- Fixed messages when using /ah search or /ah sell without the required second parameter. Now shows the command syntax.
This version updates the config.yml version to 12, and the locale file version to 15. The following entry is added to the en_us.json locale file:
"console.command.invalid_player": "Player is offline or invalid!"
Although this is a feature improvement release, as with all new releases please make a backup copy of your data files, in case you need to roll back.
This release is for cleanup of the menu listener code to eliminate reported ArrayOutOfBounds exceptions.
It also fixes issue where no message would be given if player used /ah search or /ah sell without additional parameters, and adds /auction as an alias to /ah.
This version updates the config.yml version to 11.
No changes were made to the locale files.
Yet more fixes for out of bounds, changed the code to make it cleaner to identify top and bottom inventories and filtered out exceptions to prevent possible duplication.
No changes to config.yml or locale files.
Seems I missed a fix in 1.7.10 that was intended, but didn't get included to do with clearing the slots using slots, not rawslots. The error before would occasionally result in an ArrayOutOfBounds exception, causing all kinds of potential exploits. this is fixed in this 1.7.11 release.
This release also fixes another exception that occurs when using the getTitle method on an InventoryView. In theory shouldn't throw such an exception, since the Javadocs don't mention that the method does. But for some reason, perhaps as a result of another plugin, this is being thrown and needed to be handled. So, AH, gracefully ignores it now, since it has no title, it's not our menu to worry about anyways.
I've also fixed an issue with the reloading of the plugin where it would not load the AH menu when you used the ah command after a reload. I had changed the behavior on how menus were cleaned up on a reload, and honestly missed a place where I would remove the menu based on uuid - it was still based on player name.
As part of the last release, the menus were changed back to not use any player name as part of giving a unique title to the menus that was introduced in 1.7.5+, but rather uses the uuid, since players were changing their names and that would cause some AH menus to be treated as non-AH menus and allow dragging of items off the menu.
As with any release, backup your data before in case you need to roll back. While these are small changes, they fix important issues and it's recommended to use this latest version.
There are no changes to the config.yml or locale files.
This release fixes an exploit in the plugin.
Good luck all, I'm giving up. I think the two 1-star reviews about the 1.14.x development version support on Spigot is about all I can take.
I've worked 6+ months on this project and someone doesn't care to read the discussions about the issues that are going on and installs and calls my efforts trash.
I enjoyed working on this project, but understand, when I wrote this plugin, It wasn't to make a free plugin for everyone. I wrote it because I needed a replacement for AH that was discontinued.
I posted it because others were interested in it, but now, it's become like an expectation for others, and frankly, I don't need that.
So, as far as I care, this plugin now is private again. I will not be posting updates. And most likely I will remove it and get out of writing plugins and focus my efforts on bigger things.
Do not ask for code, since it is not GPL, source is not available and do not reverse engineer it.
Hate to be this way about my work, but it's going unappreciated and frankly I don't deserve that.
This release includes some bug fixes for ah /reload and how menus are registered. In Paper, some menus would not open when the /ah reload command was issued.
This release also includes some code cleanup in regards to menu event listening and handling for the strict: true flag that will search inventories for menu items with a custom signature and remove them if found outside of the AH menu.
The method it uses for removing should now, not result in a can not drop air message.
This release was tested on the latest Spigot 1.14.3 and Paper-124. I did not encounter any duplication issues during this testing, nor exceptions that might allow duplication.
There is still the possibility that other plugins might interfere with AH's inventory handling and cause duplication to occur if ill-behaved and cancelling AH menus, or if exceptions occur in other plugins.
As with all releases, please backup your data files if you have to roll back to an earlier version.
There are no config.yml or locale file changes in this release.
Fixed issue where strict mode checking on dragging in the player inventory area threw an out of bounds exception.
Changed Strict mode to default to false.
The default config.yml has changed to take in to account this effect, but the config version has not changed. So, if the strict flag is in your config.yml it will stay that setting.
This release fixes an issue where messages would duplicate when /ah reload was used.
No changes to the config.yml or locale files since 1.7.5.
Strict mode
This release attempts to fix some issues where duplication can occur with hacked clients. The version introduces a 'strict:true' boolean setting in the config.yml file that will limit actions the player inventory area (lower part of the menu) when using AH when set to true.
This feature also checks for a special NBT flag that is added to the menu items that are displayed and will attempt to remove them if they are in the wrong portion of the menu and send a message to the log. While this is not normally, possible, in low TPS situations, it is possible to ghost items to the client side even though they are not existing on the server side. This feature should hopefully help make it harder to hack items. Strict mode is set to true by default.
Announce feature
Another boolean setting was added to the config.yml under 'auction.announce:true' If this setting is true, any items listed will be announced to all players. Announce is set to false by default.
Decimal format changes
The config.yml file also deprecated the decimal: # setting and is now replaces with a
decimal_format: '#,##0.00' setting. This is for defining the format, and you should use the , for the separator and . for the decimal separator. Those will automatically be translated into the appropriate characters depending on your locale.
Config and Locale Changes
The config.yml version has been updated to 10 and the en_us.json locale file has been updated to 14.
Changes to the locale file include two new translations:
"message.menu_item.removed": "Removed a menu item from {0}'s inventory",
"message.sell.player.listed_item": "&e{0} &6listed &e{1}x &f{2} &6for &b${3} &6on the auction house!"
As will all releases, please backup your data files in case you need to roll back.
Fixes critical issue where menu reloading on /ah reload would cause duplication if using the confirm listing menu and cancelling.
Fix for potential exploit and reload now will update menu buttons from config.yml
This release disables ah commands when sleeping
This release fixes an issue where certain item names might cause an IndexOutOfBoundsException to be thrown when populating the item name in a message such as when adding a listing.
No changes were made to the config.yml version or locale files.
This version is the release version of 1.7.0 with the improvements to the menu system to avoid possible issues with other plugins and crafting tables.
This version also fixed the tab completions not being localized for commands.
- This version fixes issue with tab completions spamming the console with exceptions on some JVMs
- This version fixes issue where tab completion list was not localized.
There are no localization file changes or config.yml file changes.
This release is a beta.
This release changes the behavior for the menu handling to make the event handling hardened. It will handle only events target at menus (inventories) whose title (or name in the case of 1.13) plus the player name match a base64 encoded menu id.
This means its less likely that the plugin will handle events from other menus from other plugins, or disable behaviors for containers such as crafting tables.
I'm hoping that this release resolved both those issues.
As with any beta, or release. Backup your data in case you need to roll out.
I've done testing on this beta, and feel comfortable with releasing it into the wild at this point, however, I may have missed something, or environment specific issues might still exist.
Please let me know if you uncover any issues.
I hope to release in the next week if all goes well.
There are no changes to the config.yml or locale files.
This fixesan issue where menu events might be handled when a menu title is empty, as in the case of other custom menus. The code was checking if the menu title was a match, but sometimes the title returned might be empty, and was not being handled properly.
This also fixes an issue when using 1.13.1 and it would use 1.14 methods for getting a title.
It is not confirmed yet whether these fixes address reported issues with menu handling causing crafting tables to not work.
As with any release, backup your data in case you need to roll back to the last stable version.
There are no changes for the config.yml or locale files.
This release (hopefully) fixes the issue reported with certain Written Books not being parsed correctly when the plugin is reloaded, causing the plugin not to load.
There are no changes to the config.yml or en_us.json files.
As usual, backup your auction.dat, config.yml and locale files prior to update, just in case anything goes wrong.
This release has been tested on 1.13.2 and 1.14.1. It has been tested with several Written Books including a 50 page unicode one.
Still issues with 1.6.4, please use 1.6.2 for time being until a proper fix is available.
This is an update to fix the written books/nbt parsing issue.
WARNING!
As with any update - backup your auction.dat file before updating just in case something goes wrong.
No changes were made to the config.yml or en_us.json files.
Re-release of 1.6.2 in order to remove 1.6.3 with issue.
This release fixes an issue where NBT data might not be parsed correctly from the auctions.dat file if the data is complex and full of strings, such as in the case of Written Books.
No changes to the config.yml or en_us.json files were made.
Warning! This version will upgrade your config and locale files. If you use a customized locale you will need to update that as well to include any new translations. It will backup the existing en_us.json file if it exists.
As with any update, please backup your AuctionHouse folder and test on a test server first. I do my best to test all features, but sometimes bugs happen.
Updates:
- Fixed a potential exception issue
Fixed a reported issue where the MenuListener might throw "java.lang.IllegalStateException: Title not set" when trying to handle an inventory with no title using the 1.14. This issue can occur if not using to the latest 1.14 Spigot version.
New Features:
- Added support for disabled-worlds
Added support to disable all AuctionHouse commands from worlds listed listed in the disabled-worlds string list of the config.yml file.
Code (Text):
disabled-worlds:
- world_nether
- world_the_end
Â
- Current config file version is now 8.
- Current locale file version is now 12.
The following translation was added to the bottom of the en_us.json file:
Code (Text):
 "warning.command.disabled_world": "This command is disabled in this world!"
Warning! This version will upgrade your config and locale files. If you use a customized locale you will need to update that as well to include any new translations. It will backup the existing en_us.json file if it exists.
As with any update, please backup your AuctionHouse folder and test on a test server first. I do my best to test all features, but sometimes bugs happen.
Updates:
-
Item listed and item sold messages will now use the custom name. The messages in the locale json file were updated to allow when an item is listed or sold to show the custom name of an item in chat. if no custom name, it will look for a localized name, if not found it will default to the item name.
-
Added logging feature for item transactions. The config.yml now contains a log section with options for enabling/disabling logging of listed, sold, cancelled, returned, dropped and purged items to a separate log file under the logs directory under the plugin's data folder.
In the previous release we added an event called AuctionItemEvent, this logging feature listens for those events and outputs messages to a log file based the new messages added to the locale json file.
This feature is useful for admins as a reference for resolving discrepancies with player listings.
It will show the details of the listing including the item's enchantments. However, the item name will not be translated, nor does it show lore or damage value.
Note: Logging is enabled by default, so if you don't want this feature, please disable in the config.yml file.
- Current locale file version is now 11.
- Current config file version is now 7.
This build is the first release for 1.14.
It supports both 1.13.2 and 1.14.
Also added AuctionItemEvent that gets sent whenever an item is listed, sold, cancelled, returned or purged.
(Does not support expiration events, since that would have to poll and would create additional overhead)
Fixed an issue where name was not properly being checked in the blacklist.
Added option for regular expressions on name with "regex:<expr>" syntax. Will need to escape backslashes in the expression (double backslashes).
Fixed issue where reloading the plugin would not clear the existing blacklist entries before reloading.
This release add some better bounds checking on arrays that hold the items for each menu, hopefully preventing out of bounds errors on array lookups reported on Paper Spigot.
This release fixes an issue where pressing ESC to cancel when in the Confirm Listing menu would not return the item selected to be listed.
This release fixes an issue where an item with a custom name that included color formatting codes was being displayed with the color formatting codes. The issue did not actually affect the item name for the sold or returned item, just how it was displayed.
It now only displays the colors if the actual section symbol is in the custom name, not if it also has color formatting codes using the & symbol. It is up to any external plugin to change the color formatting codes, and by default the behavior of the anvil does not allow this feature.
This release also changes how often menu items will be updated when the menu is opened. Before it was checking each tick to update the remaining time on the auction, elapsed time since the item was sold, or if the item is removed while the menu is open. Now it only checks once every 20 ticks (or each second). The fix is intended to improve performance of the plugin.
Added auction.soldDuration in config.yml to specify how long a listing that has sold should be kept. After this period, the sold item listing will be removed in order to keep the storage tidy.
Also clarified the messages displayed for missing dependencies to be more helpful.
This version will update your config.yml.
The code that reads the locale files was updated to use InputStreamReader with a forced character set of UTF-8 rather than the standard FileReader method.
The problem with the old method was that files that are read are assumed to be in the encoding of the default character set of the platform.
Sometimes a server will not have a default locale of UTF-8, but rather a language specific locale and thus when the locale file is loaded, the characters are incorrect.
- Fixed an issue where a blacklisted entry with an item that did not match a known "minecraft:item" would act like a wildcard, potentially preventing all items from being listed.
- Fixed an issue where if the plugin can't find the locale file it would not fallback to the en_us locale file. It now does and throws an error message in the log.
- Added support for "auctionhouse:player_head" specifically in the player_listings button so it would show the player's head for this button.
- Added support for "hdb:id" in all buttons. If you are using HeadDatabase, you can specify the id of the head like "hdb:923" to use that as a button.
- Added suport for "texture:..." in all buttons. If you specify the base64 texture for a custom head, it will display using a random UUID. For example setting the info button to
'texture:eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTI5NDg4MWYzMzQwOGU4OTY0ZDI1NWZkOGViMjFhZTY5ODhiMmNjYTg5OTRkMTU3OTk5NmE2ZjEzMmJjNDI5YyJ9fX0=\'
would show a rubiks cube. The single quotes is not necessary, however if you use double quotes, any backslashes will need to be escaped.
This fix improves the handling ofthe triggers.sign, triggers.name or commands.exit keys in the config.yml in the unlikely event that the config.yml didn't get updated, or those keys were removed, or whatever. So, now it handles gracefully. (No stack traces).
Also, I made a small but important change to how the permissions are used. Before we had an auctionhouse.use that was, well, used for most all commands. Now, each command has it's own permission. auctionhouse.use is still needed for using the main /ah command without any parameters.
Here's the excerpt from the plugin.yml that shows what the permissions are, and whether they are true by default.
Code (Text):
permissions:
 auctionhouse.reload:
  description: Enables the /auctionhouse reload command
  default: false
 auctionhouse.use:
  description: Enables the /ah command
  default: true
 auctionhouse.menu:
  description: Enables the /ah menu command
  default: false
 auctionhouse.search:
  description: Enables the /ah search command
  default: true
 auctionhouse.help:
  description: Enables the /ah help command
  default: true
 auctionhouse.sell:
  description: Enables the /ah sell command
  default: true
 auctionhouse.selling:
  description: Enables the /ah selling command
  default: true
 auctionhouse.sold:
  description: Enables the /ah sold command
  default: true
 auctionhouse.expired:
  description: Enables the /ah expired command
  default: true
 auctionhouse.cancel:
  description: Enables the /ah cancel command
  default: true
 auctionhouse.return:
  description: Enables the /ah return command
  default: true
 auctionhouse.cancel.others:
  description: Enables cancelling other's listing
  default: false
Warning! This version will upgrade your config and locale files. If you use a customized locale you will need to update that as well to include any new translations. It will backup the existing en_us.json file if it exists.
As with any update, please backup your AuctionHouse folder and test on a test server first. I do my best to test all features, but sometimes bugs happen.
Updates:
-
Sold Items was moved from the main Auction House menu to under the Player Listings. It made more sense that it should be there, even though the main menu might be more convenient. This allows space on the main menu for an optional exit button:
- The main Auction House menu can now display an Exit button in the left side of the menu buttons if called using the /ah menu command. The /ah menu command is intended to be for other menus to call the Auction House and requires the auctionhouse.menu permission to be set.
- The localization file has been updated to include separate text for the Exit button, however default says 'Back' and uses the same item as the Back button (but feel free to customize).
- The config file has been updated to include commands.exit that can be set with a command to run after the Exit button is pressed. This allows daisy chaining back to a calling menu program.
- Clickable signs with trigger text defined in the config. The config.yml file contains triggers.sign. If set and not empty, and a player right clicks on a sign, the Auction House menu will display.
For example, you can right click on a sign with the default [AuctionHouse] text somewhere in the lines, and it will open the AH menu.
- Clickable blocks with trigger text defined in the config. The config.yml file contains triggers.name. If set and not empty, and a player right clicks on a certain nameable block entities, the Auction House menu will display.
For example, you could rename a chest block in an anvil and place it, then when you right-click on it, it would open the menu instead of opening the chest.
Supported blocks are chests, trapped chests, shulker boxes, furnaces, dispensers, droppers, hoppers, brewing stands and enchanting tables. Hint: An upside down dropper or chest makes a nice AH block. Throw a hologram over it an you are set!
- Current locale file version is now 10.
- Current config file version is now 4.
Fixed a critical issue where an item could be moved in the confirm listing menu, allowing the item to be listed, to be duplicated. This will only occur if confirm listing is enabled by using a listing price or listing rate in the config.yml.
Fixed an issue where an invalid item in the blacklist would act like a wildcard. Now it will ignore that entry if it contains an invalid minecraft material and throw a warning in the log file.
Blacklisting now works better! Before it was not handling conversion of Unicode section symbols from their representation into the actual character. But it's fixed now!
You can use \u00a7 or \u00A7 to represent the section symbol § in the display name or lore of the blacklisted item.
For those who don't know, when you use special characters like &f to represent colors, those & are usually converted to a section symbol internally. In the config.yml file we explicitly use the \u00a7 or \u00A7 notation instead of the & since you may want the & to be used in the text.
One more thing, now you can omit the item type in the blacklist entries and it will match all items. This acts as a wildcard and can be very useful for prohibiting selling any item with a certain kind of lore or enchant.
So if you just wanted to blacklist all items that contained cursed enchants, create one entry for each cursed enchant and leave out the item. If you want to blacklist items with a specific lore, just specify that line of lore to search for, and if matched that item will be prohibited. This is very useful for blacklisting items with soulbound lores or custom enchants that use lores.
Enjoy!.
No changes to the config or locale files.
Fixed the issue where Ctrl-Shift-Click was not working for cancelling other's auctions (if the permission was set).
Changed the way item names are displayed for locales. Now will display the localized names of the items, or any custom name in both the lore in the listings, and in the messages (mostly working).
This release fixes
critical security issues with the event handling in the plugin and removes debug messages that were included in the update.
it is recommended that you update to this release in order to make sure your players do not experience
"additional features" that might not have been what you planned for running your server.
Big-Oops!
This release fixes a
critical security issue . Please update to the 1.4.1 version, as prior versions might have a critical security issue that
you definitely don't want on your server .
Bug Fixes:
- Fixed issue where a player leaving the game and returning was not given items returned to them because offline player returned an invalid player reference.
This build is updated to version 1.4, since we've had just so many changes recently that the code warrants a new minor version.
I'm hoping this version is stable for quite a while, as I'm not planning any additional features at this time.
Bug Fixes:
- Fixed issue where shift-right-click on an item in the player inventory would move the item to the storage area (menu part) of the inventory, and players could lose items this way.
This release has be re-tested for the inventory click behaviour and should not allow items to be lost, or duplication of items, or movement of items to or from the menu.
Whoops! Last build had a big bug in the stack size changes made to try to fix a reported issue. This fixes that bug.
Please don't use the 1.3.11 build since it will not show the stack sizes for listings on the Active Listings page.
Note, the bug is only visual, and did not effect the contents of the auctions.
Warning! This version will upgrade your locale files, so if you use a customized locale you will need to update that as well. It will backup the existing en_us.json file if it exists.
Bug Fixes:
- Removed support for displaying count of items on an actual button with the item count. This was being limited to 64 for the stack size, and players might have over 64 current listings or sold items, so made sense to remove.
- Buttons will now take you to the menu, even if there are no items, but display a different message in the lore if the count is zero.
- Fixed missing commands for the tab completion.
Updates:
- Visual formatting changes, position, color and spacing.
- Current locale file version is now 9.
Warning! This version will upgrade your locale files, so if you use a customized locale you will need to update that as well. It will backup the existing en_us.json file if it exists.
Bug Fixes:
- Fixed and issue where custom text added into the value translations with newlines (\n) would add the text twice.
Updates:
- Precedence of the max auctions values now does not just use the highest value found, but will use the values in priority of meta data, permissions, config.yml setting, in that order. It means even if the default config.yml setting for defaultMaxListings is set to 45 (one page), if you were to give a player a meta or permission with a lower value, that lower value would be used instead.
- Added auctionhouse.cancel.others permission that will allow those with it to cancel auctions using shift-right-click on an item in the main listings pages. It will send a message to the seller if their auction is cancelled.
- Current locale file version is now 8. Diff your custom locale files.
Other:
- Note that if you edit the localization strings and want to add blank lines with (\n), you should put a space in the line, since lines without any text will be removed normally to allow blank messages to not display at all.
If you have any questions, concerns, please let me know in the discussion or send me a PM.
Warning! This version will upgrade your locale files, so if you use a customized locale you will need to update that as well. It will backup the existing en_us.json file if it exists.
Only the horizontal rules have changed in the locale file.
Bug Fixes:
- Reverted the horizontal rules to use hyphen characters, since in some locales strange characters were appearing with the line-draw Minecraft characters.
Updates:
- Support for colors in menu titles.
- All of the item lores should now expand newlines and also remove empty lines. You can still leave a blank line with spaces.- Current locale file version is now 7.
Other:
- Tested locale file with Pound (£) and Euro (€) currency symbols.
If you have any questions, concerns, please let me know in the discussion or send me a PM.
Warning! This version will upgrade your locale files, so if you use a customized locale you will need to update that as well. It will backup the existing en_us.json file if it exists.
Several keys and values have changed in the localization files. You will need to update any custom translated localization files from the new en_us.json file.
Bug Fixes:
- Fixed NPE with item listings in the menus.
- Fixed issue with sounds being global.
- Fixed issue in inventory updating to eliminate flicker and improve performance.
Updates:
- Changed the location of Recently Sold Items button to the Player Listings menu
- Added Clear Sold Items button to the Recently Sold Items menu.
- Changed the location of Cancelled/Expired Items button to the Active Listings menu
- Changed terminology for some menu items and descriptions.
- Changed how rules are displayed in listings.
- Changed the behavior for trying to purchase own listing.
- Added
/ah sold command to open the Sold Items Menu
- Message items that are empty in locale file will now not send a message to the user.
- Messages that contain newlines
\n will display properly in messages and lore.
- Horizontal rules used in the item's lore description can now be changed in the json locale files. (they now use line draw characters instead of hyphens)
- Button materials are configurable in the config.yml file. (just in case you prefer some other back, prev or next buttons for consistency)
- Sounds are configurable in the config.yml file. (you can set to silent)
- Current locale file version is now 6.
- Current config file version is now 3.
If you have any questions, concerns, please let me know in the discussion or send me a PM.
Warning! This version will upgrade your locale files, so if you use a customized locale you will need to update that as well. It will backup the existing en_us.json file if it exists.
The localization files have changed. You will need to update any translated localization files from the new en_us.json file since the format of the translations is different to avoid issues.
Important Bug Fixes:
- Fixed version issue on localization file that was causing older localization file to be used, missing important fields that would cause a crash if missing. Current version should be 5.
- Changed the localization format to eliminate crashes from invalid formatting of numbers.
- Localization now uses the
{#} terminology now for each value that is built into the translation allowing them to be placed in any sequence.
- Fixed an issue where the config file was not updated to the latest version. Current version should be 2.
- Fixed issue with return items not being put into empty slots but just dropped.
- Fixed issue with items not returning after being cancelled from command line unless you go into
/ah menu.
Updates:
- Number formatting is now built into the code, if you need to specify decimal places for prices, please set the new
decimal value option in the config.yml to either 0 or 2.
If you have any questions, concerns, please let me know in the discussion or send me a PM.
Warning! This version will upgrade your locale files, so if you use a customized locale you will need to update that as well. It will backup the existing en_us.json file if it exists.
Bug Fixes:
- Fixed issue where multiple items cancelled or returned would not cancel or return all items, but just one.
- Fixed issue where returning items would not stack that item with similar items in player's inventory.
Updates:
- Changed behavior to allow returning items to drop items at player's feet if no space is available in their inventory, rather than only throw an error message.
- Changed messages when dropping items and when max listings is zero.
Warning! This version will upgrade your locale files, so if you use a customized locale you will need to update that as well. It will backup the existing en_us.json file if it exists.
Bug Fixes:
- Fixed NPE occuring when loading lores.
- Fixed blacklisting of items not matching if not all fields specified.
- Fixed issue where renaming a blacklisted item would allow it to be sold.
- Fixed issue where blacklisted item names with \u007a (section symbol) was not converted properly.
- Fixed issue with unclaimed auctions items not dropping at the feet of players after they go unclaimed.
- Fixed issue where en_us.json locale file was over-written without any backup when a version change occurs in the locale file. It now will backup the file with .backup extension.
Updates:
- Changed listing message to include amount, item and price.
- Changed purchase message to include amount, item and price.
- When dropping an unclaimed item it now makes a burp sound.
- Added /ah cancel to cancel all auctions.
- Added /ah return to return all items that are cancelled.
- Added support for permissions based maximum listings with "auctionhouse.auctions.#". It will now check the config file, player meta and the permissions and return the maximum listings based on all three (highest value).
Fixed an exception that occured during tab complete if player has "auctionhouse.reload" permissions.
Updated en_us.json locale file to include updated strings for the purchased messages for both the buyer and seller. Now shows the item purchased to the seller, and the price to the buyer.
Some smaller color changes as well for consistency.
Fixes an issue with an NPE in the new blacklisting code.
Added Search:
Added /ah search <filter> command that will search in item type, name, lore, enchantments and seller for matches.
Improved Blacklists:
Revised blacklist format in config.yml to support blacklisting on item type, name, lore and enchants
Improved Listing Expiration and Cleanup:
Changed listingHours and listingMinutes to listingDuration that uses a duration format like 1d4h30m. This adds more flexibility to the duration of the listings.
Added expiredDuration, unclaimedDuration and cleanupDuration keys to the config.yml
When a listing exceeds the listingDuration, it's state changes to expired. If the expiredDuration is exceeded, it's state changes to unclaimed and is no longer listed. I the unclaimedDuration is exceeded, it's state changes to abandoned. Abandoned items are periodically removed based on the cleanupDuration.
Any items that are expired or unclaimed will be dropped at the player's feet if they are online.
Note: This version will upgrade your config.yml and English locale files. Back up first if you plan to roll back to the 1.2.2 release since the listing duration format has changed.
Any custom locale files will need to be updated to add the additional strings and the new version number.
This release includes chatHook setting in the config.yml set to true by default. Setting this to false will forcibly disable the per-user maximum listings.
This is needed since some permissions plugins, do not support some methods for storing/retrieving option values per group and player, yet return a zero value when called instead of a null or -1. A zero value to denote an invalid method is ambiguous since a zero value might have been intended and stored in an option value.
This value should be set to false for compatibility with the following permissions plugins:
- UltraPermissions
If you get a "You can not list more than 0 items at a time." message, it is probable that you need to disable this setting.
Fixed "You cannot list more than -1 items at a time." issue.
GroupManager returns -1 when it doesn't find a value set for the player or group. Vault is expecting null, and if found returns a default, but instead gets a -1 for the value.
Fixes/Changes:
- Fixed Pagination issues when listing more than 45 items. Next page button was appearing when 45 items reached, and should have been 46.
- Fixed some NPEs that occured when listing more than 45 items.
- Better testing of pagination support for Active Listings, Player Listings, Expired Listings, and Sold Items
- Fixes issue with Sold Items menu not being accessible/functional.
- Changed the material for 'Back' button from Paper to an Iron Door, so as not to conflict with 'Previous' and 'Next' buttons.
New Features:
- A config setting 'listingMinutes' was added to allow you to make listing durations in minute values. This value is added to the listingHours and the result is used, so you could just specify everything in minutes if you wanted to.
- Better support for updating menus in realtime when items are Listed, Cancelled, Expired or Sold. This means if one player lists an item it and another player has the Auctions Listings menu open, it will automagically update.
- Because of the realtime updating, the Refresh button was replaced in favor of the Sort Listings button. This will allow you to sort items on the Active Listings, Player Listings, Expired Listings and Sold Items menus.
- A config setting 'chronological' was added and set to true by default. This is the default setting for the Sort Listing feature. When set to true, items are sorted in Oldest First ordering, and if false, Newest First ordering. You can switch them back and forth in the menu, this is only the default value that loads.
- Plugin Localiztion: the plugin now reads all strings from a locale file it creates in it's data folder. The default locale file is en_us.json. However, if you were to copy/paste this file into another file in that folder, renaming it, and making sure to modify the language.name, language.region and language.code portions of the file, you can add new languages. All the strings in the plugin are contained in these files, so you can have at it. Also, a config setting 'locale' can be set to match the prefix of the file / language.code such as 'us_en' to be used by default. Note, this is not per-user localization yet, locale is set for by the admin at the moment with this config setting.
Notes:
The 1.2.0 version has significant changes due to the localization and new features. Although I have made my best attempts at testing the new functionality for issues, there still may be issues. But overall, this build is more functionally complete than the earlier versions. It is also backwardly compatible and should be able to be installed over the previous versions while retaining the auctions.dat file. It will upgrade the config.yml file automatically for the new entries and the json locale file created on run.
Fixed issue where player listings were not being correctly filtered after a player logs out and back in.
- Fixed the preventCreative: false setting so that it works
- Changed command behavior such that /ah and /auctionhouse are interchangeable
- Can now use /ah reload
- Added listingRate: <percentage> setting to the config, this value as a percent is multiplied by the price of the listing and the seller is charged this to list. This works with the listingPrice: <value> setting for adding a flat fee. Both can be combined to determine the listing fee.
- Listing fees are non-refundable, so if there is one, now there is a confirmation menu.
- Added salesTax: <percentage> setting to the config. This percentage is multiplied by the price and subtracted from the revenue given to the seller when an item is purchased.
Well, I prohibited the listing of air in the 1.0.2 release, but didn't realize that several of you now have air in the data file and it's causing other NPEs to occur. These have been patched and the dat file is cleaned of any 'bad' air on loading. So, please update to this version.
Fixed possible NPE when Vault or chat provider is not available
Added auctionhouse.use and auctionhouse.sell permissions