⍟ 1.5.1 (Now this... This is an update) ⍟
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.