• Display Shops | A New Approach To Player Shops • icon

• Display Shops | A New Approach To Player Shops • -----

Create immersive simplistic shops with animations, efficient transaction handling, and much more!




All DisplayShops 1.7.x data and configurations OUTSIDE of the "menus.yml" will be converted. Backup all data before updating.

Changes
  • Added 1.20.3 and 1.20.4 Support
  • Added general ItemsAdder and Oraxen support
  • Saving mechanics are now performed in parallel (much faster data saving)
  • The recipe for the creation item can now be reloaded using "/displayshops reload"
  • Reworked most logging messages. All items that are changed are included in the logged message
  • Shops now have a multi-currency feature, allowing users to select a specific currency for each of their shops individually
    • Switching currencies now automatically formats all balances, costs, etc. with their identified symbols/names (REMOVE ALL CURRENCY SYMBOL REFERENCES IN ALL CONFIGS)
    • Custom economy/currency integration documentation can be found here
    • Along with this change, many new configuration options are available in the config.yml
  • The shop creation item now has the "DisplayShops" NBT tag for easy 3rd-party identification
  • All menus were split into their own configuration files and moved into the "menus" folder
    • The "menus.yml" will remain for reference, but will not be utilized
  • All menus were reworked from the ground up granting new features and abilities
    • The appearance menu now only shows the heads of existing assistants
    • Most menus now have a graphical way of user entry alongside a text-related way of entry
    • Text-related entries are presented with an AnvilGUI thanks to the library by WesJD
  • All amount selectors now have a more fluent experience by starting at the amount set in the shop and allowing the player to add or remove from that value rather than entering negative values
    • Page-based menus now load pages asynchronously alongside conditional properties for updating buttons in a reactive format
  • Everything related to "base-blocks" was rebranded as "appearances" and moved to the "appearances.yml" (menu configuration file)
    • This includes default materials such as the "shop-block-material" and base-block offsets for hologram positioning
  • Many new messages were added/removed to/from the "lang.yml" (All will be added/removed automatically to/from the "lang.yml")
  • Enhancements to existing features were implemented, including the addition of new config.yml options like "fix-above-blocks", "force-single-stack", and "editor-prevention"
  • Added the ability to use TEXTURE:<base64> as a material to use base64 custom texture for item heads
  • Player head caching was implemented for REAL player profiles allowing menus to load quicker where heads are present
  • Replaced the "/ds copy" command with "/ds id" command. The new command sends the ID into chat and is now clickable to copy to clipboard.
    • This change also adds the "shop-id" message to the "lang.yml"
  • The "/ds reload" command now has the ability to enable/disable Vault based on the configuration value without a server restart
  • Implemented configuration synchronization
    • When the plugin enables, all configurations have their keys compared against the latest configuration found inside the JAR. Keys will then either be added or removed based on the comparison result
    • This feature simply will allow the config.yml and lang.yml to remove old options and add new options where suitable
  • The "{buy-price}", "{sell-price}", "{base-buy-price}", and "{base-sell-price}" placeholders now reflect the unit count when increased or decreased
  • The "displayshops.edit" permission is now a general permission that allows the player to edit a shop they have access to. The new "displayshops.adminedit" has access to edit all shops regardless of ownership
  • Player recovery (when a shop is deleted while the player is offline) was reworked and handled in the "recovery.yml"
    • For now, the items are dropped to the player when they come online
    • The dropped item that didn't make it into their inventory are protected until next reload or server restart
  • The values of "-1" are now shown as "Disabled" throughout the plugin
Fixes
  • Fixed an issue allowing container base-blocks to open the block's inventory. The fix simply closes the inventory 1 tick after its possible appearance
  • Fixed issue causing some shops to get stuck in a currently being edited state
  • Fixed an issue allowing non-store-owners to set the shop item of an empty shop
  • Fixed several issues causing the shop item to not show set stack sizes set by the shop owner or assistants
  • Fixed an issue causing holograms/displays to not update when the shop is updated (only effects "always-display" mode)
  • Fixed an issue causing notifications not to be sent to a shop owner when a player makes a purchase
  • Fixed an issue with the SuperiorSkyblock2 hook causing shops to not delete properly
  • Fixed an issue that closes all GUIs any player has open when a shop is deleted
  • Fixed an issue causing transaction menu items to show incorrect prices when unit count is updated
  • Fixed an issue causing the sell-all action to send an incorrect message
  • Fixed an issue causing buying/selling to not calculate the unit count off the paper display item
  • Fixed an issue causing buying/selling actions not to function without the displayshops.edit permission
  • Fixed a few issues with deposit/withdraw features causing improper values to be or incorrect calculations to be used
  • Fixed an issue with the stock balance too low message (improper balance amount displayed)
----------, Jan 20, 2024

This will be the final 1.7.x update of DisplayShops. If any further changes are made to the 1.7.3 update, builds will be released within the discord in verified channels (be sure to verify to gain access).

Once resources have been created, DisplayShops 2.0 will take over and be the new main branch of the plugin.


Plugin Changes

  • Added 1.20.1 and 1.20.2 support.
  • displayshops.edit is now a general permission that allows the player to edit a shop they have access to. The new displayshops.adminedit has access to edit all shops regardless of ownership.
  • Implemented additional depth and configurability for explosive protection.
  • The shop visit items within the visit menu now will remove buy/sell price lines if the price is set below zero.
  • Shops with a sell price will now show in the visit menu regardless of current stock.
  • Added the "not-applicable" message to the lang.yml for global usage.
  • Added entity block changing protection for shops.
  • The shop creation item is now entirely checked by NBT.
  • The Material translation section in the "lang.yml" can now accept the format <material>:<durability>: "<translation>". To allow for durability/data values for older MineCraft versions.
  • Fixed an issue preventing the shop advertisement message from properly showing a preview of the item it is selling.
    • Additionally, the player must now click the "[Click To Visit]" text to initiate the teleportation process.
  • Fixed an issue with the SuperiorSkyblock2 hook causing shops to not delete properly.
  • Fixed the visit menu not properly determining when to show a shop.
  • Fixed the "HIDE_DYE" attribute throwing errors for MC versions under 1.13.
  • Fixed an issue that prevented visiting a shop surrounded by snow (Quarter Block Height).
  • Fixed the advertisement message not allowing new lines (\n).
    • In addition, when the buy/sell price is below zero, a single currency symbol in front of the placeholder will now be removed (color codes will break this process).
  • Fixed an issue with time formatting within the market region messages.
  • Fixed an issue allowing the base-block page memory to be empty.
----------, Oct 14, 2023

Plugin Changes
  • Added 1.20 Support.
----------, Jun 9, 2023

API Changes
  • The "getVisitPageMap" method was replaced by the "getVisitContents" method which now returns a "Pair<Shop, ItemStack>".
  • The "getShopVisitItemList" method was added to the "Manager" interface which contains all managed shop items that are only added or removed by the respective task.
Plugin Changes
  • Added the "/sw" and "/swfilter" command aliases alongside additional logic form the to act like "/ds visit <args>".
  • The shop visit feature now uses a global item list to handle consistent sorting.
    • PlaceholderAPI is no longer support for the visit shop items. Due to the global change.
    • Paging is handled through a list of globally, alphabetically, sorted items based on their corresponding shop.
  • Shops now have their visit menu icon updated when their last changed timestamp is updated or an important value such as the stock is updated.
  • Ported the "editor-prevention" option/feature from v2.0.
  • Fixed an issue with sorting and indexing in the visit page menu with many shops that don't pass a defined filter check.
  • Fixed an issue with memory usage involving the visit shop menu.
  • Fixed some areas where the change timestamp was not updated for shops.
----------, Jun 4, 2023

API Changes
  • Fixed an issue causing the new VISIT_FILTER_ENTRY to not fire the ChatInteractionStageEvent with StageType set to FINISH.
Plugin Changes
  • Added 1.19.4 Support.

  • When visiting a shop in Minecraft 1.13+ the shop's base-block material will be taken into consideration to prioritize teleporting the player to the "front" of the block (front of a chest, as an example).

  • Additions to the base-block menu can have their material set as the ID of a block from ItemsAdder to form custom base-block models/blocks etc. This also goes for menu items, by setting the material to the ID of a ItemsAdder custom item.
    • These ItemsAdder IDs are CASE-SENSITIVE.
  • Added the "/ds balance <deposit|withdraw> <amount>" command alongside the"displayshops.baldeposit" and "displayshops.balwithdraw" permissions.

  • Added the "balance-command-usage" message to the lang.yml file.

  • Added the "type-item" item to the "shop-visit-menu" in the menus.yml.
    • This new item toggles between the types buy, sell, and both each representing the shop which inherits the current cycle shop type.
  • The base-block menu now displays all valid options regardless if the players meets the requirements or not (even if they have unlocked it before and simply had their permission for it revoked). Instead, the player will be sent the no-permission message when clicking it (again, whether its unlocked or not).
    • In addition to this change, a {requirement} placeholder was added to the "unlocked-item-format" under the base-block-menu section from the menus.yml. Ensure to add - "{requirement}" there if desired.
  • The visit menu was reworked again to properly handle pages.
    • In addition, a refresh button was implemented incase a server is unable to load items fast enough for it to render to the player (please refer to the default menus.yml to add the button to your existing configuration).
  • The "/ds visit" command now allows multiple arguments. For example, "/ds visit golden apple" will open the visit menu with the filter "golden apple".

  • The {unit} placeholder can be used in menu items to get how many item's makes up a single unit for the shop associated to it.

  • Fixed an issue causing the hologram description to not retain configured color codes.

  • Fixed a compilation issue causing version 1.16 - 1.18.2 to handle packets incorrectly.

  • Fixed an issue with the Visit menu causing the filter to default to None when switching pages under the same instance.

  • Fixed an issue causing the chat interaction for the visit menu filter to not properly exit the player from its process upon completion.

  • Fixed an issue where decorative items were not working correctly causing original items to override their placement.
----------, Apr 8, 2023

API Changes
  • Minor name changes internally were made, but nothing that will break API usage.
Plugin Changes
  • Added 1.19.3 support.

  • Backported display packet changes to 1.10-1.18.2. Older versions will likely not get a backport due to absent API features.

  • Added the "/ds deposit <amount>" and "/ds withdraw <amount>" with their permissions "displayshops.deposit" and "displayshops.withdraw".

  • Added the "transaction-cooldown" option to the config.yml. When clicking a buy/sell button in the transaction menu, the player must wait X seconds before another calculation operation is made. This is to hopefully resolve auto-clicker issues. (GitHub Issue #22)

  • Added the "clean-inactive-duration" option to the config.yml. Upon loading shops or executing the "/ds cleanup" command, all shops with owners who have been offline for the defined duration will be deleted.

  • The shop visit menu is now per item asynchronous and now loads one page, as needed. This will allow the items to build on their own threads to resolve some issues with long load times. This change has NOT been applied to the other menus. If this change deems worthy, the other menus will get a similar treatment!
----------, Dec 12, 2022

API Changes
  • The "getPacketManager" method has been added to the "DisplayShopsAPI" interface containing all NMS functionality from the new layout.
  • Removed the "getSerializeUtil" method from the "Manager" interface.
Plugin Changes
  • Implemented 1.19 support.
  • Reworked display packets and applied many new fixes for versions 1.19+.
  • 1.8-1.8.6 are no longer supported due to drastic differences from 1.8.8+.
  • The entire project was rebuilt on maven with heavy module usage.
  • Swapped the "getShop" method to utilize a smaller algorithm.
  • Moved the piston check boolean to a global variable to resolve any possible usage hitch when disabled.
  • Implemented a direct Towny Advanced hook. When nations, towns, are deleted or un-claim land, shops will properly remove themselves.
  • Fixed an issue causing the sell operation to an admin shop while item-for-item mode is enabled to fail.
  • Fixed an unsupported operation issue involving piston retraction.
  • Fixed an array out of bounds issue with 1.8.8 - 1.12.2.
  • Fixed a "NoSuchMethodError" error for the "removeRecipe" method in versions 1.9+.
  • Fixed an issue involving creation-item enchantability.
  • Fixed an issue involving quick withdraw item stacking.
  • Fixed an issue with duplication on withdrawing.
----------, Jul 22, 2022

This is a pretty large update so ensure to backup data and configuration files before fully switching always!

API Changes
  • Added the "getCost", "setCost", "getRenewCost", and "setRenewCost" to the "MarketRegion" interface.
Plugin Changes
  • Optimized piston protection handlers.

  • Optimized the "getShop" function.
  • Added the ability to enter "all" for some chat-related numerical entries.

  • Added the option to filter by player name.

  • Added the "/displayshops visit filter [key]" command.

  • Added the "inventory-full" message to the "transaction-reasons" section in the lang.yml file.

  • Added the "duration-format" section to the lang.yml file.

  • Added the "/displayshops [cost/rcost] [region] [cost]" commands.

  • Added the "/displayshops [buyprice/sellprice] [price]" command so if any difficulties access GUI capabilities are met, these commands can be used to manipulate the prices of a shop.

  • Added the "displayshops.buyprice" and "displayshops.sellprice" permissions.
  • Added the "piston-protection" section to the config.yml file.
  • All market region can now have individual initial and renewal rent cost values.

  • Shop creation/deletion is now logged to the log file.

  • The transaction menu will now display a action blocked item for the buy action item when the player has insufficient inventory space.

  • Implemented SQL table checks to prevent the plugin from surpassing permission issues or file system issue preventing SQL loading or saving.

  • Fixed an issue allowing players to remain in the GUI of a shop that has been deleted.

  • Fixed a calculation issue with inventory size when using the buy-all function.

  • Fixed an issue with default configuration values in the visit menu (If the visit menu is having issues opening ensure no tab-spaces are included around the "filter-item").

  • Fixed an issue causing old minecraft versions not to use the incorrect JDBC driver.

  • Fixed an issue with a missing method on older versions of MC.

  • Fixed concurrent modification issues when refreshing shop displays too quickly.

  • Fixed a SQL statement issue upon saving player data.

  • Fixed an issue causing the "force-single-stack" feature would not properly toggle.
----------, May 18, 2022

API Changes
  • Added the 'VISIT_FILTER_ENTRY' to the ChatInteractionEvent.
Plugin Changes
  • Added the 'visit-filter-prompt', 'visit-filter-count', & 'visit-filter-none' messages to the lang.yml.

  • Added the 'filter-item' to the menus.yml for the visit menu.

  • Adjustments were made to the "onPlace" event to reduce its footprint.

  • Optimized some functions to attempt and reduce footprint.

  • Signs of all types may now be placed directly on the base-block of a shop.

  • Fixed an issue allowing pistons to move the base-block of a shop into a non-protected area resulting in duplicated blocks.

  • Fixed some issues with PlaceholderAPI placeholders.

  • Fixed an issue where the visit command would throw an error if a non-UUID was entered.

  • Fixed an issue that through an error upon shop iteration.

  • Fixed an issue with shop placement.

  • Fixed an issue where one enchantment was always left out of the description on shop creation.

  • Fixed an issue where display packets were not destroyed on Island deletion in some skyblock hooks.
----------, Feb 14, 2022

If you currently use the plugin, before operating this build, run this build on 1.17.1 or lower to ensure all shops move to the data structure system. Once saved, continue on with 1.18.1! Merry Christmas!!

API Changes

  • Minor parameter changes were made to some functions (the functions were not significant and likely unused by others).
Plugin Changes
  • Added the "%displayshops_mrowner_{region}%" & "%displayshops_mrtime_{region}%" placeholders for PlaceholderAPI.
  • Added 1.18.x support.
  • When shop items or currency is dropped in item-form, the items may ONLY be picked up by the shop owner (done via MetaData, lasts until server restart or reload).
  • All features returning some form of item to a player now will default to dropping it at the shop's location (this also removes the simulated calculations that were required).
  • Fixed an issue preventing the shop-creation-item from being accessible in * Hopper GUIs (The item is still NOT accessible in other GUIs like anvils and droppers).
  • Fixed an issue when a shop is created under a block the above block was set to air. Instead, the block is broken naturally.
  • Fixed an issue preventing single & double quotes to be parsed when saving shop/trade items.
----------, Dec 25, 2021

API changes are now only reviewable on the GitHub page.

Plugin Changes
  • Added the "cooldown", "no-hand-item", "item-blocked", "item-unblocked", and "item-not-blocked" messages to the "lang.yml".
  • Added the "show-admin-shops" option to the "menus.yml" under the "shop-visit-menu" section.
  • Added the "/ds [block|unblock]" commands for blocking/un-blocking items from being sold (Uses the "displayshops.block" permission node).
  • Added the /ds notify command which toggles buy/sell notifications for shop owners (per player). The permission is displayshops.notify.
  • Added the {item} placeholder and "shop-advertise-cost" cost to the advertisement/broadcast feature.
  • Added the {amount} placeholder to the runCommands function which simply is the calculation unitCount * shopItemAmount.
  • Added the {taxed-buy-price} & {taxed-sell-price} placeholders.
  • Dynamic prices now only update after a transaction is complete.
  • The "/ds advertise" command was added using the permission "displayshops.advertise". This command will perform a cleaner take on what was known as "broadcasting".
  • The "displayshops.clear" permission node now is a child under the "displayshops.*" permission node.
  • The “allow-broadcasting” and “shop-broadcast-cooldown” features were removed from the “config.yml”.
  • The "shop-advertise-cooldown" was added for the "/ds advertise" command.
  • The “promotion-item” was renamed to “description-item” and broadcasting was overall removed due to upcoming changes with the visit menu.
  • The chat interactions no longer cancel after an invalid value was entered.
  • The “broadcast-cooldown” and “shop-broadcast” messages were removed from the “lang.yml”.
  • Any GUI that opens from the base-block will now be cancelled.
  • The buy/sell limit is now per player based. The global operator is still there; however, it is not functioning directly. The way it is currently setup it operates globally only if the user has already met their personal limit.
  • Visit Menu - For the {unit-amount}, Unit count is a transaction feature. I did add the {amount} placeholder though which pulls the amount shown on the hologram.
  • Visit Menu - The {enchants} placeholder can be placed into the lore on a line by itself to list enchants (works for enchanted books and items). Use a color code in front of the placeholder to use that color for each enchant.
  • The buy-all and deposit features now automatically adjust the entered amount around availability of either inventory or stock space.
  • Replaced the base block save system for player data with a more improved variant.
  • Shop owners will not be notified if the player visiting their shop has the "displayshops.bypass" permission.
  • Allows background items to have their materials set to "" and be skipped as a result.
Bug Fixes
  • Fixed a "Currently not editing a shop" issue.
  • Fixed an issue where decorative items would appear regardless of the menu identifier. In addition, the VISIT menu can be used as an identifier.
  • Fixed an issue allowing users to spoof the sell-all mechanic bypassing maximum shop stock and getting free currency.
  • Fixed an issue with the FabledSkyBlock hook causing errors upon deletion of an island.
  • Fixed an issue /w array index out of bounds when refreshing shops (Not replicable).
  • Fixed an issue where translating dynamic prices would incorrectly calculate.
  • Fixed some hex-related issues as the wrong color solution was being utilized.
  • Fixed an issue allowing the max stock for a shop to return as infinite.
  • Fixed some nested issue involving buy/sell limits (domino-effect issues).
  • Fixed an issue with stock loss when withdrawing a large number.
  • Fixed an issue preventing max-buy-all from functioning correctly.
  • Fixed a syntax issue due to the new sales notification toggle feature.
  • Fixed an issue involving index out of bounds issue when shops are removed while a display packet for them is being formed (This is something I'll need to keep an eye on).
----------, Nov 17, 2021

The WorldEdit direct hook is temporarily disabled due to incorrect functionality and data risk.
API Changes
  • The "loadShops" function from the "Manager" interface no longer reguires the "tableName", but instead now requires the "cleanUp" parameter.
  • The "loadMarketRegions" function from the "Manager" interface now requires the "cleanUp" parameter.
  • The "loadAllDataPacks" function was removed from the "Manager" interface.
  • The "cleanUpDataPacks" function was added to the "Manager" interface.
Plugin Changes
  • Added documentation links at the top of each configuration that persists even after the configuration is directly updated forcefully.
  • Added the "/ds cdb" command which cleans the database of invalid data or no longer needed data. [USE AFTER BACKUP]
  • Added the "clean-database" message to the lang.yml.
  • If Vault is not installed or there is no economy plugin, the integrated economy system will be used instead. In the event Vault is installed and setup correctly, the configuration option must be used to forcefully disable the hook.
----------, Aug 2, 2021

The WorldEdit direct hook is temporarily disabled due to incorrect functionality and data risk.

Plugin Changes
  • Buy, sell, and stored balance all now support longs within the configuration and BigDecimal as data storage.
  • Changed how short formatting works on numbers.
  • Added an attempt to dump MySQL backups into a file as long as that file does not exist. [STILL AN ISSUE]
  • When loading invalid worlds will not have shops deleted, instead they are just skipped and remain in the database.
  • Fixed an issue with NMS packaging.
  • Fixed for 1.17.1 (The entity destroy packet was changed).
  • Fixed an issue where 1.12 materials were forced on 1.13.
  • Fixed a decorative item out of bounds issue (occurs when an item from the decorative items section in the menus.yml is set above the inventory size).
  • Fixed an issue with adding commands to shops.
----------, Aug 1, 2021

API Changes
  • Added javadocs for the DisplayShopsAPI jar.
  • Added the "reset" method to the "Shop" interface.
  • Added the market region limit methods to the "Manager" interface.
  • The "Manager" interface had some changes to the "getMaterialMinPrice" and "getMaterialMaxPrice" methods revolving around them requiring ItemStacks now.
Plugin Changes
  • Implemented the default-region-limit configuration option alongside the displayshops.rlimit.<amount> and displayshops.rlimit.* limitation permissions for the total amount of rented market regions a user can have at once.
  • Implemented direct 1.17 support.
  • Reimplemented the "/ds visit <shop id>" command.
  • Changes in how the creation item is compared to its configuration form were made to resolve Unicode-related issues.
  • Fixed a namespace key issue with enchantment names for lower MC versions.
  • Fixed issues involving the SkyBlock and WorldGuard API hooks.
  • Fixed an issue with MySQL handling.
  • Fixed an issue allowing players to delete shops in market regions.
  • Fixed an issue I found with the market region limits and adds the reset method to the Shop interface.
----------, Jun 18, 2021

This update is not only large, but contains a lot of vital changes and adjustments. Please back up data before attempting to update from any version. In addition, the next release 2.0 will be a partial rework to many systems and features; therefore, configurations file and anything outside stored data will need a reset to use 2.0 at its full potential. For more information on 2.0 feel free to contact the developer!

API Changes
  • Added the "reseteHelper" method to the "MarketRegion" interface.

  • Added the "VISIT" value to the "EconomyCallType" enumeration.

  • Added the "visit" method to the "Shop" interface.

  • Added the "loadAllDataPacks" method to the "Manager" interface.

  • Added the "AffordCheckEvent" and "CurrencyTransferEvent" events to enable the ability of developers to implement their own economy systems into the plugin.

  • The "getCurrentBalance" method located within the "Manager" interface now takes an "OfflinePlayer" parameter instead of "Player".

  • Implemented the "ShopItemSetEvent" with the enum "ItemType" which consists of the "SHOP" and "TRADE" types. This event fires when a player is setting the shop or trade item of any shop.

  • Implemented several new methods involving the shop visit menu's page system to the "DataPack" interface.
Plugin Changes
  • Adjusted the max/min buy/sell feature to handle display names as well!

  • Shops loading in and saving now show a percentage alongside a total count for extra feedback on what's going on at the moment!

  • The shop visit command is no longer direct and was replaced with "/ds visit" which forms a new interface. In addition, there was an entirely new section added to the "menus.yml".

  • Some visit-related messages were remade for better wording and coordination. You can refer to these in the default "lang.yml" file.

  • Added a check for BentoBox - OneBlock.

  • Fixed an issue causing the sell button in the transaction menu to form as blocked based on the buyer rather than utilizing seller data for the checks.

  • Fixed an issue causing shop owner checks to still activate on admin shops which should not be possible.

  • Fixed an issue involving double/single quotes within shop item names to cause graphical bugs which leads to a client-side FPS issue. In addition, a similar issue was resolved involving world naming.

  • Fixed many many many issues with market regions (experimental feature).

  • Fixed an issue causing decorative items to be placed first instead of last, causing actual menu items to override them, this was reversed.

  • Fixed an issue causing decorative items to malfunction if provided a slot below zero.

  • Fixed an issue causing the previous page button not to display in the base-block menu.

  • Fixed an issue causing 1.12.2 and under servers to not handle specific features appropriately.

  • Fixed an issue causing shop balance to not calculate due to the receiving numeric being too small.

  • Fixed some issues involving data management.

  • Fixed backup-related issues.
----------, Apr 5, 2021

API Changes
  • Removed the parameter requirements for the "saveMarketRegions" method located in the "Manager" interface.

  • Fixed an issue with available player inventory space calculations.

  • Fixed an issue caused by unintentional async block manipulation during the shop loading process (non-harmful).
Plugin Changes
  • Due to other plugins utilizing the action bar, all messages have been changed to be sent to chat instead. To revert this, simply add {bar} to the front of any message in the "lang.yml".
  • The maximum and minimum material price limitation features now go off per one item within a stack rather than individual unit counts.

  • The action blocked item used in the transaction menu can now have a line using the "{reason}" placeholder which replaces the ENTIRE line with the specified reason text defined in the "lang.yml" under the new "transaction-reasons" section.

  • The "available-materials" list located in the "menus.yml" for the base-block selection menu, now can take a fourth argument which represents the "requirement text" for that particular option. In addition, the locked and unlocked lore's may have a line with the placeholder "{requirement}" which now replaces that ENTIRE line with the text defined, if any. Default "menus.yml" has gained these changes /w examples by default.

  • Added the "dynamic-prices" toggle feature to the "config.yml".

  • Shops no longer will delete themselves after failing to find worlds that no longer exist or post-load.

  • Removed the usage of "unbreakable" for configuration items due to lack of support.

  • Fixed an issue in versions below 1.13 caused by missing methods.

  • Fixed an issue causing the blocked button to appear in place of the buy button within the transaction menu improperly.

  • Fixed an issue with market region ID operations.

  • Fixed a sync issue with the management task.

  • Fixed some occurrences with database statements closing too early during operation tasks.
  • Fixed an issue causing MySQL usage not to handle stock counts properly.
----------, Jan 14, 2021

Plugin Changes
  • Fixed an issue with right-clicking not functioning as intended due to an added feature in 1.5.8.
----------, Nov 29, 2020

API Changes
  • Added the "MarketRegionRentEvent" which fires when a player rents or renews a market region.

  • Added the "reset", "rent", "rentRenew", and "formattedTimeUntilExpire" methods to the "MarketRegion" interface.

  • The "ShopEditEvent" now takes an "EditType" (new enumeration) which helps determine what type of edit the player performed.

  • The "isInMarketRegion" method in the "Manager" interface was changed to "getMarketRegion" to better suit the new system.

  • The "EconomyCallType" enumeration moved to the enums package within the API. This will only affect select users utilizing the API.

  • Added the RENT and RENT_RENEW values to the "EconomyCallType" enumeration.

  • The "resetEditData" method no longer has a player parameter.

  • The "getCurrentEditors" method was replaced with "getCurrentEditor" within the "Shop" interface.

  • Added the "setCurrentEditor" to the "Shop" interface.
Plugin Changes
  • Added the "rent-notify-intervals", "rent-expire-duration", "rent-extend-duration", "rent-renew-cost", and "rent-cost" options to the "config.yml".

  • Added the "rent-notification" message to the "lang.yml".

  • Reworked the full editing instance system to resolve several cases where the shop still remained in edit mode after a process was complete.

  • Reworked the entire market region system to function as a fully rentable player region including a new renting system for pre-made shops existing in the regions.

  • Swapped the player data loading on player join to async.

  • Shop edit actions are now automatically logged into the logging file.

  • Shop displays now sync upon shop creation to lower the chances of duplicated displays when interacting quickly under lower-end server equipment (Low TPS).

  • Fixed an auto-configuration-updater issue with the visiting sound.

  • Fixed an issue where 1.12 and 1.11 servers would experience incorrect method used for the base-block-selection feature.

  • Fixed an issue causing offline player transaction calls to fail.

  • Fixed an issue causing shops to fail when saving with no description.
----------, Nov 29, 2020

API Changes
  • The "ChatInteractionStageEvent" now has a new "INCORRECT" enumeration type which is fired when an invalid entry is entered.

  • Replaced the “getCurrentEditor” and “setCurrentEditor” methods in the “Shop” interface with “getCurrentEditors” to allow more precise evaluation of who is actually modifying the shop.

  • Removed the “setBeingEdited” method in the “Shop” interface. The “isBeingEdited” method now uses the new “getCurrentEditors” method and checks if it is empty.

  • Added the "isCancelBlockPlaceEvent" and "setCancelBlockPlaceEvent" methods to the "ShopCreationEvent" allowing cancelling of the internal "BlockPlaceEvent".

  • Added the “resetEditData” method to the “DataPack” interface.

  • Added the "getInventorySpaceForItem" method to the "Manager" interface.

  • The "save" method in the "Shop" interface no longer requires a statement argument.

  • Fixed an issue where the "ShopCreationEvent" event was not firing.
Plugin Changes
  • Added full 1.16.4 packet support.

  • Added event commands to the "config.yml" configuration. These commands will run when specific actions are performed.

  • Added an auto-hiding icon feature to the next/previous page icons for the base-block interface.

  • Player data now only unloads when the player is offline and the auto-save feature hits. In addition, joining the server won't load player data unless needed.

  • Added the "sort-alphabetically" option to the base-block menu configuration options located under the "menus.yml".

  • The "/ds cleanup" command now also fixes any negative stocks on non-admin shops. In case of an occurrence in a previous update.

  • Withdraw features now only function based on player inventory space. No more dropping to the ground is done due to potential performance issues.

  • Implemented full MySQL support. This is NOT the intended method of saving to be used and also does NOT include a conversion tool between SQLite and MySQL. Conversion is still possible through third party methods.

  • The currently editing a shop feature added previously was adjusted to handle things in a smoother manner.

  • Made some adjustments to resolve some calculation issues involving complicated unit counts.

  • Simplified and optimized the inventory close event to handle things a lot quicker.

  • Clicking the blocked action item within the transaction menu no longer calculates anything. The actions behind that particular slot are blocked until the interface is rebuilt and stock is evaluated.

  • The "maximum-buy-all" and "maximum-sell-all" options have been set to a default of 20 units. The original value was 500 units which was way too high since each unit could be a full stack of 64.

  • The "require-empty-stock" feature has been set to true by default.

  • Adjusted some areas where possible data loss could occur (Not Confirmed).

  • Fixed a multiplication issue with unit-counts due to the buy/sell limit features.

  • Fixed an issue with shop editing after closing editing-related GUI interfaces.

  • Fixed a potential issue involving GUI interaction failures.

  • Fixed an issue causing the previous page icon to not appear in the base-block selection interface regardless of the situation.

  • Fixed an issue where every second the auto-save feature would process asynchronously.

  • Fixed shop assistants not saving nor loading.

  • Fixed an issue involving the "displayshops.commands" permission node.

  • Fixed an issue where the buy and buy-all feature within the transaction menu did not check available inventory space.
----------, Nov 7, 2020

API Changes
  • The "saveMarketRegions" within the "Manager" interface now requires a SQL statement to operate.

  • Added the "getBaseBlockOffsets" method to the "Manager" interface.

  • Added the "toJSON" method to the "SerializeUtil" interface and used it as a replacement for the entire packet setup.

  • Added the "isBeingEdited" and "setBeingEdited" methods to the "Shop" interface. This value is now used for the shops during the editing process.

  • Added the "ShopEditEvent" event which is fired whenever a player opens the edit menu. It is also used by the plugin on the LOWEST priority so it can set the new shop editing value and perform actions.
Plugin Changes
  • Added the "/displayshops clear [world]" command alongside the "displayshops.clear" permission. The command lets a sender delete all shops in a defined world.

  • Shop editing now has an automatic toggle, when editing a shop, the transaction menu becomes unusable until the shop's edit field has been disabled due to an action completing. This is to block any transaction issues due to value changes alongside price changing scams by owners. Owners and Assistants of a shop can, however, edit at the same time.

  • Player data pack stored values such as chat interaction values are now cleared on logout and inventory close events to free up memory quickly.

  • The PlotSquared hook now only registers if v5 is detected instead of just using whatever it can find using the plugin's name.

  • Implemented tab-completion for the lock and unlock commands.

  • The PlotSquared hook is now extremely aggressive. It no longer has safety mechanisms and will completely wipe shops even if the owner is offline at that time. The items are attempted to be returned to the owner; however, it will only try once.

  • Fixed an issue allowing players to change their shop's base-block to locked appearances free of charge.

  • Fixed an issue where player data would fail to load with player still online.

  • Fixed some reported issues which occur under specific circumstances such as admin shop editing for players without permission.

  • Fixed an issue where the shop display would not adjust to base-block offsets.

  • Fixed some issues with the "BlockFromToEvent" listener to reduce its footprint under stress.
----------, Oct 1, 2020

API Changes
  • Replaced the "updatePersonalChatTask" method with the "updateChatTimeoutTask" method in the "DataPack" interface for easier clarification and versatility.

  • Added the "ChatInteractionStageEvent" event class which now fires using different stages from the "StageType" enumeration class. This event is NOT cancellable and will fire at different stages during the chat interaction process.
Plugin Changes
  • Removed the use of the "isStopping" method as previous MC versions did not have access causing some issues to occur for those without Paper Spigot as well.

  • Adjusted the API to properly support the new "ChatInteractionStageEvent".

  • Fixed a rare occasion where the chat interaction timeout would create two instances.

  • Fixed an issue with 1.12.2 and under using incorrect recipe creation methods alongside player interaction operations.
----------, Sep 17, 2020

API Changes
  • Removed the "sendDisplayPacketToAll" and "sendPossibleDisplayPackets" methods from the "DisplayShopsAPI" interface.

  • Removed all task-related methods from the "DisplayShopsAPI".

  • The "clearDisplayPackets" method in the "DisplayShopsAPI" interface now also kills the display packets.

  • Added the "getBaseBlockPageMap", "setBaseBlockPageMap", "setCurrentBaseBlockPage", and "getCurrentBaseBlockPage" methods to the "DataPack" interface for the new base-block multi-page system.

  • Added the "updateAllBaseBlockAccess" method to the "DataPack" object interface.

  • Added the "canEdit" check method to the "Shop" object interface.

  • Added the "getCurrencyBalance" method to the "Manager" interface.

  • Added the "getShopById" method to the "Manager" interface.

  • The "save" method in the "Shop" object interface now requires an SQL statement to reduce the creation of too many statements in a short period of time.

  • Fixed the "DisplayShopsAPI" interface as it was set as package-private.

Plugin Changes
  • Implemented full 1.16.3 support though not much was needed to be done!

  • Completely removed the purge system. Due to reports of shop loss and the awkwardness of the feature-based around how it functioned, it has been removed entirely.

  • The base block menu now can not go under a size of 18 and the bottom row is now completely function-less aside the new next/previous page buttons. Indeed, the base-block selection menu now has full multi-page support!

  • Player heads from either HeadDatabase or just vanilla can now be used as item materials through the material format "HEAD:<value>" where value is the ID or player name.

  • Re-Worked several areas dealing with general display functionality to simplify, optimize, and reduce the size of code. In addition, some common display issues have been resolved to implement a new level of visual consistency!

  • Added the "negative-entry", "bbm-unlocked", and "bbm-locked" messages to the "lang.yml".

  • Added the "/ds unlock <player>" and "/ds lock <player>" commands which simply control the base-block material unlocks for an individual player.

  • Fixed an issue where the shop's trade item, when invalid, has its amount checked when changing the trade item.

  • Fixed an issue where adding a single or double quote into a shop's description would cause the shop to not save properly and cause more intense issues.

  • Fixed an issue where the sell button in the transaction menu would not follow the rules of the owner balance syncing feature causing it to always show as blocked when the stored balance was below the sell price.

  • Fixed an issue where the "/ds copy" command was not formatting correctly via color codes.

  • Fixed some SQL-related issues by simplifying and re-work how most tasks are executed.

  • Fixed an issue that allowed users to use negative value entries to trick the internal checks into thinking it was positive.

  • Fixed an issue where base-block materials were all unlocked by default.

  • Fixed an issue where the "reload" command and "onDisable" method would have issues during the saving process.

  • Fixed an issue causing player data packs not to save unless they logged out manually.

  • Fixed an issue with the chat interaction time out passing through to other chat interaction sessions, if actions are performed quickly.
----------, Sep 15, 2020

API Changes

All changes, fixes, and additions to the API can be found here.

Plugin Changes
  • Implemented 1.16.2 support.
  • Added the "help-command-link" option to the "config.yml" which allows customization to the link suggested by the help command alongside the ability to disabled it.
  • Added PlaceholderAPI support for the sendMessage method and GUI item builders alongside added the limit counter as a placeholder in the API.
  • The "displayshops.admin" permission will allow the player to use the shop visit command free of charge.
  • When a player is charged for visiting a shop and Vault is disabled, the charged amount is deposited to the shop or owner's balance highly depending on configuration and settings.
  • Changed the broadcast message to use the {charge} placeholder to tell the user by clicking it they will be charged a fee.
  • Displays no longer are removed several times, but instead alongside the async tasks to stabalize some random occasions where duplicate visuals would occur.
  • The owner syncing option now allows offline sending if possible.
  • The transaction menu's preview item now reflects the custom shop item amount instead of only showing its true stack size at all times.
  • Completely re-worked item saving/loading by using NMS and reflection to handle byte code style serialization. Saving/loading are done on enable, disable, and async so there will be no performance difference aside possibly start up time. In addition, old item serialization can still load, but will save using the new methods.
  • Resolved an issue where the auto-save functions would not initiate if certain configuration values were taken off their default values.
  • Resolved an issue allowing player inventory items to be selected during base-block selection allowing invalid materials.
  • Resolved an issue where min/max material prices would revert to default values.
  • Resolved some display-related issues.
  • Resolved an issue where the dynamic price changing feature was adding the increment instead of subtracting causing the sell price to increase versus decrease.
  • Resolved an issue with PlotSquared hook support.
  • Resolved an issue where the owner balance syncing feature would not function correctly during a selling operation due to a stored balance check.
  • Resolved an issue where parsing would not take some forms of decimal for price changing.
----------, Aug 24, 2020

This is the official 1.16.1 update for the plugin. I have done a lot in the inner workings of the plugin and things are still being tweaked, but hope you guys enjoy!

API Changes
  • Added the "getMaxStock" method to the Manager interface. This new method takes a shop object and uses admin bypasses alongside owner permissions to determine the shop's maximum stock.

  • Added the "isPrismaInstalled" method to the DisplayShopsAPI interface to allow a simple way for developers to check if needed.

  • Added some new clean-up task id methods to the DisplayShopsAPI interface.

  • The DataPack interface has had its ChatInteractionId methods swapped to ChatInteractionType and returns an enumeration value instead of a String. In addition to this, all references to these methods were changed as well. Based on timings and micro-optimization, this increases performance by 7% in terms of chat interaction due to loops that were used to evaluate each string.
Plugin Changes
  • Implemented 1.16 R1 support with full Hex capabilities.

  • Implemented PlotSquared support for automatic shop removal on plot deletion.

  • Added the "force-single-items" option in the "config.yml" this will require single stack items as the shop or trade item of shops to prevent complex unit counts.

  • The plugin will now disable itself if Vault is not properly set up and the option to use Vault is enabled.

  • Implemented HeadDatabase Support. For any item, you may use the "HEAD:<id>" format, where id is the only thing changed, as the material.

  • Added the "whole-number-entries" option to the "config.yml", this option requires features that use the isNotNumeric method to only accept whole numbers versus decimal. The "invalid-amount" message will need to still be adjusted to display more specific information about the user's invalid entry if enabled.

  • Added the clean-up task alongside the delay option within the "config.yml".

  • The max stock for shops is now a little more complex. If the shop is an admin shop or the owner has the "displayshops.stock.max" permission, then the shop can have a stock up to the max integer in Java. Otherwise, if the player has the "displayshops.stock.<amount>" permission, then the shop will use that amount as the max stock or the default from the configuration if not existing.

  • All messages and text that runs through the color() method via the DisplayShopsAPI will have the capability to use HEX colors with a length of 7 characters. For example, #123456.

  • Added some new instances of the {amount} placeholder to existing messages.

  • Added the {sell-limit} and {sell-counter} placeholders to the edit menu buttons.

  • Removed custom model data extra data from the file as it seemed to be adding minor NBT tags to items without existing data.

  • The "sync-owner-balance" option has been internally tweaked to fully support balance bridging for the owner of the shop. Original balance functionality will return if the shop owner is unable to be obtained at any point in time.

  • The trade item can no longer be changed unless the shop's balance is at zero.

  • The isNotNumeric method was re-evaluated to be more precise with single indexed entries.

  • Removed some unused configuration values alongside made some adjustments to all items within menus.

  • Fixed some message issues causing some placeholders to not be replaced or preventing the message from having the ability to be disabled.

  • Fixed an issue where failed attempts to set a shop item would also initiate messages and checks not intended to be accessed by shops without a shop item set.

  • Fixed an issue where potion and enchantment information would not be set as the shop description when proper options are enabled.

  • Fixed some issues with the configuration auto-updater.

  • Fixed an issue involving items that cause saving issues due to symbolic content such as name or lore.
----------, Jul 24, 2020

This update is ridiculously large. Please do yourself a favor and backup everything before even remotely attempting to use 1.5.1 from and version INCLUDING 1.5. If you are updating to this build, I highly recommend resetting as much as you can in terms of the menus.yml and config.yml. Your shop data should be completely fine; however, you will have missing GUI buttons, etc. depending on how your options are configured. I'm always here to help out those who need it individually through the support server; however, I can't help much without thorough information and of course original data. Needless to say, just please don't set yourself up for failure with all of this information provided. Thank you!

API Changes
  • Added the “getAssistants” and "returnBalance" methods to the Shop interface.

  • Added the “getMaterialMinPrice” method to the Manager interface.

  • Implemented the "killCurrentShopPacket" method in the DisplayShopsAPI interface to allow more control over visual updates when changing a shop's data that needs to affect the shop's appearance at the moment.

  • Implemented the “getLastBuyTimeStamp” and “getLastSellTimeStamp” in the Shop interface for the new dynamic price changing system. In addition, their setters were implemented as well.

  • Implemented the "isReadyForDynamicReset" method inside the Shop interface. This method will be used for date comparison using timestamps for both buy and sell transactions if dynamic price changing is enabled for the shop.

  • In addition to the removal of “syncBaseBlocks”, this also removed the task id getters and setters alongside the chunk coords map.
  • Added the “isPaperSpigot”, "getLoggingFile", and "writeToLog" methods to the main class for easy determination for developers.
  • The "buildShopEditMenu" method found in the Manager interface now returns an Inventory object alongside requires a Player parameter.

  • Removed access to all tasks aside from the ID values. These are more internal and intended to be protected. Methods required to modify things directly in these tasks can be found in the Main class (DisplayShopsAPI or DisplayShops depending on if the API JAR is used as the dependency).
  • The “getBaseMaterial” method found in the API’s Manager interface has been swapped to return a String instead of the Material type. This allows a single line of information containing <material>:<durability>.
  • The “getInitialBaseBlockMaterial” and “setInitialBaseBlockMaterial” were completely replaced with the “getStoredBaseBlockMaterial” and “setStoredBaseBlockMaterial" methods.

  • The "getStoredBalance" and "setStoredBalance" methods were implemented to support the new currency handling system.
  • Removed the "getPhysicalCurrencyStock" and "setPhysicalCurrencyStock" methods from the Shop interface due to the currency handling changes.

  • Removed the “syncBaseBlocks” method from the main class. This method was synchronous and doesn’t handle anything but set the stored materials to shops that have no base block material.

  • Removed many player-data related methods such as the chat interaction map, chat tasks, cooldowns, etc. from the Manager interface. Instead, each player is now given a DataPack object which stores this information and load/unloads based on online status.
Plugin Changes
  • The help menus sent to the command sender or player is now related to the GitHub link for commands to provide a more up to date manner in comparison to in-game updates. The admin and user help messages will need to be modified directly to properly display if upgrading from a previous version.

  • Adjusted some configuration values to increase performance and apply clear looks.

  • When setting a shop item, the prices are adjusted to minimums and maximums depending on where the original values are between the range.

  • All events now perform at the lowest priority to run before any other plugins. This does slow other plugins to cancel the event after DisplayShops; however, this resolves the majority of third-party issues.

  • Shop creation now checks the two-block above the base location as a double check for any form of clipping with normal/default display offsets.

  • Added the assistants feature to shops. Assistants can be added/remove to each individual shop and can do anything EXCEPT delete the shop or add/remove other assistants.

  • Added another buy command which allows an amount entry. This new command will only accept an amount of 1 - max stack size the creation item material. Meaning if invalid numerical values are entered (below or equal to zero or above max stack size) it will be set to either the minimum of 1 or the maximum (normally 64).

  • Added the “displayshops.assistants” permission node to allow players with this node to bypass any assistant access checks.

  • Added the “assistants-cap” option in the “config.yml” to control the assistant count on a single shop.

  • Added several assistant-based messages to the “lang.yml”.

  • Added the “min-material-prices” feature to the “config.yml”

  • Shops now handle currency differently. Instead of pulling currency from the owner's balance via Vault or their inventory for physical currency, the shops now have a global stored balance. This means a user who has access to the shop must load the shop with currency similar to a vending machine for it to function properly.

  • Implemented a full logging system. The system is very base-line currently; however, it will log all transactions up to a specific file size inside the new log file located inside the plugin's native folder.

  • Implemented the "displayshops.pm.<modifier>" permission for promotion price modifier support. By giving a player the modifier permission, replacing the <modifier> with a decimal or whole number value, the player's promotion price will be REDUCED. This is more of a discount modifier.

  • Implemented the chat interaction timeout feature with the "chat-interaction-timeout" option found in the "config.yml" an identical key was added to the "lang.yml" as well.

  • That promotion announcement message now supports two {item} placeholders. The first placeholder will represent the Shop Item while the second represents the Trade Item.

  • The update checker now has two modes and the messages were changed. If the plugin's build contains the words "build" or "snapshot" in its version, the plugin will notify the console as a warning stating that the plugin needs to be watched and proceed with caution as it is an experimental build.

  • The default offset on the Y-Axis for all base-block displays without modification from configuration values is now set to -0.25. This will make displays feel more flush against the base of most blocks without the need for extra coordination.

  • Dynamic price changing has been partially re-worked. Instead of requiring a manual reset, the dynamic price reset after the configurable duration ("dynamic-price-change" found in the "config.yml") which is only counted after the latest transaction for either BUY or SELL individually. Meaning there are two separate reset durations. Toggling dynamic price changing in a shop will also forcefully reset the existing duration.
  • The transaction menu and the buy/sell completion messages can now use the {trade-item} placeholder to display the currency item name.

  • The edit menu items can now use the {price} placeholder instead of manual entrees for each price.
  • The “enchanted” option has been added to the “shop-creation-item” section in the “config.yml”. This simply gives the shop creation item a satisfying enchanted glow.
  • The shop creation item is now only checked by its display name. Make sure your players are unable to obtain any peaceable item with the EXACT same name.
  • From this update onward, the super old YAML based storage converter has been completely removed due to not enough information to fill out new features.
  • Base block syncing is no longer a thing. When loading, reloading, or anything along that line, shops with invalid (AIR) base-blocks will be removed. The only way to get rid of this past the initial load or reload action is by manual database manipulation WHILE THE PLUGIN IS NOT IN USE or using the new “/ds cleanup” command.
  • Added the “/ds cleanup” command which allows admins or users with permission to simply delete and unregister all shops that have invalid base-blocks. This is useful for Plot plugins and any other type of claiming plugin that tends to simply remove blocks without any care in the world to the point where DisplayShops can’t detect it. This command requires the new permission “displayshops.cleanup” for operation.
  • The “shop-edit-similar” message has been completely removed. In addition, both sell and buy prices can be set equal; however, they may NOT be less than each other.

  • The configuration auto-updater now properly adjusts specific values back and forth from Minecraft versions.
  • Shop purging has been merged with the auto-saving task. They now operate with respect to each other. By default, shop purging is disabled.
  • Implemented the base-block selection menu in the “menus.yml”. This new menu can be accessed through the new edit button found in the shop’s edit menu. The base-block selection menu allows players to customize their shop’s physical block appearance with styles/materials they have access to. The “displayshops.bbm.<material>:<durability>”, “displayshops.bbm.<material>”, or “displayshops.bbm.*” permissions. These permissions are pretty self-explanatory, they will provide the player with access to particular materials that can be used. There is a full list in the menu’s section allowing complete customization to what materials are allowed. The GUI will adjust its size up to the full 54 slots based on material availability to that player in specific. For performance reasons, paging for this GUI is NOT implemented; therefore, a total of 54 styles/materials can be used at once.
  • Most player-related messages have been swapped to be interchangeable between Action Bar and Chat. Within the “lang.yml”, if the placeholder “{bar}” is at the very front, the message will be sent to the player via Action Bar. This means existing “lang.yml” before this update will all be Chat-based until swapped over for the safety of translations.

  • Removed the "dynamic-price-reset" message from the "lang.yml". Alongside this removal, the associated reset actions were removed from the change price GUI button.

  • Implemented Sell/Buy-All functionality as shift + click modifiers to their resembled transaction buttons (Buy and Sell). In addition, the "transaction-all-fail" was added to the "lang.yml" and the "maximum-buy-all" alongside the "maximum-sell-all" were added to the "config.yml".

  • The deletion option found in the shop edit menu now listens to the “displayshops.delete” permission.

  • Date parsing no longer sends information to the console, this includes errors if occurred. This was done to allow invalid dates to exist and not harm the plugin's functionality.

  • Physical shop currency is no longer required for admin shops. Instead, they will simply remain as if they have unlimited physical currency to pay for sold items. This leaves the limitation control to the actual sell-limit feature.

  • Creative no longer can shift-click GUI items into the player's inventory nor clone the item stacks.

  • Particles and animations were buffed up a little to have a bit more spice. This includes some new options in the immersion section for the BBM features.

  • The default stock in the configuration was set to 1,000 to better handle dropped items temporarily.

  • Shop creation items can no longer be interacted with in certain interfaces.
  • Fixed an issue that was caused by missing enchantments and/or potion effects on select items.
  • Fixed an issue where the sell price was using dynamic price data generated by the buy price.
  • Fixed an issue where the auto-updater for the configuration files would not fix specific materials for versions 1.12.2 and under.
  • Fixed an issue where changing the buy price did not take into consideration that the sell price may be disabled.
  • Fixed an issue involving admin shops to return owner invalid messages when attempting basic sell actions.

  • Fixed an issue where SQLite failures would return messages mentioning MySQL even though the issue has nothing to do with MySQL.

  • Fixed an issue where shop creation items could be used in Anvils.

  • Fixed an issue where after a player modifies there to shop, the displays don't fully come back until the player looks away and re-initiates eye contact with the shop's hit-box.

  • Fixed some transaction-based issues with item-for-item trading.
----------, Jun 16, 2020

This update will require a "config.yml" reset. By default, it will automatically backup your "config.yml" on startup.

Welcome to 1.5! This update unleashes quite a bit, but the key change is Ray Tracing. Ray Tracing is a concept used that allows DisplayShops to asynchronously create small rays for each player to obtain whatever that player is looking at. In addition, shops now have bounding boxes that allow DisplayShops to also detect when the player is looking directly at the holograms!

This update was very tough due to a partial re-code in many areas to achieve exactly what I was aiming to create, so be sure to show some love!

Feeling generous? Hook a developer up with some coffee to keep the updates pumping here!

Changes
  • A brand new API. You guys can now use the official API here!
  • The configuration file “config.yml” has been completely revamped. This will require a reset to this particular file. The plugin will automatically backup the file and provide the new one!
  • The plugin now only supports Spigot and all forks of Spigot. Due to complexity, CraftBukkit/Bukkit support was dropped to provide more efficient methods and allow the plugin to require fewer changes when new MC versions come along.
  • DisplayShops now uses the concept of Ray Tracing to enhance its radial analysis for detecting if a player is looking at a shop. The full sequence is also now completely Async.
  • The transaction menu’s buy and sell buttons now become blocked when any of the following cases are met:
  • The buy/sell price is less than zero.
  • The stock is less than the shop item’s stack amount multiplied by the unit count selected by the player (Avoids admin shops with unlimited stock).
  • The buy counter added to the selected unit count is greater than or equal to the buy/sell limit (If the limit is zero, this is avoided).
  • When selling, the shop is at max stock or would exceed max stock.
  • The dynamic price counter no longer increases without the feature enabled.
  • Added two new actions to the “price-change-item” found in the “shop-edit-menu” in the “menus.yml”. These actions are:
  • Shift + Left-Click - Toggles dynamic price changing.
  • Shift + Right-Click - Resets the dynamic price changing counter.
  • When the shop item is set and the item has enchantments attached to it, the shop’s description will now be set to display all enchantments found as a little preview. This feature can be toggle using the new “enchantment-description-set” found in the “config.yml”
  • Shop editing features that don’t require chat interaction now close the GUI on transaction fail.
  • Settings shop’s value (buy price, sell price, description, etc.) no longer allows the player to use the same value that is already set. For example, setting the shop’s buy price to 500 when it is already set to 500.
Bug Fixes
  • Resolved some issues with producer detection for transaction success.
  • Resolved a transaction issue involving buying/selling not following the dedicated event correctly.
----------, Apr 7, 2020

Bug Fixes
  • Resolved a transaction handler issue after the re-package of some classes.
  • Resolved an issue where the translated item names would not be used in the purchase/sell messages.
Changes
  • Began the new API swap by making sure everything is in a package that will remain unless required to change.
  • Implemented some new API methods to the Manager class.
  • Made some minor adjustments and performance tweaks (mainly new stuff to prep for the move to an async display task).
----------, Apr 4, 2020

Bug Fixes
  • Resolved an issue where buy/sell prices would format with a comma causing the entire shop to malfunction.
  • Resolved an issue where the new description system would not display and colors would not format.
  • Resolved a block iteration issue by wrapping it to catch an illegal state.
  • Resolved a minor NamespacedKey issue involving the crafting recipe.
----------, Apr 3, 2020

This update was very tough to accomplish, but I hope you guys enjoy it! Be sure to show the plugin some love it helps motivate updates and improve the plugin overall.

Feeling generous? Help a Dev. out with some Coffee and Toilet Paper!

Donate Here


Changes
  • Implemented the “extra_data” column into the database. For those of you who have existing data, the new column will be injected into your database and work out of the box.
  • The new dynamic pricing feature has been implemented alongside four new options including “dynamic-buy-increment”, “dynamic-buy-increment”, “dynamic-buy-percentage”, and “dynamic-sell-percentage” each of these new options can be found in the config.yml. This new feature allows players to customize their shop (works on admin shops too) so its buy price can increase and its sell price can decrease based on a transaction counter.
  • In addition to the new dynamic price changing feature, the getBuyPrice() and getSellPrice() methods within the Shop class are what automatically calculate dynamic price addition/subtraction now.
  • When the buy/sell price value is calculated, the decimal place count is now based on “minimum-fraction-digits” found in the “config.yml”. This is not a noticeable change unless directly analyzing data through the developer API.
  • Wrapped the “removeRecipe” method with an exception to simply ignore if the method exists or not. This will throw a warning message into the console for a simple notification. This issue will only occur if the server jar is missing the method in the Server class involving NamespacedKey.
  • Descriptions now have a word-based limit and wrap to multiple lines. There are two new options that can be found under the “shop-options” section in the “config.yml”.
  • When changing the buy and sell prices of a shop, the sell price may no longer exceed the buy price as a form of detection. In addition, two new messages for this were added to the “lang.yml”.
  • The shop broadcasting message now suggests the command “/shops visit <id>” instead of attempting to run the command for 1.12.2 and under.
  • The “/ds copy” command no longer copies to the clipboard for versions 1.14.4 and lower. Instead, it will suggest it as a command for the player to simply Ctrl + C (Copy To Clipboard).
  • The “shop-broadcast-color” was added to the “shop-options” section in the configuration. This option overrides the default color of an item that doesn’t have a custom name in the shop broadcast message.
Bug Fixes
  • Resolved an issue where an insufficient funds message nor the GUI would close when a shop owner can’t afford a sell transaction performed by another player.
  • Resolved an issue where the producer could always afford to pay a seller even if their funds were insufficient.
  • Resolved an issue where players could input negative values or event zero into the withdraw and deposit features. In addition, the “invalid-amount” message in the lang.yml was changed to state the amount must also be greater than zero.
  • Attempted to resolve an issue where custom model data would always be present.
----------, Apr 3, 2020

This update was very tough to accomplish, but I hope you guys enjoy it! Be sure to show the plugin some love it helps motivate updates and improve the plugin overall.

Feeling generous? Help a Dev. out with some Coffee and Toilet Paper!

Donate Here


Changes
  • Implemented the “extra_data” column into the database. For those of you who have existing data, the new column will be injected into your database and work out of the box.
  • The new dynamic pricing feature has been implemented alongside four new options including “dynamic-buy-increment”, “dynamic-buy-increment”, “dynamic-buy-percentage”, and “dynamic-sell-percentage” each of these new options can be found in the config.yml. This new feature allows players to customize their shop (works on admin shops too) so its buy price can increase and its sell price can decrease based on a transaction counter.
  • In addition to the new dynamic price changing feature, the getBuyPrice() and getSellPrice() methods within the Shop class are what automatically calculate dynamic price addition/subtraction now.
  • When the buy/sell price value is calculated, the decimal place count is now based on “minimum-fraction-digits” found in the “config.yml”. This is not a noticeable change unless directly analyzing data through the developer API.
  • Wrapped the “removeRecipe” method with an exception to simply ignore if the method exists or not. This will throw a warning message into the console for a simple notification. This issue will only occur if the server jar is missing the method in the Server class involving NamespacedKey.
  • Descriptions now have a word-based limit and wrap to multiple lines. There are two new options that can be found under the “shop-options” section in the “config.yml”.
  • When changing the buy and sell prices of a shop, the sell price may no longer exceed the buy price as a form of detection. In addition, two new messages for this were added to the “lang.yml”.
  • The shop broadcasting message now suggests the command “/shops visit <id>” instead of attempting to run the command for 1.12.2 and under.
  • The “/ds copy” command no longer copies to the clipboard for versions 1.14.4 and lower. Instead, it will suggest it as a command for the player to simply Ctrl + C (Copy To Clipboard).
  • The “shop-broadcast-color” was added to the “shop-options” section in the configuration. This option overrides the default color of an item that doesn’t have a custom name in the shop broadcast message.
Bug Fixes
  • Resolved an issue where an insufficient funds message nor the GUI would close when a shop owner can’t afford a sell transaction performed by another player.
  • Resolved an issue where the producer could always afford to pay a seller even if their funds were insufficient.
  • Resolved an issue where players could input negative values or event zero into the withdraw and deposit features. In addition, the “invalid-amount” message in the lang.yml was changed to state the amount must also be greater than zero.
  • Attempted to resolve an issue where custom model data would always be present.
----------, Apr 3, 2020

Bug Fixes
  • Resolved an issue where shop deletion could give the full stack of the shop item back when the stock is equal to one.
  • Resolved an issue where tab completion would not allow player name tabbing in the commands with a length of two parameters.
----------, Mar 21, 2020

This is just a re-upload of 1.4.9 due to a compilation issue with some internal classes.

Changes
  • Re-implemented the ‘always-display’ and ‘always-display-distance’ options in the configuration. These options will allow the plugin to show displays always when a player is within range instead of hiding holograms until the base-block is focused.
  • Implemented full tab-completion for commands the command sender has permission for.
  • Implemented the visit command, players can use this to attempt a safe teleport within a one-meter radius of the shop. This teleport checks for lava, suffocation, and more. Due to this addition, a couple of new messages and options will be added to your configurations such as the ‘visit-delay’.
  • The broadcast announcement message now can be clicked to run the visit command.
Bug Fixes
  • The ‘insufficient-funds’ default message now correctly states that the player doesn’t have enough to perform the action attempted.
  • Fixed an issue where multiple displays would not render identically for multiple players.
  • Fixed the display client duplications that occur at random times… I found a really simple mistake internally which I’m not proud of.
----------, Mar 21, 2020

Bug Fixes
  • Fixed a floating glass visual issue when the "hide-glass" option is enabled.
  • Fixed an issue where the old ‘shops.yml’ conversion system would break when encountering an offline player’s data.
  • Resolved an issue where commands attached to a shop were not saving correctly. Though they worked there would be times where format mismatches became an issue during the loading phase.
Changes
  • Admin shops no longer require the stock to have no limit. This means you may now have Admin shops that have a set stock value. This also removed any restrictions to the stock of Admin Shop editing and more.
  • Due to the Admin Shop stock changes, the Admin Shop hologram display format has been changed to allow the ‘{stock}’ placeholder which will be replaced with the infinity symbol when below zero. See the attached images:[​IMG] [​IMG]
  • Added an extra check to see if a chunk is loaded before attempting to send display packets to players. This should remove that one rare occurrence when packets send right after a chunk unloads.
  • Added the ‘view-tick’ option to the ‘shop-options’ section. This allows you to control how fast the display update timer will perform.
  • Added the ‘shop-sell-fail’ message to the ‘lang.yml’. This message should NEVER occur, but it is here just in case.
  • Changed the default craft recipe to require obsidian across the entire bottom row instead of end stone. Why? Because it looks prettier.
  • Removed and changed around some materials from the blocked lists in the default configuration since they didn’t feel right and could potentially confuse new users.
  • The teleport event now checks if the ‘from’ and ‘to’ locations are in the same world and calculates to see if they are at a maximum of 32 meters distance apart before sending packets.
  • For better comparison, items now have their item meta stripped of color codes when comparing to ensure the items are practically identical without any question or confusion.
  • Moved all messages that are directly sent to the player, except a few such as the shop broadcast and command listing messages, to the Action bar for more immersion and cleanliness.
  • Removed many unneeded Admin Shop-based messages from the ‘lang.yml’. The plugin will clean/remove these for you on startup.
  • Moved all destruction packets to the main thread to avoid any duplicate displays (impact depends on server hardware).
  • Added the “/displayshops info” command for extra information (Not configurable). The command can only be accessed by the user with the permission “displayshops.info”.
----------, Mar 19, 2020

Changes
  • Implemented a crafting recipe removal method. This will allow a more fluid crafting recipe swapping mechanic when messing with the configuration.
Bug Fixes
  • Fixed an issue where if multiple players look at the same shop the display would freak out at times.
  • Fixed an issue with display duplication due to packet overload. This was a memory leak in the new algorithm implemented in 1.4.6.
----------, Mar 15, 2020

This is a very small hotfix, but having a random error pop up like that could be annoying to some!

Bug Fixes
  • Fixed a small issue involving distance calculations that are targeting two separate worlds.
  • Fixed another minor issue where distance calculations would neglect the Y-axis blocking all block placement in a 1x1 radius from 0-256 on the Y-axis.
----------, Mar 14, 2020

Please note this build is a Snapshot and can contain issues. It is recommended to back-up your data and/or testing on a separate server before production. This update was difficult to accomplish, but I hope you guys enjoy it! As always, let me know if I can assist and be sure to leave some love for the plugin! :)

Bug Fixes
  • Fixed an occurrence where the plugin would try to drop air after dropping the intended item counts.
  • Fixed an issue where changing a shop’s item would duplicate the visual display.
  • Fixed an issue with the ‘shop-display-view-only’ would flicker every time the shop list is looped. This issue should now be resolved; however, the continuation of the issue could resume depending on the Minecraft version.
  • Fixed display issues with the changes toward buy/sell negative values.
  • Fixed possible issues with block iterators caused by target block detections.
  • Fixed possible issues with the transaction menu refusing to build/open.
Changes
  • Shop Ids are no longer strings (fake generated unique ids) And instead are generated UUIDs for the sake of readability, lower file size, and fewer issues in terms of conversion processes.
  • Re-worked the “shop-display-view-only” feature by implementing much more efficient loops, checks, distance calculations, and more. This re-work should resolve a flicker/bounce issue for some users.
  • The reload command now asynchronously saves, clears, and re-loads all market regions and shops.
  • The “load-chunks” feature/option in the “config.yml” has been adjusted to perform the task before a shop is created (location is made first) to ensure that the chunk is loaded before touching shop data.
  • Shop object creation now generates the full display regardless instead of taking into account that “shop-display-view-only” is enabled or disabled. This means on initial startup or reloads the displays will show with holograms and all before shortly vanishing to accomplish the “shop-display-view-only” feature.
  • The unit count modifier items in the “transaction-menu” have been adjusted and can now be right-clicked to increase/decrease the unit count by 16 or an automated value based on remainders.
  • There is now a duplicate detection process on startup which will clean up shops that are way too similar to exact same base locations.
----------, Jan 17, 2020

It is highly recommended that the “menus.yml” or at least the “transaction-menu” section are full reset to get the most out of new features! Please note that this is a huge update; therefore, any issues you experience please report and please be patient! Enjoy!

Changes
  • Implemented the unit counter feature to the transaction interface. This feature allows players to control how many units (exact shop item) their transaction will run for. For example, if the player selected a unit count of 4 and the shop item is a stack of 5 paper (no custom stack amount) then it will charge or sell equal to 20 paper since it is 4 units of 5 paper. This new addition also implemented an entire interface revamp for the transaction menu. This feature’s updating toward the transaction menu is also now async removing it from the main thread for better performance.
  • Shops now require negative buy/sell prices to block the transaction buttons. This is global and also applies to admin shops; however, shops still only require no owner and zero stock to become considered an admin shop.
  • Adjusted chunk loading by adding an extra check to prevent potential async chunk loads.
  • Added the “empty-shop-item” to the “config.yml” which allows empty shops to display with a barrier block as the floating item instead of nothing.
  • Implemented the “distance-check-y-axis” allowing displays to remain untouched when the Y-axis is changed. This option is recommended to remain “true”, but for ascetics, it can be set to “false” to disable. Please note that this feature also affects mechanics like shop creation placement.
  • Implemented the ChunkLoadEvent into the plugin’s check to attempt and make certain scenarios more reliable in terms of visuals.
  • Revamped the “shop-display-view-only” feature by removing the target block method and using 1.8-1.15.1 compatible methods alongside re-doing the checking system for basic memory functions.
Bug Fixes
  • Fixed a possible duplication issue when using shop deletion after withdrawing the shop’s total stock. This bug is actually inconsistent and does not work every time, but still worth noting.
  • Fixed an issue where the stock management button within the edit menu interface would charge the user before they entered an amount and once more after the process was completed.
  • Fixed an issue where purchased items can stack higher than their legal amounts. For example, buckets could stack up to 64 or more.
----------, Jan 10, 2020

With every good update comes a great fix! Happy new year once again guys! :)

Changes
  • Warning messages involving invalid worlds, invalid shops, and more have been suppressed since it is possible the message could be sent more than 3 times in under a minute.
  • Adjusted some invalid packet checks to suppress and un-harmful errors if they appear for any reason due to async tasks.
Bug Fixes
  • Resolved a small shop loading issue where some shops would load, but the sync task thinks te shop is invalid and removes them (Rare Occurrence).
----------, Dec 31, 2019

Happy new years everyone, hope you guys are having a wonderful time during the holidays. This update focuses on fixing some issues and implements some new powerful changes for the entire "no-vault" system involving currency/trade items.

P.S. Don't forget to leave a little review, it helps the plugin and keeps me motivated. I appreciate all the support!


Changes
  • When the "use-vault" option is disabled, the player can now click the preview item within the transaction GUI to show the currency/trade item for that particular shop. Clicking this new item will swap it back to the preview item.
  • Implemented the new {trade-item} placeholder for the hologram lists in the config. This will let players see the required trade item's display name.
  • Implemented the new configuration option "require-empty-stock" which requires the stock of a shop to be equal to zero before performing actions like shop deletion.
Bug Fixes
  • Re-coded how display packets load and read the world data to resolve some packet getting issues (This resolved the error spam in the previous update).
  • Resolved an issue involving economy transactions causing some methods to take a user into negative balance using Vault.
  • Fixed some minor performance issues involving a packet duplicating at random times.
  • Fixed an issue when changing a shop's item that caused the item display to stay even after the shop swaps to the mode "Empty".
----------, Dec 31, 2019

Please remember that other versions of the plugin can be obtained from the "Versions" tab on the main page.

Bug Fixes

  • Fixed a packet issue that caused 1.8-1.12.2 clients to crash if displays were viewed at a specific angle and distance.
  • Resolved an issue when regenerating the display normally through actions such as quick-withdraw and normal edit actions.
  • Resolved an item display issue when changing item amounts.
Changes
  • Adjusted the "load-chunks" option to consistently check and calculate if chunks are loaded before evaluating how displays are projected.
  • I moved some code around for my own peace of mind because I'm just that guy. No worries API is the same.
----------, Dec 29, 2019

This update is a SNAPSHOT build. Please report issues that are encountered and please be patient as adjustments, fixes, and changes come throughout the holidays. Merry Christmas to everyone!

Highlights
  • Configuration split
  • Display Adjustments/Fixes
  • Internal improvements
  • New configuration values
  • Minor bug fixes
Changes
  • The configuration file has been split into three different configuration files for the sake of user-friendliness. The old configuration (your configuration file) will be re-named to "old-config.yml" and will NOT be touched. It is up to you to simply copy/paste your old information into the new config layouts.
  • Adjusted some internal event handling methods to avoid any multi-world plugin issues with displays.
  • Implemented a new configuration option for chunk loading when the plugin attempts to load shops from its data files.
Bug Fixes
  • Attempted to resolve some display lighting issues.
  • Resolved an issue involving some shops to throw errors when loading.
  • Resolved some uncommon client-side FPS issues.
----------, Dec 24, 2019

This update is pretty big with internal changes. Of course, please report any issues that occur!

Bug Fixes

  • Fixed an issue causing chat interactions to be canceled and/or not function correctly.
  • Fixed an issue where distance calculation between a player and a shop would cause some displays to vanish until updated through re-logging or another method.
  • Fixed an issue where display hiding methods would cause a weird flickering effect with a result of a vanishing display.
  • Fixed an issue where some placeholders would be skipped and not replaced correctly.
  • Fixed an issue where unloaded chunks would break the shop loading tasks. These will normally just be skipped if nothing can be done.
  • Fixed a price regulation issue when it comes to edit-menu buttons. Each button now uses the correct prices and works as intended.
  • Fixed an issue where packets would be skipped in worlds that the plugin thinks don't exist.
Changes
  • Changed the used Vault JAR to 1.7.2 and implemented many soft dependencies including CMI for better support.
  • Distance calculation between players and shops is now integer-based and is pretty snappy so no issue will occur when hiding and re-generating displays.
  • Implemented a new feature that only allows the hologram portion to be seen when the player is directly looking at it from a configurable distance. Compared to the snapshot, the glass and item will always be shown to give a nice clean effect.
  • Implemented a full pricing system for edit menu buttons.
  • Updated some GUI buttons for both the edit and transaction menu to give a cleaner and more informal look.
  • Modified some default values in the latest configuration.
  • Re-worked display functionality. The API now allows the user to show and hide the displays while also defining if the item, glass, or holograms are even displayed.
  • Some exceptions that occur will now state the shop ID at which it occurred for better debugging.
  • Shops can no longer be created at a location that has water or lava directly above its base-block. This feature is still experimental; however, just make sure your offset for the used base-block types is in that safe spot of one block above for safety from vanilla physics.
  • Shops displays can no longer be messed with in terms of lava buckets, pistons, or any other weird visual glitches under the same category.
  • Lava buckets, in particular, are unable to be used in a 3 block radius of a shop just for the safety of wood materials without firing extra events.
----------, Dec 14, 2019

This update is, in fact, a snapshot. Though this update has been heavily tested, issues are able to occur so please be patient and report issue you encounter!

Fixes

  • Fixed a couple of internal display issues involving chunk entering and exiting.
  • Fixed a minor issue involving some block placement event overriding from other plugins.
Changes
  • Implemented 1.15 packets for displays, action bar messages, and automatic detections/updaters.
  • Added an optional price feature to each of the buttons under the edit menu. Some prices will take place by default so make sure to set them to zero after the update is complete.
  • Implemented a new display setting for distance control. By default, the option is set to 16 (size of a normal chunk) and will hide/show based on the player's distance from a shop /w world checking as well, of course.
  • Implemented another display option which only displays a shop's hologram when directly looked at. This feature must be enabled and the distance feature mentioned above will be converted into the range at which this takes effect.
----------, Dec 12, 2019

Fixes
  • Fixed an async chunk loading issue for larger servers.
  • Fixed an issue involving the new permission system.
Changes
  • Shop displays should no longer be displayed to a player who is more than 16 blocks away. This feature is still in development as well since the displays aren't handled in every case quite yet.
  • Removed internal changes from the last update that heavily increased file size.
----------, Dec 9, 2019

Please note this update contains an internal experiment, so if any issues occur such as 'commands not working' then report it as soon as possible.

Changes

  • Replaced the original offset option in the config with a new string list that allows per material-specific offsets!
  • Implemented an all-new per-player base-block material feature. Players can now either use the default base-block defined in the configuration or if given the new 'displayshops.bbm.<material-name>' that block will be used for that specific player instead.
  • Changed the packaging of internal files and implemented a new key obfuscation while still allowing access to API methods (This is more of an experiment, but please report any issues you may encounter).
Fixes
  • Fixed an issue with the numerical format methods.
  • Fixed some rare display flickers in 1.8-R1.
----------, Dec 7, 2019

Fixes
  • Fixed an issue where visuals would flicker when the Y-axis is changed for the player by increments of 10.
Changes
  • Added a background item option for the edit menu.
  • Added a shop-item blocking list to prevent specific items from being sold.
----------, Nov 26, 2019

Fixes
  • Fixed an issue where when the shop drops its stock the remainder would always be deleted.
  • Fixed an issue where each stack was dropped individually, now all of the stock is dropped at once.
----------, Nov 25, 2019

Fixes
  • Fixed an issue with display packets not clearing and IDs were kept.
  • Fixed an issue with a possible calculation issue on stock drops.
  • Fixed an issue involving the inventory size configuration values.
    • An auto-detection and fixing feature has been implemented alongside this.
----------, Nov 24, 2019

Changes
  • The display offsets found in the configuration now move the entire display vs just the glass display.
  • The offsets now are balanced out based on the initial value being -0.4 to make the displays look nicer.
  • The original values of the floating item have been adjusted to fit better inside the glass wheen bobbing up ad down.
Fixes
  • Fixed a hologram Y-axis issue for versions 1.8-1.8.9.
  • Fixed a flickering graphical issue for 1.11.
----------, Nov 15, 2019

Fixes
  • Fixed an issue involving visual fake items from interfaces to enter the player's inventory when using the transaction menu.
  • Fixed the sell-all and buy-all features by removing them completely and implementing a new approach.
Changes
  • Replaced the sell and buy all features with a new approach. This new approach simply allows the transaction menu to remain open when selling or buying alongside updates each icon to display if stock is available or even if the buy/sell limit is reached.
  • Items inside the transaction menu now display as the blocked item if the stock is too low, the buy/sell limit is reached, or if the sell/buy price is below or equal to zero.
----------, Nov 8, 2019

Fixes
  • Resolved an issue involving negative values when selling items to a shop.
  • Resolved an issue preventing the transaction menu from properly displaying some items.
  • Resolved an issue where null items inside hopper or dropper interfaces would throw a un-harmful error into the console.
----------, Nov 8, 2019

Fixes
  • Fixed an issue involving both the sell and buy limits, where indexing would start at zero rather than one.
  • Fixed an issue where the limit control item was not displaying due to a configuration key name change.
Changes
  • Partially re-worked the sell and buy all features to not use loops, but instead use precise formulas to resolve lag issues. Though this feature is still undergoing changes and adjustments, it is safe to try out without performance issues.
----------, Nov 7, 2019

Please note that the sell and buy all features are still experimental due to the complexity involving identical systems used throughout DisplayShops. By default, the feature is disabled in the configuration file.

Fixes

  • Fixed a failed check with the initial buy limit feature.
  • Fixed some minor possible performance issues with the sell and buy all features.
Additions
  • Implemented sell limits. Players can now control how much of the shop items can be sold to a shop before the transactions are blocked.
  • Implemented many new configuration options for the feature above.
----------, Nov 6, 2019

By default sell-all and buy-all functions have been disabled. This is due to some heavy performance and the feature still being experimental. So please note that this feature is not fully stable yet; however, feel free to use it and provide suggestions!

Fixes

  • Fixed a minor issue involving display shops to disappear when teleporting (Moving in and out of chunks or re-logging will always fix these displays).
  • Fixed an issue involving endless loops for the buy-all and sell-all features.
Additions
  • Added a single stack display forcing option (Items floating above base blocks will be shown as a single item regardless of stack size).
  • Added an option to disable the sell and buy all functions.
----------, Nov 3, 2019

Fixes
  • Minor adjustments to the Axis usage to block older versions of Minecraft from using the class causing class missing issues.
  • Fixed some minor performance issues involving the sync base-block task.
----------, Oct 28, 2019

Please note that this is a SNAPSHOT build. It is recommended to backup all data and configurations before updating regardless, however.

Fixes

  • Fixed a directional placement issue involving market regions.
  • Fixed an issue where {no-vault} lines inside item lores were not being removed properly.
  • Fixed an issue involving the short number format. Decimals and more now show as intended up to 8 indexes.
Additions
  • Implemented a buy all and sell all features to the shift + click function inside the transaction menu (This feature is still undergoing improvements).
Changes
  • The block-creative option has been disabled by default.
----------, Oct 22, 2019

Fixes
  • Fixed a loading issue involving invalid chunks. This is caused by deleted worlds.
Changes
  • Creative blocking now blocks the initial process as well.
  • Shops with invalid worlds now are skipped when loading.
  • New soft dependencies have been added in the case of world plugin issues.
----------, Oct 13, 2019

Fixes
  • Fixed an issue with deleting an admin shop via the new delete command.
  • Fixed an issue where the {player} placeholder was invalid inside of shops that run commands.
  • Adjust the owner command to potentially resolve an invalid shop block issue (Still being investigated).
Changes
  • Adjusted some methods for chat interaction to resolve the potential storage of unneeded information.
----------, Oct 13, 2019

Fixes
  • Fixed a small decimal rounding issue with the short number formatting feature.
Additions
  • Added an experimental chat interaction auto-removal feature.
----------, Oct 8, 2019

Fix
  • Fixed a formatting issue when commas are already formatted into a value.
----------, Oct 7, 2019

Fixes
  • Fixed an issue involving shop deletion, sometimes packets were not destroyed until after a short duration.
Additions
  • Implemented the all-new short number formatting feature. The option in the configuration now converts numbers like 1,200 to 1.2k and similar ratios.
  • Implemented the new "/displayshops delete" command allowing normal and admin players to delete shops they have been granted access to by simply just looking at them.
  • Added three new permissions as shown below:
    Code (YAML):
    displayshops.delete - Allows the player to delete a shop they have access to.

    displayshops.adminhelp - The admin help menu will be shown instead of the basic user menu.

    displayshops.admindelete - Allows the player to delete a shop even if they do not own it or it is an admin shop.
Changes
  • The help menu message has been split into two different messages. Inside the configuration, there is now an admin help message and a user help message. The message sent to the player is determined by the "displayshops.adminhelp" permission.
  • The number formatting methods no longer utilize try-catch statements increasing speeds of the method by up to 5ms depending on the size of the value.
----------, Oct 7, 2019

Fixes
  • Fixed a large issue with Left-Click interaction. The action would always delete the shop.
  • Fixed an issue involving a slight lag when a block was placed directly on top of the hologram's location in terms of FPS.
Changes
  • The block-creative option now disables a ton of things, so shops can't be overstocked and such. This option is also enabled by default.
----------, Oct 5, 2019

Fixes
  • Fixed some small configuration reading issues or delays.
Changes
  • By Shift + Left-clicking an empty shop you have access to, the shop will be destroyed.
----------, Oct 4, 2019

Changes
  • Enhanced the shop finding methods to be faster in terms of finding correct shops on interaction.
  • Improved Hologram visibility for versions under 1.9
  • Enhanced the GUI click responsiveness.
----------, Sep 29, 2019

Changes
  • The "/displayshops admin" command now also reverts an admin shop back to a player shop owned by the command executor.
Fixes
  • Fixed a shop loading issue, since some values were being skipped.
  • Fixed an issue where stack amounts were being displayed incorrectly in the transaction menu.
Additions
  • Added a beta version of a purge system, this can be enabled in the configuration file (Set this value to something greater than a couple of days as a general recommendation).
----------, Sep 24, 2019

Fixes
  • Fixed an issue involving formatting.
  • Fixed an issue preventing correct formatting to be dispatched.
----------, Sep 20, 2019

Fixes
  • Re-synced the tasks to align them for proper shop removal.
  • Fixed an IllegalStateException from an async task.
  • Resolved an issue involving shop placement on some materials that caused a weird flicker.
Changes
  • Removed extra packets and added small delays to handle packet sending in a cleaner manner.
----------, Sep 19, 2019

Fixes
  • Fixed an issue where the base-block sync task wouldn't properly remove shops from the shop data file.
  • Fixed an issue involving shop id duplications on shop creation.
Changes
  • The base-block sync task has returned to Async; therefore, it is safe to use now for larger servers!
----------, Sep 17, 2019

Fixes
  • Fixed a visual issue involving distance from a shop. Shop display packets are recent async every time a player enters the shop's chunk or teleports to its chunk (This should also remove flickering).
  • Tampered with the teleport event to resolve a possible performance spike when multiple users fire the event simultaneously.
  • Resolved a small administrator shop stacking visual glitch.
----------, Sep 16, 2019

Fixes
  • Fixed a visual issue involving chunk unloading.
  • Fixed an issue with admin shop stack sizes.
  • Fixed an issue involving trade item visuals to be seen with Vault enabled.
Changes
  • Teleporting players are now bombarded with force packets to fix a visual glitch with shops.
----------, Sep 15, 2019

Fixes
  • Fixed an issue involving features that require Vault to be disabled.
  • Fixed a chunk unloading shop visual glitch.
  • Fixed a couple of default message wording issues within the configuration.
Changes
  • Added the new item for item trading mechanic for when Vault is disabled (The currency item feature was pretty much replaced by this, but the force option for the currency item is still there).
  • Implemented the ChatInteractionEvent alongside full control over how the chat interaction works.
----------, Sep 13, 2019

Fixes
  • Fixed a large cosmetic issue which involved hologram duplication across all worlds. This was caused by packets not being destroyed when players swapped worlds!
----------, Sep 9, 2019

Changes
  • Adjusted some loops for faster looping speeds.
  • Swapped the algorithm method for Map value retrieval.
  • Removed any unessissary packet regenerative calls.
  • Cleaned out some debugging messages.
----------, Sep 9, 2019

Changes
  • The block underneath a shops creation placement block will be check via blacklist and blocked if the material is considered blocked based on the configuration values.
  • The shop creation process now generates the packets forcefully rather than simply regenerating it like normal. This will hopefully resolve the random flicker on creation.
  • The apache classes have been isolated for those who don't have access to those classes in their Spigot or Bukkit jars.
----------, Sep 8, 2019

Additions
  • Added a toggle option to the configuration for the automatic backup system.
Fixes
  • The quick deposit and withdraw actions now are blocked for administrator shops and display proper messages.
----------, Sep 7, 2019

Fixes
  • Fixed an issue where if the player placed a shop out in the open away from other shops, the display shop creation item would be removed from every slot inside the user's inventory.
----------, Sep 5, 2019

Fixes
  • Reversed a patch for the display packets as a setLocation for Async Chunks slipped through the cracks.
  • Fixed an async YAML loading issue found in the snapshot build.
Additions
  • Implemented a shops.yml backup feature, before loading shops from the file it will always save an exact copy incase of saving issues on startup!
----------, Sep 4, 2019

Fixes
  • Fixed an Async chunk loading issue.
  • Fixed an issue involving the location of EntityItems to be set after being spawned.
  • Fixed a withdraw stock visual glitch.
----------, Sep 4, 2019

Fixes
  • Fixed the base-block sync task.
  • Fixed the action bar owner buy and sell messages.
  • Fixed an auto-save issue.
  • Adjusted an async chunk checking method.
----------, Sep 3, 2019

I recommend generating a new configuration to see how defaults were changed, this way the configuration can be configured for the best in-game experience!

Fixes
  • Fixed an issue where holograms could sometimes remain after the destruction of a shop.
  • Fixed an issue where depositing and withdrawing within the GUI wouldn't send completion messages.
  • Fixed performance impacts from depositing within the GUI.
Changes
  • Shops can now have their shop item stack amounts changed within the GUI.
  • Individual materials can now be given specific sell and buy price limitations.
  • Shops no longer use the stack size from the inserted shop item past the shop creation point.
  • Chat interactions can now be exited by typing 'cancel' (Can be changed in the configuration).
  • The GUI depositing feature has been given a new placeholder that now tells the user the total of the items they have.
  • Blocks can no longer be placed on the UP, DOWN, NORTH, EAST, SOUTH, or WEST faces of a shop's base block regard.
Additions
  • Added the Individual material price limitation system.
  • Added the item stack amount customizer.
  • Added the chat cancellation feature.
----------, Sep 2, 2019

Fixes
  • Fixed an issue where every number inside the plugin would format with two decimal places to the right. This is no longer the case, only prices should now be formatted in this manner.
  • Fixed an issue where the auto-updater wouldn't replace unmatched materials for versions under 1.13. Material issues should no longer be encountered.
  • A weird shop item quantity glitch should be fixed inside this update as well. This hasn't been fully confirmed, but when purchasing from a shop that takes the stock down to zero, the shop's item quantity would be set to 1. This seems to have been fixed!
----------, Sep 1, 2019

Fixes
  • Fixed an issue where decimal values were unable to be entered as a shop's buy or sell price.
  • Fixed an issue where the transaction menu could be accessed without the shop having a shop item.
Changes
  • Prices are now shown with 2 decimal places to the right by default.
----------, Sep 1, 2019

Fixes
  • Fixed interaction with an empty admin shop.
  • Fixed some chat interaction minor cosmetic issues.
  • Fixed an async chunk load error.
Changes
  • When a chunk loads shops inside the chunk will regenerate regenerate their displays.
  • When a chunk is not loaded and a shop is located inside the chunk it will be skipped in terms of visual generation.
  • Added buy and sell price limits into the configuration.
----------, Aug 31, 2019

Fixes
  • Fixed an issue where locations were being retrieved asynchronously.
  • Fixed an issue where admin shops would save the previous owner causing the shops to no longer be admin when loaded.
  • Fixed the physical item currency item meta check.
  • Fixed the entire command system!
  • Fixed some minor visual glitches such as the rare hologram duplication (This is not confirmed; however, a small change seems to have done the trick).
Changes
  • Materials that didn't exist in versions under 1.13 will now be updated automatically when detecting the Minecraft version.
  • The base-block sync task has been disabled by default as this feature can be resource-heavy once the server has reached a large number of shops (Some users may not be impacted, this is a theory).
----------, Aug 30, 2019

If for any reason you experience lag or errors inside this update from a task. Go into the configuration and set the 'shop-sync-duration' to -1. This will disable the feature!

Fixes

  • Flagged all packet entities as Marker to remove a lighting visual glitch from some area inside the shops.
  • Fixed an incorrect HashMap removal for the new base-block sync task.
  • Completely asynced the new base-block sync task. <--- This is being watched closely, but should prevent a lot of unneeded checking lag.
----------, Aug 29, 2019

This update is a SNAPSHOT build and may contain minor issues, please report anything you come across! Also, be sure to show the plugin some love and consider leaving a review or a thumbs up if you are enjoying the plugin! :)

Fixes

  • Fixed an issue with lighting for the visual packet entities for versions under 1.13.
  • Fixed an issue where holograms disappeared upon death. The hologram will regenerate after the player respawns for ALL players asynchronously.
  • Fixed an issue where the durability value was not working inside the configuration for menu items.
  • Fixed a couple of possible loading issues with invalid shops.
Additions
  • Implemented the full command system for the shops. This feature simply allows the player to set a shop into command only mode and simply run commands every time. (Commands can only be applied to admin shops and these shops can't be sold to)
  • Implemented a base-block syncing task, which simply loops and checks each shop and removes/deletes shops without a base block automatically.
  • The help menu is now completely customizable in the configuration file.
Changes
  • When loading shops, the base block is no longer forced if invalid. These shops are left for the base-block syncing task to take care of.
----------, Aug 29, 2019

Fixes
  • Fixed an issue where the "creation-item-drop" was given an incorrect ID causing the feature to not work when toggled.
  • Fixed a small loop issue where elements were being removed before recorded (This wasn't a huge issue, but was fixed due to duplications of some MarketRegion objects).
----------, Aug 28, 2019

This is a stable SNAPSHOT build; however, the physical item currency feature is new where small bugs could exist. Please report them if encountered!

What's Coming Next?

  • Admin Command Shops - These will allow server owners to sell command through display shops!

Fixes

  • Fixed an issue involving a configuration loading/updating bug.
  • Fixed an issue which caused some shops to freak out with GriefPreventation claims when the claim is made on top of them.
Changes
  • Changed many of the default GUI item materials and implemented a new transforming placeholder that allows lines in an item's lore to disappear based on if Vault is disabled or not.
  • Implemented the new Physical Item Currency system. This will allow server owners to use a custom item as the shop currency versus a virtual currency!
----------, Aug 28, 2019

This update was very large and difficult to accomplish due to a partial recode. I highly encourage a configuration reset for the new options, but for those of you who don't want that, the plugin will attempt to fix your configuration automatically!

Fixes

  • Fixed an issue with the Market Regions allowing players to bypass each others 'too close' range for shops.
  • Fixed an issue with the old item preview system (This doesn't matter since it was technically removed in this update).
Changes
  • The old player interactions and buy/sell functionality has been replaced by the new transaction system.
  • The item preview has been fully replaced since the shop transactions now display the shop item.
----------, Aug 26, 2019

Fixes
  • Fixed a market region issue where later ran event was causing the base block to vanish. This was found in WorldGuard and GreifPrevention.
  • Fixed a permission issue involving market regions.
Changes
  • Swapped a message out with a new message for shops that are too close to each other.
  • Added the 'required-shop-distance' option for configurable shop distances. This allows better control over shop spacing.
----------, Aug 24, 2019

This update was pretty large and had many changes internally to implement the new system. Approximately 10 changes were made to the configuration, so please review your configuration after installation to make any necessary adjustments after the auto-update.

Fixes

  • Fixed an issue where when changing a shop's item and the stock is 1, the item will not be given back to the owner.
  • Fixed an issue where setting a shop item to a tool would cause the block to open a vanilla inventory due to the player off hand.
Additions
  • Added Market Regions, market regions are used to create regions that use a low priority event to bypass other plugin's protections inside the given region.
    • This feature includes new permissions and commands, so refer to the main page of the plugin to get specifics!
----------, Aug 24, 2019

Watch your configuration after this update to fix any miscalculations by the auto-updater. This update contains more fixes and changes, but they are more of optimizations in terms of loops and unneeded storage variables. Although this is a stable update, it is a Snapshot and may contain minor issues that need to be tweaked.

Fixes

  • Fixed an issue involving incompatibilities with other some other plugins.
  • Made small adjustments to the regeneration of display shops to fix a weird visual glitch.
Additions
  • Added a buy limit to each shop. This was added so a player can control how many of the shop item can be sold to the shop and prevent an endless dump that drains their money.
Changes
  • When the buying or selling price of a shop that is not an admin shop is set to zero or below, a line containing its placeholder will be removed automatically to remove confusion.
  • Changed two items in the Shop Edit menu.
----------, Aug 23, 2019

Fixes
  • Fixed an issue with shop saving. Shop ids were not properly being loaded in.
Changes
  • Added the all-new quick-withdraw and quick-deposit features.
    • Shift + Left-Click when a shop has a shop-item now deposits the item in hand if similar.
    • Shift + Right-Click when a shop has a shop-item now withdraws from the stock.
  • Added new messages for the above features.
----------, Aug 20, 2019

Fixes
  • Fixed an issue where duplicate shops were being mapped causing null versions of shops to sit inside the memory unused.
  • Fixed an issue involving duplicate packet entities when reloading the plugin through plugman or its only reload command.
  • Fixed the stock and owner commands being registered.
  • Fixed the owner command not displaying the 'invalid-player' message.
Changes
  • Shop no longer use numerical as the shop id. Now the string form of UUIDs is used to save loading time alongside better detection over invalid shops.
----------, Aug 18, 2019

Additions
  • Added the ShopCreationEvent to the API.
  • Added the ShopDeletionEvent to the API.
Fixes
  • Fixed a small packet visual glitch involving when a shop reloads in a different world.
----------, Aug 16, 2019

This is a catch-up update!

Changes
  • Enabled the update checker on startup.
  • Added some new JavaDoc comments to some API methods.
  • It was also meant to be mentioned that in the API for 1.0.2 the events were moved to a sub-package from 1.0.
----------, Aug 15, 2019

Fixes
  • Fixed an issue involving itemstack packet duplicates.
Changes
  • Shift + Left-Clicking a shop now provides a message in chat that can be hovered which displays the full item's name, lore, enchants, and more.
  • Auto-saving has been implemented with a default interval of 900 seconds (15 minutes).
  • Removed the block break event, since it was no longer needed and using unessissary resources.
  • All events were set to default priority and the AsyncPlayerChat event was set to Lowest alongside ignoring cancellation.
----------, Aug 15, 2019

Resource Information
Author:
----------
Total Downloads: 848
First Release: Aug 15, 2019
Last Update: Jan 20, 2024
Category: ---------------
All-Time Rating:
51 ratings
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings