diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/addon/limited.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/addon/limited.md index 70af27e240..fae55a8c95 100644 --- a/i18n/af-ZA/docusaurus-plugin-content-docs/current/addon/limited.md +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/addon/limited.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -41,8 +35,8 @@ Limit players to purchase up to 16 items per month. /quickshop limit period MONTH ``` -The system is based on the QuickShop-Hikari calendar system.\ -The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year.\ +The system is based on the QuickShop-Hikari calendar system. +The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year. Same for days, months and hours. Available time units: diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/addon/list.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/addon/list.md index 93d182f083..f20b91fd7b 100644 --- a/i18n/af-ZA/docusaurus-plugin-content-docs/current/addon/list.md +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/addon/list.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/addon/plan.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/addon/plan.md index 52a6e79cb4..c10ef4df42 100644 --- a/i18n/af-ZA/docusaurus-plugin-content-docs/current/addon/plan.md +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/addon/plan.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -18,7 +18,7 @@ Recorded data can be displayed from Hikari v2.0.0.0 onwards, but only after vers - All shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 1000 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `5` in server scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `5` in server scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Player Scope @@ -27,7 +27,7 @@ And still is Plan limitations, the list sorting is disturbed, so the display ord - All owned shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 50 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `4` in player scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `4` in player scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Showcase diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/addon/reforges.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/addon/reforges.md index 2a14509eb7..25fff1752a 100644 --- a/i18n/af-ZA/docusaurus-plugin-content-docs/current/addon/reforges.md +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/addon/reforges.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.0.0.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md index 304d39bc05..6f9f51d250 100644 --- a/i18n/af-ZA/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.1.1.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -44,7 +38,7 @@ _This is not necessary if you are using an H2 database._ ### Prepare for convert -To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console.\ +To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console. If a player is in the server, the conversion cannot be started. Once the conversion has begun, the server will be locked during the conversion process and no players will be able to join the server during the conversion. diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/addon/shopitemonly.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/addon/shopitemonly.md index c45062f8c2..1ccfe977b3 100644 --- a/i18n/af-ZA/docusaurus-plugin-content-docs/current/addon/shopitemonly.md +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/addon/shopitemonly.md @@ -2,17 +2,11 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT - -::: - -This addon prevents players from putting non-store items into store containers.\ +This addon prevents players from putting non-store items into store containers. Does not apply to stores that use the item inventory redirection API (aka. InventoryWrapper API). This Addon will check for container (or transferring) items on events such as the player closing the container or hopper access. diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md new file mode 100644 index 0000000000..9c8b4f7407 --- /dev/null +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md @@ -0,0 +1,55 @@ +# 6.2.0.10 + +## Major Changes + +- Added support for 1.21.6 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.7 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.8 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Some internal updates for packetevents(2.9.0 is now required.) +- Updated Lands support + +## Addon Changes + +- Added MatcherPlus Addon + - Allows support for BreweryX and AdvancedItems stacks in shops with improved matching abilities +- Added FabledSkyblock Compat +- Added Dominion Compat +- Added HuskTowns Compat +- Added IridiumSkyblock Compat +- Added member-create for member creation in ARM compat +- Added admin-override and quickshop.arm.admin permission for admin overrides in ARM + +## Minor Changes + +- Added configurations for the coordinates of the display item. +- Added /qs toggledisplayall on/off server/owned + - Players need to have permission node quickshop.toggledisplayall.admin to toggle all on the server. +- Added ability to use abbreviations in /qs price and /qs create commands such as 2.5k for 2500 +- Added ability to set default display status using shop.default-display in config.yml + +## Fixes + +- Fixed issue with display item being sent to the moon on 1.21.5 +- Fixed issue where TRADE_UI interactions interfered with quick create. +- Fixed issue with displays on protocollib falling through the chest +- Fixed issue with signs on .9 and previous .10 snapshots on early versions +- Implemented some performance improvements for paper servers +- Fixed all outstanding issues with Folia usage.(thanks to RootB33R/SleazLee for contributions) + +## Possible 6.2.0.11 Features + +Here's an outline for some features that may arrive in 6.2.0.11: + +- Additional compats/addons that have been piling up. + - see: https://github.com/QuickShop-Community/QuickShop-Hikari/issues/1756 +- gradle?(interested to see compilation time uplifts) +- Update documentation +- Update configuration comments +- Update configuration system? + - auto updating? + - Allows removal of the update code +- Remove waste spigot modules? + - Any versions of 1.20 that can be discarded due to low use? +- Bug fixing, of course +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... \ No newline at end of file diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md new file mode 100644 index 0000000000..b41c88662a --- /dev/null +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md @@ -0,0 +1,173 @@ +## Outline + +- Update documentation +- Update configuration comments +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... + +# 6.2.0.11 + +## Major Changes + +- Removed Spigot Platform Modules, and stopped loading QS if Spigot is detected. This will mean that unless the protocol changes that we use for display items, QS won't need updated for each version. +- Revamped Economy Code Completely + - New classes for all economy-related systems + - Any economy-related or benefits-related events are incompatible with previous versions. +- Added sign layout customizations per-type allowing you to change how lines are configured, an empty string('') will leave an empty line for that line of the sign. + +``` + #The layout of signs for shops. + layout: + + #The layout of BUYING shops. + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of FROZEN shops. + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of SELLING shops. + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +- Add wildcard support for item blacklist patterns(thanks to bennycallanan) + - Added support for wildcard patterns in the item blacklist configuration, allowing users to block entire categories of items with simple patterns. + + - Features + - Wildcard patterns like \*_AXE and \*_SPAWN_EGG now work in blacklist configuration + - Supports \* for any characters and ? for single character matching + - Case-insensitive pattern matching +- Overhauled GUI system(thanks to Yusakidev) + - Implemented gui.yml configuration file for customizing the GUI. + - Implemented better filtering for qs browse + - Implement GUI system to be more stable, and less error prone. + - Added gui.yml for fully configurable GUI layouts and text + - Browse menu: search, sort (price/name/stock), and filter (all/buying/selling/in-stock) + - Staff menu: search functionality for player/staff selection + - Grouped item pages for better shop browsing + - Refactored all menu pages to use configurable display/lore +- Added worldedit compat to QS internally as it's widely used. +- Revamped the taxation system to be more flexible and easier to configure. + - introduced a new progressive tax system that allows you to tax based on the balance of players.(suggested by YuanYuanOwO) + - introduced the ability to tax the player interacting with the shop, the owner, or both + - all tax-related configurations have been moved under the shop-tax section of the config. this may require reconfiguration of your tax settings. + - added a new ShopEnhancedTaxEvent, deprecated the old ShopTaxEvent. + - Added a new TaxManager, and TaxProvider interfaces, this allows for custom tax providers to be added by addons/third-party developers. + +## Addons/Compats Changes + +- Added UltimateClaims compat +- Added SimpleClaimSystem compat +- Added Quests by Pika addon +- Added BetonQuest addon +- Added Pl3xMap addon +- MatcherPlus Compat Improvements + - Added support for CrazyCrates + - Added support for ExcellentCrates + - Added support for SilkSpawners. +- WorldGuard Compat Improvements(Thanks to golovin12) + - Added clear permission handling: + - Region owners and members automatically have permission to create and trade in their own regions. + - Other players must have the appropriate WorldGuard flags enabled (quickshophikari-create, quickshophikari-trade) to interact with shops. + - If a shop is located outside any region, default QuickShop behavior applies (no extra restrictions) +- Added colored markers based on shop state for bluemap(thanks to YusakiDev) +- Updated dynmap/towny addons to use the new ShopTypeEnhancedEvent instead of ShopTypeEvent. +- Removed worldedit compat, it's now included in the main plugin. +- Added support for global flags to the worldguard compat. + +## Internals/Developer APIs + +- Removed several deprecated methods and classes. +- Revamped the interaction manager. It is now more flexible and allows external additions + - This involves two classes InteractionBehavior and InteractionType. + - InteractionType details the type of interaction such as: STANDING_LEFT_CLICK_SIGN, STANDING_LEFT_CLICK_SHOP + - InteractionBehavior outlines a behavior for an InteractionType such as CONTROL_PANEL and TRADE_UI +- Added UserLimitCalculationEvent, which allows for custom limits to be applied to users. + - This is useful for limiting the number of shops a user can have, or adding on to the existing limits provided by the ranks system without needing to implement a new RankLimiter. +- Added a new ShopLayoutProvider interface, and default implementation. + - This allows for custom layouts to be used for shops, allowing for more customization. + - This also allows for developers to override the default layout provider and create their own implementation. +- How to make your own? + - Implement the classes you would like to then register with the InteractionManager: + - ```java + InteractionManager manager = QuickShop.getInstance().getInteractionManager(); + + manager.interaction(new MyTradeInteraction()); + manager.behavior(new MyTradeBehavior()); + ``` +- Replaced some Apache Commons calls that could be easily replaced with built-in java methods, reduces some calls by ~ 1100ms/method call +- Deprecated the ShopType enum, and the ShopTypeEvent. These are replaced with the new IShopType interface and implementing classes. + - The new event is ShopTypeEnhancedEvent. + - This allows for third-party addons to add their own shop types, and simplifies code checks for translations. +- Updated config system to use Boosted-yaml + - this allows for auto-updating of config files without complex update scripts + - this also allows for the config system to not be minecraft-dependent. +- Replaced logical PaperLib calls with native PaperAPI calls. + +## Minor Changes + +- Bump Java version up to 21 +- Added shop.display-allow-enchants to enable/disable enchantments for display items on shops. +- Added workaround for packetevents not supporting custom enchants on itemstacks for virtual display items. +- Using locale translations for shop-type in mode toggle icon(thanks to ExyiN) +- Bumped Residence version for the compat(thanks to YuanYuanOwO) +- add world whitelist support(thanks to wling-art) +- added /qs database save command, which saves all currently dirty-marked shops to the database. +- Split up interactions _SHOPBLOCK into _SHOPBLOCK and _CONTAINER. + - _SHOPBLOCK relates to shops, where _CONTAINER relates to shop-valid containers that are not currently shops. +- Added inventory as an option for command panel, this is useful for adding a secondary option for players to open a shop's inventory. +- Moved crowdin arguments from system properties to config.yml + - crowdin-host + - use-crowdin-ota + +## Fixes + +- Fixes issue with item price restrictions(thanks to maxcom1) +- Fixes issue with 1.20.x protocol lib displays(thanks to YuanYuanOwO) +- Fixes issue when no item is in hand for itemdebug(thanks to YuanYuanOwO) +- Fixes issue with dominion addon(thanks to YuanYuanOwO) +- Add a simple check to avoid this. If it is not own shop, reject limit request directly.(Thanks to YuanYuanOwO) +- Fix NPE by not setting tax for price in TransactionBuilder(thanks to maxcom1) +- Fixes /quickshop suggestprice to differentiate between buy/sell shops. (Thanks to MidSpike) +- PacketEvents ClassNotFoundException with ProtocolLib(thanks to wling-art) +- Reallocate block state access to region thread for shop creation(thanks to r00tbeerman) +- resolve SLF4J StaticLoggerBinder loading error(thanks to wling-art) +- sign hijacking issue by validating sign facing direction(thanks to wling-art) +- Performance improvements for QuickShop disabling to prevent potential freezes. +- Fixed issue with 1.20.4 packetevents virtual displays not staying put. +- Fixes critical issue in GriefPrevention compatibility plugin. +- Fixes issue with shop owner not getting money when benefits active. +- Fixes for lands addon on folia, Use regionThread for Folia compatibility(thanks to YusakiDev) +- Fixes for TRADE_DIRECT on stacking shops +- Fixes issue for protocollib 5.4.0 with undocumented packet changes. +- Fixes issue where item stacks could be used on creation above the max stack size. +- Fixes issue with BukkitAudiences-related crashes on 1.21.11. +- Fix issue with shop deletion when getting too impatient. +- Fix the permission check issue when a shop owned by a non-owner is transferred to someone else. (thanks to YuanYuanOwO) +- Fix ui with supertool (thanks to YuanYuanOwO) +- Fix issue with logs generating outside debug mode. +- Fix issue with /qs find. +- Fix configuration loading timing. +- Fix configuration loading/creation warning message language. +- Fix command description language key mismatch(thanks to wling-art) +- Fix qs clean command on folia(thanks to wling-art) +- Fix per-player-shop-sign on folia(thanks to wling-art) +- Fix potential recursive deadlock in virtual display packet sending(thanks to wling-art) +- Fix configuration loading/creation warning message language. +- Fix issue with /qs browse and ShopItemOnly addon not behaving properly together on folia. +- Fix issue with PLAN using outdated APIs. +- Fix issue with /qs clean on folia.(thanks to wling-art) +- Fix issue with /qs cleanghost on folia(thanks to wling-art) +- More thread safety fixes for shops on folia.(thanks to wling-art) +- Fix owner payment calculations with benefits(thanks to wling-art) \ No newline at end of file diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md index 8172f9b410..dcc3edc67d 100644 --- a/i18n/af-ZA/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md @@ -20,20 +20,20 @@ the ControlComponent object with a custom one that will replace the original dur ### Introduction of the Revamped Packet System 1. **About**: - - A modular and scalable system for managing packets related to virtual display items in Minecraft. - - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. + - A modular and scalable system for managing packets related to virtual display items in Minecraft. + - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. 2. **Custom Packet Factories**: - - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. - - Packet types: - - **Spawn Packet**: Spawns a virtual item entity at a specific location. - - **Metadata Packet**: Updates the visual properties of virtual items. - - **Velocity Packet**: Adds motion/velocity to entities (currently optional). - - **Destroy Packet**: Removes the entity from the client view. + - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. + - Packet types: + - **Spawn Packet**: Spawns a virtual item entity at a specific location. + - **Metadata Packet**: Updates the visual properties of virtual items. + - **Velocity Packet**: Adds motion/velocity to entities (currently optional). + - **Destroy Packet**: Removes the entity from the client view. 3. **Error Handling and Logging**: - - Enhanced debug logs to trace packet-related issues. - - Detailed error messages for missing factories or unregistered listeners. + - Enhanced debug logs to trace packet-related issues. + - Detailed error messages for missing factories or unregistered listeners. #### Improvements: diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md index 7775308722..c6e0948d19 100644 --- a/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md index f420997a9c..38587e3784 100644 --- a/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md index 5ed8182c9a..259c55f342 100644 --- a/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md index 924a37ac49..7fd4596a6a 100644 --- a/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,6 +10,6 @@ This is a BungeeCord plugin, you need install it within your BungeeCord's plugin ## How does it work? -BungeeCord Bridge plugins will register a `quickshop:bungee` channel for fowarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. +BungeeCord Bridge plugins will register a `quickshop:bungee` channel for forwarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. All forwarding is indicated by QuickShop-Hikari on the Spigot server and ends when it is not needed. diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md index 27d68956a8..20fbaf7a0c 100644 --- a/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,5 +10,5 @@ This compatibility module added [Chest Protect](https://www.spigotmc.org/resourc ## How does it work? -This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident.\ +This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident. It also prevents players from creating shops on ChestProtect protected containers. diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md index 220e26d8bb..e1757e7be9 100644 --- a/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/dominion.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/dominion.md new file mode 100644 index 0000000000..e1195278a8 --- /dev/null +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/dominion.md @@ -0,0 +1,138 @@ +# Dominion + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and Dominion. + +It ensures that shop creation and trading respect Dominion’s land and territory protection system. + +--- + +## What Does It Do? + +Dominion allows players or groups to claim land and define territory-based permissions. + +Without compatibility: + +- Players could create shops inside territories they do not control. +- Visitors might trade inside protected dominions. +- Dominion permission rules might not apply to shop interactions. + +The Dominion compat module ensures that: + +- Shop creation respects territory ownership. +- Shop trading follows Dominion permission settings. +- Protected land remains secure from unauthorized shop usage. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a Dominion-controlled area. +- Whether the player has permission within that territory. +- Whether Dominion rules allow shop interaction. + +If the action is not permitted by Dominion settings, QuickShop blocks it. + +If the location is outside any Dominion territory, default QuickShop behavior applies. + +--- + +## Territory Owner Control + +With this module enabled: + +- Territory owners can create and manage shops inside their dominion. +- Trusted members follow territory-based permissions. +- Outsiders are restricted unless explicitly allowed. +- Shop actions respect Dominion’s land rules automatically. + +This prevents unauthorized shop placement inside protected territories. + +--- + +## Installation + +1. Install Dominion. +2. Install the QuickShop Dominion compat module. +3. Restart your server. + +The module activates automatically if Dominion is detected. + +No manual configuration linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside dominions +whitelist-mode: false + +# Allow territory owners to override shop permissions +allow-owner-override: true +``` + +If Dominion is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For servers using Dominion: + +- Restrict shop creation to territory owners or trusted members. +- Prevent shop creation in wilderness if desired. +- Allow dominion owners to manage shop permissions. +- Review Dominion permission settings to align with shop behavior. + +This ensures protected territories remain secure and organized. + +--- + +## Common Questions + +### Can players create shops in someone else's dominion? + +Only if Dominion permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You may allow or restrict shops outside dominions. + +### What happens if Dominion is removed? + +QuickShop returns to normal behavior and stops checking Dominion territories. + +--- + +## Summary + +The Dominion compat module: + +- Enforces territory-based permissions +- Prevents unauthorized shop creation +- Protects claimed land from misuse +- Integrates seamlessly with Dominion + +It is recommended for servers running Dominion. \ No newline at end of file diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md index 743d3ae666..2ac9b10488 100644 --- a/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md new file mode 100644 index 0000000000..07ba4ada66 --- /dev/null +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md @@ -0,0 +1,133 @@ +# FabledSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and FabledSkyblock. + +It ensures that shop creation and trading properly respect island boundaries and island permissions. + +--- + +## What Does It Do? + +On Skyblock servers, players build and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Players might trade in areas they should not. +- Island protection rules might not apply to shops. + +The FabledSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members behave correctly with shops. +- Island visitors are restricted appropriately. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a FabledSkyblock island. +- Whether the player has permission on that island. +- Whether island settings allow the action. + +If the action is not permitted by island rules, QuickShop will deny it. + +--- + +## Island Ownership Rules + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow island permission settings. +- Visitors can only trade if island permissions allow it. +- Outside of islands, default QuickShop behavior applies. + +--- + +## Installation + +1. Install FabledSkyblock. +2. Install the QuickShop FabledSkyblock compat module. +3. Restart your server. + +The module activates automatically if FabledSkyblock is detected. + +No manual linking is required. + +--- + +## Configuration + +If the module provides configuration options, they will appear in its `config.yml`. + +Typical options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If FabledSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most Skyblock servers: + +- Allow shop creation only inside islands. +- Prevent trading in the void or wilderness. +- Let island owners control shop permissions. +- Use island rank systems to manage shop access. + +This helps maintain economic balance between islands. + +--- + +## Common Questions + +### Can players create shops in the void? + +Only if your configuration allows it. +Most servers disable shop creation outside islands. + +### Does this affect island war or PvP modes? + +No. +The module only checks island ownership and permissions for shop interactions. + +### What happens if FabledSkyblock is removed? + +QuickShop returns to normal behavior. + +--- + +## Summary + +The FabledSkyblock compat module: + +- Protects island economies +- Enforces island permission rules +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is strongly recommended for any server running FabledSkyblock. \ No newline at end of file diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md index 81b13d2c6b..32614d3019 100644 --- a/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md @@ -2,17 +2,17 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -GreifPrevention compatibility module added compaitibility with GF. +GreifPrevention compatibility module added compatibility with GF. ## How does it work This module allow QuickShop-Hikari check if player have permission to create or use QuickShop in specific region. -And delete shops when claim removed, untrusted, unclimed, expired, resized or subclaim created. +And delete shops when claim removed, untrusted, unclaimed, expired, resized or subclaim created. ## Configuration diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md new file mode 100644 index 0000000000..e71b34d462 --- /dev/null +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md @@ -0,0 +1,139 @@ +# HuskTowns + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and HuskTowns. + +It ensures that shop creation and trading respect town and claim permissions defined by HuskTowns. + +--- + +## What Does It Do? + +HuskTowns allows players to create towns and claim land. + +Without compatibility: + +- Players could create shops inside towns they do not belong to. +- Visitors might trade inside protected towns. +- Town permission rules might not apply to shop interactions. + +The HuskTowns compat module ensures that: + +- Shop creation respects town ownership. +- Trading follows town permission settings. +- Town members and visitors are handled correctly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a HuskTowns claim. +- Whether the player is a town member, trusted player, or outsider. +- Whether the town's permission settings allow the action. + +If the action is not permitted by town rules, QuickShop blocks it. + +Outside of town claims, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Town Owner Control + +With this module enabled: + +- Town owners can create and manage shops inside their town. +- Town members follow town-based permission settings. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect town claim protection. + +This prevents unauthorized shop placement and trading inside protected towns. + +--- + +## Installation + +1. Install HuskTowns. +2. Install the QuickShop HuskTowns compat module. +3. Restart your server. + +The module activates automatically if HuskTowns is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside towns +whitelist-mode: false + +# Allow town owners to override shop permissions +allow-owner-override: true +``` + +If HuskTowns is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For town-based survival servers: + +- Restrict shop creation to town members. +- Allow trading only where town permissions permit. +- Prevent shop creation in wilderness if desired. +- Enable owner override for better administrative control. + +This helps maintain town-based economic balance. + +--- + +## Common Questions + +### Can players create shops in another town? + +Only if that town's permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You can allow or restrict shops outside towns. + +### What happens if HuskTowns is removed? + +QuickShop returns to normal behavior and stops checking town permissions. + +--- + +## Summary + +The HuskTowns compat module: + +- Enforces town-based land permissions +- Protects towns from unauthorized shop usage +- Integrates smoothly with HuskTowns +- Requires minimal setup + +It is recommended for any server running HuskTowns. \ No newline at end of file diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md new file mode 100644 index 0000000000..3fa2995eb0 --- /dev/null +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md @@ -0,0 +1,139 @@ +# IridiumSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and IridiumSkyblock. + +It ensures that shop creation and trading respect island boundaries and island permission settings defined by IridiumSkyblock. + +--- + +## What Does It Do? + +IridiumSkyblock allows players to create and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Visitors might trade inside protected islands. +- Island protection rules might not apply correctly to shops. + +The IridiumSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members and visitors are handled properly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside an IridiumSkyblock island. +- Whether the player is the island owner, member, or visitor. +- Whether island permissions allow shop interaction. + +If the action is not permitted, QuickShop blocks it. + +Outside of islands, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Island Owner Permissions + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow the island's permission configuration. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect island protection rules. + +This prevents unauthorized shop usage inside protected islands. + +--- + +## Installation + +1. Install IridiumSkyblock. +2. Install the QuickShop IridiumSkyblock compat module. +3. Restart your server. + +The module activates automatically if IridiumSkyblock is detected. + +No additional setup is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If IridiumSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most IridiumSkyblock servers: + +- Restrict shop creation to island owners. +- Allow island members to trade if trusted. +- Prevent shop creation in the void or wilderness. +- Enable owner override for better management. + +This helps maintain balanced island economies. + +--- + +## Common Questions + +### Can players create shops outside their island? + +Only if your configuration allows it. + +Most Skyblock servers restrict shops to island areas. + +### Do island ranks affect shop permissions? + +Yes, if your island permissions are configured to control interaction rights. + +QuickShop follows island rules. + +### What happens if IridiumSkyblock is removed? + +QuickShop returns to normal behavior and stops checking island permissions. + +--- + +## Summary + +The IridiumSkyblock compat module: + +- Protects island economies +- Enforces island-based permissions +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is recommended for any server running IridiumSkyblock. diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md new file mode 100644 index 0000000000..3b4726cb9d --- /dev/null +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md @@ -0,0 +1,151 @@ +# ItemMatcherPlus + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +The ItemMatcherPlus module improves how QuickShop matches custom and plugin-modified items. + +It allows QuickShop to properly recognize and stack items created by other plugins that normally would not match using standard Bukkit item comparisons. + +This module is especially useful for servers that use: + +- Custom items +- Modified metadata +- NBT-based systems +- Advanced crate rewards +- Custom brewing systems +- Custom fishing rewards + +--- + +## What Does It Do? + +By default, Minecraft item matching checks: + +- Material type +- Basic metadata + +However, many plugins modify items with: + +- Custom NBT data +- Hidden tags +- Custom lore formats +- Unique identifiers + +Without enhanced matching: + +- Items may not stack +- Shops may refuse valid items +- Transactions may fail +- Buying/selling may not behave correctly + +ItemMatcherPlus improves compatibility and matching accuracy. + +--- + +## Supported Plugins + +ItemMatcherPlus includes built-in support for: + +- AdvancedItems +- BreweryX +- CrazyCrates +- ExcellentCrates +- PyroFishing +- SilkSpawners + +If any of these plugins are installed, QuickShop will automatically use enhanced matching logic. + +No additional configuration is required. + +--- + +## How It Works + +When a player trades with a shop: + +1. QuickShop checks the item. +2. If ItemMatcherPlus is enabled, it performs advanced matching. +3. Plugin-specific metadata is validated. +4. The item is confirmed as a match (or rejected safely). + +This allows: + +- Proper stacking of custom items +- Correct shop transactions +- Accurate buy/sell detection +- Reduced false mismatches + +--- + +## Installation + +1. Download the ItemMatcherPlus module. +2. Place the JAR into your `plugins` folder. +3. Restart your server. + +If supported plugins are detected, compatibility activates automatically. + +--- + +## Configuration + +ItemMatcherPlus does not require configuration. + +It activates automatically when: + +- The module is installed +- A supported plugin is detected + +If a supported plugin is not installed, no extra logic runs. + +--- + +## Why You Should Use It + +You should install ItemMatcherPlus if your server uses: + +- Custom fishing plugins +- Custom brewing systems +- Crate plugins with modified items +- Custom spawners +- Any plugin that modifies NBT data + +Without it, shops may not properly recognize custom items. + +--- + +## Common Questions + +### Do I need this if I don't use custom item plugins? + +No. +If you only use vanilla items, this module is not necessary. + +### Does this affect performance? + +The module only activates enhanced matching when needed. + +Normal item matching remains fast and efficient. + +### Will it break existing shops? + +No. +It improves compatibility and matching accuracy without modifying existing shop data. + +--- + +## Summary + +ItemMatcherPlus: + +- Improves item matching accuracy +- Adds support for major custom item plugins +- Prevents stacking and trade issues +- Requires no configuration +- Activates automatically + +If you run a heavily customized economy server, this module is highly recommended. \ No newline at end of file diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md index ba87606698..d4ae7d129a 100644 --- a/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/lands.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/lands.md index 06296f5779..7671fcdfe0 100644 --- a/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/lands.md +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/lands.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/openinv.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/openinv.md index c51f628615..4807d57873 100644 --- a/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/openinv.md +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/openinv.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md new file mode 100644 index 0000000000..c2136320b0 --- /dev/null +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md @@ -0,0 +1,138 @@ +# SimpleClaimSystem + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and SimpleClaimSystem. + +It ensures that shop creation and trading respect land ownership and claim permissions defined by SimpleClaimSystem. + +--- + +## What Does It Do? + +SimpleClaimSystem allows players to claim land and protect it from unauthorized interaction. + +Without compatibility: + +- Players could create shops inside claims they do not own. +- Visitors might trade inside protected areas. +- Claim protection might not apply correctly to shops. + +The SimpleClaimSystem compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops within their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a SimpleClaimSystem claim. +- Whether the player has permission within that claim. +- Whether claim rules allow shop interaction. + +If the action is not permitted by the claim, QuickShop blocks it. + +If the location is outside any claim, default QuickShop behavior applies. + +--- + +## Claim Owner Control + +With this module enabled: + +- Claim owners can create and manage shops inside their claim. +- Trusted players follow claim-based permissions. +- Visitors are restricted unless explicitly allowed. +- Claim protection rules apply automatically to shop interactions. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install SimpleClaimSystem. +2. Install the QuickShop SimpleClaimSystem compat module. +3. Restart your server. + +The module activates automatically if SimpleClaimSystem is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If SimpleClaimSystem is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Enable owner override for easier management. + +This ensures players maintain control over their protected land. + +--- + +## Common Questions + +### Can players create shops in someone else's claim? + +Only if claim permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can allow shops outside claims or restrict them. + +### What happens if SimpleClaimSystem is removed? + +QuickShop will revert to default behavior and stop checking claim permissions. + +--- + +## Summary + +The SimpleClaimSystem compat module: + +- Enforces claim-based permissions +- Prevents unauthorized shop creation +- Protects land from unwanted trading +- Requires minimal setup + +It is recommended for servers running SimpleClaimSystem. \ No newline at end of file diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md index a84dbf057b..4dfa8ae97c 100644 --- a/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/towny.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/towny.md index 52ab4818f4..b26c19d335 100644 --- a/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/towny.md +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/towny.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -26,7 +26,7 @@ Town sub-command allow you switch a quickshop between regular shop and town shop For a nation shop, the shop owner will changed to nation fake player created by Towny, and use Nation's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from nation Towny account.\ +All purchases will deposit or withdraw money from nation Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Nation Shop. @@ -35,7 +35,7 @@ If Plot type restriction is enabled, only a specific Plot type can create a Nati For a town shop, the shop owner will changed to town fake player created by Towny, and use Town's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from town Towny account.\ +All purchases will deposit or withdraw money from town Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Town Shop. @@ -88,7 +88,7 @@ bank-mode: ## Permission Override -By adjust configuration, you're allow mayor or king automaticlly grant administrator permission on all shops in their management range. +By adjust configuration, you're allow mayor or king automatically grant administrator permission on all shops in their management range. ```yaml #Should allow Mayor grant the shop administrator permission on they town. @@ -168,7 +168,7 @@ This causes Towny and QuickShop Hikari to use accounts with the same name but di You can adjust the option in configuration to enable workaround. -NOTE: It will force turned on if detected EssentialsX installed on your server.\ +NOTE: It will force turned on if detected EssentialsX installed on your server. At present, we do not provide a method for disable it. ```yaml diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md new file mode 100644 index 0000000000..0189958495 --- /dev/null +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md @@ -0,0 +1,138 @@ +# UltimateClaims + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and UltimateClaims. + +It ensures that shop creation and trading respect land claim permissions managed by UltimateClaims. + +--- + +## What Does It Do? + +On servers using land-claim plugins, players protect areas of the world from unauthorized interaction. + +Without compatibility: + +- Players may create shops inside claims they do not own. +- Visitors might trade in areas where they should not. +- Claim protection rules might not apply correctly to shops. + +The UltimateClaims compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops inside their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a claim. +- Whether the player has permission in that claim. +- Whether claim rules allow shop interaction. + +If the action violates claim settings, QuickShop blocks it. + +Outside of claims, normal QuickShop behavior applies. + +--- + +## Claim Owner Permissions + +With this module enabled: + +- Claim owners can create and manage shops within their claim. +- Trusted players follow claim permission settings. +- Visitors are restricted based on claim configuration. +- Shop actions outside of claims behave normally. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install UltimateClaims. +2. Install the QuickShop UltimateClaims compat module. +3. Restart your server. + +If UltimateClaims is detected on startup, compatibility activates automatically. + +No additional linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Common options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If UltimateClaims is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Keep owner override enabled for better control. + +This ensures players maintain full control over their protected land. + +--- + +## Common Questions + +### Can players create shops inside someone else's claim? + +Only if the claim permissions allow it. + +Otherwise, QuickShop will block the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can choose to restrict shops to claimed land only. + +### What happens if UltimateClaims is removed? + +QuickShop returns to normal behavior without claim checks. + +--- + +## Summary + +The UltimateClaims compat module: + +- Protects claimed land from unauthorized shop usage +- Enforces claim-based permissions +- Integrates smoothly with land-claim servers +- Requires minimal setup + +It is recommended for any server running UltimateClaims. \ No newline at end of file diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md index 87a71a205c..6437754503 100644 --- a/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md @@ -2,8 +2,10 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. Find out more [here](../modules/shops/worldedit.md). + +Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. \ No newline at end of file diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/development/01-getting-start.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/development/01-getting-start.md index 92b773451e..0e78e52367 100644 --- a/i18n/af-ZA/docusaurus-plugin-content-docs/current/development/01-getting-start.md +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/development/01-getting-start.md @@ -6,8 +6,8 @@ This series of articles will help you build extensions for QuickShop-Hikari or i ## License -QuickShop-Hikari is open source using the [GPLv3](https://www.gnu.org/licenses/quick-guide-gplv3.en.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari).\ -You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the GPLv3 agreement. +QuickShop-Hikari is open source using the [AGPLv3](https://www.gnu.org/licenses/agpl-3.0.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari). +You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the AGPLv3 agreement. ## 🚧Don't trust Javadoc too much @@ -48,7 +48,7 @@ QuickShop-Hikari divides operation sources into three types: - Server Main Thread - Async Thread (any other threads but not server main thread) -- Hybird +- Hybrid If you access the API through the wrong thread, QuickShop-Hikari will force a runtime error to be thrown. @@ -58,4 +58,4 @@ For APIs that may trigger network IO or long-time disk IO, you are required not You can see [Util.ensureThread()](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/3d1d271e1106ea1c83cc6068f8232ab7c7860918/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/util/Util.java#L351) and find out the requirements of the different APIs by looking up their use. APIs that do not use Util.ensureThread() are allowed to be called from any thread by default. -You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. +You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. \ No newline at end of file diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md index aa2404c594..7828d414ad 100644 --- a/i18n/af-ZA/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md @@ -10,7 +10,7 @@ ShopManager manager = api.getShopManager(); ## Getting a shop -Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates.\ +Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates. QuickShop-Hikari's store is only bound to one half of "Large Chest", so to get the store, you need to query both the cube itself and its associated cube. The good thing is that there is an API in the plugin that allows you to handle this situation very easily. @@ -71,7 +71,7 @@ manager.deleteShop(shop) // Permanently delete this store, both memory and datab ## Identify a store -Please note that store locations are technically variable and you should not use coordinates to identify a store.\ +Please note that store locations are technically variable and you should not use coordinates to identify a store. Also RuntimeRandomUniqueId should not be used to identify the store, as the name suggests, the value changes every time the server restarts, it should only be used to handle scenarios where the player interacts with the server. ```java diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md index 543f1851da..4f839ed652 100644 --- a/i18n/af-ZA/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md @@ -1,6 +1,6 @@ # 0x05 Per shop permission -QuickShop-Hikari has a per shop permission management system.\ +QuickShop-Hikari has a per shop permission management system. Therefore, for a normal permission node check is not enough, you need to attach an additional check. ## Check with shop diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/development/06-protocol-system.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/development/06-protocol-system.md index 5d37a15536..0380b789f9 100644 --- a/i18n/af-ZA/docusaurus-plugin-content-docs/current/development/06-protocol-system.md +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/development/06-protocol-system.md @@ -15,30 +15,30 @@ This documentation will guide developers through the components, implementation - **Purpose**: Manages packet handling and initialization logic. - **Interface**: `PacketHandler` - **Key Methods**: - - `Map> factories()` - - Retrieves a map of supported `PacketFactory` instances keyed by game versions. - - `void initialize()` - - Initializes the packet handler. - - `Optional> factory(String version)` - - Retrieves a `PacketFactory` for a specific game version. + - `Map> factories()` + - Retrieves a map of supported `PacketFactory` instances keyed by game versions. + - `void initialize()` + - Initializes the packet handler. + - `Optional> factory(String version)` + - Retrieves a `PacketFactory` for a specific game version. ### 2. **PacketFactory** - **Purpose**: Creates and sends specific packet types. - **Interface**: `PacketFactory` - **Supported Packets**: - - **Spawn Packet**: - - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. - - Example Use: Representing shop items visually. - - **Metadata Packet**: - - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. - - Example Use: Updating item display name or properties. - - **Velocity Packet**: - - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. - - Example Use: Custom animations for virtual items. - - **Destroy Packet**: - - Removes the entity from the client view. Created using `createDestroyPacket()`. - - Example Use: Unloading or removing a virtual display item. + - **Spawn Packet**: + - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. + - Example Use: Representing shop items visually. + - **Metadata Packet**: + - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. + - Example Use: Updating item display name or properties. + - **Velocity Packet**: + - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. + - Example Use: Custom animations for virtual items. + - **Destroy Packet**: + - Removes the entity from the client view. Created using `createDestroyPacket()`. + - Example Use: Unloading or removing a virtual display item. Developers implementing custom `PacketFactory` should ensure these packets are correctly handled and optimized for performance. @@ -46,24 +46,24 @@ Developers implementing custom `PacketFactory` should ensure these packets are c - **Purpose**: Oversees the lifecycle of virtual display items and integrates with packet handlers. - **Key Features**: - - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). - - Manages virtual display items mapped to chunks. - - Provides thread-safe operations for adding and removing display items. + - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). + - Manages virtual display items mapped to chunks. + - Provides thread-safe operations for adding and removing display items. ### 4. **VirtualDisplayItem** - **Purpose**: Represents a virtual item displayed to players. - **Key Features**: - - Generates and caches packets for spawning, metadata, velocity, and destruction. - - Manages packet senders for each player. - - Handles spawn and removal operations dynamically. + - Generates and caches packets for spawning, metadata, velocity, and destruction. + - Manages packet senders for each player. + - Handles spawn and removal operations dynamically. ### 5. **ProtocolLibHandler and PacketEventsHandler** - **Purpose**: Provide implementations of `PacketHandler` using ProtocolLib and PacketEvents, respectively. - **Differences**: - - `ProtocolLibHandler` leverages ProtocolLib API. - - `PacketEventsHandler` uses the PacketEvents library. + - `ProtocolLibHandler` leverages ProtocolLib API. + - `PacketEventsHandler` uses the PacketEvents library. --- @@ -140,11 +140,11 @@ public class CustomPacketFactory implements PacketFactory { Packet factories are provided for specific game versions through two primary implementations: - **ProtocolLib**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` - **PacketEvents**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` --- diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md new file mode 100644 index 0000000000..aebc035f87 --- /dev/null +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md @@ -0,0 +1,297 @@ +# Interaction System (Developer Guide) + +The Interaction System allows developers to fully customize how players interact with shops. + +As of 6.2.0.11, the system has been redesigned to be: + +- Modular +- Extensible +- Thread-safe +- Fully customizable by third-party addons + +This guide will walk you through: + +1. What the Interaction System is +2. Getting the `InteractionManager` +3. Understanding `InteractionType` +4. Understanding `InteractionBehavior` +5. Registering custom interactions +6. Best practices + +--- + +# Overview + +The Interaction System is composed of three main components: + +| Component | Purpose | +| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| `InteractionType` | Describes **what kind of click happened** (standing, sneaking, left-click, sign, shopblock, etc.) | +| `InteractionBehavior` | Describes **what action should happen** when that type is triggered | +| `InteractionManager` | Central registry that manages interactions and behaviors | + +This separation allows developers to: + +- Add new click types +- Add new behaviors +- Override existing ones +- Extend QuickShop without modifying core code + +--- + +# Getting the InteractionManager + +To begin registering custom interactions, you must retrieve the `InteractionManager` instance. + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +If you are working directly with the plugin instance: + +```java +InteractionManager manager = QuickShop.getInstance().getInteractionManager(); +``` + +Once obtained, you can: + +- Register new interaction types +- Register new behaviors +- Override existing behaviors + +--- + +# Understanding InteractionType + +`InteractionType` represents **how** a player interacted with a shop. + +Examples include: + +- `STANDING_LEFT_CLICK_SIGN` +- `STANDING_RIGHT_CLICK_SHOPBLOCK` +- `SNEAKING_LEFT_CLICK_CONTAINER` +- etc. + +Each `InteractionType` defines: + +- Player stance (standing/sneaking) +- Click type (left/right) +- Target (sign/shopblock/container) + +InteractionTypes do NOT define behavior — they only define the trigger. + +--- + +# Understanding InteractionBehavior + +`InteractionBehavior` defines **what happens** when an interaction is triggered. + +Examples of built-in behaviors: + +- `TRADE_INTERACTION` +- `TRADE_UI` +- `CONTROL_PANEL` +- `CONTROL_PANEL_UI` +- `NONE` + +A behavior: + +- Executes logic +- May open GUIs +- May send chat panels +- May directly trade items +- Can cancel or modify flow + +This separation makes it easy to reuse behaviors across multiple interaction types. + +--- + +# Registering Custom Interactions + +There are two things you can register: + +- A custom `InteractionType` +- A custom `InteractionBehavior` + +--- + +## Creating a Custom InteractionBehavior + +Create a class implementing `InteractionBehavior`. + +Example: + +```java +public class MyTradeBehavior implements InteractionBehavior { + + @Override + public String getKey() { + return "MY_CUSTOM_TRADE"; + } + + @Override + public void execute(InteractionClick click) { + Player player = click.getPlayer(); + Shop shop = click.getShop(); + + player.sendMessage("You triggered my custom interaction!"); + + // Add your custom logic here + } +} +``` + +Then register it: + +```java +InteractionManager manager = api.getInteractionManager(); +manager.behavior(new MyTradeBehavior()); +``` + +Now your behavior is available for use. + +--- + +## Creating a Custom InteractionType + +You may also register custom interaction types if you want to introduce new trigger definitions. + +Example: + +```java +public class MyCustomInteraction implements InteractionType { + + @Override + public String getKey() { + return "STANDING_DOUBLE_CLICK_SIGN"; + } + + @Override + public boolean matches(InteractionClick click) { + // Define custom logic to detect this interaction + return click.isStanding() + && click.isSign() + && click.isDoubleClick(); + } +} +``` + +Register it: + +```java +manager.interaction(new MyCustomInteraction()); +``` + +--- + +# Binding Types to Behaviors + +The InteractionManager internally maps interaction types to behaviors based on configuration and registration order. + +Once your behavior is registered: + +- It can be referenced in `interaction.yml` +- Or attached programmatically + +Example interaction.yml usage: + +```yaml +STANDING_LEFT_CLICK_SIGN: MY_CUSTOM_TRADE +``` + +--- + +# The InteractionClick Object + +When your behavior executes, you receive an `InteractionClick` object. + +It provides: + +- `getPlayer()` +- `getShop()` +- `getLocation()` +- `isSneaking()` +- `isSign()` +- `isShopBlock()` +- etc. + +This gives full context for safe execution. + +--- + +# Advanced: Overriding Built-in Behavior + +If you register a behavior using the same key as an existing one, your behavior can override the default. + +⚠️ Be careful when doing this — you are replacing core functionality. + +--- + +# Best Practices + +### Always Use Unique Keys + +Avoid naming collisions: + +``` +MYPLUGIN_CUSTOM_BEHAVIOR +``` + +### Keep Behavior Lightweight + +Do not block the main thread with: + +- Heavy database calls +- File IO +- Network calls + +Use async tasks if needed. + +### Respect Permissions + +Always validate: + +```java +if (!player.hasPermission("myplugin.use")) { + return; +} +``` + +### Avoid Hard Overrides Unless Necessary + +Instead of replacing built-in behaviors, consider extending them. + +--- + +# Example: Full Minimal Implementation + +```java +public class ExampleAddon { + + public void register(QuickShopAPI api) { + + InteractionManager manager = api.getInteractionManager(); + + manager.behavior(new MyTradeBehavior()); + manager.interaction(new MyCustomInteraction()); + } +} +``` + +--- + +# Conclusion + +The Interaction System is designed to allow: + +- Full extensibility +- Clean separation of triggers and actions +- Easy integration for third-party developers + +By retrieving the `InteractionManager`: + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +You gain full control over how shops respond to player actions. \ No newline at end of file diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/development/08-tax-manager.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/development/08-tax-manager.md new file mode 100644 index 0000000000..72a56f9e88 --- /dev/null +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/development/08-tax-manager.md @@ -0,0 +1,266 @@ +# Tax System (Developer Guide) + +The QuickShop tax system allows server owners and developers to define how transaction taxes are calculated, distributed, and extended. + +As of 6.2.0.11, the tax system has been fully rewritten to provide: + +- A flexible TaxManager +- Pluggable TaxProvider support +- Progressive taxation +- Tax targeting (shop owner, interacting player, or both) +- Custom extension capability for third-party addons + +This guide explains how to work with the tax system programmatically. + +--- + +# Overview + +The tax system is composed of three core components: + +TaxManager +Responsible for coordinating tax calculation and execution. + +TaxProvider +Defines how tax values are calculated. + +TaxRates +Represents calculated tax results for a transaction. + +The system is designed to allow custom providers to be registered and used without modifying core logic. + +--- + +# Getting the TaxManager + +To work with the tax system, retrieve the TaxManager from the ShopManager. + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +Once obtained, you can: + +- Access current tax configuration +- Register custom tax providers +- Calculate tax values +- Hook into tax events + +--- + +# How the Tax System Works + +During a shop transaction: + +1. A base price is determined. +2. The TaxManager selects the active TaxProvider. +3. The TaxProvider calculates applicable tax. +4. A TaxRates object is produced. +5. The system applies the tax to: + + - Shop owner + - Interacting player + - Or both (depending on configuration) + +This architecture allows tax behavior to be modified without altering transaction logic. + +--- + +# TaxProvider + +A TaxProvider defines how tax values are calculated. + +You may create your own provider to implement: + +- Progressive tax brackets +- Flat percentage tax +- Conditional tax rules +- Region-based tax +- Rank-based tax +- Time-based tax + +Example minimal provider: + +```java +public class MyCustomTaxProvider implements TaxProvider { + + @Override + public TaxRates calculateTax(TaxContext context) { + + double basePrice = context.getPrice(); + + double taxAmount = basePrice * 0.05; // 5% flat tax + + return new TaxRates() + .ownerTax(taxAmount) + .buyerTax(0.0); + } +} +``` + +Then register it: + +```java +taxManager.provider(new MyCustomTaxProvider()); +``` + +Once registered, your provider will be used for tax calculations. + +--- + +# TaxRates + +TaxRates represents the result of a tax calculation. + +It typically contains: + +- Owner tax amount +- Buyer tax amount +- Total tax impact +- Metadata (if applicable) + +The transaction system will read from TaxRates and apply deductions accordingly. + +--- + +# Progressive Taxation + +The built-in system supports progressive tax structures. + +This allows server administrators to tax based on: + +- Player balance +- Shop owner balance +- Configured tax brackets + +Example configuration concept: + +- 0–10,000 balance → 1% tax +- 10,000–100,000 → 2% tax +- 100,000+ → 3% tax + +Developers can extend or override this logic inside a custom TaxProvider. + +--- + +# Targeting Tax + +The new tax system allows taxes to be applied to: + +- Shop owner +- Interacting player +- Both + +This is controlled via configuration, but custom providers can override distribution logic by adjusting TaxRates output. + +Example: + +```java +return new TaxRates() + .ownerTax(basePrice * 0.02) + .buyerTax(basePrice * 0.01); +``` + +--- + +# Registering a Custom TaxProvider + +To replace or extend tax logic: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); + +taxManager.provider(new MyCustomTaxProvider()); +``` + +You may register only one primary provider at a time. If multiple providers are needed, implement internal delegation within your custom provider. + +--- + +# Tax Events + +The tax system integrates with the event system. + +The modern event used is: + +ShopEnhancedTaxEvent + +This replaces legacy tax events and provides improved context, including: + +- Transaction builder reference +- TaxRates object +- Modification capability before final execution + +You can listen for the event and modify tax behavior dynamically: + +```java +@EventHandler +public void onTax(ShopEnhancedTaxEvent event) { + + TaxRates rates = event.getTaxRates(); + + // Example: Give VIP players reduced owner tax + if (event.getOwner().hasPermission("vip.tax.discount")) { + rates.ownerTax(rates.getOwnerTax() * 0.5); + } +} +``` + +--- + +# Best Practices + +Always keep tax calculations lightweight. + +Avoid: + +- Heavy database queries inside calculateTax +- Blocking network calls +- Long-running computations + +If complex logic is required, pre-cache required data outside the tax execution path. + +Ensure negative tax values are not returned unless intentional. + +Always validate final amounts before applying modifications. + +Respect configuration hierarchy unless intentionally overriding it. + +--- + +# Example Full Implementation + +```java +public class ExampleTaxAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + TaxManager taxManager = manager.taxManager(); + + taxManager.provider(new MyCustomTaxProvider()); + } +} +``` + +--- + +# Conclusion + +The new tax system is designed for: + +- Flexibility +- Extensibility +- Clean separation of concerns +- Future expansion + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +You gain full control over how QuickShop calculates and applies tax during transactions. \ No newline at end of file diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/development/09-layout-provider.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/development/09-layout-provider.md new file mode 100644 index 0000000000..55e3cd3e91 --- /dev/null +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/development/09-layout-provider.md @@ -0,0 +1,275 @@ +# Shop Layout Provider (Developer Guide) + +The Shop Layout Provider system allows developers to customize how shop signs are structured and rendered. + +As of 6.2.0.11, shop layouts are no longer hardcoded. Instead, they are controlled through the `IShopLayoutProvider` interface, which allows: + +- Custom sign line ordering +- Per-shop-type layouts (BUYING, SELLING, FROZEN, or custom types) +- Dynamic layout resolution +- Complete replacement of the default layout system + +This guide explains how to access, override, and implement a custom layout provider. + +--- + +# Overview + +The layout provider controls how shop sign lines are arranged. + +Instead of hardcoding: + +Line 1 → Header +Line 2 → Trading info +Line 3 → Item +Line 4 → Price + +The system now allows full customization through: + +- Config-based layout definitions +- Custom `IShopLayoutProvider` implementations +- Runtime overrides + +The default implementation is `SimpleShopLayoutProvider`. + +--- + +# Accessing the Layout Provider + +To retrieve the current layout provider: + +```java +ShopManager manager = api.getShopManager(); +IShopLayoutProvider provider = manager.shopLayoutProvider(); +``` + +To replace the layout provider with a custom one: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Once replaced, your implementation will control how shop layouts are generated. + +--- + +# Understanding IShopLayoutProvider + +`IShopLayoutProvider` defines how layout data is retrieved and resolved. + +It is responsible for: + +- Providing layout configuration per shop type +- Determining which layout to use +- Supplying formatted line keys +- Allowing future extensibility + +The default implementation reads layout definitions from configuration and applies them based on shop type. + +--- + +# Default Layout Example + +The default configuration-based layout looks like this: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +Each line maps to a layout component key. + +An empty string (`""`) leaves that line blank. + +The layout provider resolves these keys into actual sign content. + +--- + +# Creating a Custom Layout Provider + +To override the default behavior, implement `IShopLayoutProvider`. + +Example minimal implementation: + +```java +public class MyCustomLayoutProvider implements IShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + + ShopLayout layout = new ShopLayout(); + + layout.setLine(1, "Custom Header"); + layout.setLine(2, "Owner: " + shop.getOwnerName()); + layout.setLine(3, shop.getItem().getType().name()); + layout.setLine(4, "$" + shop.getPrice()); + + return layout; + } +} +``` + +Then register it: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Your layout will now control all shop sign formatting. + +--- + +# Per-Type Layout Control + +Because the system no longer depends on the legacy ShopType enum, layouts can support: + +- Built-in types (BUYING, SELLING, FROZEN) +- Custom shop types +- Addon-defined shop types + +Your provider can determine layout logic dynamically: + +```java +@Override +public ShopLayout provideLayout(Shop shop) { + + if (shop.getShopType().key().equals("FROZEN")) { + return frozenLayout(shop); + } + + return defaultLayout(shop); +} +``` + +This allows conditional formatting, localization adjustments, or special event styling. + +--- + +# Advanced Customization + +A custom layout provider can: + +- Pull data from external plugins +- Inject dynamic placeholders +- Modify layout per player +- Apply formatting logic +- Override color schemes +- Apply region-based formatting +- Implement animated sign systems + +Because the layout provider is resolved at runtime, you can compute layouts dynamically instead of reading static config. + +--- + +# Replacing vs Extending the Default Provider + +You have two options: + +Replace entirely: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Or extend the default implementation: + +```java +public class ExtendedLayoutProvider extends SimpleShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + ShopLayout base = super.provideLayout(shop); + + base.setLine(1, "[Extended] " + base.getLine(1)); + + return base; + } +} +``` + +Extending is safer if you only want to modify small portions. + +--- + +# Best Practices + +Keep layout generation lightweight. + +Avoid: + +- Heavy database queries +- Blocking IO +- Complex network calls + +Layout generation runs during shop updates and sign refresh events. + +Always handle null values safely. + +Ensure layout line count does not exceed sign limits. + +Avoid hardcoding shop type names unless necessary. + +If your layout supports custom shop types, validate their keys properly. + +--- + +# Example Full Registration + +```java +public class LayoutAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + + manager.shopLayoutProvider(new MyCustomLayoutProvider()); + } +} +``` + +--- + +# Conclusion + +The Shop Layout Provider system allows complete control over shop sign structure. + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +``` + +And setting: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +You can redefine how every shop is displayed on the server. + +This system was designed to support: + +- Extensibility +- Custom shop types +- Localization +- Dynamic formatting +- Future expansion \ No newline at end of file diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/faq/compare-reremake.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/faq/compare-reremake.md index aaa1a9e507..6b39f02520 100644 --- a/i18n/af-ZA/docusaurus-plugin-content-docs/current/faq/compare-reremake.md +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/faq/compare-reremake.md @@ -64,7 +64,7 @@ If you are a Reremake user, you may be confused about the differences between Hi ## Which one should I use? Well, it depends on what your needs are.\ -If you have an old server (<1.20) instance, Reremake is your only choice.\ +If you have an old server ({'<'}1.20) instance, Reremake is your only choice.\ ~~If you are in China which has GFW interfere, you also should consider Reremake because it doesn't need to load libraries from Global Internet.~~ Solved in 6.0.0.0. If none of these applies, give Hikari a try! diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md index 551f579e7c..172be3a69b 100644 --- a/i18n/af-ZA/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md @@ -1,8 +1,8 @@ # Where Addons/Compacts is -Addons and Compatilibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. +Addons and Compatibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. -- Open Modrinth versions page, locate the version your're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) +- Open Modrinth versions page, locate the version you're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) - Frantically slide your mouse wheel down until the lowest end of the page. - You get it! diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/internal/database-schema.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/internal/database-schema.md index fea685e4fc..45e04adb56 100644 --- a/i18n/af-ZA/docusaurus-plugin-content-docs/current/internal/database-schema.md +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/internal/database-schema.md @@ -4,17 +4,17 @@ This chapter will explain the implementation details of QuickShop Hikari's datab ## Tables -This section explains the database tables created by QuickShop-Hikari.\ -Unless otherwise specified, the initial `qs_` in table name is the table prefix.\ +This section explains the database tables created by QuickShop-Hikari. +Unless otherwise specified, the initial `qs_` in table name is the table prefix. For the latest code definition for each table, see: [DataTables.java](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/hikari/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/database/DataTables.java) ### `data` -This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information.\ -No matter what, a data record should not be modified after it is created, until it got deleted.\ +This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information. +No matter what, a data record should not be modified after it is created, until it got deleted. Any new changes to the shop should create a new copy, apply the changes to the copy, and insert it as a new record. -Basiclly, Copy-on-write. +Basically, Copy-on-write. A data record only be deleted from the database when no any table references their `data_id`. @@ -29,7 +29,7 @@ A data record only be deleted from the database when no any table references the | unlimited | BIT NOT NULL | 0 | Indicates whether this store is an unlimited store, 0=Limited, 1=Unlimited | | hologram | BIT NOT NULL | 0 | Indicates the suspension status of this store's display item, 0=Follow global settings, 1=Disabled | | tax_account | VARCHAR(36) | NULL | The uuid for tax account, If it is not NULL, tax will be paid to the specified account | -| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serilized to JSON string | +| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serialized to JSON string | | extra | LONGTEXT | Empty Yaml | Used to store experimental settings of QuickShop Hikari or persistent data of other plugins | | inv_wrapper | VARCHAR(255) NOT NULL | N/A | Unique identifier for InventoryWrapper for this shop data entry | | inv_symbol_link | TEXT NOT NULL | N/A | Unique Inventory symbol used to pass to InventoryWrapper, for locating inventory | @@ -38,7 +38,7 @@ A data record only be deleted from the database when no any table references the ### `shops` -This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes.\ +This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes. Multiple `shop_id` can correspond to the same `data_id`. | Column Name | DataType | Default | Description | diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/cmd-alias.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/cmd-alias.md index 53f1577685..e6ed381c0d 100644 --- a/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/cmd-alias.md +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/cmd-alias.md @@ -23,7 +23,7 @@ custom-commands: - cshop ``` -Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect.\ +Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect. The effect should be like this: ![command-alias](./img/command-alias.png) diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/datasource.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/datasource.md index 6fc1bd8931..3fd3a8bdee 100644 --- a/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/datasource.md +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/datasource.md @@ -48,7 +48,7 @@ Execute the `/quickshop export` command in console, quickshop will export a zip ![exported data](img/database-export.png) -Stop your database, switch the datasource, and start the server.\ +Stop your database, switch the datasource, and start the server. You may noticed all shops are gone, because new datasources had no data inside, we will restore them from export. Rename that exported ZIP file to `recovery.zip`, execute `/quickshop recovery` and restart your server, all shops should back. diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/itemmatcher.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/itemmatcher.md index 56be243019..922907be27 100644 --- a/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/itemmatcher.md +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/itemmatcher.md @@ -4,7 +4,7 @@ ItemMatcher is a utility used by QuickShop-Hikari to compare the items, it is th :::caution -If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse.\ +If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse. **TL;DR: Keep default unless you know what you're doing.** ::: @@ -26,10 +26,10 @@ matcher: work-type: 1 ``` -By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility.\ +By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility. But still, you can toggle to QuickShop Item Matcher if you need to customize the comparing or running QuickShop on the server jar which have bug affect the Bukkit comparing system. -## Customize the metadata compareing +## Customize the metadata comparing Customize only works under QuickShop Item Matcher. diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md index fc2af69d2b..d04e8f2783 100644 --- a/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md @@ -4,7 +4,7 @@ ItemStack Loader is a workaround for loading the Bukkit ItemStack. :::caution -Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossble. +Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossible. ::: diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/localization.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/localization.md index e9121e1a36..d47589ab9a 100644 --- a/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/localization.md +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/localization.md @@ -10,7 +10,7 @@ To help translate QuickShop-Hikari, please visit our [Crowdin Homepage](https:// ## Crowdin OTA -QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will overrided when you reload QuickShop-Hikari or restart your server. +QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will override when you reload QuickShop-Hikari or restart your server. Your installation will keep translations up-to-date without any touch. @@ -110,6 +110,16 @@ To disable the CrowdinOTA, please add it in the startup flag: -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager.enableCrowdinOTA=false ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +use-crowdin-ota: false +``` + ### Self-Hosted OTA Server If you self-hosted our translation server by using [CrowdinCopyDeploy](https://github.com/Ghost-chu/CrowdinCopyDeploy) tool, you're able to change the OTA server to yourself server. @@ -118,4 +128,12 @@ If you self-hosted our translation server by using [CrowdinCopyDeploy](https://g -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager= ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml +Use + +```yaml +crowdin-host: +``` \ No newline at end of file diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/shops/benefit.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/shops/benefit.md index 4d7a9c8f42..c59d92e6d1 100644 --- a/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/shops/benefit.md +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/shops/benefit.md @@ -37,3 +37,13 @@ By default, for security, QuickShop-Hikari disallow add offline players into sho ```bash -Dcom.ghostchu.quickshop.command.subcommand.SubCommand_Benefit.allowOffline=true ``` + +### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +shop.allow-offline-benefit: true +``` \ No newline at end of file diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/shops/control-panel b/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/shops/control-panel new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/shops/control-panel @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/shops/history.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/shops/history.md index fa891adeab..195b64a042 100644 --- a/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/shops/history.md +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/shops/history.md @@ -24,7 +24,7 @@ The History GUI displays the details of each recorded transaction and other usef ### Transaction details -When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed.\ +When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed. If you are checking the history of more than one store, the player head will be replaced with an item from the corresponding store. ![history-gui](./img/history-gui.png) diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md new file mode 100644 index 0000000000..c5ed3b3fe4 --- /dev/null +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md @@ -0,0 +1,90 @@ +# Shop Types + +QuickShop supports multiple shop types, allowing shops to behave differently depending on their mode. + +The built-in shop types are: + +- Selling +- Buying +- Frozen + +Each type changes how the shop interacts with players. + +--- + +## Selling Shop + +A Selling shop allows players to: + +- Buy items from the shop owner +- Pay money to receive items + +This is the most common shop type. + +--- + +## Buying Shop + +A Buying shop allows players to: + +- Sell items to the shop owner +- Receive money in exchange + +This is commonly used for: + +- Resource collection +- Server buy-back shops +- Automated material sinks + +--- + +## Frozen Shop + +A Frozen shop temporarily disables trading. + +While frozen: + +- No buying is allowed +- No selling is allowed +- The shop remains intact +- Staff or admins can manage it + +This is useful for: + +- Temporary suspensions +- Investigation +- Event locking +- Maintenance + +--- + +## Switching Shop Types + +Shop types can be changed through: + +- Control panel +- GUI control panel +- Admin commands + +Frozen mode is also available via: + +/qs freeze + +--- + +## Custom Shop Types + +As of 6.2.x, the system supports extensible shop types internally. + +While server owners use the built-in types, the system now allows future expansion through addons. + +--- + +## Summary + +Shop types allow you to: + +- Control how money flows +- Enable buy-back mechanics +- Temporarily disable shops +- Build advanced economic systems \ No newline at end of file diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md new file mode 100644 index 0000000000..18e0a47407 --- /dev/null +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md @@ -0,0 +1,217 @@ +# Sign Layout + +QuickShop allows you to fully customize how shop signs are structured. + +You can change: + +- What appears on each line +- The order of information +- Layout per shop type +- Whether certain lines are blank + +This gives you complete control over how shops look on your server. + +--- + +## How Sign Layout Works + +Shop signs have four lines. + +Instead of being hardcoded, QuickShop uses a configurable layout system. + +Each shop type can have its own layout: + +- SELLING +- BUYING +- FROZEN + +You define what each line displays using layout keys. + +--- + +## Configuration Location + +Sign layout is configured in `config.yml` under: + +```yaml +layout: +``` + +Example default configuration: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## Available Layout Keys + +Each line value refers to a built-in layout component. + +Common layout keys include: + +- `header` – The shop header line +- `trading` – Buy/Sell direction information +- `item` – Item name +- `price` – Shop price + +These keys are automatically formatted using your language file and formatting settings. + +--- + +## Leaving a Line Blank + +To leave a line empty, use: + +```yaml +line2: "" +``` + +This is useful if you want: + +- Minimalist signs +- Cleaner layouts +- Custom spacing +- Decorative formatting + +--- + +## Customizing Per Shop Type + +Each shop type can have a different layout. + +For example: + +```yaml +layout: + + SELLING: + line1: "header" + line2: "item" + line3: "price" + line4: "" + + BUYING: + line1: "header" + line2: "price" + line3: "item" + line4: "" + + FROZEN: + line1: "header" + line2: "" + line3: "item" + line4: "Frozen" +``` + +This allows you to visually differentiate: + +- Selling shops +- Buying shops +- Frozen shops + +--- + +## Practical Examples + +### Minimal Style + +```yaml +layout: + SELLING: + line1: "item" + line2: "price" + line3: "" + line4: "" +``` + +### Compact Economy Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "price" + line3: "item" + line4: "" +``` + +### Large Clear Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## How Updates Affect Layout + +When you change the layout: + +- Existing shop signs will update automatically when refreshed. +- New shops will use the updated format immediately. + +If needed, you can reload QuickShop to apply changes. + +--- + +## Best Practices + +- Keep important information visible (price and item). +- Avoid overly complex formatting. +- Test layout changes before deploying on large servers. +- Use different layouts for BUYING and SELLING to reduce confusion. + +--- + +## Common Questions + +### Can I add more than four lines? + +No. +Minecraft signs are limited to four lines. + +### Can I add colors? + +Colors are controlled by your language file and formatting settings. + +### Can I change layout without restarting? + +Yes, but reloading or refreshing shops is recommended to ensure full update. + +--- + +## Summary + +The Sign Layout system allows you to: + +- Fully customize shop sign appearance +- Create per-type layouts +- Simplify or expand shop information +- Improve clarity for players + +All layout customization is handled inside `config.yml`. diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md index abcc288db7..2a0d52d788 100644 --- a/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md @@ -8,19 +8,6 @@ This feature added in 6.0.0.0. By default, QuickShop-Hikari uses the default brand material from the configuration file, but you can modify it to other brands for your store with the command. -## Configuration - -```yaml - #The wall sign material. - #ACACIA_WALL_SIGN - #BIRCH_WALL_SIGN - #DARK_OAK_WALL_SIGN - #JUNGLE_WALL_SIGN - #OAK_WALL_SIGN - #SPRUCE_WALL_SIGN - sign-material: OAK_WALL_SIGN -``` - ## Change the material Use command `/quickshop sign ` to change your shop sign material. diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md new file mode 100644 index 0000000000..980bad10f2 --- /dev/null +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md @@ -0,0 +1,130 @@ +# Shop Sign Waxing + +QuickShop can automatically wax shop signs to prevent players from editing them manually. + +Waxing protects the integrity of your shop signs and helps prevent tampering, spoofing, and accidental modification. + +As of modern Minecraft versions, waxed signs cannot be edited unless they are unwaxed first. + +--- + +## What Is Sign Waxing? + +In Minecraft, waxing a sign locks it so that: + +- Players cannot edit the text +- Players cannot modify lines +- Accidental changes are prevented +- Malicious edits are blocked + +When enabled in QuickShop, shop signs are automatically waxed when created. + +--- + +## Why Use It? + +Sign waxing protects against: + +- Players editing price lines +- Changing item names on signs +- Spoofing shop information +- Accidental formatting issues +- Sign hijacking attempts + +On public servers, this feature is strongly recommended. + +--- + +## How It Works + +When a shop is created: + +1. QuickShop generates the shop sign. +2. The sign text is written. +3. The sign is automatically waxed (if enabled). + +If a shop is updated: + +- The sign will be safely updated by QuickShop. +- The wax state is maintained. + +Players cannot manually edit shop signs while waxing is enabled. + +--- + +## Configuration + +To enable or disable sign waxing, edit `config.yml`: + +```yaml +shop: + sign-wax: true +``` + +### true + +- Shop signs are automatically waxed. +- Players cannot edit the sign manually. + +### false + +- Shop signs behave like normal Minecraft signs. +- Players may edit them if permitted by the game. + +--- + +## Recommended Setting + +For most servers: + +```yaml +shop: + sign-wax: true +``` + +This ensures shop data stays accurate and secure. + +--- + +## Common Questions + +### Can admins still modify shop signs? + +QuickShop controls shop sign formatting. +Manual edits are not recommended. + +Admins should use: + +- Control panel +- Shop commands +- Direct configuration changes + +### Does waxing affect shop functionality? + +No. +Waxing only prevents manual text edits. +The shop continues to function normally. + +### Can players un-wax shop signs? + +No. +QuickShop manages the sign state automatically. + +--- + +## Best Practices + +- Keep sign-wax enabled on survival servers. +- Combine sign-wax with proper permissions. +- Avoid manually editing shop signs through other plugins. + +--- + +## Summary + +Sign Waxing: + +- Prevents tampering +- Requires no additional setup + +Enable it once and QuickShop handles the rest. \ No newline at end of file diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/shops/taxes.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/shops/taxes.md new file mode 100644 index 0000000000..1a273fd978 --- /dev/null +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/shops/taxes.md @@ -0,0 +1,92 @@ +# Taxation System + +QuickShop includes a taxation system designed to give server owners more flexibility and control over shop-based income. + +This system was revamped as of 6.2.0.11+ + +The new system allows you to: + +- Apply tax to shop owners +- Apply tax to buyers +- Apply tax to both +- Use progressive tax brackets +- Customize tax behavior in configuration + +This system replaces the legacy tax configuration. + +--- + +## How It Works + +During a transaction: + +1. The shop price is calculated. +2. Tax is calculated based on your configuration. +3. Tax is deducted from the configured target(s). +4. Remaining funds are distributed normally. + +You can configure: + +- Flat percentage tax +- Progressive tax based on player balance +- Tax accounts +- Distribution rules + +--- + +## Progressive Tax + +The new system allows you to tax based on balance brackets. + +Example concept: + +- 0 – 10,000 balance → 1% tax +- 10,000 – 100,000 → 2% tax +- 100,000+ → 3% tax + +This helps prevent extremely wealthy players from dominating the economy. + +--- + +## Who Pays the Tax? + +You can configure whether tax applies to: + +- The shop owner +- The buyer +- Both + +This gives you flexibility depending on your economy design. + +--- + +## Configuration + +All tax-related settings are located under the `shop-tax` section in `config.yml`. + +After updating to 6.2.0.11+, review your tax configuration carefully, as the old tax system has been replaced. + +--- + +## Why Use Tax? + +The taxation system can help: + +- Remove currency from circulation +- Fund server banks or towns +- Create sink mechanics +- Balance inflation +- Reward active players + +--- + +## Summary + +The new taxation system is: + +- Flexible +- Configurable +- Balance-aware +- Designed for modern economy servers + +Make sure to review your configuration after upgrading. \ No newline at end of file diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md new file mode 100644 index 0000000000..247c24712d --- /dev/null +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md @@ -0,0 +1,161 @@ +# WorldEdit & FAWE Support + +QuickShop includes built-in protection and integration for WorldEdit and FastAsyncWorldEdit (FAWE). + +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. + +You do not need to download or install any additional compatibility plugins. + +--- + +## What This Does + +WorldEdit and FAWE allow administrators and builders to: + +- Copy and paste regions +- Replace large areas of blocks +- Mass-delete regions +- Roll back areas +- Regenerate terrain + +Without protection, these operations could: + +- Create ghost shops +- Leave orphaned shop data in the database +- Duplicate shops unintentionally +- Delete containers without cleaning up shop data +- Cause inconsistencies between world and database + +QuickShop now automatically detects and safely processes WorldEdit and FAWE operations. + +--- + +## Built-In Behavior + +When WorldEdit or FAWE modifies blocks: + +- Shops removed via WorldEdit are properly deleted from the database. +- Shop data stays synchronized with world changes. +- Ghost shops are prevented. +- Mass block replacements will not leave broken shop entries behind. + +This applies to: + +- //set +- //replace +- //cut +- //paste +- //regen +- Region deletion +- Mass container removal + +No configuration is required. + +--- + +## FAWE Support + +FastAsyncWorldEdit (FAWE) is fully supported. + +Because FAWE processes edits asynchronously, QuickShop handles: + +- Region-thread safe processing +- Async block updates +- Safe shop deletion during batch edits + +You do not need to enable anything manually. + +--- + +## Removing Shops with WorldEdit + +If you delete containers (chests, barrels, etc.) using WorldEdit: + +QuickShop will automatically: + +- Detect the block removal +- Unregister the shop +- Clean the database entry +- Prevent ghost shops + +You do not need to run `/qs cleanghost` after WorldEdit usage in normal circumstances. + +--- + +## Copying and Pasting Shops + +If you copy and paste regions that contain shops: + +- Shop data will not duplicate incorrectly. +- Shop IDs remain consistent. +- Invalid pasted shops will not auto-register unless properly created. + +This prevents accidental duplication exploits. + +--- + +## Performance + +WorldEdit and FAWE operations can modify thousands of blocks at once. + +QuickShop processes these safely and efficiently: + +- Batch-aware cleanup +- Thread-safe region access (especially on Folia) +- Minimal performance impact during mass edits + +--- + +## Configuration + +There are no specific WorldEdit configuration options in QuickShop. + +Support is automatic and always enabled if WorldEdit or FAWE is detected. + +If WorldEdit is not installed, no extra code is executed. + +--- + +## Common Questions + +### Do I need the old WorldEdit compatibility jar? + +No. + +As of 6.2.0.11, WorldEdit support is built-in and the separate compatibility module has been removed. + +### Does this work with FAWE? + +Yes. FAWE is fully supported. + +### Will shops break if I use //set air? + +No. Shops will be safely removed and cleaned up. + +### Do I need to restart after installing WorldEdit? + +No. QuickShop detects WorldEdit automatically on startup. + +--- + +## Best Practices + +Even though QuickShop safely handles WorldEdit operations, it is recommended to: + +- Avoid copying shops intentionally unless required +- Use backups before large region edits +- Test large FAWE operations on staging servers when possible + +--- + +## Summary + +QuickShop’s built-in WorldEdit and FAWE integration ensures: + +- Safe mass edits +- No ghost shops +- Automatic database cleanup +- Thread-safe processing +- No extra modules required + +WorldEdit support is now a core feature of QuickShop. \ No newline at end of file diff --git a/i18n/af-ZA/docusaurus-plugin-content-docs/current/setup/install.md b/i18n/af-ZA/docusaurus-plugin-content-docs/current/setup/install.md index fd02cfa1cc..2fc7851f3b 100644 --- a/i18n/af-ZA/docusaurus-plugin-content-docs/current/setup/install.md +++ b/i18n/af-ZA/docusaurus-plugin-content-docs/current/setup/install.md @@ -1,13 +1,14 @@ # Installation -This page will walk you through the process of installing QuickShop-Hikari on your Spigot server. +This page will walk you through the process of installing QuickShop-Hikari on your PaperMC server. ## Requirements -- A [Spigot][spigot]-based Minecraft server (1.20 or higher, Java 21) - - You can also use [Paper][paper], which is a fork of Spigot for better compatibility, more features and higher performance. +- A [Paper][paper]-based Minecraft server (1.20 or higher, Java 21) - [Vault][vault] for bridging the economy system between QuickShop and your economy plugins. -- [ProtocolLib][plib] for virtual display item, Per-player localization. +- For virtual item displays, and per-player localization you need a supported protocol library: + - [ProtocolLib][plib] + - [PacketEvents][https://www.spigotmc.org/resources/packetevents-api.80279/] - Any Vault compatible economy plugin, such as [XConomy][xconomy], If you have [EssentialsX][essx], it will also works well. - A permission management plugin like [LuckPerms][luckperm]. @@ -15,13 +16,17 @@ In this document, we assume that you are using the latest version of QuickShop-H ## Installing dependencies -Before installing QuickShop-Hikari, you should make sure that you have all dependencies installed, including [Vault][vault], [ProtocolLib][plib], [XConomy][xconomy] (or [EssentialsX][essx] if you want) and [LuckPerms][luckperm]! +Before installing QuickShop-Hikari, you should make sure that you have all dependencies installed, including [Vault][vault], [ProtocolLib][plib] or \[PacketEvents]\[https\://www\.spigotmc.org/resources/packetevents-api.80279/], [XConomy][xconomy] (or [EssentialsX][essx] if you want) and [LuckPerms][luckperm]! Download the plugins and drop them into `plugins` folder and you're all set! +## Configuring the Display Protocol + +If you have both ProtocolLib and PacketEvents, and you want to utilize PacketEvents for your display items, you'll need to set it as such in config.yml: `shop. display-protocol: 'packetevents'` + ## Installing QuickShop-Hikari -Download the latest version of QuickShop-Hikari from [Modrinth][qs-modrinth], if you find multiple files that have `Compat-` prefix in file name, ignore them in this step.\ +Download the latest version of QuickShop-Hikari from [Modrinth][qs-modrinth], if you find multiple files that have `Compat-` prefix in file name, ignore them in this step. The only file you need to download should have a **Primary** tag like this in the image below: ![download primary file](./img/download-primary.png) @@ -52,12 +57,11 @@ For advanced permission setup, you can check [here](./permissions.md). Now QuickShop-Hikari is running on your server, for more settings, check the navigation panel on the left and see different sections. -[spigot]: https://www.spigotmc.org/wiki/buildtools/ [paper]: https://papermc.io/ -[vault]: https://www.spigotmc.org/resources/34315/ -[xconomy]: https://www.spigotmc.org/resources/75669/ +[vault]: https://www.spigotmc.org/resources/vaultunlocked.117277/ +[xconomy]: https://www.spigotmc.org/resources/xconomy.75669/ [essx]: https://modrinth.com/plugin/essentialsx -[plib]: https://www.spigotmc.org/resources/1997 +[plib]: https://www.spigotmc.org/resources/protocollib.1997/ [luckperm]: https://luckperms.net/ [qs-modrinth]: https://modrinth.com/plugin/quickshop-hikari [dc]: https://discord.gg/Bu3dVtmsD3 diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/addon/limited.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/addon/limited.md index 70af27e240..fae55a8c95 100644 --- a/i18n/ar-SA/docusaurus-plugin-content-docs/current/addon/limited.md +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/addon/limited.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -41,8 +35,8 @@ Limit players to purchase up to 16 items per month. /quickshop limit period MONTH ``` -The system is based on the QuickShop-Hikari calendar system.\ -The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year.\ +The system is based on the QuickShop-Hikari calendar system. +The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year. Same for days, months and hours. Available time units: diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/addon/list.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/addon/list.md index 93d182f083..f20b91fd7b 100644 --- a/i18n/ar-SA/docusaurus-plugin-content-docs/current/addon/list.md +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/addon/list.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/addon/plan.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/addon/plan.md index 52a6e79cb4..c10ef4df42 100644 --- a/i18n/ar-SA/docusaurus-plugin-content-docs/current/addon/plan.md +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/addon/plan.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -18,7 +18,7 @@ Recorded data can be displayed from Hikari v2.0.0.0 onwards, but only after vers - All shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 1000 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `5` in server scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `5` in server scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Player Scope @@ -27,7 +27,7 @@ And still is Plan limitations, the list sorting is disturbed, so the display ord - All owned shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 50 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `4` in player scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `4` in player scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Showcase diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/addon/reforges.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/addon/reforges.md index 2a14509eb7..25fff1752a 100644 --- a/i18n/ar-SA/docusaurus-plugin-content-docs/current/addon/reforges.md +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/addon/reforges.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.0.0.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md index 304d39bc05..6f9f51d250 100644 --- a/i18n/ar-SA/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.1.1.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -44,7 +38,7 @@ _This is not necessary if you are using an H2 database._ ### Prepare for convert -To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console.\ +To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console. If a player is in the server, the conversion cannot be started. Once the conversion has begun, the server will be locked during the conversion process and no players will be able to join the server during the conversion. diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/addon/shopitemonly.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/addon/shopitemonly.md index c45062f8c2..1ccfe977b3 100644 --- a/i18n/ar-SA/docusaurus-plugin-content-docs/current/addon/shopitemonly.md +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/addon/shopitemonly.md @@ -2,17 +2,11 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT - -::: - -This addon prevents players from putting non-store items into store containers.\ +This addon prevents players from putting non-store items into store containers. Does not apply to stores that use the item inventory redirection API (aka. InventoryWrapper API). This Addon will check for container (or transferring) items on events such as the player closing the container or hopper access. diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md new file mode 100644 index 0000000000..9c8b4f7407 --- /dev/null +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md @@ -0,0 +1,55 @@ +# 6.2.0.10 + +## Major Changes + +- Added support for 1.21.6 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.7 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.8 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Some internal updates for packetevents(2.9.0 is now required.) +- Updated Lands support + +## Addon Changes + +- Added MatcherPlus Addon + - Allows support for BreweryX and AdvancedItems stacks in shops with improved matching abilities +- Added FabledSkyblock Compat +- Added Dominion Compat +- Added HuskTowns Compat +- Added IridiumSkyblock Compat +- Added member-create for member creation in ARM compat +- Added admin-override and quickshop.arm.admin permission for admin overrides in ARM + +## Minor Changes + +- Added configurations for the coordinates of the display item. +- Added /qs toggledisplayall on/off server/owned + - Players need to have permission node quickshop.toggledisplayall.admin to toggle all on the server. +- Added ability to use abbreviations in /qs price and /qs create commands such as 2.5k for 2500 +- Added ability to set default display status using shop.default-display in config.yml + +## Fixes + +- Fixed issue with display item being sent to the moon on 1.21.5 +- Fixed issue where TRADE_UI interactions interfered with quick create. +- Fixed issue with displays on protocollib falling through the chest +- Fixed issue with signs on .9 and previous .10 snapshots on early versions +- Implemented some performance improvements for paper servers +- Fixed all outstanding issues with Folia usage.(thanks to RootB33R/SleazLee for contributions) + +## Possible 6.2.0.11 Features + +Here's an outline for some features that may arrive in 6.2.0.11: + +- Additional compats/addons that have been piling up. + - see: https://github.com/QuickShop-Community/QuickShop-Hikari/issues/1756 +- gradle?(interested to see compilation time uplifts) +- Update documentation +- Update configuration comments +- Update configuration system? + - auto updating? + - Allows removal of the update code +- Remove waste spigot modules? + - Any versions of 1.20 that can be discarded due to low use? +- Bug fixing, of course +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... \ No newline at end of file diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md new file mode 100644 index 0000000000..b41c88662a --- /dev/null +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md @@ -0,0 +1,173 @@ +## Outline + +- Update documentation +- Update configuration comments +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... + +# 6.2.0.11 + +## Major Changes + +- Removed Spigot Platform Modules, and stopped loading QS if Spigot is detected. This will mean that unless the protocol changes that we use for display items, QS won't need updated for each version. +- Revamped Economy Code Completely + - New classes for all economy-related systems + - Any economy-related or benefits-related events are incompatible with previous versions. +- Added sign layout customizations per-type allowing you to change how lines are configured, an empty string('') will leave an empty line for that line of the sign. + +``` + #The layout of signs for shops. + layout: + + #The layout of BUYING shops. + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of FROZEN shops. + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of SELLING shops. + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +- Add wildcard support for item blacklist patterns(thanks to bennycallanan) + - Added support for wildcard patterns in the item blacklist configuration, allowing users to block entire categories of items with simple patterns. + + - Features + - Wildcard patterns like \*_AXE and \*_SPAWN_EGG now work in blacklist configuration + - Supports \* for any characters and ? for single character matching + - Case-insensitive pattern matching +- Overhauled GUI system(thanks to Yusakidev) + - Implemented gui.yml configuration file for customizing the GUI. + - Implemented better filtering for qs browse + - Implement GUI system to be more stable, and less error prone. + - Added gui.yml for fully configurable GUI layouts and text + - Browse menu: search, sort (price/name/stock), and filter (all/buying/selling/in-stock) + - Staff menu: search functionality for player/staff selection + - Grouped item pages for better shop browsing + - Refactored all menu pages to use configurable display/lore +- Added worldedit compat to QS internally as it's widely used. +- Revamped the taxation system to be more flexible and easier to configure. + - introduced a new progressive tax system that allows you to tax based on the balance of players.(suggested by YuanYuanOwO) + - introduced the ability to tax the player interacting with the shop, the owner, or both + - all tax-related configurations have been moved under the shop-tax section of the config. this may require reconfiguration of your tax settings. + - added a new ShopEnhancedTaxEvent, deprecated the old ShopTaxEvent. + - Added a new TaxManager, and TaxProvider interfaces, this allows for custom tax providers to be added by addons/third-party developers. + +## Addons/Compats Changes + +- Added UltimateClaims compat +- Added SimpleClaimSystem compat +- Added Quests by Pika addon +- Added BetonQuest addon +- Added Pl3xMap addon +- MatcherPlus Compat Improvements + - Added support for CrazyCrates + - Added support for ExcellentCrates + - Added support for SilkSpawners. +- WorldGuard Compat Improvements(Thanks to golovin12) + - Added clear permission handling: + - Region owners and members automatically have permission to create and trade in their own regions. + - Other players must have the appropriate WorldGuard flags enabled (quickshophikari-create, quickshophikari-trade) to interact with shops. + - If a shop is located outside any region, default QuickShop behavior applies (no extra restrictions) +- Added colored markers based on shop state for bluemap(thanks to YusakiDev) +- Updated dynmap/towny addons to use the new ShopTypeEnhancedEvent instead of ShopTypeEvent. +- Removed worldedit compat, it's now included in the main plugin. +- Added support for global flags to the worldguard compat. + +## Internals/Developer APIs + +- Removed several deprecated methods and classes. +- Revamped the interaction manager. It is now more flexible and allows external additions + - This involves two classes InteractionBehavior and InteractionType. + - InteractionType details the type of interaction such as: STANDING_LEFT_CLICK_SIGN, STANDING_LEFT_CLICK_SHOP + - InteractionBehavior outlines a behavior for an InteractionType such as CONTROL_PANEL and TRADE_UI +- Added UserLimitCalculationEvent, which allows for custom limits to be applied to users. + - This is useful for limiting the number of shops a user can have, or adding on to the existing limits provided by the ranks system without needing to implement a new RankLimiter. +- Added a new ShopLayoutProvider interface, and default implementation. + - This allows for custom layouts to be used for shops, allowing for more customization. + - This also allows for developers to override the default layout provider and create their own implementation. +- How to make your own? + - Implement the classes you would like to then register with the InteractionManager: + - ```java + InteractionManager manager = QuickShop.getInstance().getInteractionManager(); + + manager.interaction(new MyTradeInteraction()); + manager.behavior(new MyTradeBehavior()); + ``` +- Replaced some Apache Commons calls that could be easily replaced with built-in java methods, reduces some calls by ~ 1100ms/method call +- Deprecated the ShopType enum, and the ShopTypeEvent. These are replaced with the new IShopType interface and implementing classes. + - The new event is ShopTypeEnhancedEvent. + - This allows for third-party addons to add their own shop types, and simplifies code checks for translations. +- Updated config system to use Boosted-yaml + - this allows for auto-updating of config files without complex update scripts + - this also allows for the config system to not be minecraft-dependent. +- Replaced logical PaperLib calls with native PaperAPI calls. + +## Minor Changes + +- Bump Java version up to 21 +- Added shop.display-allow-enchants to enable/disable enchantments for display items on shops. +- Added workaround for packetevents not supporting custom enchants on itemstacks for virtual display items. +- Using locale translations for shop-type in mode toggle icon(thanks to ExyiN) +- Bumped Residence version for the compat(thanks to YuanYuanOwO) +- add world whitelist support(thanks to wling-art) +- added /qs database save command, which saves all currently dirty-marked shops to the database. +- Split up interactions _SHOPBLOCK into _SHOPBLOCK and _CONTAINER. + - _SHOPBLOCK relates to shops, where _CONTAINER relates to shop-valid containers that are not currently shops. +- Added inventory as an option for command panel, this is useful for adding a secondary option for players to open a shop's inventory. +- Moved crowdin arguments from system properties to config.yml + - crowdin-host + - use-crowdin-ota + +## Fixes + +- Fixes issue with item price restrictions(thanks to maxcom1) +- Fixes issue with 1.20.x protocol lib displays(thanks to YuanYuanOwO) +- Fixes issue when no item is in hand for itemdebug(thanks to YuanYuanOwO) +- Fixes issue with dominion addon(thanks to YuanYuanOwO) +- Add a simple check to avoid this. If it is not own shop, reject limit request directly.(Thanks to YuanYuanOwO) +- Fix NPE by not setting tax for price in TransactionBuilder(thanks to maxcom1) +- Fixes /quickshop suggestprice to differentiate between buy/sell shops. (Thanks to MidSpike) +- PacketEvents ClassNotFoundException with ProtocolLib(thanks to wling-art) +- Reallocate block state access to region thread for shop creation(thanks to r00tbeerman) +- resolve SLF4J StaticLoggerBinder loading error(thanks to wling-art) +- sign hijacking issue by validating sign facing direction(thanks to wling-art) +- Performance improvements for QuickShop disabling to prevent potential freezes. +- Fixed issue with 1.20.4 packetevents virtual displays not staying put. +- Fixes critical issue in GriefPrevention compatibility plugin. +- Fixes issue with shop owner not getting money when benefits active. +- Fixes for lands addon on folia, Use regionThread for Folia compatibility(thanks to YusakiDev) +- Fixes for TRADE_DIRECT on stacking shops +- Fixes issue for protocollib 5.4.0 with undocumented packet changes. +- Fixes issue where item stacks could be used on creation above the max stack size. +- Fixes issue with BukkitAudiences-related crashes on 1.21.11. +- Fix issue with shop deletion when getting too impatient. +- Fix the permission check issue when a shop owned by a non-owner is transferred to someone else. (thanks to YuanYuanOwO) +- Fix ui with supertool (thanks to YuanYuanOwO) +- Fix issue with logs generating outside debug mode. +- Fix issue with /qs find. +- Fix configuration loading timing. +- Fix configuration loading/creation warning message language. +- Fix command description language key mismatch(thanks to wling-art) +- Fix qs clean command on folia(thanks to wling-art) +- Fix per-player-shop-sign on folia(thanks to wling-art) +- Fix potential recursive deadlock in virtual display packet sending(thanks to wling-art) +- Fix configuration loading/creation warning message language. +- Fix issue with /qs browse and ShopItemOnly addon not behaving properly together on folia. +- Fix issue with PLAN using outdated APIs. +- Fix issue with /qs clean on folia.(thanks to wling-art) +- Fix issue with /qs cleanghost on folia(thanks to wling-art) +- More thread safety fixes for shops on folia.(thanks to wling-art) +- Fix owner payment calculations with benefits(thanks to wling-art) \ No newline at end of file diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md index 8172f9b410..dcc3edc67d 100644 --- a/i18n/ar-SA/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md @@ -20,20 +20,20 @@ the ControlComponent object with a custom one that will replace the original dur ### Introduction of the Revamped Packet System 1. **About**: - - A modular and scalable system for managing packets related to virtual display items in Minecraft. - - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. + - A modular and scalable system for managing packets related to virtual display items in Minecraft. + - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. 2. **Custom Packet Factories**: - - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. - - Packet types: - - **Spawn Packet**: Spawns a virtual item entity at a specific location. - - **Metadata Packet**: Updates the visual properties of virtual items. - - **Velocity Packet**: Adds motion/velocity to entities (currently optional). - - **Destroy Packet**: Removes the entity from the client view. + - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. + - Packet types: + - **Spawn Packet**: Spawns a virtual item entity at a specific location. + - **Metadata Packet**: Updates the visual properties of virtual items. + - **Velocity Packet**: Adds motion/velocity to entities (currently optional). + - **Destroy Packet**: Removes the entity from the client view. 3. **Error Handling and Logging**: - - Enhanced debug logs to trace packet-related issues. - - Detailed error messages for missing factories or unregistered listeners. + - Enhanced debug logs to trace packet-related issues. + - Detailed error messages for missing factories or unregistered listeners. #### Improvements: diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md index 7775308722..c6e0948d19 100644 --- a/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md index f420997a9c..38587e3784 100644 --- a/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md index 5ed8182c9a..259c55f342 100644 --- a/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md index 924a37ac49..7fd4596a6a 100644 --- a/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,6 +10,6 @@ This is a BungeeCord plugin, you need install it within your BungeeCord's plugin ## How does it work? -BungeeCord Bridge plugins will register a `quickshop:bungee` channel for fowarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. +BungeeCord Bridge plugins will register a `quickshop:bungee` channel for forwarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. All forwarding is indicated by QuickShop-Hikari on the Spigot server and ends when it is not needed. diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md index 27d68956a8..20fbaf7a0c 100644 --- a/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,5 +10,5 @@ This compatibility module added [Chest Protect](https://www.spigotmc.org/resourc ## How does it work? -This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident.\ +This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident. It also prevents players from creating shops on ChestProtect protected containers. diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md index 220e26d8bb..e1757e7be9 100644 --- a/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/dominion.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/dominion.md new file mode 100644 index 0000000000..e1195278a8 --- /dev/null +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/dominion.md @@ -0,0 +1,138 @@ +# Dominion + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and Dominion. + +It ensures that shop creation and trading respect Dominion’s land and territory protection system. + +--- + +## What Does It Do? + +Dominion allows players or groups to claim land and define territory-based permissions. + +Without compatibility: + +- Players could create shops inside territories they do not control. +- Visitors might trade inside protected dominions. +- Dominion permission rules might not apply to shop interactions. + +The Dominion compat module ensures that: + +- Shop creation respects territory ownership. +- Shop trading follows Dominion permission settings. +- Protected land remains secure from unauthorized shop usage. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a Dominion-controlled area. +- Whether the player has permission within that territory. +- Whether Dominion rules allow shop interaction. + +If the action is not permitted by Dominion settings, QuickShop blocks it. + +If the location is outside any Dominion territory, default QuickShop behavior applies. + +--- + +## Territory Owner Control + +With this module enabled: + +- Territory owners can create and manage shops inside their dominion. +- Trusted members follow territory-based permissions. +- Outsiders are restricted unless explicitly allowed. +- Shop actions respect Dominion’s land rules automatically. + +This prevents unauthorized shop placement inside protected territories. + +--- + +## Installation + +1. Install Dominion. +2. Install the QuickShop Dominion compat module. +3. Restart your server. + +The module activates automatically if Dominion is detected. + +No manual configuration linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside dominions +whitelist-mode: false + +# Allow territory owners to override shop permissions +allow-owner-override: true +``` + +If Dominion is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For servers using Dominion: + +- Restrict shop creation to territory owners or trusted members. +- Prevent shop creation in wilderness if desired. +- Allow dominion owners to manage shop permissions. +- Review Dominion permission settings to align with shop behavior. + +This ensures protected territories remain secure and organized. + +--- + +## Common Questions + +### Can players create shops in someone else's dominion? + +Only if Dominion permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You may allow or restrict shops outside dominions. + +### What happens if Dominion is removed? + +QuickShop returns to normal behavior and stops checking Dominion territories. + +--- + +## Summary + +The Dominion compat module: + +- Enforces territory-based permissions +- Prevents unauthorized shop creation +- Protects claimed land from misuse +- Integrates seamlessly with Dominion + +It is recommended for servers running Dominion. \ No newline at end of file diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md index 743d3ae666..2ac9b10488 100644 --- a/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md new file mode 100644 index 0000000000..07ba4ada66 --- /dev/null +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md @@ -0,0 +1,133 @@ +# FabledSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and FabledSkyblock. + +It ensures that shop creation and trading properly respect island boundaries and island permissions. + +--- + +## What Does It Do? + +On Skyblock servers, players build and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Players might trade in areas they should not. +- Island protection rules might not apply to shops. + +The FabledSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members behave correctly with shops. +- Island visitors are restricted appropriately. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a FabledSkyblock island. +- Whether the player has permission on that island. +- Whether island settings allow the action. + +If the action is not permitted by island rules, QuickShop will deny it. + +--- + +## Island Ownership Rules + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow island permission settings. +- Visitors can only trade if island permissions allow it. +- Outside of islands, default QuickShop behavior applies. + +--- + +## Installation + +1. Install FabledSkyblock. +2. Install the QuickShop FabledSkyblock compat module. +3. Restart your server. + +The module activates automatically if FabledSkyblock is detected. + +No manual linking is required. + +--- + +## Configuration + +If the module provides configuration options, they will appear in its `config.yml`. + +Typical options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If FabledSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most Skyblock servers: + +- Allow shop creation only inside islands. +- Prevent trading in the void or wilderness. +- Let island owners control shop permissions. +- Use island rank systems to manage shop access. + +This helps maintain economic balance between islands. + +--- + +## Common Questions + +### Can players create shops in the void? + +Only if your configuration allows it. +Most servers disable shop creation outside islands. + +### Does this affect island war or PvP modes? + +No. +The module only checks island ownership and permissions for shop interactions. + +### What happens if FabledSkyblock is removed? + +QuickShop returns to normal behavior. + +--- + +## Summary + +The FabledSkyblock compat module: + +- Protects island economies +- Enforces island permission rules +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is strongly recommended for any server running FabledSkyblock. \ No newline at end of file diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md index 81b13d2c6b..32614d3019 100644 --- a/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md @@ -2,17 +2,17 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -GreifPrevention compatibility module added compaitibility with GF. +GreifPrevention compatibility module added compatibility with GF. ## How does it work This module allow QuickShop-Hikari check if player have permission to create or use QuickShop in specific region. -And delete shops when claim removed, untrusted, unclimed, expired, resized or subclaim created. +And delete shops when claim removed, untrusted, unclaimed, expired, resized or subclaim created. ## Configuration diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md new file mode 100644 index 0000000000..e71b34d462 --- /dev/null +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md @@ -0,0 +1,139 @@ +# HuskTowns + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and HuskTowns. + +It ensures that shop creation and trading respect town and claim permissions defined by HuskTowns. + +--- + +## What Does It Do? + +HuskTowns allows players to create towns and claim land. + +Without compatibility: + +- Players could create shops inside towns they do not belong to. +- Visitors might trade inside protected towns. +- Town permission rules might not apply to shop interactions. + +The HuskTowns compat module ensures that: + +- Shop creation respects town ownership. +- Trading follows town permission settings. +- Town members and visitors are handled correctly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a HuskTowns claim. +- Whether the player is a town member, trusted player, or outsider. +- Whether the town's permission settings allow the action. + +If the action is not permitted by town rules, QuickShop blocks it. + +Outside of town claims, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Town Owner Control + +With this module enabled: + +- Town owners can create and manage shops inside their town. +- Town members follow town-based permission settings. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect town claim protection. + +This prevents unauthorized shop placement and trading inside protected towns. + +--- + +## Installation + +1. Install HuskTowns. +2. Install the QuickShop HuskTowns compat module. +3. Restart your server. + +The module activates automatically if HuskTowns is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside towns +whitelist-mode: false + +# Allow town owners to override shop permissions +allow-owner-override: true +``` + +If HuskTowns is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For town-based survival servers: + +- Restrict shop creation to town members. +- Allow trading only where town permissions permit. +- Prevent shop creation in wilderness if desired. +- Enable owner override for better administrative control. + +This helps maintain town-based economic balance. + +--- + +## Common Questions + +### Can players create shops in another town? + +Only if that town's permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You can allow or restrict shops outside towns. + +### What happens if HuskTowns is removed? + +QuickShop returns to normal behavior and stops checking town permissions. + +--- + +## Summary + +The HuskTowns compat module: + +- Enforces town-based land permissions +- Protects towns from unauthorized shop usage +- Integrates smoothly with HuskTowns +- Requires minimal setup + +It is recommended for any server running HuskTowns. \ No newline at end of file diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md new file mode 100644 index 0000000000..3fa2995eb0 --- /dev/null +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md @@ -0,0 +1,139 @@ +# IridiumSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and IridiumSkyblock. + +It ensures that shop creation and trading respect island boundaries and island permission settings defined by IridiumSkyblock. + +--- + +## What Does It Do? + +IridiumSkyblock allows players to create and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Visitors might trade inside protected islands. +- Island protection rules might not apply correctly to shops. + +The IridiumSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members and visitors are handled properly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside an IridiumSkyblock island. +- Whether the player is the island owner, member, or visitor. +- Whether island permissions allow shop interaction. + +If the action is not permitted, QuickShop blocks it. + +Outside of islands, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Island Owner Permissions + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow the island's permission configuration. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect island protection rules. + +This prevents unauthorized shop usage inside protected islands. + +--- + +## Installation + +1. Install IridiumSkyblock. +2. Install the QuickShop IridiumSkyblock compat module. +3. Restart your server. + +The module activates automatically if IridiumSkyblock is detected. + +No additional setup is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If IridiumSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most IridiumSkyblock servers: + +- Restrict shop creation to island owners. +- Allow island members to trade if trusted. +- Prevent shop creation in the void or wilderness. +- Enable owner override for better management. + +This helps maintain balanced island economies. + +--- + +## Common Questions + +### Can players create shops outside their island? + +Only if your configuration allows it. + +Most Skyblock servers restrict shops to island areas. + +### Do island ranks affect shop permissions? + +Yes, if your island permissions are configured to control interaction rights. + +QuickShop follows island rules. + +### What happens if IridiumSkyblock is removed? + +QuickShop returns to normal behavior and stops checking island permissions. + +--- + +## Summary + +The IridiumSkyblock compat module: + +- Protects island economies +- Enforces island-based permissions +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is recommended for any server running IridiumSkyblock. diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md new file mode 100644 index 0000000000..3b4726cb9d --- /dev/null +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md @@ -0,0 +1,151 @@ +# ItemMatcherPlus + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +The ItemMatcherPlus module improves how QuickShop matches custom and plugin-modified items. + +It allows QuickShop to properly recognize and stack items created by other plugins that normally would not match using standard Bukkit item comparisons. + +This module is especially useful for servers that use: + +- Custom items +- Modified metadata +- NBT-based systems +- Advanced crate rewards +- Custom brewing systems +- Custom fishing rewards + +--- + +## What Does It Do? + +By default, Minecraft item matching checks: + +- Material type +- Basic metadata + +However, many plugins modify items with: + +- Custom NBT data +- Hidden tags +- Custom lore formats +- Unique identifiers + +Without enhanced matching: + +- Items may not stack +- Shops may refuse valid items +- Transactions may fail +- Buying/selling may not behave correctly + +ItemMatcherPlus improves compatibility and matching accuracy. + +--- + +## Supported Plugins + +ItemMatcherPlus includes built-in support for: + +- AdvancedItems +- BreweryX +- CrazyCrates +- ExcellentCrates +- PyroFishing +- SilkSpawners + +If any of these plugins are installed, QuickShop will automatically use enhanced matching logic. + +No additional configuration is required. + +--- + +## How It Works + +When a player trades with a shop: + +1. QuickShop checks the item. +2. If ItemMatcherPlus is enabled, it performs advanced matching. +3. Plugin-specific metadata is validated. +4. The item is confirmed as a match (or rejected safely). + +This allows: + +- Proper stacking of custom items +- Correct shop transactions +- Accurate buy/sell detection +- Reduced false mismatches + +--- + +## Installation + +1. Download the ItemMatcherPlus module. +2. Place the JAR into your `plugins` folder. +3. Restart your server. + +If supported plugins are detected, compatibility activates automatically. + +--- + +## Configuration + +ItemMatcherPlus does not require configuration. + +It activates automatically when: + +- The module is installed +- A supported plugin is detected + +If a supported plugin is not installed, no extra logic runs. + +--- + +## Why You Should Use It + +You should install ItemMatcherPlus if your server uses: + +- Custom fishing plugins +- Custom brewing systems +- Crate plugins with modified items +- Custom spawners +- Any plugin that modifies NBT data + +Without it, shops may not properly recognize custom items. + +--- + +## Common Questions + +### Do I need this if I don't use custom item plugins? + +No. +If you only use vanilla items, this module is not necessary. + +### Does this affect performance? + +The module only activates enhanced matching when needed. + +Normal item matching remains fast and efficient. + +### Will it break existing shops? + +No. +It improves compatibility and matching accuracy without modifying existing shop data. + +--- + +## Summary + +ItemMatcherPlus: + +- Improves item matching accuracy +- Adds support for major custom item plugins +- Prevents stacking and trade issues +- Requires no configuration +- Activates automatically + +If you run a heavily customized economy server, this module is highly recommended. \ No newline at end of file diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md index ba87606698..d4ae7d129a 100644 --- a/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/lands.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/lands.md index 06296f5779..7671fcdfe0 100644 --- a/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/lands.md +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/lands.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/openinv.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/openinv.md index c51f628615..4807d57873 100644 --- a/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/openinv.md +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/openinv.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md new file mode 100644 index 0000000000..c2136320b0 --- /dev/null +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md @@ -0,0 +1,138 @@ +# SimpleClaimSystem + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and SimpleClaimSystem. + +It ensures that shop creation and trading respect land ownership and claim permissions defined by SimpleClaimSystem. + +--- + +## What Does It Do? + +SimpleClaimSystem allows players to claim land and protect it from unauthorized interaction. + +Without compatibility: + +- Players could create shops inside claims they do not own. +- Visitors might trade inside protected areas. +- Claim protection might not apply correctly to shops. + +The SimpleClaimSystem compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops within their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a SimpleClaimSystem claim. +- Whether the player has permission within that claim. +- Whether claim rules allow shop interaction. + +If the action is not permitted by the claim, QuickShop blocks it. + +If the location is outside any claim, default QuickShop behavior applies. + +--- + +## Claim Owner Control + +With this module enabled: + +- Claim owners can create and manage shops inside their claim. +- Trusted players follow claim-based permissions. +- Visitors are restricted unless explicitly allowed. +- Claim protection rules apply automatically to shop interactions. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install SimpleClaimSystem. +2. Install the QuickShop SimpleClaimSystem compat module. +3. Restart your server. + +The module activates automatically if SimpleClaimSystem is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If SimpleClaimSystem is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Enable owner override for easier management. + +This ensures players maintain control over their protected land. + +--- + +## Common Questions + +### Can players create shops in someone else's claim? + +Only if claim permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can allow shops outside claims or restrict them. + +### What happens if SimpleClaimSystem is removed? + +QuickShop will revert to default behavior and stop checking claim permissions. + +--- + +## Summary + +The SimpleClaimSystem compat module: + +- Enforces claim-based permissions +- Prevents unauthorized shop creation +- Protects land from unwanted trading +- Requires minimal setup + +It is recommended for servers running SimpleClaimSystem. \ No newline at end of file diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md index a84dbf057b..4dfa8ae97c 100644 --- a/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/towny.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/towny.md index 52ab4818f4..b26c19d335 100644 --- a/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/towny.md +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/towny.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -26,7 +26,7 @@ Town sub-command allow you switch a quickshop between regular shop and town shop For a nation shop, the shop owner will changed to nation fake player created by Towny, and use Nation's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from nation Towny account.\ +All purchases will deposit or withdraw money from nation Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Nation Shop. @@ -35,7 +35,7 @@ If Plot type restriction is enabled, only a specific Plot type can create a Nati For a town shop, the shop owner will changed to town fake player created by Towny, and use Town's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from town Towny account.\ +All purchases will deposit or withdraw money from town Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Town Shop. @@ -88,7 +88,7 @@ bank-mode: ## Permission Override -By adjust configuration, you're allow mayor or king automaticlly grant administrator permission on all shops in their management range. +By adjust configuration, you're allow mayor or king automatically grant administrator permission on all shops in their management range. ```yaml #Should allow Mayor grant the shop administrator permission on they town. @@ -168,7 +168,7 @@ This causes Towny and QuickShop Hikari to use accounts with the same name but di You can adjust the option in configuration to enable workaround. -NOTE: It will force turned on if detected EssentialsX installed on your server.\ +NOTE: It will force turned on if detected EssentialsX installed on your server. At present, we do not provide a method for disable it. ```yaml diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md new file mode 100644 index 0000000000..0189958495 --- /dev/null +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md @@ -0,0 +1,138 @@ +# UltimateClaims + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and UltimateClaims. + +It ensures that shop creation and trading respect land claim permissions managed by UltimateClaims. + +--- + +## What Does It Do? + +On servers using land-claim plugins, players protect areas of the world from unauthorized interaction. + +Without compatibility: + +- Players may create shops inside claims they do not own. +- Visitors might trade in areas where they should not. +- Claim protection rules might not apply correctly to shops. + +The UltimateClaims compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops inside their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a claim. +- Whether the player has permission in that claim. +- Whether claim rules allow shop interaction. + +If the action violates claim settings, QuickShop blocks it. + +Outside of claims, normal QuickShop behavior applies. + +--- + +## Claim Owner Permissions + +With this module enabled: + +- Claim owners can create and manage shops within their claim. +- Trusted players follow claim permission settings. +- Visitors are restricted based on claim configuration. +- Shop actions outside of claims behave normally. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install UltimateClaims. +2. Install the QuickShop UltimateClaims compat module. +3. Restart your server. + +If UltimateClaims is detected on startup, compatibility activates automatically. + +No additional linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Common options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If UltimateClaims is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Keep owner override enabled for better control. + +This ensures players maintain full control over their protected land. + +--- + +## Common Questions + +### Can players create shops inside someone else's claim? + +Only if the claim permissions allow it. + +Otherwise, QuickShop will block the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can choose to restrict shops to claimed land only. + +### What happens if UltimateClaims is removed? + +QuickShop returns to normal behavior without claim checks. + +--- + +## Summary + +The UltimateClaims compat module: + +- Protects claimed land from unauthorized shop usage +- Enforces claim-based permissions +- Integrates smoothly with land-claim servers +- Requires minimal setup + +It is recommended for any server running UltimateClaims. \ No newline at end of file diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md index 87a71a205c..6437754503 100644 --- a/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md @@ -2,8 +2,10 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. Find out more [here](../modules/shops/worldedit.md). + +Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. \ No newline at end of file diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/development/01-getting-start.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/development/01-getting-start.md index 92b773451e..0e78e52367 100644 --- a/i18n/ar-SA/docusaurus-plugin-content-docs/current/development/01-getting-start.md +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/development/01-getting-start.md @@ -6,8 +6,8 @@ This series of articles will help you build extensions for QuickShop-Hikari or i ## License -QuickShop-Hikari is open source using the [GPLv3](https://www.gnu.org/licenses/quick-guide-gplv3.en.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari).\ -You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the GPLv3 agreement. +QuickShop-Hikari is open source using the [AGPLv3](https://www.gnu.org/licenses/agpl-3.0.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari). +You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the AGPLv3 agreement. ## 🚧Don't trust Javadoc too much @@ -48,7 +48,7 @@ QuickShop-Hikari divides operation sources into three types: - Server Main Thread - Async Thread (any other threads but not server main thread) -- Hybird +- Hybrid If you access the API through the wrong thread, QuickShop-Hikari will force a runtime error to be thrown. @@ -58,4 +58,4 @@ For APIs that may trigger network IO or long-time disk IO, you are required not You can see [Util.ensureThread()](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/3d1d271e1106ea1c83cc6068f8232ab7c7860918/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/util/Util.java#L351) and find out the requirements of the different APIs by looking up their use. APIs that do not use Util.ensureThread() are allowed to be called from any thread by default. -You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. +You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. \ No newline at end of file diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md index aa2404c594..7828d414ad 100644 --- a/i18n/ar-SA/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md @@ -10,7 +10,7 @@ ShopManager manager = api.getShopManager(); ## Getting a shop -Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates.\ +Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates. QuickShop-Hikari's store is only bound to one half of "Large Chest", so to get the store, you need to query both the cube itself and its associated cube. The good thing is that there is an API in the plugin that allows you to handle this situation very easily. @@ -71,7 +71,7 @@ manager.deleteShop(shop) // Permanently delete this store, both memory and datab ## Identify a store -Please note that store locations are technically variable and you should not use coordinates to identify a store.\ +Please note that store locations are technically variable and you should not use coordinates to identify a store. Also RuntimeRandomUniqueId should not be used to identify the store, as the name suggests, the value changes every time the server restarts, it should only be used to handle scenarios where the player interacts with the server. ```java diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md index 543f1851da..4f839ed652 100644 --- a/i18n/ar-SA/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md @@ -1,6 +1,6 @@ # 0x05 Per shop permission -QuickShop-Hikari has a per shop permission management system.\ +QuickShop-Hikari has a per shop permission management system. Therefore, for a normal permission node check is not enough, you need to attach an additional check. ## Check with shop diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/development/06-protocol-system.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/development/06-protocol-system.md index 5d37a15536..0380b789f9 100644 --- a/i18n/ar-SA/docusaurus-plugin-content-docs/current/development/06-protocol-system.md +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/development/06-protocol-system.md @@ -15,30 +15,30 @@ This documentation will guide developers through the components, implementation - **Purpose**: Manages packet handling and initialization logic. - **Interface**: `PacketHandler` - **Key Methods**: - - `Map> factories()` - - Retrieves a map of supported `PacketFactory` instances keyed by game versions. - - `void initialize()` - - Initializes the packet handler. - - `Optional> factory(String version)` - - Retrieves a `PacketFactory` for a specific game version. + - `Map> factories()` + - Retrieves a map of supported `PacketFactory` instances keyed by game versions. + - `void initialize()` + - Initializes the packet handler. + - `Optional> factory(String version)` + - Retrieves a `PacketFactory` for a specific game version. ### 2. **PacketFactory** - **Purpose**: Creates and sends specific packet types. - **Interface**: `PacketFactory` - **Supported Packets**: - - **Spawn Packet**: - - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. - - Example Use: Representing shop items visually. - - **Metadata Packet**: - - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. - - Example Use: Updating item display name or properties. - - **Velocity Packet**: - - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. - - Example Use: Custom animations for virtual items. - - **Destroy Packet**: - - Removes the entity from the client view. Created using `createDestroyPacket()`. - - Example Use: Unloading or removing a virtual display item. + - **Spawn Packet**: + - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. + - Example Use: Representing shop items visually. + - **Metadata Packet**: + - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. + - Example Use: Updating item display name or properties. + - **Velocity Packet**: + - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. + - Example Use: Custom animations for virtual items. + - **Destroy Packet**: + - Removes the entity from the client view. Created using `createDestroyPacket()`. + - Example Use: Unloading or removing a virtual display item. Developers implementing custom `PacketFactory` should ensure these packets are correctly handled and optimized for performance. @@ -46,24 +46,24 @@ Developers implementing custom `PacketFactory` should ensure these packets are c - **Purpose**: Oversees the lifecycle of virtual display items and integrates with packet handlers. - **Key Features**: - - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). - - Manages virtual display items mapped to chunks. - - Provides thread-safe operations for adding and removing display items. + - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). + - Manages virtual display items mapped to chunks. + - Provides thread-safe operations for adding and removing display items. ### 4. **VirtualDisplayItem** - **Purpose**: Represents a virtual item displayed to players. - **Key Features**: - - Generates and caches packets for spawning, metadata, velocity, and destruction. - - Manages packet senders for each player. - - Handles spawn and removal operations dynamically. + - Generates and caches packets for spawning, metadata, velocity, and destruction. + - Manages packet senders for each player. + - Handles spawn and removal operations dynamically. ### 5. **ProtocolLibHandler and PacketEventsHandler** - **Purpose**: Provide implementations of `PacketHandler` using ProtocolLib and PacketEvents, respectively. - **Differences**: - - `ProtocolLibHandler` leverages ProtocolLib API. - - `PacketEventsHandler` uses the PacketEvents library. + - `ProtocolLibHandler` leverages ProtocolLib API. + - `PacketEventsHandler` uses the PacketEvents library. --- @@ -140,11 +140,11 @@ public class CustomPacketFactory implements PacketFactory { Packet factories are provided for specific game versions through two primary implementations: - **ProtocolLib**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` - **PacketEvents**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` --- diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md new file mode 100644 index 0000000000..aebc035f87 --- /dev/null +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md @@ -0,0 +1,297 @@ +# Interaction System (Developer Guide) + +The Interaction System allows developers to fully customize how players interact with shops. + +As of 6.2.0.11, the system has been redesigned to be: + +- Modular +- Extensible +- Thread-safe +- Fully customizable by third-party addons + +This guide will walk you through: + +1. What the Interaction System is +2. Getting the `InteractionManager` +3. Understanding `InteractionType` +4. Understanding `InteractionBehavior` +5. Registering custom interactions +6. Best practices + +--- + +# Overview + +The Interaction System is composed of three main components: + +| Component | Purpose | +| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| `InteractionType` | Describes **what kind of click happened** (standing, sneaking, left-click, sign, shopblock, etc.) | +| `InteractionBehavior` | Describes **what action should happen** when that type is triggered | +| `InteractionManager` | Central registry that manages interactions and behaviors | + +This separation allows developers to: + +- Add new click types +- Add new behaviors +- Override existing ones +- Extend QuickShop without modifying core code + +--- + +# Getting the InteractionManager + +To begin registering custom interactions, you must retrieve the `InteractionManager` instance. + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +If you are working directly with the plugin instance: + +```java +InteractionManager manager = QuickShop.getInstance().getInteractionManager(); +``` + +Once obtained, you can: + +- Register new interaction types +- Register new behaviors +- Override existing behaviors + +--- + +# Understanding InteractionType + +`InteractionType` represents **how** a player interacted with a shop. + +Examples include: + +- `STANDING_LEFT_CLICK_SIGN` +- `STANDING_RIGHT_CLICK_SHOPBLOCK` +- `SNEAKING_LEFT_CLICK_CONTAINER` +- etc. + +Each `InteractionType` defines: + +- Player stance (standing/sneaking) +- Click type (left/right) +- Target (sign/shopblock/container) + +InteractionTypes do NOT define behavior — they only define the trigger. + +--- + +# Understanding InteractionBehavior + +`InteractionBehavior` defines **what happens** when an interaction is triggered. + +Examples of built-in behaviors: + +- `TRADE_INTERACTION` +- `TRADE_UI` +- `CONTROL_PANEL` +- `CONTROL_PANEL_UI` +- `NONE` + +A behavior: + +- Executes logic +- May open GUIs +- May send chat panels +- May directly trade items +- Can cancel or modify flow + +This separation makes it easy to reuse behaviors across multiple interaction types. + +--- + +# Registering Custom Interactions + +There are two things you can register: + +- A custom `InteractionType` +- A custom `InteractionBehavior` + +--- + +## Creating a Custom InteractionBehavior + +Create a class implementing `InteractionBehavior`. + +Example: + +```java +public class MyTradeBehavior implements InteractionBehavior { + + @Override + public String getKey() { + return "MY_CUSTOM_TRADE"; + } + + @Override + public void execute(InteractionClick click) { + Player player = click.getPlayer(); + Shop shop = click.getShop(); + + player.sendMessage("You triggered my custom interaction!"); + + // Add your custom logic here + } +} +``` + +Then register it: + +```java +InteractionManager manager = api.getInteractionManager(); +manager.behavior(new MyTradeBehavior()); +``` + +Now your behavior is available for use. + +--- + +## Creating a Custom InteractionType + +You may also register custom interaction types if you want to introduce new trigger definitions. + +Example: + +```java +public class MyCustomInteraction implements InteractionType { + + @Override + public String getKey() { + return "STANDING_DOUBLE_CLICK_SIGN"; + } + + @Override + public boolean matches(InteractionClick click) { + // Define custom logic to detect this interaction + return click.isStanding() + && click.isSign() + && click.isDoubleClick(); + } +} +``` + +Register it: + +```java +manager.interaction(new MyCustomInteraction()); +``` + +--- + +# Binding Types to Behaviors + +The InteractionManager internally maps interaction types to behaviors based on configuration and registration order. + +Once your behavior is registered: + +- It can be referenced in `interaction.yml` +- Or attached programmatically + +Example interaction.yml usage: + +```yaml +STANDING_LEFT_CLICK_SIGN: MY_CUSTOM_TRADE +``` + +--- + +# The InteractionClick Object + +When your behavior executes, you receive an `InteractionClick` object. + +It provides: + +- `getPlayer()` +- `getShop()` +- `getLocation()` +- `isSneaking()` +- `isSign()` +- `isShopBlock()` +- etc. + +This gives full context for safe execution. + +--- + +# Advanced: Overriding Built-in Behavior + +If you register a behavior using the same key as an existing one, your behavior can override the default. + +⚠️ Be careful when doing this — you are replacing core functionality. + +--- + +# Best Practices + +### Always Use Unique Keys + +Avoid naming collisions: + +``` +MYPLUGIN_CUSTOM_BEHAVIOR +``` + +### Keep Behavior Lightweight + +Do not block the main thread with: + +- Heavy database calls +- File IO +- Network calls + +Use async tasks if needed. + +### Respect Permissions + +Always validate: + +```java +if (!player.hasPermission("myplugin.use")) { + return; +} +``` + +### Avoid Hard Overrides Unless Necessary + +Instead of replacing built-in behaviors, consider extending them. + +--- + +# Example: Full Minimal Implementation + +```java +public class ExampleAddon { + + public void register(QuickShopAPI api) { + + InteractionManager manager = api.getInteractionManager(); + + manager.behavior(new MyTradeBehavior()); + manager.interaction(new MyCustomInteraction()); + } +} +``` + +--- + +# Conclusion + +The Interaction System is designed to allow: + +- Full extensibility +- Clean separation of triggers and actions +- Easy integration for third-party developers + +By retrieving the `InteractionManager`: + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +You gain full control over how shops respond to player actions. \ No newline at end of file diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/development/08-tax-manager.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/development/08-tax-manager.md new file mode 100644 index 0000000000..72a56f9e88 --- /dev/null +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/development/08-tax-manager.md @@ -0,0 +1,266 @@ +# Tax System (Developer Guide) + +The QuickShop tax system allows server owners and developers to define how transaction taxes are calculated, distributed, and extended. + +As of 6.2.0.11, the tax system has been fully rewritten to provide: + +- A flexible TaxManager +- Pluggable TaxProvider support +- Progressive taxation +- Tax targeting (shop owner, interacting player, or both) +- Custom extension capability for third-party addons + +This guide explains how to work with the tax system programmatically. + +--- + +# Overview + +The tax system is composed of three core components: + +TaxManager +Responsible for coordinating tax calculation and execution. + +TaxProvider +Defines how tax values are calculated. + +TaxRates +Represents calculated tax results for a transaction. + +The system is designed to allow custom providers to be registered and used without modifying core logic. + +--- + +# Getting the TaxManager + +To work with the tax system, retrieve the TaxManager from the ShopManager. + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +Once obtained, you can: + +- Access current tax configuration +- Register custom tax providers +- Calculate tax values +- Hook into tax events + +--- + +# How the Tax System Works + +During a shop transaction: + +1. A base price is determined. +2. The TaxManager selects the active TaxProvider. +3. The TaxProvider calculates applicable tax. +4. A TaxRates object is produced. +5. The system applies the tax to: + + - Shop owner + - Interacting player + - Or both (depending on configuration) + +This architecture allows tax behavior to be modified without altering transaction logic. + +--- + +# TaxProvider + +A TaxProvider defines how tax values are calculated. + +You may create your own provider to implement: + +- Progressive tax brackets +- Flat percentage tax +- Conditional tax rules +- Region-based tax +- Rank-based tax +- Time-based tax + +Example minimal provider: + +```java +public class MyCustomTaxProvider implements TaxProvider { + + @Override + public TaxRates calculateTax(TaxContext context) { + + double basePrice = context.getPrice(); + + double taxAmount = basePrice * 0.05; // 5% flat tax + + return new TaxRates() + .ownerTax(taxAmount) + .buyerTax(0.0); + } +} +``` + +Then register it: + +```java +taxManager.provider(new MyCustomTaxProvider()); +``` + +Once registered, your provider will be used for tax calculations. + +--- + +# TaxRates + +TaxRates represents the result of a tax calculation. + +It typically contains: + +- Owner tax amount +- Buyer tax amount +- Total tax impact +- Metadata (if applicable) + +The transaction system will read from TaxRates and apply deductions accordingly. + +--- + +# Progressive Taxation + +The built-in system supports progressive tax structures. + +This allows server administrators to tax based on: + +- Player balance +- Shop owner balance +- Configured tax brackets + +Example configuration concept: + +- 0–10,000 balance → 1% tax +- 10,000–100,000 → 2% tax +- 100,000+ → 3% tax + +Developers can extend or override this logic inside a custom TaxProvider. + +--- + +# Targeting Tax + +The new tax system allows taxes to be applied to: + +- Shop owner +- Interacting player +- Both + +This is controlled via configuration, but custom providers can override distribution logic by adjusting TaxRates output. + +Example: + +```java +return new TaxRates() + .ownerTax(basePrice * 0.02) + .buyerTax(basePrice * 0.01); +``` + +--- + +# Registering a Custom TaxProvider + +To replace or extend tax logic: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); + +taxManager.provider(new MyCustomTaxProvider()); +``` + +You may register only one primary provider at a time. If multiple providers are needed, implement internal delegation within your custom provider. + +--- + +# Tax Events + +The tax system integrates with the event system. + +The modern event used is: + +ShopEnhancedTaxEvent + +This replaces legacy tax events and provides improved context, including: + +- Transaction builder reference +- TaxRates object +- Modification capability before final execution + +You can listen for the event and modify tax behavior dynamically: + +```java +@EventHandler +public void onTax(ShopEnhancedTaxEvent event) { + + TaxRates rates = event.getTaxRates(); + + // Example: Give VIP players reduced owner tax + if (event.getOwner().hasPermission("vip.tax.discount")) { + rates.ownerTax(rates.getOwnerTax() * 0.5); + } +} +``` + +--- + +# Best Practices + +Always keep tax calculations lightweight. + +Avoid: + +- Heavy database queries inside calculateTax +- Blocking network calls +- Long-running computations + +If complex logic is required, pre-cache required data outside the tax execution path. + +Ensure negative tax values are not returned unless intentional. + +Always validate final amounts before applying modifications. + +Respect configuration hierarchy unless intentionally overriding it. + +--- + +# Example Full Implementation + +```java +public class ExampleTaxAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + TaxManager taxManager = manager.taxManager(); + + taxManager.provider(new MyCustomTaxProvider()); + } +} +``` + +--- + +# Conclusion + +The new tax system is designed for: + +- Flexibility +- Extensibility +- Clean separation of concerns +- Future expansion + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +You gain full control over how QuickShop calculates and applies tax during transactions. \ No newline at end of file diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/development/09-layout-provider.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/development/09-layout-provider.md new file mode 100644 index 0000000000..55e3cd3e91 --- /dev/null +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/development/09-layout-provider.md @@ -0,0 +1,275 @@ +# Shop Layout Provider (Developer Guide) + +The Shop Layout Provider system allows developers to customize how shop signs are structured and rendered. + +As of 6.2.0.11, shop layouts are no longer hardcoded. Instead, they are controlled through the `IShopLayoutProvider` interface, which allows: + +- Custom sign line ordering +- Per-shop-type layouts (BUYING, SELLING, FROZEN, or custom types) +- Dynamic layout resolution +- Complete replacement of the default layout system + +This guide explains how to access, override, and implement a custom layout provider. + +--- + +# Overview + +The layout provider controls how shop sign lines are arranged. + +Instead of hardcoding: + +Line 1 → Header +Line 2 → Trading info +Line 3 → Item +Line 4 → Price + +The system now allows full customization through: + +- Config-based layout definitions +- Custom `IShopLayoutProvider` implementations +- Runtime overrides + +The default implementation is `SimpleShopLayoutProvider`. + +--- + +# Accessing the Layout Provider + +To retrieve the current layout provider: + +```java +ShopManager manager = api.getShopManager(); +IShopLayoutProvider provider = manager.shopLayoutProvider(); +``` + +To replace the layout provider with a custom one: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Once replaced, your implementation will control how shop layouts are generated. + +--- + +# Understanding IShopLayoutProvider + +`IShopLayoutProvider` defines how layout data is retrieved and resolved. + +It is responsible for: + +- Providing layout configuration per shop type +- Determining which layout to use +- Supplying formatted line keys +- Allowing future extensibility + +The default implementation reads layout definitions from configuration and applies them based on shop type. + +--- + +# Default Layout Example + +The default configuration-based layout looks like this: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +Each line maps to a layout component key. + +An empty string (`""`) leaves that line blank. + +The layout provider resolves these keys into actual sign content. + +--- + +# Creating a Custom Layout Provider + +To override the default behavior, implement `IShopLayoutProvider`. + +Example minimal implementation: + +```java +public class MyCustomLayoutProvider implements IShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + + ShopLayout layout = new ShopLayout(); + + layout.setLine(1, "Custom Header"); + layout.setLine(2, "Owner: " + shop.getOwnerName()); + layout.setLine(3, shop.getItem().getType().name()); + layout.setLine(4, "$" + shop.getPrice()); + + return layout; + } +} +``` + +Then register it: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Your layout will now control all shop sign formatting. + +--- + +# Per-Type Layout Control + +Because the system no longer depends on the legacy ShopType enum, layouts can support: + +- Built-in types (BUYING, SELLING, FROZEN) +- Custom shop types +- Addon-defined shop types + +Your provider can determine layout logic dynamically: + +```java +@Override +public ShopLayout provideLayout(Shop shop) { + + if (shop.getShopType().key().equals("FROZEN")) { + return frozenLayout(shop); + } + + return defaultLayout(shop); +} +``` + +This allows conditional formatting, localization adjustments, or special event styling. + +--- + +# Advanced Customization + +A custom layout provider can: + +- Pull data from external plugins +- Inject dynamic placeholders +- Modify layout per player +- Apply formatting logic +- Override color schemes +- Apply region-based formatting +- Implement animated sign systems + +Because the layout provider is resolved at runtime, you can compute layouts dynamically instead of reading static config. + +--- + +# Replacing vs Extending the Default Provider + +You have two options: + +Replace entirely: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Or extend the default implementation: + +```java +public class ExtendedLayoutProvider extends SimpleShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + ShopLayout base = super.provideLayout(shop); + + base.setLine(1, "[Extended] " + base.getLine(1)); + + return base; + } +} +``` + +Extending is safer if you only want to modify small portions. + +--- + +# Best Practices + +Keep layout generation lightweight. + +Avoid: + +- Heavy database queries +- Blocking IO +- Complex network calls + +Layout generation runs during shop updates and sign refresh events. + +Always handle null values safely. + +Ensure layout line count does not exceed sign limits. + +Avoid hardcoding shop type names unless necessary. + +If your layout supports custom shop types, validate their keys properly. + +--- + +# Example Full Registration + +```java +public class LayoutAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + + manager.shopLayoutProvider(new MyCustomLayoutProvider()); + } +} +``` + +--- + +# Conclusion + +The Shop Layout Provider system allows complete control over shop sign structure. + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +``` + +And setting: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +You can redefine how every shop is displayed on the server. + +This system was designed to support: + +- Extensibility +- Custom shop types +- Localization +- Dynamic formatting +- Future expansion \ No newline at end of file diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/faq/compare-reremake.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/faq/compare-reremake.md index aaa1a9e507..6b39f02520 100644 --- a/i18n/ar-SA/docusaurus-plugin-content-docs/current/faq/compare-reremake.md +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/faq/compare-reremake.md @@ -64,7 +64,7 @@ If you are a Reremake user, you may be confused about the differences between Hi ## Which one should I use? Well, it depends on what your needs are.\ -If you have an old server (<1.20) instance, Reremake is your only choice.\ +If you have an old server ({'<'}1.20) instance, Reremake is your only choice.\ ~~If you are in China which has GFW interfere, you also should consider Reremake because it doesn't need to load libraries from Global Internet.~~ Solved in 6.0.0.0. If none of these applies, give Hikari a try! diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md index 551f579e7c..172be3a69b 100644 --- a/i18n/ar-SA/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md @@ -1,8 +1,8 @@ # Where Addons/Compacts is -Addons and Compatilibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. +Addons and Compatibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. -- Open Modrinth versions page, locate the version your're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) +- Open Modrinth versions page, locate the version you're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) - Frantically slide your mouse wheel down until the lowest end of the page. - You get it! diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/internal/database-schema.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/internal/database-schema.md index fea685e4fc..45e04adb56 100644 --- a/i18n/ar-SA/docusaurus-plugin-content-docs/current/internal/database-schema.md +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/internal/database-schema.md @@ -4,17 +4,17 @@ This chapter will explain the implementation details of QuickShop Hikari's datab ## Tables -This section explains the database tables created by QuickShop-Hikari.\ -Unless otherwise specified, the initial `qs_` in table name is the table prefix.\ +This section explains the database tables created by QuickShop-Hikari. +Unless otherwise specified, the initial `qs_` in table name is the table prefix. For the latest code definition for each table, see: [DataTables.java](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/hikari/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/database/DataTables.java) ### `data` -This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information.\ -No matter what, a data record should not be modified after it is created, until it got deleted.\ +This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information. +No matter what, a data record should not be modified after it is created, until it got deleted. Any new changes to the shop should create a new copy, apply the changes to the copy, and insert it as a new record. -Basiclly, Copy-on-write. +Basically, Copy-on-write. A data record only be deleted from the database when no any table references their `data_id`. @@ -29,7 +29,7 @@ A data record only be deleted from the database when no any table references the | unlimited | BIT NOT NULL | 0 | Indicates whether this store is an unlimited store, 0=Limited, 1=Unlimited | | hologram | BIT NOT NULL | 0 | Indicates the suspension status of this store's display item, 0=Follow global settings, 1=Disabled | | tax_account | VARCHAR(36) | NULL | The uuid for tax account, If it is not NULL, tax will be paid to the specified account | -| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serilized to JSON string | +| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serialized to JSON string | | extra | LONGTEXT | Empty Yaml | Used to store experimental settings of QuickShop Hikari or persistent data of other plugins | | inv_wrapper | VARCHAR(255) NOT NULL | N/A | Unique identifier for InventoryWrapper for this shop data entry | | inv_symbol_link | TEXT NOT NULL | N/A | Unique Inventory symbol used to pass to InventoryWrapper, for locating inventory | @@ -38,7 +38,7 @@ A data record only be deleted from the database when no any table references the ### `shops` -This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes.\ +This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes. Multiple `shop_id` can correspond to the same `data_id`. | Column Name | DataType | Default | Description | diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/cmd-alias.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/cmd-alias.md index 53f1577685..e6ed381c0d 100644 --- a/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/cmd-alias.md +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/cmd-alias.md @@ -23,7 +23,7 @@ custom-commands: - cshop ``` -Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect.\ +Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect. The effect should be like this: ![command-alias](./img/command-alias.png) diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/datasource.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/datasource.md index 6fc1bd8931..3fd3a8bdee 100644 --- a/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/datasource.md +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/datasource.md @@ -48,7 +48,7 @@ Execute the `/quickshop export` command in console, quickshop will export a zip ![exported data](img/database-export.png) -Stop your database, switch the datasource, and start the server.\ +Stop your database, switch the datasource, and start the server. You may noticed all shops are gone, because new datasources had no data inside, we will restore them from export. Rename that exported ZIP file to `recovery.zip`, execute `/quickshop recovery` and restart your server, all shops should back. diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/itemmatcher.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/itemmatcher.md index 56be243019..922907be27 100644 --- a/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/itemmatcher.md +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/itemmatcher.md @@ -4,7 +4,7 @@ ItemMatcher is a utility used by QuickShop-Hikari to compare the items, it is th :::caution -If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse.\ +If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse. **TL;DR: Keep default unless you know what you're doing.** ::: @@ -26,10 +26,10 @@ matcher: work-type: 1 ``` -By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility.\ +By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility. But still, you can toggle to QuickShop Item Matcher if you need to customize the comparing or running QuickShop on the server jar which have bug affect the Bukkit comparing system. -## Customize the metadata compareing +## Customize the metadata comparing Customize only works under QuickShop Item Matcher. diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md index fc2af69d2b..d04e8f2783 100644 --- a/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md @@ -4,7 +4,7 @@ ItemStack Loader is a workaround for loading the Bukkit ItemStack. :::caution -Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossble. +Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossible. ::: diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/localization.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/localization.md index e9121e1a36..d47589ab9a 100644 --- a/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/localization.md +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/localization.md @@ -10,7 +10,7 @@ To help translate QuickShop-Hikari, please visit our [Crowdin Homepage](https:// ## Crowdin OTA -QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will overrided when you reload QuickShop-Hikari or restart your server. +QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will override when you reload QuickShop-Hikari or restart your server. Your installation will keep translations up-to-date without any touch. @@ -110,6 +110,16 @@ To disable the CrowdinOTA, please add it in the startup flag: -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager.enableCrowdinOTA=false ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +use-crowdin-ota: false +``` + ### Self-Hosted OTA Server If you self-hosted our translation server by using [CrowdinCopyDeploy](https://github.com/Ghost-chu/CrowdinCopyDeploy) tool, you're able to change the OTA server to yourself server. @@ -118,4 +128,12 @@ If you self-hosted our translation server by using [CrowdinCopyDeploy](https://g -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager= ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml +Use + +```yaml +crowdin-host: +``` \ No newline at end of file diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/shops/benefit.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/shops/benefit.md index 4d7a9c8f42..c59d92e6d1 100644 --- a/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/shops/benefit.md +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/shops/benefit.md @@ -37,3 +37,13 @@ By default, for security, QuickShop-Hikari disallow add offline players into sho ```bash -Dcom.ghostchu.quickshop.command.subcommand.SubCommand_Benefit.allowOffline=true ``` + +### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +shop.allow-offline-benefit: true +``` \ No newline at end of file diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/shops/control-panel b/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/shops/control-panel new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/shops/control-panel @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/shops/history.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/shops/history.md index fa891adeab..195b64a042 100644 --- a/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/shops/history.md +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/shops/history.md @@ -24,7 +24,7 @@ The History GUI displays the details of each recorded transaction and other usef ### Transaction details -When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed.\ +When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed. If you are checking the history of more than one store, the player head will be replaced with an item from the corresponding store. ![history-gui](./img/history-gui.png) diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md new file mode 100644 index 0000000000..c5ed3b3fe4 --- /dev/null +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md @@ -0,0 +1,90 @@ +# Shop Types + +QuickShop supports multiple shop types, allowing shops to behave differently depending on their mode. + +The built-in shop types are: + +- Selling +- Buying +- Frozen + +Each type changes how the shop interacts with players. + +--- + +## Selling Shop + +A Selling shop allows players to: + +- Buy items from the shop owner +- Pay money to receive items + +This is the most common shop type. + +--- + +## Buying Shop + +A Buying shop allows players to: + +- Sell items to the shop owner +- Receive money in exchange + +This is commonly used for: + +- Resource collection +- Server buy-back shops +- Automated material sinks + +--- + +## Frozen Shop + +A Frozen shop temporarily disables trading. + +While frozen: + +- No buying is allowed +- No selling is allowed +- The shop remains intact +- Staff or admins can manage it + +This is useful for: + +- Temporary suspensions +- Investigation +- Event locking +- Maintenance + +--- + +## Switching Shop Types + +Shop types can be changed through: + +- Control panel +- GUI control panel +- Admin commands + +Frozen mode is also available via: + +/qs freeze + +--- + +## Custom Shop Types + +As of 6.2.x, the system supports extensible shop types internally. + +While server owners use the built-in types, the system now allows future expansion through addons. + +--- + +## Summary + +Shop types allow you to: + +- Control how money flows +- Enable buy-back mechanics +- Temporarily disable shops +- Build advanced economic systems \ No newline at end of file diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md new file mode 100644 index 0000000000..18e0a47407 --- /dev/null +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md @@ -0,0 +1,217 @@ +# Sign Layout + +QuickShop allows you to fully customize how shop signs are structured. + +You can change: + +- What appears on each line +- The order of information +- Layout per shop type +- Whether certain lines are blank + +This gives you complete control over how shops look on your server. + +--- + +## How Sign Layout Works + +Shop signs have four lines. + +Instead of being hardcoded, QuickShop uses a configurable layout system. + +Each shop type can have its own layout: + +- SELLING +- BUYING +- FROZEN + +You define what each line displays using layout keys. + +--- + +## Configuration Location + +Sign layout is configured in `config.yml` under: + +```yaml +layout: +``` + +Example default configuration: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## Available Layout Keys + +Each line value refers to a built-in layout component. + +Common layout keys include: + +- `header` – The shop header line +- `trading` – Buy/Sell direction information +- `item` – Item name +- `price` – Shop price + +These keys are automatically formatted using your language file and formatting settings. + +--- + +## Leaving a Line Blank + +To leave a line empty, use: + +```yaml +line2: "" +``` + +This is useful if you want: + +- Minimalist signs +- Cleaner layouts +- Custom spacing +- Decorative formatting + +--- + +## Customizing Per Shop Type + +Each shop type can have a different layout. + +For example: + +```yaml +layout: + + SELLING: + line1: "header" + line2: "item" + line3: "price" + line4: "" + + BUYING: + line1: "header" + line2: "price" + line3: "item" + line4: "" + + FROZEN: + line1: "header" + line2: "" + line3: "item" + line4: "Frozen" +``` + +This allows you to visually differentiate: + +- Selling shops +- Buying shops +- Frozen shops + +--- + +## Practical Examples + +### Minimal Style + +```yaml +layout: + SELLING: + line1: "item" + line2: "price" + line3: "" + line4: "" +``` + +### Compact Economy Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "price" + line3: "item" + line4: "" +``` + +### Large Clear Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## How Updates Affect Layout + +When you change the layout: + +- Existing shop signs will update automatically when refreshed. +- New shops will use the updated format immediately. + +If needed, you can reload QuickShop to apply changes. + +--- + +## Best Practices + +- Keep important information visible (price and item). +- Avoid overly complex formatting. +- Test layout changes before deploying on large servers. +- Use different layouts for BUYING and SELLING to reduce confusion. + +--- + +## Common Questions + +### Can I add more than four lines? + +No. +Minecraft signs are limited to four lines. + +### Can I add colors? + +Colors are controlled by your language file and formatting settings. + +### Can I change layout without restarting? + +Yes, but reloading or refreshing shops is recommended to ensure full update. + +--- + +## Summary + +The Sign Layout system allows you to: + +- Fully customize shop sign appearance +- Create per-type layouts +- Simplify or expand shop information +- Improve clarity for players + +All layout customization is handled inside `config.yml`. diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md index abcc288db7..2a0d52d788 100644 --- a/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md @@ -8,19 +8,6 @@ This feature added in 6.0.0.0. By default, QuickShop-Hikari uses the default brand material from the configuration file, but you can modify it to other brands for your store with the command. -## Configuration - -```yaml - #The wall sign material. - #ACACIA_WALL_SIGN - #BIRCH_WALL_SIGN - #DARK_OAK_WALL_SIGN - #JUNGLE_WALL_SIGN - #OAK_WALL_SIGN - #SPRUCE_WALL_SIGN - sign-material: OAK_WALL_SIGN -``` - ## Change the material Use command `/quickshop sign ` to change your shop sign material. diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md new file mode 100644 index 0000000000..980bad10f2 --- /dev/null +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md @@ -0,0 +1,130 @@ +# Shop Sign Waxing + +QuickShop can automatically wax shop signs to prevent players from editing them manually. + +Waxing protects the integrity of your shop signs and helps prevent tampering, spoofing, and accidental modification. + +As of modern Minecraft versions, waxed signs cannot be edited unless they are unwaxed first. + +--- + +## What Is Sign Waxing? + +In Minecraft, waxing a sign locks it so that: + +- Players cannot edit the text +- Players cannot modify lines +- Accidental changes are prevented +- Malicious edits are blocked + +When enabled in QuickShop, shop signs are automatically waxed when created. + +--- + +## Why Use It? + +Sign waxing protects against: + +- Players editing price lines +- Changing item names on signs +- Spoofing shop information +- Accidental formatting issues +- Sign hijacking attempts + +On public servers, this feature is strongly recommended. + +--- + +## How It Works + +When a shop is created: + +1. QuickShop generates the shop sign. +2. The sign text is written. +3. The sign is automatically waxed (if enabled). + +If a shop is updated: + +- The sign will be safely updated by QuickShop. +- The wax state is maintained. + +Players cannot manually edit shop signs while waxing is enabled. + +--- + +## Configuration + +To enable or disable sign waxing, edit `config.yml`: + +```yaml +shop: + sign-wax: true +``` + +### true + +- Shop signs are automatically waxed. +- Players cannot edit the sign manually. + +### false + +- Shop signs behave like normal Minecraft signs. +- Players may edit them if permitted by the game. + +--- + +## Recommended Setting + +For most servers: + +```yaml +shop: + sign-wax: true +``` + +This ensures shop data stays accurate and secure. + +--- + +## Common Questions + +### Can admins still modify shop signs? + +QuickShop controls shop sign formatting. +Manual edits are not recommended. + +Admins should use: + +- Control panel +- Shop commands +- Direct configuration changes + +### Does waxing affect shop functionality? + +No. +Waxing only prevents manual text edits. +The shop continues to function normally. + +### Can players un-wax shop signs? + +No. +QuickShop manages the sign state automatically. + +--- + +## Best Practices + +- Keep sign-wax enabled on survival servers. +- Combine sign-wax with proper permissions. +- Avoid manually editing shop signs through other plugins. + +--- + +## Summary + +Sign Waxing: + +- Prevents tampering +- Requires no additional setup + +Enable it once and QuickShop handles the rest. \ No newline at end of file diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/shops/taxes.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/shops/taxes.md new file mode 100644 index 0000000000..1a273fd978 --- /dev/null +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/shops/taxes.md @@ -0,0 +1,92 @@ +# Taxation System + +QuickShop includes a taxation system designed to give server owners more flexibility and control over shop-based income. + +This system was revamped as of 6.2.0.11+ + +The new system allows you to: + +- Apply tax to shop owners +- Apply tax to buyers +- Apply tax to both +- Use progressive tax brackets +- Customize tax behavior in configuration + +This system replaces the legacy tax configuration. + +--- + +## How It Works + +During a transaction: + +1. The shop price is calculated. +2. Tax is calculated based on your configuration. +3. Tax is deducted from the configured target(s). +4. Remaining funds are distributed normally. + +You can configure: + +- Flat percentage tax +- Progressive tax based on player balance +- Tax accounts +- Distribution rules + +--- + +## Progressive Tax + +The new system allows you to tax based on balance brackets. + +Example concept: + +- 0 – 10,000 balance → 1% tax +- 10,000 – 100,000 → 2% tax +- 100,000+ → 3% tax + +This helps prevent extremely wealthy players from dominating the economy. + +--- + +## Who Pays the Tax? + +You can configure whether tax applies to: + +- The shop owner +- The buyer +- Both + +This gives you flexibility depending on your economy design. + +--- + +## Configuration + +All tax-related settings are located under the `shop-tax` section in `config.yml`. + +After updating to 6.2.0.11+, review your tax configuration carefully, as the old tax system has been replaced. + +--- + +## Why Use Tax? + +The taxation system can help: + +- Remove currency from circulation +- Fund server banks or towns +- Create sink mechanics +- Balance inflation +- Reward active players + +--- + +## Summary + +The new taxation system is: + +- Flexible +- Configurable +- Balance-aware +- Designed for modern economy servers + +Make sure to review your configuration after upgrading. \ No newline at end of file diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md new file mode 100644 index 0000000000..247c24712d --- /dev/null +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md @@ -0,0 +1,161 @@ +# WorldEdit & FAWE Support + +QuickShop includes built-in protection and integration for WorldEdit and FastAsyncWorldEdit (FAWE). + +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. + +You do not need to download or install any additional compatibility plugins. + +--- + +## What This Does + +WorldEdit and FAWE allow administrators and builders to: + +- Copy and paste regions +- Replace large areas of blocks +- Mass-delete regions +- Roll back areas +- Regenerate terrain + +Without protection, these operations could: + +- Create ghost shops +- Leave orphaned shop data in the database +- Duplicate shops unintentionally +- Delete containers without cleaning up shop data +- Cause inconsistencies between world and database + +QuickShop now automatically detects and safely processes WorldEdit and FAWE operations. + +--- + +## Built-In Behavior + +When WorldEdit or FAWE modifies blocks: + +- Shops removed via WorldEdit are properly deleted from the database. +- Shop data stays synchronized with world changes. +- Ghost shops are prevented. +- Mass block replacements will not leave broken shop entries behind. + +This applies to: + +- //set +- //replace +- //cut +- //paste +- //regen +- Region deletion +- Mass container removal + +No configuration is required. + +--- + +## FAWE Support + +FastAsyncWorldEdit (FAWE) is fully supported. + +Because FAWE processes edits asynchronously, QuickShop handles: + +- Region-thread safe processing +- Async block updates +- Safe shop deletion during batch edits + +You do not need to enable anything manually. + +--- + +## Removing Shops with WorldEdit + +If you delete containers (chests, barrels, etc.) using WorldEdit: + +QuickShop will automatically: + +- Detect the block removal +- Unregister the shop +- Clean the database entry +- Prevent ghost shops + +You do not need to run `/qs cleanghost` after WorldEdit usage in normal circumstances. + +--- + +## Copying and Pasting Shops + +If you copy and paste regions that contain shops: + +- Shop data will not duplicate incorrectly. +- Shop IDs remain consistent. +- Invalid pasted shops will not auto-register unless properly created. + +This prevents accidental duplication exploits. + +--- + +## Performance + +WorldEdit and FAWE operations can modify thousands of blocks at once. + +QuickShop processes these safely and efficiently: + +- Batch-aware cleanup +- Thread-safe region access (especially on Folia) +- Minimal performance impact during mass edits + +--- + +## Configuration + +There are no specific WorldEdit configuration options in QuickShop. + +Support is automatic and always enabled if WorldEdit or FAWE is detected. + +If WorldEdit is not installed, no extra code is executed. + +--- + +## Common Questions + +### Do I need the old WorldEdit compatibility jar? + +No. + +As of 6.2.0.11, WorldEdit support is built-in and the separate compatibility module has been removed. + +### Does this work with FAWE? + +Yes. FAWE is fully supported. + +### Will shops break if I use //set air? + +No. Shops will be safely removed and cleaned up. + +### Do I need to restart after installing WorldEdit? + +No. QuickShop detects WorldEdit automatically on startup. + +--- + +## Best Practices + +Even though QuickShop safely handles WorldEdit operations, it is recommended to: + +- Avoid copying shops intentionally unless required +- Use backups before large region edits +- Test large FAWE operations on staging servers when possible + +--- + +## Summary + +QuickShop’s built-in WorldEdit and FAWE integration ensures: + +- Safe mass edits +- No ghost shops +- Automatic database cleanup +- Thread-safe processing +- No extra modules required + +WorldEdit support is now a core feature of QuickShop. \ No newline at end of file diff --git a/i18n/ar-SA/docusaurus-plugin-content-docs/current/setup/install.md b/i18n/ar-SA/docusaurus-plugin-content-docs/current/setup/install.md index fd02cfa1cc..2fc7851f3b 100644 --- a/i18n/ar-SA/docusaurus-plugin-content-docs/current/setup/install.md +++ b/i18n/ar-SA/docusaurus-plugin-content-docs/current/setup/install.md @@ -1,13 +1,14 @@ # Installation -This page will walk you through the process of installing QuickShop-Hikari on your Spigot server. +This page will walk you through the process of installing QuickShop-Hikari on your PaperMC server. ## Requirements -- A [Spigot][spigot]-based Minecraft server (1.20 or higher, Java 21) - - You can also use [Paper][paper], which is a fork of Spigot for better compatibility, more features and higher performance. +- A [Paper][paper]-based Minecraft server (1.20 or higher, Java 21) - [Vault][vault] for bridging the economy system between QuickShop and your economy plugins. -- [ProtocolLib][plib] for virtual display item, Per-player localization. +- For virtual item displays, and per-player localization you need a supported protocol library: + - [ProtocolLib][plib] + - [PacketEvents][https://www.spigotmc.org/resources/packetevents-api.80279/] - Any Vault compatible economy plugin, such as [XConomy][xconomy], If you have [EssentialsX][essx], it will also works well. - A permission management plugin like [LuckPerms][luckperm]. @@ -15,13 +16,17 @@ In this document, we assume that you are using the latest version of QuickShop-H ## Installing dependencies -Before installing QuickShop-Hikari, you should make sure that you have all dependencies installed, including [Vault][vault], [ProtocolLib][plib], [XConomy][xconomy] (or [EssentialsX][essx] if you want) and [LuckPerms][luckperm]! +Before installing QuickShop-Hikari, you should make sure that you have all dependencies installed, including [Vault][vault], [ProtocolLib][plib] or \[PacketEvents]\[https\://www\.spigotmc.org/resources/packetevents-api.80279/], [XConomy][xconomy] (or [EssentialsX][essx] if you want) and [LuckPerms][luckperm]! Download the plugins and drop them into `plugins` folder and you're all set! +## Configuring the Display Protocol + +If you have both ProtocolLib and PacketEvents, and you want to utilize PacketEvents for your display items, you'll need to set it as such in config.yml: `shop. display-protocol: 'packetevents'` + ## Installing QuickShop-Hikari -Download the latest version of QuickShop-Hikari from [Modrinth][qs-modrinth], if you find multiple files that have `Compat-` prefix in file name, ignore them in this step.\ +Download the latest version of QuickShop-Hikari from [Modrinth][qs-modrinth], if you find multiple files that have `Compat-` prefix in file name, ignore them in this step. The only file you need to download should have a **Primary** tag like this in the image below: ![download primary file](./img/download-primary.png) @@ -52,12 +57,11 @@ For advanced permission setup, you can check [here](./permissions.md). Now QuickShop-Hikari is running on your server, for more settings, check the navigation panel on the left and see different sections. -[spigot]: https://www.spigotmc.org/wiki/buildtools/ [paper]: https://papermc.io/ -[vault]: https://www.spigotmc.org/resources/34315/ -[xconomy]: https://www.spigotmc.org/resources/75669/ +[vault]: https://www.spigotmc.org/resources/vaultunlocked.117277/ +[xconomy]: https://www.spigotmc.org/resources/xconomy.75669/ [essx]: https://modrinth.com/plugin/essentialsx -[plib]: https://www.spigotmc.org/resources/1997 +[plib]: https://www.spigotmc.org/resources/protocollib.1997/ [luckperm]: https://luckperms.net/ [qs-modrinth]: https://modrinth.com/plugin/quickshop-hikari [dc]: https://discord.gg/Bu3dVtmsD3 diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/addon/limited.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/addon/limited.md index 70af27e240..fae55a8c95 100644 --- a/i18n/bg-BG/docusaurus-plugin-content-docs/current/addon/limited.md +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/addon/limited.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -41,8 +35,8 @@ Limit players to purchase up to 16 items per month. /quickshop limit period MONTH ``` -The system is based on the QuickShop-Hikari calendar system.\ -The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year.\ +The system is based on the QuickShop-Hikari calendar system. +The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year. Same for days, months and hours. Available time units: diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/addon/list.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/addon/list.md index 93d182f083..f20b91fd7b 100644 --- a/i18n/bg-BG/docusaurus-plugin-content-docs/current/addon/list.md +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/addon/list.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/addon/plan.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/addon/plan.md index 52a6e79cb4..c10ef4df42 100644 --- a/i18n/bg-BG/docusaurus-plugin-content-docs/current/addon/plan.md +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/addon/plan.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -18,7 +18,7 @@ Recorded data can be displayed from Hikari v2.0.0.0 onwards, but only after vers - All shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 1000 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `5` in server scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `5` in server scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Player Scope @@ -27,7 +27,7 @@ And still is Plan limitations, the list sorting is disturbed, so the display ord - All owned shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 50 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `4` in player scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `4` in player scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Showcase diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/addon/reforges.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/addon/reforges.md index 2a14509eb7..25fff1752a 100644 --- a/i18n/bg-BG/docusaurus-plugin-content-docs/current/addon/reforges.md +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/addon/reforges.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.0.0.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md index 304d39bc05..6f9f51d250 100644 --- a/i18n/bg-BG/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.1.1.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -44,7 +38,7 @@ _This is not necessary if you are using an H2 database._ ### Prepare for convert -To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console.\ +To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console. If a player is in the server, the conversion cannot be started. Once the conversion has begun, the server will be locked during the conversion process and no players will be able to join the server during the conversion. diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/addon/shopitemonly.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/addon/shopitemonly.md index c45062f8c2..1ccfe977b3 100644 --- a/i18n/bg-BG/docusaurus-plugin-content-docs/current/addon/shopitemonly.md +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/addon/shopitemonly.md @@ -2,17 +2,11 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT - -::: - -This addon prevents players from putting non-store items into store containers.\ +This addon prevents players from putting non-store items into store containers. Does not apply to stores that use the item inventory redirection API (aka. InventoryWrapper API). This Addon will check for container (or transferring) items on events such as the player closing the container or hopper access. diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md new file mode 100644 index 0000000000..9c8b4f7407 --- /dev/null +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md @@ -0,0 +1,55 @@ +# 6.2.0.10 + +## Major Changes + +- Added support for 1.21.6 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.7 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.8 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Some internal updates for packetevents(2.9.0 is now required.) +- Updated Lands support + +## Addon Changes + +- Added MatcherPlus Addon + - Allows support for BreweryX and AdvancedItems stacks in shops with improved matching abilities +- Added FabledSkyblock Compat +- Added Dominion Compat +- Added HuskTowns Compat +- Added IridiumSkyblock Compat +- Added member-create for member creation in ARM compat +- Added admin-override and quickshop.arm.admin permission for admin overrides in ARM + +## Minor Changes + +- Added configurations for the coordinates of the display item. +- Added /qs toggledisplayall on/off server/owned + - Players need to have permission node quickshop.toggledisplayall.admin to toggle all on the server. +- Added ability to use abbreviations in /qs price and /qs create commands such as 2.5k for 2500 +- Added ability to set default display status using shop.default-display in config.yml + +## Fixes + +- Fixed issue with display item being sent to the moon on 1.21.5 +- Fixed issue where TRADE_UI interactions interfered with quick create. +- Fixed issue with displays on protocollib falling through the chest +- Fixed issue with signs on .9 and previous .10 snapshots on early versions +- Implemented some performance improvements for paper servers +- Fixed all outstanding issues with Folia usage.(thanks to RootB33R/SleazLee for contributions) + +## Possible 6.2.0.11 Features + +Here's an outline for some features that may arrive in 6.2.0.11: + +- Additional compats/addons that have been piling up. + - see: https://github.com/QuickShop-Community/QuickShop-Hikari/issues/1756 +- gradle?(interested to see compilation time uplifts) +- Update documentation +- Update configuration comments +- Update configuration system? + - auto updating? + - Allows removal of the update code +- Remove waste spigot modules? + - Any versions of 1.20 that can be discarded due to low use? +- Bug fixing, of course +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... \ No newline at end of file diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md new file mode 100644 index 0000000000..b41c88662a --- /dev/null +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md @@ -0,0 +1,173 @@ +## Outline + +- Update documentation +- Update configuration comments +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... + +# 6.2.0.11 + +## Major Changes + +- Removed Spigot Platform Modules, and stopped loading QS if Spigot is detected. This will mean that unless the protocol changes that we use for display items, QS won't need updated for each version. +- Revamped Economy Code Completely + - New classes for all economy-related systems + - Any economy-related or benefits-related events are incompatible with previous versions. +- Added sign layout customizations per-type allowing you to change how lines are configured, an empty string('') will leave an empty line for that line of the sign. + +``` + #The layout of signs for shops. + layout: + + #The layout of BUYING shops. + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of FROZEN shops. + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of SELLING shops. + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +- Add wildcard support for item blacklist patterns(thanks to bennycallanan) + - Added support for wildcard patterns in the item blacklist configuration, allowing users to block entire categories of items with simple patterns. + + - Features + - Wildcard patterns like \*_AXE and \*_SPAWN_EGG now work in blacklist configuration + - Supports \* for any characters and ? for single character matching + - Case-insensitive pattern matching +- Overhauled GUI system(thanks to Yusakidev) + - Implemented gui.yml configuration file for customizing the GUI. + - Implemented better filtering for qs browse + - Implement GUI system to be more stable, and less error prone. + - Added gui.yml for fully configurable GUI layouts and text + - Browse menu: search, sort (price/name/stock), and filter (all/buying/selling/in-stock) + - Staff menu: search functionality for player/staff selection + - Grouped item pages for better shop browsing + - Refactored all menu pages to use configurable display/lore +- Added worldedit compat to QS internally as it's widely used. +- Revamped the taxation system to be more flexible and easier to configure. + - introduced a new progressive tax system that allows you to tax based on the balance of players.(suggested by YuanYuanOwO) + - introduced the ability to tax the player interacting with the shop, the owner, or both + - all tax-related configurations have been moved under the shop-tax section of the config. this may require reconfiguration of your tax settings. + - added a new ShopEnhancedTaxEvent, deprecated the old ShopTaxEvent. + - Added a new TaxManager, and TaxProvider interfaces, this allows for custom tax providers to be added by addons/third-party developers. + +## Addons/Compats Changes + +- Added UltimateClaims compat +- Added SimpleClaimSystem compat +- Added Quests by Pika addon +- Added BetonQuest addon +- Added Pl3xMap addon +- MatcherPlus Compat Improvements + - Added support for CrazyCrates + - Added support for ExcellentCrates + - Added support for SilkSpawners. +- WorldGuard Compat Improvements(Thanks to golovin12) + - Added clear permission handling: + - Region owners and members automatically have permission to create and trade in their own regions. + - Other players must have the appropriate WorldGuard flags enabled (quickshophikari-create, quickshophikari-trade) to interact with shops. + - If a shop is located outside any region, default QuickShop behavior applies (no extra restrictions) +- Added colored markers based on shop state for bluemap(thanks to YusakiDev) +- Updated dynmap/towny addons to use the new ShopTypeEnhancedEvent instead of ShopTypeEvent. +- Removed worldedit compat, it's now included in the main plugin. +- Added support for global flags to the worldguard compat. + +## Internals/Developer APIs + +- Removed several deprecated methods and classes. +- Revamped the interaction manager. It is now more flexible and allows external additions + - This involves two classes InteractionBehavior and InteractionType. + - InteractionType details the type of interaction such as: STANDING_LEFT_CLICK_SIGN, STANDING_LEFT_CLICK_SHOP + - InteractionBehavior outlines a behavior for an InteractionType such as CONTROL_PANEL and TRADE_UI +- Added UserLimitCalculationEvent, which allows for custom limits to be applied to users. + - This is useful for limiting the number of shops a user can have, or adding on to the existing limits provided by the ranks system without needing to implement a new RankLimiter. +- Added a new ShopLayoutProvider interface, and default implementation. + - This allows for custom layouts to be used for shops, allowing for more customization. + - This also allows for developers to override the default layout provider and create their own implementation. +- How to make your own? + - Implement the classes you would like to then register with the InteractionManager: + - ```java + InteractionManager manager = QuickShop.getInstance().getInteractionManager(); + + manager.interaction(new MyTradeInteraction()); + manager.behavior(new MyTradeBehavior()); + ``` +- Replaced some Apache Commons calls that could be easily replaced with built-in java methods, reduces some calls by ~ 1100ms/method call +- Deprecated the ShopType enum, and the ShopTypeEvent. These are replaced with the new IShopType interface and implementing classes. + - The new event is ShopTypeEnhancedEvent. + - This allows for third-party addons to add their own shop types, and simplifies code checks for translations. +- Updated config system to use Boosted-yaml + - this allows for auto-updating of config files without complex update scripts + - this also allows for the config system to not be minecraft-dependent. +- Replaced logical PaperLib calls with native PaperAPI calls. + +## Minor Changes + +- Bump Java version up to 21 +- Added shop.display-allow-enchants to enable/disable enchantments for display items on shops. +- Added workaround for packetevents not supporting custom enchants on itemstacks for virtual display items. +- Using locale translations for shop-type in mode toggle icon(thanks to ExyiN) +- Bumped Residence version for the compat(thanks to YuanYuanOwO) +- add world whitelist support(thanks to wling-art) +- added /qs database save command, which saves all currently dirty-marked shops to the database. +- Split up interactions _SHOPBLOCK into _SHOPBLOCK and _CONTAINER. + - _SHOPBLOCK relates to shops, where _CONTAINER relates to shop-valid containers that are not currently shops. +- Added inventory as an option for command panel, this is useful for adding a secondary option for players to open a shop's inventory. +- Moved crowdin arguments from system properties to config.yml + - crowdin-host + - use-crowdin-ota + +## Fixes + +- Fixes issue with item price restrictions(thanks to maxcom1) +- Fixes issue with 1.20.x protocol lib displays(thanks to YuanYuanOwO) +- Fixes issue when no item is in hand for itemdebug(thanks to YuanYuanOwO) +- Fixes issue with dominion addon(thanks to YuanYuanOwO) +- Add a simple check to avoid this. If it is not own shop, reject limit request directly.(Thanks to YuanYuanOwO) +- Fix NPE by not setting tax for price in TransactionBuilder(thanks to maxcom1) +- Fixes /quickshop suggestprice to differentiate between buy/sell shops. (Thanks to MidSpike) +- PacketEvents ClassNotFoundException with ProtocolLib(thanks to wling-art) +- Reallocate block state access to region thread for shop creation(thanks to r00tbeerman) +- resolve SLF4J StaticLoggerBinder loading error(thanks to wling-art) +- sign hijacking issue by validating sign facing direction(thanks to wling-art) +- Performance improvements for QuickShop disabling to prevent potential freezes. +- Fixed issue with 1.20.4 packetevents virtual displays not staying put. +- Fixes critical issue in GriefPrevention compatibility plugin. +- Fixes issue with shop owner not getting money when benefits active. +- Fixes for lands addon on folia, Use regionThread for Folia compatibility(thanks to YusakiDev) +- Fixes for TRADE_DIRECT on stacking shops +- Fixes issue for protocollib 5.4.0 with undocumented packet changes. +- Fixes issue where item stacks could be used on creation above the max stack size. +- Fixes issue with BukkitAudiences-related crashes on 1.21.11. +- Fix issue with shop deletion when getting too impatient. +- Fix the permission check issue when a shop owned by a non-owner is transferred to someone else. (thanks to YuanYuanOwO) +- Fix ui with supertool (thanks to YuanYuanOwO) +- Fix issue with logs generating outside debug mode. +- Fix issue with /qs find. +- Fix configuration loading timing. +- Fix configuration loading/creation warning message language. +- Fix command description language key mismatch(thanks to wling-art) +- Fix qs clean command on folia(thanks to wling-art) +- Fix per-player-shop-sign on folia(thanks to wling-art) +- Fix potential recursive deadlock in virtual display packet sending(thanks to wling-art) +- Fix configuration loading/creation warning message language. +- Fix issue with /qs browse and ShopItemOnly addon not behaving properly together on folia. +- Fix issue with PLAN using outdated APIs. +- Fix issue with /qs clean on folia.(thanks to wling-art) +- Fix issue with /qs cleanghost on folia(thanks to wling-art) +- More thread safety fixes for shops on folia.(thanks to wling-art) +- Fix owner payment calculations with benefits(thanks to wling-art) \ No newline at end of file diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md index 8172f9b410..dcc3edc67d 100644 --- a/i18n/bg-BG/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md @@ -20,20 +20,20 @@ the ControlComponent object with a custom one that will replace the original dur ### Introduction of the Revamped Packet System 1. **About**: - - A modular and scalable system for managing packets related to virtual display items in Minecraft. - - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. + - A modular and scalable system for managing packets related to virtual display items in Minecraft. + - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. 2. **Custom Packet Factories**: - - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. - - Packet types: - - **Spawn Packet**: Spawns a virtual item entity at a specific location. - - **Metadata Packet**: Updates the visual properties of virtual items. - - **Velocity Packet**: Adds motion/velocity to entities (currently optional). - - **Destroy Packet**: Removes the entity from the client view. + - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. + - Packet types: + - **Spawn Packet**: Spawns a virtual item entity at a specific location. + - **Metadata Packet**: Updates the visual properties of virtual items. + - **Velocity Packet**: Adds motion/velocity to entities (currently optional). + - **Destroy Packet**: Removes the entity from the client view. 3. **Error Handling and Logging**: - - Enhanced debug logs to trace packet-related issues. - - Detailed error messages for missing factories or unregistered listeners. + - Enhanced debug logs to trace packet-related issues. + - Detailed error messages for missing factories or unregistered listeners. #### Improvements: diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md index 7775308722..c6e0948d19 100644 --- a/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md index f420997a9c..38587e3784 100644 --- a/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md index 5ed8182c9a..259c55f342 100644 --- a/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md index 924a37ac49..7fd4596a6a 100644 --- a/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,6 +10,6 @@ This is a BungeeCord plugin, you need install it within your BungeeCord's plugin ## How does it work? -BungeeCord Bridge plugins will register a `quickshop:bungee` channel for fowarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. +BungeeCord Bridge plugins will register a `quickshop:bungee` channel for forwarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. All forwarding is indicated by QuickShop-Hikari on the Spigot server and ends when it is not needed. diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md index 27d68956a8..20fbaf7a0c 100644 --- a/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,5 +10,5 @@ This compatibility module added [Chest Protect](https://www.spigotmc.org/resourc ## How does it work? -This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident.\ +This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident. It also prevents players from creating shops on ChestProtect protected containers. diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md index 220e26d8bb..e1757e7be9 100644 --- a/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/dominion.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/dominion.md new file mode 100644 index 0000000000..e1195278a8 --- /dev/null +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/dominion.md @@ -0,0 +1,138 @@ +# Dominion + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and Dominion. + +It ensures that shop creation and trading respect Dominion’s land and territory protection system. + +--- + +## What Does It Do? + +Dominion allows players or groups to claim land and define territory-based permissions. + +Without compatibility: + +- Players could create shops inside territories they do not control. +- Visitors might trade inside protected dominions. +- Dominion permission rules might not apply to shop interactions. + +The Dominion compat module ensures that: + +- Shop creation respects territory ownership. +- Shop trading follows Dominion permission settings. +- Protected land remains secure from unauthorized shop usage. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a Dominion-controlled area. +- Whether the player has permission within that territory. +- Whether Dominion rules allow shop interaction. + +If the action is not permitted by Dominion settings, QuickShop blocks it. + +If the location is outside any Dominion territory, default QuickShop behavior applies. + +--- + +## Territory Owner Control + +With this module enabled: + +- Territory owners can create and manage shops inside their dominion. +- Trusted members follow territory-based permissions. +- Outsiders are restricted unless explicitly allowed. +- Shop actions respect Dominion’s land rules automatically. + +This prevents unauthorized shop placement inside protected territories. + +--- + +## Installation + +1. Install Dominion. +2. Install the QuickShop Dominion compat module. +3. Restart your server. + +The module activates automatically if Dominion is detected. + +No manual configuration linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside dominions +whitelist-mode: false + +# Allow territory owners to override shop permissions +allow-owner-override: true +``` + +If Dominion is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For servers using Dominion: + +- Restrict shop creation to territory owners or trusted members. +- Prevent shop creation in wilderness if desired. +- Allow dominion owners to manage shop permissions. +- Review Dominion permission settings to align with shop behavior. + +This ensures protected territories remain secure and organized. + +--- + +## Common Questions + +### Can players create shops in someone else's dominion? + +Only if Dominion permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You may allow or restrict shops outside dominions. + +### What happens if Dominion is removed? + +QuickShop returns to normal behavior and stops checking Dominion territories. + +--- + +## Summary + +The Dominion compat module: + +- Enforces territory-based permissions +- Prevents unauthorized shop creation +- Protects claimed land from misuse +- Integrates seamlessly with Dominion + +It is recommended for servers running Dominion. \ No newline at end of file diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md index 743d3ae666..2ac9b10488 100644 --- a/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md new file mode 100644 index 0000000000..07ba4ada66 --- /dev/null +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md @@ -0,0 +1,133 @@ +# FabledSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and FabledSkyblock. + +It ensures that shop creation and trading properly respect island boundaries and island permissions. + +--- + +## What Does It Do? + +On Skyblock servers, players build and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Players might trade in areas they should not. +- Island protection rules might not apply to shops. + +The FabledSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members behave correctly with shops. +- Island visitors are restricted appropriately. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a FabledSkyblock island. +- Whether the player has permission on that island. +- Whether island settings allow the action. + +If the action is not permitted by island rules, QuickShop will deny it. + +--- + +## Island Ownership Rules + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow island permission settings. +- Visitors can only trade if island permissions allow it. +- Outside of islands, default QuickShop behavior applies. + +--- + +## Installation + +1. Install FabledSkyblock. +2. Install the QuickShop FabledSkyblock compat module. +3. Restart your server. + +The module activates automatically if FabledSkyblock is detected. + +No manual linking is required. + +--- + +## Configuration + +If the module provides configuration options, they will appear in its `config.yml`. + +Typical options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If FabledSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most Skyblock servers: + +- Allow shop creation only inside islands. +- Prevent trading in the void or wilderness. +- Let island owners control shop permissions. +- Use island rank systems to manage shop access. + +This helps maintain economic balance between islands. + +--- + +## Common Questions + +### Can players create shops in the void? + +Only if your configuration allows it. +Most servers disable shop creation outside islands. + +### Does this affect island war or PvP modes? + +No. +The module only checks island ownership and permissions for shop interactions. + +### What happens if FabledSkyblock is removed? + +QuickShop returns to normal behavior. + +--- + +## Summary + +The FabledSkyblock compat module: + +- Protects island economies +- Enforces island permission rules +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is strongly recommended for any server running FabledSkyblock. \ No newline at end of file diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md index 81b13d2c6b..32614d3019 100644 --- a/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md @@ -2,17 +2,17 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -GreifPrevention compatibility module added compaitibility with GF. +GreifPrevention compatibility module added compatibility with GF. ## How does it work This module allow QuickShop-Hikari check if player have permission to create or use QuickShop in specific region. -And delete shops when claim removed, untrusted, unclimed, expired, resized or subclaim created. +And delete shops when claim removed, untrusted, unclaimed, expired, resized or subclaim created. ## Configuration diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md new file mode 100644 index 0000000000..e71b34d462 --- /dev/null +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md @@ -0,0 +1,139 @@ +# HuskTowns + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and HuskTowns. + +It ensures that shop creation and trading respect town and claim permissions defined by HuskTowns. + +--- + +## What Does It Do? + +HuskTowns allows players to create towns and claim land. + +Without compatibility: + +- Players could create shops inside towns they do not belong to. +- Visitors might trade inside protected towns. +- Town permission rules might not apply to shop interactions. + +The HuskTowns compat module ensures that: + +- Shop creation respects town ownership. +- Trading follows town permission settings. +- Town members and visitors are handled correctly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a HuskTowns claim. +- Whether the player is a town member, trusted player, or outsider. +- Whether the town's permission settings allow the action. + +If the action is not permitted by town rules, QuickShop blocks it. + +Outside of town claims, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Town Owner Control + +With this module enabled: + +- Town owners can create and manage shops inside their town. +- Town members follow town-based permission settings. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect town claim protection. + +This prevents unauthorized shop placement and trading inside protected towns. + +--- + +## Installation + +1. Install HuskTowns. +2. Install the QuickShop HuskTowns compat module. +3. Restart your server. + +The module activates automatically if HuskTowns is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside towns +whitelist-mode: false + +# Allow town owners to override shop permissions +allow-owner-override: true +``` + +If HuskTowns is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For town-based survival servers: + +- Restrict shop creation to town members. +- Allow trading only where town permissions permit. +- Prevent shop creation in wilderness if desired. +- Enable owner override for better administrative control. + +This helps maintain town-based economic balance. + +--- + +## Common Questions + +### Can players create shops in another town? + +Only if that town's permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You can allow or restrict shops outside towns. + +### What happens if HuskTowns is removed? + +QuickShop returns to normal behavior and stops checking town permissions. + +--- + +## Summary + +The HuskTowns compat module: + +- Enforces town-based land permissions +- Protects towns from unauthorized shop usage +- Integrates smoothly with HuskTowns +- Requires minimal setup + +It is recommended for any server running HuskTowns. \ No newline at end of file diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md new file mode 100644 index 0000000000..3fa2995eb0 --- /dev/null +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md @@ -0,0 +1,139 @@ +# IridiumSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and IridiumSkyblock. + +It ensures that shop creation and trading respect island boundaries and island permission settings defined by IridiumSkyblock. + +--- + +## What Does It Do? + +IridiumSkyblock allows players to create and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Visitors might trade inside protected islands. +- Island protection rules might not apply correctly to shops. + +The IridiumSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members and visitors are handled properly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside an IridiumSkyblock island. +- Whether the player is the island owner, member, or visitor. +- Whether island permissions allow shop interaction. + +If the action is not permitted, QuickShop blocks it. + +Outside of islands, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Island Owner Permissions + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow the island's permission configuration. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect island protection rules. + +This prevents unauthorized shop usage inside protected islands. + +--- + +## Installation + +1. Install IridiumSkyblock. +2. Install the QuickShop IridiumSkyblock compat module. +3. Restart your server. + +The module activates automatically if IridiumSkyblock is detected. + +No additional setup is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If IridiumSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most IridiumSkyblock servers: + +- Restrict shop creation to island owners. +- Allow island members to trade if trusted. +- Prevent shop creation in the void or wilderness. +- Enable owner override for better management. + +This helps maintain balanced island economies. + +--- + +## Common Questions + +### Can players create shops outside their island? + +Only if your configuration allows it. + +Most Skyblock servers restrict shops to island areas. + +### Do island ranks affect shop permissions? + +Yes, if your island permissions are configured to control interaction rights. + +QuickShop follows island rules. + +### What happens if IridiumSkyblock is removed? + +QuickShop returns to normal behavior and stops checking island permissions. + +--- + +## Summary + +The IridiumSkyblock compat module: + +- Protects island economies +- Enforces island-based permissions +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is recommended for any server running IridiumSkyblock. diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md new file mode 100644 index 0000000000..3b4726cb9d --- /dev/null +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md @@ -0,0 +1,151 @@ +# ItemMatcherPlus + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +The ItemMatcherPlus module improves how QuickShop matches custom and plugin-modified items. + +It allows QuickShop to properly recognize and stack items created by other plugins that normally would not match using standard Bukkit item comparisons. + +This module is especially useful for servers that use: + +- Custom items +- Modified metadata +- NBT-based systems +- Advanced crate rewards +- Custom brewing systems +- Custom fishing rewards + +--- + +## What Does It Do? + +By default, Minecraft item matching checks: + +- Material type +- Basic metadata + +However, many plugins modify items with: + +- Custom NBT data +- Hidden tags +- Custom lore formats +- Unique identifiers + +Without enhanced matching: + +- Items may not stack +- Shops may refuse valid items +- Transactions may fail +- Buying/selling may not behave correctly + +ItemMatcherPlus improves compatibility and matching accuracy. + +--- + +## Supported Plugins + +ItemMatcherPlus includes built-in support for: + +- AdvancedItems +- BreweryX +- CrazyCrates +- ExcellentCrates +- PyroFishing +- SilkSpawners + +If any of these plugins are installed, QuickShop will automatically use enhanced matching logic. + +No additional configuration is required. + +--- + +## How It Works + +When a player trades with a shop: + +1. QuickShop checks the item. +2. If ItemMatcherPlus is enabled, it performs advanced matching. +3. Plugin-specific metadata is validated. +4. The item is confirmed as a match (or rejected safely). + +This allows: + +- Proper stacking of custom items +- Correct shop transactions +- Accurate buy/sell detection +- Reduced false mismatches + +--- + +## Installation + +1. Download the ItemMatcherPlus module. +2. Place the JAR into your `plugins` folder. +3. Restart your server. + +If supported plugins are detected, compatibility activates automatically. + +--- + +## Configuration + +ItemMatcherPlus does not require configuration. + +It activates automatically when: + +- The module is installed +- A supported plugin is detected + +If a supported plugin is not installed, no extra logic runs. + +--- + +## Why You Should Use It + +You should install ItemMatcherPlus if your server uses: + +- Custom fishing plugins +- Custom brewing systems +- Crate plugins with modified items +- Custom spawners +- Any plugin that modifies NBT data + +Without it, shops may not properly recognize custom items. + +--- + +## Common Questions + +### Do I need this if I don't use custom item plugins? + +No. +If you only use vanilla items, this module is not necessary. + +### Does this affect performance? + +The module only activates enhanced matching when needed. + +Normal item matching remains fast and efficient. + +### Will it break existing shops? + +No. +It improves compatibility and matching accuracy without modifying existing shop data. + +--- + +## Summary + +ItemMatcherPlus: + +- Improves item matching accuracy +- Adds support for major custom item plugins +- Prevents stacking and trade issues +- Requires no configuration +- Activates automatically + +If you run a heavily customized economy server, this module is highly recommended. \ No newline at end of file diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md index ba87606698..d4ae7d129a 100644 --- a/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/lands.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/lands.md index 06296f5779..7671fcdfe0 100644 --- a/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/lands.md +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/lands.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/openinv.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/openinv.md index c51f628615..4807d57873 100644 --- a/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/openinv.md +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/openinv.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md new file mode 100644 index 0000000000..c2136320b0 --- /dev/null +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md @@ -0,0 +1,138 @@ +# SimpleClaimSystem + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and SimpleClaimSystem. + +It ensures that shop creation and trading respect land ownership and claim permissions defined by SimpleClaimSystem. + +--- + +## What Does It Do? + +SimpleClaimSystem allows players to claim land and protect it from unauthorized interaction. + +Without compatibility: + +- Players could create shops inside claims they do not own. +- Visitors might trade inside protected areas. +- Claim protection might not apply correctly to shops. + +The SimpleClaimSystem compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops within their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a SimpleClaimSystem claim. +- Whether the player has permission within that claim. +- Whether claim rules allow shop interaction. + +If the action is not permitted by the claim, QuickShop blocks it. + +If the location is outside any claim, default QuickShop behavior applies. + +--- + +## Claim Owner Control + +With this module enabled: + +- Claim owners can create and manage shops inside their claim. +- Trusted players follow claim-based permissions. +- Visitors are restricted unless explicitly allowed. +- Claim protection rules apply automatically to shop interactions. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install SimpleClaimSystem. +2. Install the QuickShop SimpleClaimSystem compat module. +3. Restart your server. + +The module activates automatically if SimpleClaimSystem is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If SimpleClaimSystem is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Enable owner override for easier management. + +This ensures players maintain control over their protected land. + +--- + +## Common Questions + +### Can players create shops in someone else's claim? + +Only if claim permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can allow shops outside claims or restrict them. + +### What happens if SimpleClaimSystem is removed? + +QuickShop will revert to default behavior and stop checking claim permissions. + +--- + +## Summary + +The SimpleClaimSystem compat module: + +- Enforces claim-based permissions +- Prevents unauthorized shop creation +- Protects land from unwanted trading +- Requires minimal setup + +It is recommended for servers running SimpleClaimSystem. \ No newline at end of file diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md index a84dbf057b..4dfa8ae97c 100644 --- a/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/towny.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/towny.md index 52ab4818f4..b26c19d335 100644 --- a/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/towny.md +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/towny.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -26,7 +26,7 @@ Town sub-command allow you switch a quickshop between regular shop and town shop For a nation shop, the shop owner will changed to nation fake player created by Towny, and use Nation's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from nation Towny account.\ +All purchases will deposit or withdraw money from nation Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Nation Shop. @@ -35,7 +35,7 @@ If Plot type restriction is enabled, only a specific Plot type can create a Nati For a town shop, the shop owner will changed to town fake player created by Towny, and use Town's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from town Towny account.\ +All purchases will deposit or withdraw money from town Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Town Shop. @@ -88,7 +88,7 @@ bank-mode: ## Permission Override -By adjust configuration, you're allow mayor or king automaticlly grant administrator permission on all shops in their management range. +By adjust configuration, you're allow mayor or king automatically grant administrator permission on all shops in their management range. ```yaml #Should allow Mayor grant the shop administrator permission on they town. @@ -168,7 +168,7 @@ This causes Towny and QuickShop Hikari to use accounts with the same name but di You can adjust the option in configuration to enable workaround. -NOTE: It will force turned on if detected EssentialsX installed on your server.\ +NOTE: It will force turned on if detected EssentialsX installed on your server. At present, we do not provide a method for disable it. ```yaml diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md new file mode 100644 index 0000000000..0189958495 --- /dev/null +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md @@ -0,0 +1,138 @@ +# UltimateClaims + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and UltimateClaims. + +It ensures that shop creation and trading respect land claim permissions managed by UltimateClaims. + +--- + +## What Does It Do? + +On servers using land-claim plugins, players protect areas of the world from unauthorized interaction. + +Without compatibility: + +- Players may create shops inside claims they do not own. +- Visitors might trade in areas where they should not. +- Claim protection rules might not apply correctly to shops. + +The UltimateClaims compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops inside their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a claim. +- Whether the player has permission in that claim. +- Whether claim rules allow shop interaction. + +If the action violates claim settings, QuickShop blocks it. + +Outside of claims, normal QuickShop behavior applies. + +--- + +## Claim Owner Permissions + +With this module enabled: + +- Claim owners can create and manage shops within their claim. +- Trusted players follow claim permission settings. +- Visitors are restricted based on claim configuration. +- Shop actions outside of claims behave normally. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install UltimateClaims. +2. Install the QuickShop UltimateClaims compat module. +3. Restart your server. + +If UltimateClaims is detected on startup, compatibility activates automatically. + +No additional linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Common options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If UltimateClaims is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Keep owner override enabled for better control. + +This ensures players maintain full control over their protected land. + +--- + +## Common Questions + +### Can players create shops inside someone else's claim? + +Only if the claim permissions allow it. + +Otherwise, QuickShop will block the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can choose to restrict shops to claimed land only. + +### What happens if UltimateClaims is removed? + +QuickShop returns to normal behavior without claim checks. + +--- + +## Summary + +The UltimateClaims compat module: + +- Protects claimed land from unauthorized shop usage +- Enforces claim-based permissions +- Integrates smoothly with land-claim servers +- Requires minimal setup + +It is recommended for any server running UltimateClaims. \ No newline at end of file diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md index 87a71a205c..6437754503 100644 --- a/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md @@ -2,8 +2,10 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. Find out more [here](../modules/shops/worldedit.md). + +Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. \ No newline at end of file diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/development/01-getting-start.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/development/01-getting-start.md index 92b773451e..0e78e52367 100644 --- a/i18n/bg-BG/docusaurus-plugin-content-docs/current/development/01-getting-start.md +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/development/01-getting-start.md @@ -6,8 +6,8 @@ This series of articles will help you build extensions for QuickShop-Hikari or i ## License -QuickShop-Hikari is open source using the [GPLv3](https://www.gnu.org/licenses/quick-guide-gplv3.en.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari).\ -You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the GPLv3 agreement. +QuickShop-Hikari is open source using the [AGPLv3](https://www.gnu.org/licenses/agpl-3.0.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari). +You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the AGPLv3 agreement. ## 🚧Don't trust Javadoc too much @@ -48,7 +48,7 @@ QuickShop-Hikari divides operation sources into three types: - Server Main Thread - Async Thread (any other threads but not server main thread) -- Hybird +- Hybrid If you access the API through the wrong thread, QuickShop-Hikari will force a runtime error to be thrown. @@ -58,4 +58,4 @@ For APIs that may trigger network IO or long-time disk IO, you are required not You can see [Util.ensureThread()](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/3d1d271e1106ea1c83cc6068f8232ab7c7860918/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/util/Util.java#L351) and find out the requirements of the different APIs by looking up their use. APIs that do not use Util.ensureThread() are allowed to be called from any thread by default. -You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. +You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. \ No newline at end of file diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md index aa2404c594..7828d414ad 100644 --- a/i18n/bg-BG/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md @@ -10,7 +10,7 @@ ShopManager manager = api.getShopManager(); ## Getting a shop -Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates.\ +Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates. QuickShop-Hikari's store is only bound to one half of "Large Chest", so to get the store, you need to query both the cube itself and its associated cube. The good thing is that there is an API in the plugin that allows you to handle this situation very easily. @@ -71,7 +71,7 @@ manager.deleteShop(shop) // Permanently delete this store, both memory and datab ## Identify a store -Please note that store locations are technically variable and you should not use coordinates to identify a store.\ +Please note that store locations are technically variable and you should not use coordinates to identify a store. Also RuntimeRandomUniqueId should not be used to identify the store, as the name suggests, the value changes every time the server restarts, it should only be used to handle scenarios where the player interacts with the server. ```java diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md index 543f1851da..4f839ed652 100644 --- a/i18n/bg-BG/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md @@ -1,6 +1,6 @@ # 0x05 Per shop permission -QuickShop-Hikari has a per shop permission management system.\ +QuickShop-Hikari has a per shop permission management system. Therefore, for a normal permission node check is not enough, you need to attach an additional check. ## Check with shop diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/development/06-protocol-system.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/development/06-protocol-system.md index 5d37a15536..0380b789f9 100644 --- a/i18n/bg-BG/docusaurus-plugin-content-docs/current/development/06-protocol-system.md +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/development/06-protocol-system.md @@ -15,30 +15,30 @@ This documentation will guide developers through the components, implementation - **Purpose**: Manages packet handling and initialization logic. - **Interface**: `PacketHandler` - **Key Methods**: - - `Map> factories()` - - Retrieves a map of supported `PacketFactory` instances keyed by game versions. - - `void initialize()` - - Initializes the packet handler. - - `Optional> factory(String version)` - - Retrieves a `PacketFactory` for a specific game version. + - `Map> factories()` + - Retrieves a map of supported `PacketFactory` instances keyed by game versions. + - `void initialize()` + - Initializes the packet handler. + - `Optional> factory(String version)` + - Retrieves a `PacketFactory` for a specific game version. ### 2. **PacketFactory** - **Purpose**: Creates and sends specific packet types. - **Interface**: `PacketFactory` - **Supported Packets**: - - **Spawn Packet**: - - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. - - Example Use: Representing shop items visually. - - **Metadata Packet**: - - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. - - Example Use: Updating item display name or properties. - - **Velocity Packet**: - - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. - - Example Use: Custom animations for virtual items. - - **Destroy Packet**: - - Removes the entity from the client view. Created using `createDestroyPacket()`. - - Example Use: Unloading or removing a virtual display item. + - **Spawn Packet**: + - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. + - Example Use: Representing shop items visually. + - **Metadata Packet**: + - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. + - Example Use: Updating item display name or properties. + - **Velocity Packet**: + - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. + - Example Use: Custom animations for virtual items. + - **Destroy Packet**: + - Removes the entity from the client view. Created using `createDestroyPacket()`. + - Example Use: Unloading or removing a virtual display item. Developers implementing custom `PacketFactory` should ensure these packets are correctly handled and optimized for performance. @@ -46,24 +46,24 @@ Developers implementing custom `PacketFactory` should ensure these packets are c - **Purpose**: Oversees the lifecycle of virtual display items and integrates with packet handlers. - **Key Features**: - - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). - - Manages virtual display items mapped to chunks. - - Provides thread-safe operations for adding and removing display items. + - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). + - Manages virtual display items mapped to chunks. + - Provides thread-safe operations for adding and removing display items. ### 4. **VirtualDisplayItem** - **Purpose**: Represents a virtual item displayed to players. - **Key Features**: - - Generates and caches packets for spawning, metadata, velocity, and destruction. - - Manages packet senders for each player. - - Handles spawn and removal operations dynamically. + - Generates and caches packets for spawning, metadata, velocity, and destruction. + - Manages packet senders for each player. + - Handles spawn and removal operations dynamically. ### 5. **ProtocolLibHandler and PacketEventsHandler** - **Purpose**: Provide implementations of `PacketHandler` using ProtocolLib and PacketEvents, respectively. - **Differences**: - - `ProtocolLibHandler` leverages ProtocolLib API. - - `PacketEventsHandler` uses the PacketEvents library. + - `ProtocolLibHandler` leverages ProtocolLib API. + - `PacketEventsHandler` uses the PacketEvents library. --- @@ -140,11 +140,11 @@ public class CustomPacketFactory implements PacketFactory { Packet factories are provided for specific game versions through two primary implementations: - **ProtocolLib**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` - **PacketEvents**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` --- diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md new file mode 100644 index 0000000000..aebc035f87 --- /dev/null +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md @@ -0,0 +1,297 @@ +# Interaction System (Developer Guide) + +The Interaction System allows developers to fully customize how players interact with shops. + +As of 6.2.0.11, the system has been redesigned to be: + +- Modular +- Extensible +- Thread-safe +- Fully customizable by third-party addons + +This guide will walk you through: + +1. What the Interaction System is +2. Getting the `InteractionManager` +3. Understanding `InteractionType` +4. Understanding `InteractionBehavior` +5. Registering custom interactions +6. Best practices + +--- + +# Overview + +The Interaction System is composed of three main components: + +| Component | Purpose | +| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| `InteractionType` | Describes **what kind of click happened** (standing, sneaking, left-click, sign, shopblock, etc.) | +| `InteractionBehavior` | Describes **what action should happen** when that type is triggered | +| `InteractionManager` | Central registry that manages interactions and behaviors | + +This separation allows developers to: + +- Add new click types +- Add new behaviors +- Override existing ones +- Extend QuickShop without modifying core code + +--- + +# Getting the InteractionManager + +To begin registering custom interactions, you must retrieve the `InteractionManager` instance. + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +If you are working directly with the plugin instance: + +```java +InteractionManager manager = QuickShop.getInstance().getInteractionManager(); +``` + +Once obtained, you can: + +- Register new interaction types +- Register new behaviors +- Override existing behaviors + +--- + +# Understanding InteractionType + +`InteractionType` represents **how** a player interacted with a shop. + +Examples include: + +- `STANDING_LEFT_CLICK_SIGN` +- `STANDING_RIGHT_CLICK_SHOPBLOCK` +- `SNEAKING_LEFT_CLICK_CONTAINER` +- etc. + +Each `InteractionType` defines: + +- Player stance (standing/sneaking) +- Click type (left/right) +- Target (sign/shopblock/container) + +InteractionTypes do NOT define behavior — they only define the trigger. + +--- + +# Understanding InteractionBehavior + +`InteractionBehavior` defines **what happens** when an interaction is triggered. + +Examples of built-in behaviors: + +- `TRADE_INTERACTION` +- `TRADE_UI` +- `CONTROL_PANEL` +- `CONTROL_PANEL_UI` +- `NONE` + +A behavior: + +- Executes logic +- May open GUIs +- May send chat panels +- May directly trade items +- Can cancel or modify flow + +This separation makes it easy to reuse behaviors across multiple interaction types. + +--- + +# Registering Custom Interactions + +There are two things you can register: + +- A custom `InteractionType` +- A custom `InteractionBehavior` + +--- + +## Creating a Custom InteractionBehavior + +Create a class implementing `InteractionBehavior`. + +Example: + +```java +public class MyTradeBehavior implements InteractionBehavior { + + @Override + public String getKey() { + return "MY_CUSTOM_TRADE"; + } + + @Override + public void execute(InteractionClick click) { + Player player = click.getPlayer(); + Shop shop = click.getShop(); + + player.sendMessage("You triggered my custom interaction!"); + + // Add your custom logic here + } +} +``` + +Then register it: + +```java +InteractionManager manager = api.getInteractionManager(); +manager.behavior(new MyTradeBehavior()); +``` + +Now your behavior is available for use. + +--- + +## Creating a Custom InteractionType + +You may also register custom interaction types if you want to introduce new trigger definitions. + +Example: + +```java +public class MyCustomInteraction implements InteractionType { + + @Override + public String getKey() { + return "STANDING_DOUBLE_CLICK_SIGN"; + } + + @Override + public boolean matches(InteractionClick click) { + // Define custom logic to detect this interaction + return click.isStanding() + && click.isSign() + && click.isDoubleClick(); + } +} +``` + +Register it: + +```java +manager.interaction(new MyCustomInteraction()); +``` + +--- + +# Binding Types to Behaviors + +The InteractionManager internally maps interaction types to behaviors based on configuration and registration order. + +Once your behavior is registered: + +- It can be referenced in `interaction.yml` +- Or attached programmatically + +Example interaction.yml usage: + +```yaml +STANDING_LEFT_CLICK_SIGN: MY_CUSTOM_TRADE +``` + +--- + +# The InteractionClick Object + +When your behavior executes, you receive an `InteractionClick` object. + +It provides: + +- `getPlayer()` +- `getShop()` +- `getLocation()` +- `isSneaking()` +- `isSign()` +- `isShopBlock()` +- etc. + +This gives full context for safe execution. + +--- + +# Advanced: Overriding Built-in Behavior + +If you register a behavior using the same key as an existing one, your behavior can override the default. + +⚠️ Be careful when doing this — you are replacing core functionality. + +--- + +# Best Practices + +### Always Use Unique Keys + +Avoid naming collisions: + +``` +MYPLUGIN_CUSTOM_BEHAVIOR +``` + +### Keep Behavior Lightweight + +Do not block the main thread with: + +- Heavy database calls +- File IO +- Network calls + +Use async tasks if needed. + +### Respect Permissions + +Always validate: + +```java +if (!player.hasPermission("myplugin.use")) { + return; +} +``` + +### Avoid Hard Overrides Unless Necessary + +Instead of replacing built-in behaviors, consider extending them. + +--- + +# Example: Full Minimal Implementation + +```java +public class ExampleAddon { + + public void register(QuickShopAPI api) { + + InteractionManager manager = api.getInteractionManager(); + + manager.behavior(new MyTradeBehavior()); + manager.interaction(new MyCustomInteraction()); + } +} +``` + +--- + +# Conclusion + +The Interaction System is designed to allow: + +- Full extensibility +- Clean separation of triggers and actions +- Easy integration for third-party developers + +By retrieving the `InteractionManager`: + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +You gain full control over how shops respond to player actions. \ No newline at end of file diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/development/08-tax-manager.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/development/08-tax-manager.md new file mode 100644 index 0000000000..72a56f9e88 --- /dev/null +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/development/08-tax-manager.md @@ -0,0 +1,266 @@ +# Tax System (Developer Guide) + +The QuickShop tax system allows server owners and developers to define how transaction taxes are calculated, distributed, and extended. + +As of 6.2.0.11, the tax system has been fully rewritten to provide: + +- A flexible TaxManager +- Pluggable TaxProvider support +- Progressive taxation +- Tax targeting (shop owner, interacting player, or both) +- Custom extension capability for third-party addons + +This guide explains how to work with the tax system programmatically. + +--- + +# Overview + +The tax system is composed of three core components: + +TaxManager +Responsible for coordinating tax calculation and execution. + +TaxProvider +Defines how tax values are calculated. + +TaxRates +Represents calculated tax results for a transaction. + +The system is designed to allow custom providers to be registered and used without modifying core logic. + +--- + +# Getting the TaxManager + +To work with the tax system, retrieve the TaxManager from the ShopManager. + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +Once obtained, you can: + +- Access current tax configuration +- Register custom tax providers +- Calculate tax values +- Hook into tax events + +--- + +# How the Tax System Works + +During a shop transaction: + +1. A base price is determined. +2. The TaxManager selects the active TaxProvider. +3. The TaxProvider calculates applicable tax. +4. A TaxRates object is produced. +5. The system applies the tax to: + + - Shop owner + - Interacting player + - Or both (depending on configuration) + +This architecture allows tax behavior to be modified without altering transaction logic. + +--- + +# TaxProvider + +A TaxProvider defines how tax values are calculated. + +You may create your own provider to implement: + +- Progressive tax brackets +- Flat percentage tax +- Conditional tax rules +- Region-based tax +- Rank-based tax +- Time-based tax + +Example minimal provider: + +```java +public class MyCustomTaxProvider implements TaxProvider { + + @Override + public TaxRates calculateTax(TaxContext context) { + + double basePrice = context.getPrice(); + + double taxAmount = basePrice * 0.05; // 5% flat tax + + return new TaxRates() + .ownerTax(taxAmount) + .buyerTax(0.0); + } +} +``` + +Then register it: + +```java +taxManager.provider(new MyCustomTaxProvider()); +``` + +Once registered, your provider will be used for tax calculations. + +--- + +# TaxRates + +TaxRates represents the result of a tax calculation. + +It typically contains: + +- Owner tax amount +- Buyer tax amount +- Total tax impact +- Metadata (if applicable) + +The transaction system will read from TaxRates and apply deductions accordingly. + +--- + +# Progressive Taxation + +The built-in system supports progressive tax structures. + +This allows server administrators to tax based on: + +- Player balance +- Shop owner balance +- Configured tax brackets + +Example configuration concept: + +- 0–10,000 balance → 1% tax +- 10,000–100,000 → 2% tax +- 100,000+ → 3% tax + +Developers can extend or override this logic inside a custom TaxProvider. + +--- + +# Targeting Tax + +The new tax system allows taxes to be applied to: + +- Shop owner +- Interacting player +- Both + +This is controlled via configuration, but custom providers can override distribution logic by adjusting TaxRates output. + +Example: + +```java +return new TaxRates() + .ownerTax(basePrice * 0.02) + .buyerTax(basePrice * 0.01); +``` + +--- + +# Registering a Custom TaxProvider + +To replace or extend tax logic: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); + +taxManager.provider(new MyCustomTaxProvider()); +``` + +You may register only one primary provider at a time. If multiple providers are needed, implement internal delegation within your custom provider. + +--- + +# Tax Events + +The tax system integrates with the event system. + +The modern event used is: + +ShopEnhancedTaxEvent + +This replaces legacy tax events and provides improved context, including: + +- Transaction builder reference +- TaxRates object +- Modification capability before final execution + +You can listen for the event and modify tax behavior dynamically: + +```java +@EventHandler +public void onTax(ShopEnhancedTaxEvent event) { + + TaxRates rates = event.getTaxRates(); + + // Example: Give VIP players reduced owner tax + if (event.getOwner().hasPermission("vip.tax.discount")) { + rates.ownerTax(rates.getOwnerTax() * 0.5); + } +} +``` + +--- + +# Best Practices + +Always keep tax calculations lightweight. + +Avoid: + +- Heavy database queries inside calculateTax +- Blocking network calls +- Long-running computations + +If complex logic is required, pre-cache required data outside the tax execution path. + +Ensure negative tax values are not returned unless intentional. + +Always validate final amounts before applying modifications. + +Respect configuration hierarchy unless intentionally overriding it. + +--- + +# Example Full Implementation + +```java +public class ExampleTaxAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + TaxManager taxManager = manager.taxManager(); + + taxManager.provider(new MyCustomTaxProvider()); + } +} +``` + +--- + +# Conclusion + +The new tax system is designed for: + +- Flexibility +- Extensibility +- Clean separation of concerns +- Future expansion + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +You gain full control over how QuickShop calculates and applies tax during transactions. \ No newline at end of file diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/development/09-layout-provider.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/development/09-layout-provider.md new file mode 100644 index 0000000000..55e3cd3e91 --- /dev/null +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/development/09-layout-provider.md @@ -0,0 +1,275 @@ +# Shop Layout Provider (Developer Guide) + +The Shop Layout Provider system allows developers to customize how shop signs are structured and rendered. + +As of 6.2.0.11, shop layouts are no longer hardcoded. Instead, they are controlled through the `IShopLayoutProvider` interface, which allows: + +- Custom sign line ordering +- Per-shop-type layouts (BUYING, SELLING, FROZEN, or custom types) +- Dynamic layout resolution +- Complete replacement of the default layout system + +This guide explains how to access, override, and implement a custom layout provider. + +--- + +# Overview + +The layout provider controls how shop sign lines are arranged. + +Instead of hardcoding: + +Line 1 → Header +Line 2 → Trading info +Line 3 → Item +Line 4 → Price + +The system now allows full customization through: + +- Config-based layout definitions +- Custom `IShopLayoutProvider` implementations +- Runtime overrides + +The default implementation is `SimpleShopLayoutProvider`. + +--- + +# Accessing the Layout Provider + +To retrieve the current layout provider: + +```java +ShopManager manager = api.getShopManager(); +IShopLayoutProvider provider = manager.shopLayoutProvider(); +``` + +To replace the layout provider with a custom one: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Once replaced, your implementation will control how shop layouts are generated. + +--- + +# Understanding IShopLayoutProvider + +`IShopLayoutProvider` defines how layout data is retrieved and resolved. + +It is responsible for: + +- Providing layout configuration per shop type +- Determining which layout to use +- Supplying formatted line keys +- Allowing future extensibility + +The default implementation reads layout definitions from configuration and applies them based on shop type. + +--- + +# Default Layout Example + +The default configuration-based layout looks like this: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +Each line maps to a layout component key. + +An empty string (`""`) leaves that line blank. + +The layout provider resolves these keys into actual sign content. + +--- + +# Creating a Custom Layout Provider + +To override the default behavior, implement `IShopLayoutProvider`. + +Example minimal implementation: + +```java +public class MyCustomLayoutProvider implements IShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + + ShopLayout layout = new ShopLayout(); + + layout.setLine(1, "Custom Header"); + layout.setLine(2, "Owner: " + shop.getOwnerName()); + layout.setLine(3, shop.getItem().getType().name()); + layout.setLine(4, "$" + shop.getPrice()); + + return layout; + } +} +``` + +Then register it: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Your layout will now control all shop sign formatting. + +--- + +# Per-Type Layout Control + +Because the system no longer depends on the legacy ShopType enum, layouts can support: + +- Built-in types (BUYING, SELLING, FROZEN) +- Custom shop types +- Addon-defined shop types + +Your provider can determine layout logic dynamically: + +```java +@Override +public ShopLayout provideLayout(Shop shop) { + + if (shop.getShopType().key().equals("FROZEN")) { + return frozenLayout(shop); + } + + return defaultLayout(shop); +} +``` + +This allows conditional formatting, localization adjustments, or special event styling. + +--- + +# Advanced Customization + +A custom layout provider can: + +- Pull data from external plugins +- Inject dynamic placeholders +- Modify layout per player +- Apply formatting logic +- Override color schemes +- Apply region-based formatting +- Implement animated sign systems + +Because the layout provider is resolved at runtime, you can compute layouts dynamically instead of reading static config. + +--- + +# Replacing vs Extending the Default Provider + +You have two options: + +Replace entirely: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Or extend the default implementation: + +```java +public class ExtendedLayoutProvider extends SimpleShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + ShopLayout base = super.provideLayout(shop); + + base.setLine(1, "[Extended] " + base.getLine(1)); + + return base; + } +} +``` + +Extending is safer if you only want to modify small portions. + +--- + +# Best Practices + +Keep layout generation lightweight. + +Avoid: + +- Heavy database queries +- Blocking IO +- Complex network calls + +Layout generation runs during shop updates and sign refresh events. + +Always handle null values safely. + +Ensure layout line count does not exceed sign limits. + +Avoid hardcoding shop type names unless necessary. + +If your layout supports custom shop types, validate their keys properly. + +--- + +# Example Full Registration + +```java +public class LayoutAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + + manager.shopLayoutProvider(new MyCustomLayoutProvider()); + } +} +``` + +--- + +# Conclusion + +The Shop Layout Provider system allows complete control over shop sign structure. + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +``` + +And setting: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +You can redefine how every shop is displayed on the server. + +This system was designed to support: + +- Extensibility +- Custom shop types +- Localization +- Dynamic formatting +- Future expansion \ No newline at end of file diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/faq/compare-reremake.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/faq/compare-reremake.md index aaa1a9e507..6b39f02520 100644 --- a/i18n/bg-BG/docusaurus-plugin-content-docs/current/faq/compare-reremake.md +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/faq/compare-reremake.md @@ -64,7 +64,7 @@ If you are a Reremake user, you may be confused about the differences between Hi ## Which one should I use? Well, it depends on what your needs are.\ -If you have an old server (<1.20) instance, Reremake is your only choice.\ +If you have an old server ({'<'}1.20) instance, Reremake is your only choice.\ ~~If you are in China which has GFW interfere, you also should consider Reremake because it doesn't need to load libraries from Global Internet.~~ Solved in 6.0.0.0. If none of these applies, give Hikari a try! diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md index 551f579e7c..172be3a69b 100644 --- a/i18n/bg-BG/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md @@ -1,8 +1,8 @@ # Where Addons/Compacts is -Addons and Compatilibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. +Addons and Compatibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. -- Open Modrinth versions page, locate the version your're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) +- Open Modrinth versions page, locate the version you're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) - Frantically slide your mouse wheel down until the lowest end of the page. - You get it! diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/internal/database-schema.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/internal/database-schema.md index fea685e4fc..45e04adb56 100644 --- a/i18n/bg-BG/docusaurus-plugin-content-docs/current/internal/database-schema.md +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/internal/database-schema.md @@ -4,17 +4,17 @@ This chapter will explain the implementation details of QuickShop Hikari's datab ## Tables -This section explains the database tables created by QuickShop-Hikari.\ -Unless otherwise specified, the initial `qs_` in table name is the table prefix.\ +This section explains the database tables created by QuickShop-Hikari. +Unless otherwise specified, the initial `qs_` in table name is the table prefix. For the latest code definition for each table, see: [DataTables.java](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/hikari/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/database/DataTables.java) ### `data` -This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information.\ -No matter what, a data record should not be modified after it is created, until it got deleted.\ +This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information. +No matter what, a data record should not be modified after it is created, until it got deleted. Any new changes to the shop should create a new copy, apply the changes to the copy, and insert it as a new record. -Basiclly, Copy-on-write. +Basically, Copy-on-write. A data record only be deleted from the database when no any table references their `data_id`. @@ -29,7 +29,7 @@ A data record only be deleted from the database when no any table references the | unlimited | BIT NOT NULL | 0 | Indicates whether this store is an unlimited store, 0=Limited, 1=Unlimited | | hologram | BIT NOT NULL | 0 | Indicates the suspension status of this store's display item, 0=Follow global settings, 1=Disabled | | tax_account | VARCHAR(36) | NULL | The uuid for tax account, If it is not NULL, tax will be paid to the specified account | -| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serilized to JSON string | +| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serialized to JSON string | | extra | LONGTEXT | Empty Yaml | Used to store experimental settings of QuickShop Hikari or persistent data of other plugins | | inv_wrapper | VARCHAR(255) NOT NULL | N/A | Unique identifier for InventoryWrapper for this shop data entry | | inv_symbol_link | TEXT NOT NULL | N/A | Unique Inventory symbol used to pass to InventoryWrapper, for locating inventory | @@ -38,7 +38,7 @@ A data record only be deleted from the database when no any table references the ### `shops` -This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes.\ +This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes. Multiple `shop_id` can correspond to the same `data_id`. | Column Name | DataType | Default | Description | diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/cmd-alias.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/cmd-alias.md index 53f1577685..e6ed381c0d 100644 --- a/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/cmd-alias.md +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/cmd-alias.md @@ -23,7 +23,7 @@ custom-commands: - cshop ``` -Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect.\ +Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect. The effect should be like this: ![command-alias](./img/command-alias.png) diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/datasource.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/datasource.md index 6fc1bd8931..3fd3a8bdee 100644 --- a/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/datasource.md +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/datasource.md @@ -48,7 +48,7 @@ Execute the `/quickshop export` command in console, quickshop will export a zip ![exported data](img/database-export.png) -Stop your database, switch the datasource, and start the server.\ +Stop your database, switch the datasource, and start the server. You may noticed all shops are gone, because new datasources had no data inside, we will restore them from export. Rename that exported ZIP file to `recovery.zip`, execute `/quickshop recovery` and restart your server, all shops should back. diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/itemmatcher.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/itemmatcher.md index 56be243019..922907be27 100644 --- a/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/itemmatcher.md +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/itemmatcher.md @@ -4,7 +4,7 @@ ItemMatcher is a utility used by QuickShop-Hikari to compare the items, it is th :::caution -If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse.\ +If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse. **TL;DR: Keep default unless you know what you're doing.** ::: @@ -26,10 +26,10 @@ matcher: work-type: 1 ``` -By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility.\ +By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility. But still, you can toggle to QuickShop Item Matcher if you need to customize the comparing or running QuickShop on the server jar which have bug affect the Bukkit comparing system. -## Customize the metadata compareing +## Customize the metadata comparing Customize only works under QuickShop Item Matcher. diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md index fc2af69d2b..d04e8f2783 100644 --- a/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md @@ -4,7 +4,7 @@ ItemStack Loader is a workaround for loading the Bukkit ItemStack. :::caution -Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossble. +Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossible. ::: diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/localization.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/localization.md index e9121e1a36..d47589ab9a 100644 --- a/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/localization.md +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/localization.md @@ -10,7 +10,7 @@ To help translate QuickShop-Hikari, please visit our [Crowdin Homepage](https:// ## Crowdin OTA -QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will overrided when you reload QuickShop-Hikari or restart your server. +QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will override when you reload QuickShop-Hikari or restart your server. Your installation will keep translations up-to-date without any touch. @@ -110,6 +110,16 @@ To disable the CrowdinOTA, please add it in the startup flag: -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager.enableCrowdinOTA=false ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +use-crowdin-ota: false +``` + ### Self-Hosted OTA Server If you self-hosted our translation server by using [CrowdinCopyDeploy](https://github.com/Ghost-chu/CrowdinCopyDeploy) tool, you're able to change the OTA server to yourself server. @@ -118,4 +128,12 @@ If you self-hosted our translation server by using [CrowdinCopyDeploy](https://g -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager= ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml +Use + +```yaml +crowdin-host: +``` \ No newline at end of file diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/shops/benefit.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/shops/benefit.md index 4d7a9c8f42..c59d92e6d1 100644 --- a/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/shops/benefit.md +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/shops/benefit.md @@ -37,3 +37,13 @@ By default, for security, QuickShop-Hikari disallow add offline players into sho ```bash -Dcom.ghostchu.quickshop.command.subcommand.SubCommand_Benefit.allowOffline=true ``` + +### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +shop.allow-offline-benefit: true +``` \ No newline at end of file diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/shops/control-panel b/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/shops/control-panel new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/shops/control-panel @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/shops/history.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/shops/history.md index fa891adeab..195b64a042 100644 --- a/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/shops/history.md +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/shops/history.md @@ -24,7 +24,7 @@ The History GUI displays the details of each recorded transaction and other usef ### Transaction details -When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed.\ +When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed. If you are checking the history of more than one store, the player head will be replaced with an item from the corresponding store. ![history-gui](./img/history-gui.png) diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md new file mode 100644 index 0000000000..c5ed3b3fe4 --- /dev/null +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md @@ -0,0 +1,90 @@ +# Shop Types + +QuickShop supports multiple shop types, allowing shops to behave differently depending on their mode. + +The built-in shop types are: + +- Selling +- Buying +- Frozen + +Each type changes how the shop interacts with players. + +--- + +## Selling Shop + +A Selling shop allows players to: + +- Buy items from the shop owner +- Pay money to receive items + +This is the most common shop type. + +--- + +## Buying Shop + +A Buying shop allows players to: + +- Sell items to the shop owner +- Receive money in exchange + +This is commonly used for: + +- Resource collection +- Server buy-back shops +- Automated material sinks + +--- + +## Frozen Shop + +A Frozen shop temporarily disables trading. + +While frozen: + +- No buying is allowed +- No selling is allowed +- The shop remains intact +- Staff or admins can manage it + +This is useful for: + +- Temporary suspensions +- Investigation +- Event locking +- Maintenance + +--- + +## Switching Shop Types + +Shop types can be changed through: + +- Control panel +- GUI control panel +- Admin commands + +Frozen mode is also available via: + +/qs freeze + +--- + +## Custom Shop Types + +As of 6.2.x, the system supports extensible shop types internally. + +While server owners use the built-in types, the system now allows future expansion through addons. + +--- + +## Summary + +Shop types allow you to: + +- Control how money flows +- Enable buy-back mechanics +- Temporarily disable shops +- Build advanced economic systems \ No newline at end of file diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md new file mode 100644 index 0000000000..18e0a47407 --- /dev/null +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md @@ -0,0 +1,217 @@ +# Sign Layout + +QuickShop allows you to fully customize how shop signs are structured. + +You can change: + +- What appears on each line +- The order of information +- Layout per shop type +- Whether certain lines are blank + +This gives you complete control over how shops look on your server. + +--- + +## How Sign Layout Works + +Shop signs have four lines. + +Instead of being hardcoded, QuickShop uses a configurable layout system. + +Each shop type can have its own layout: + +- SELLING +- BUYING +- FROZEN + +You define what each line displays using layout keys. + +--- + +## Configuration Location + +Sign layout is configured in `config.yml` under: + +```yaml +layout: +``` + +Example default configuration: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## Available Layout Keys + +Each line value refers to a built-in layout component. + +Common layout keys include: + +- `header` – The shop header line +- `trading` – Buy/Sell direction information +- `item` – Item name +- `price` – Shop price + +These keys are automatically formatted using your language file and formatting settings. + +--- + +## Leaving a Line Blank + +To leave a line empty, use: + +```yaml +line2: "" +``` + +This is useful if you want: + +- Minimalist signs +- Cleaner layouts +- Custom spacing +- Decorative formatting + +--- + +## Customizing Per Shop Type + +Each shop type can have a different layout. + +For example: + +```yaml +layout: + + SELLING: + line1: "header" + line2: "item" + line3: "price" + line4: "" + + BUYING: + line1: "header" + line2: "price" + line3: "item" + line4: "" + + FROZEN: + line1: "header" + line2: "" + line3: "item" + line4: "Frozen" +``` + +This allows you to visually differentiate: + +- Selling shops +- Buying shops +- Frozen shops + +--- + +## Practical Examples + +### Minimal Style + +```yaml +layout: + SELLING: + line1: "item" + line2: "price" + line3: "" + line4: "" +``` + +### Compact Economy Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "price" + line3: "item" + line4: "" +``` + +### Large Clear Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## How Updates Affect Layout + +When you change the layout: + +- Existing shop signs will update automatically when refreshed. +- New shops will use the updated format immediately. + +If needed, you can reload QuickShop to apply changes. + +--- + +## Best Practices + +- Keep important information visible (price and item). +- Avoid overly complex formatting. +- Test layout changes before deploying on large servers. +- Use different layouts for BUYING and SELLING to reduce confusion. + +--- + +## Common Questions + +### Can I add more than four lines? + +No. +Minecraft signs are limited to four lines. + +### Can I add colors? + +Colors are controlled by your language file and formatting settings. + +### Can I change layout without restarting? + +Yes, but reloading or refreshing shops is recommended to ensure full update. + +--- + +## Summary + +The Sign Layout system allows you to: + +- Fully customize shop sign appearance +- Create per-type layouts +- Simplify or expand shop information +- Improve clarity for players + +All layout customization is handled inside `config.yml`. diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md index abcc288db7..2a0d52d788 100644 --- a/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md @@ -8,19 +8,6 @@ This feature added in 6.0.0.0. By default, QuickShop-Hikari uses the default brand material from the configuration file, but you can modify it to other brands for your store with the command. -## Configuration - -```yaml - #The wall sign material. - #ACACIA_WALL_SIGN - #BIRCH_WALL_SIGN - #DARK_OAK_WALL_SIGN - #JUNGLE_WALL_SIGN - #OAK_WALL_SIGN - #SPRUCE_WALL_SIGN - sign-material: OAK_WALL_SIGN -``` - ## Change the material Use command `/quickshop sign ` to change your shop sign material. diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md new file mode 100644 index 0000000000..980bad10f2 --- /dev/null +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md @@ -0,0 +1,130 @@ +# Shop Sign Waxing + +QuickShop can automatically wax shop signs to prevent players from editing them manually. + +Waxing protects the integrity of your shop signs and helps prevent tampering, spoofing, and accidental modification. + +As of modern Minecraft versions, waxed signs cannot be edited unless they are unwaxed first. + +--- + +## What Is Sign Waxing? + +In Minecraft, waxing a sign locks it so that: + +- Players cannot edit the text +- Players cannot modify lines +- Accidental changes are prevented +- Malicious edits are blocked + +When enabled in QuickShop, shop signs are automatically waxed when created. + +--- + +## Why Use It? + +Sign waxing protects against: + +- Players editing price lines +- Changing item names on signs +- Spoofing shop information +- Accidental formatting issues +- Sign hijacking attempts + +On public servers, this feature is strongly recommended. + +--- + +## How It Works + +When a shop is created: + +1. QuickShop generates the shop sign. +2. The sign text is written. +3. The sign is automatically waxed (if enabled). + +If a shop is updated: + +- The sign will be safely updated by QuickShop. +- The wax state is maintained. + +Players cannot manually edit shop signs while waxing is enabled. + +--- + +## Configuration + +To enable or disable sign waxing, edit `config.yml`: + +```yaml +shop: + sign-wax: true +``` + +### true + +- Shop signs are automatically waxed. +- Players cannot edit the sign manually. + +### false + +- Shop signs behave like normal Minecraft signs. +- Players may edit them if permitted by the game. + +--- + +## Recommended Setting + +For most servers: + +```yaml +shop: + sign-wax: true +``` + +This ensures shop data stays accurate and secure. + +--- + +## Common Questions + +### Can admins still modify shop signs? + +QuickShop controls shop sign formatting. +Manual edits are not recommended. + +Admins should use: + +- Control panel +- Shop commands +- Direct configuration changes + +### Does waxing affect shop functionality? + +No. +Waxing only prevents manual text edits. +The shop continues to function normally. + +### Can players un-wax shop signs? + +No. +QuickShop manages the sign state automatically. + +--- + +## Best Practices + +- Keep sign-wax enabled on survival servers. +- Combine sign-wax with proper permissions. +- Avoid manually editing shop signs through other plugins. + +--- + +## Summary + +Sign Waxing: + +- Prevents tampering +- Requires no additional setup + +Enable it once and QuickShop handles the rest. \ No newline at end of file diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/shops/taxes.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/shops/taxes.md new file mode 100644 index 0000000000..1a273fd978 --- /dev/null +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/shops/taxes.md @@ -0,0 +1,92 @@ +# Taxation System + +QuickShop includes a taxation system designed to give server owners more flexibility and control over shop-based income. + +This system was revamped as of 6.2.0.11+ + +The new system allows you to: + +- Apply tax to shop owners +- Apply tax to buyers +- Apply tax to both +- Use progressive tax brackets +- Customize tax behavior in configuration + +This system replaces the legacy tax configuration. + +--- + +## How It Works + +During a transaction: + +1. The shop price is calculated. +2. Tax is calculated based on your configuration. +3. Tax is deducted from the configured target(s). +4. Remaining funds are distributed normally. + +You can configure: + +- Flat percentage tax +- Progressive tax based on player balance +- Tax accounts +- Distribution rules + +--- + +## Progressive Tax + +The new system allows you to tax based on balance brackets. + +Example concept: + +- 0 – 10,000 balance → 1% tax +- 10,000 – 100,000 → 2% tax +- 100,000+ → 3% tax + +This helps prevent extremely wealthy players from dominating the economy. + +--- + +## Who Pays the Tax? + +You can configure whether tax applies to: + +- The shop owner +- The buyer +- Both + +This gives you flexibility depending on your economy design. + +--- + +## Configuration + +All tax-related settings are located under the `shop-tax` section in `config.yml`. + +After updating to 6.2.0.11+, review your tax configuration carefully, as the old tax system has been replaced. + +--- + +## Why Use Tax? + +The taxation system can help: + +- Remove currency from circulation +- Fund server banks or towns +- Create sink mechanics +- Balance inflation +- Reward active players + +--- + +## Summary + +The new taxation system is: + +- Flexible +- Configurable +- Balance-aware +- Designed for modern economy servers + +Make sure to review your configuration after upgrading. \ No newline at end of file diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md new file mode 100644 index 0000000000..247c24712d --- /dev/null +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md @@ -0,0 +1,161 @@ +# WorldEdit & FAWE Support + +QuickShop includes built-in protection and integration for WorldEdit and FastAsyncWorldEdit (FAWE). + +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. + +You do not need to download or install any additional compatibility plugins. + +--- + +## What This Does + +WorldEdit and FAWE allow administrators and builders to: + +- Copy and paste regions +- Replace large areas of blocks +- Mass-delete regions +- Roll back areas +- Regenerate terrain + +Without protection, these operations could: + +- Create ghost shops +- Leave orphaned shop data in the database +- Duplicate shops unintentionally +- Delete containers without cleaning up shop data +- Cause inconsistencies between world and database + +QuickShop now automatically detects and safely processes WorldEdit and FAWE operations. + +--- + +## Built-In Behavior + +When WorldEdit or FAWE modifies blocks: + +- Shops removed via WorldEdit are properly deleted from the database. +- Shop data stays synchronized with world changes. +- Ghost shops are prevented. +- Mass block replacements will not leave broken shop entries behind. + +This applies to: + +- //set +- //replace +- //cut +- //paste +- //regen +- Region deletion +- Mass container removal + +No configuration is required. + +--- + +## FAWE Support + +FastAsyncWorldEdit (FAWE) is fully supported. + +Because FAWE processes edits asynchronously, QuickShop handles: + +- Region-thread safe processing +- Async block updates +- Safe shop deletion during batch edits + +You do not need to enable anything manually. + +--- + +## Removing Shops with WorldEdit + +If you delete containers (chests, barrels, etc.) using WorldEdit: + +QuickShop will automatically: + +- Detect the block removal +- Unregister the shop +- Clean the database entry +- Prevent ghost shops + +You do not need to run `/qs cleanghost` after WorldEdit usage in normal circumstances. + +--- + +## Copying and Pasting Shops + +If you copy and paste regions that contain shops: + +- Shop data will not duplicate incorrectly. +- Shop IDs remain consistent. +- Invalid pasted shops will not auto-register unless properly created. + +This prevents accidental duplication exploits. + +--- + +## Performance + +WorldEdit and FAWE operations can modify thousands of blocks at once. + +QuickShop processes these safely and efficiently: + +- Batch-aware cleanup +- Thread-safe region access (especially on Folia) +- Minimal performance impact during mass edits + +--- + +## Configuration + +There are no specific WorldEdit configuration options in QuickShop. + +Support is automatic and always enabled if WorldEdit or FAWE is detected. + +If WorldEdit is not installed, no extra code is executed. + +--- + +## Common Questions + +### Do I need the old WorldEdit compatibility jar? + +No. + +As of 6.2.0.11, WorldEdit support is built-in and the separate compatibility module has been removed. + +### Does this work with FAWE? + +Yes. FAWE is fully supported. + +### Will shops break if I use //set air? + +No. Shops will be safely removed and cleaned up. + +### Do I need to restart after installing WorldEdit? + +No. QuickShop detects WorldEdit automatically on startup. + +--- + +## Best Practices + +Even though QuickShop safely handles WorldEdit operations, it is recommended to: + +- Avoid copying shops intentionally unless required +- Use backups before large region edits +- Test large FAWE operations on staging servers when possible + +--- + +## Summary + +QuickShop’s built-in WorldEdit and FAWE integration ensures: + +- Safe mass edits +- No ghost shops +- Automatic database cleanup +- Thread-safe processing +- No extra modules required + +WorldEdit support is now a core feature of QuickShop. \ No newline at end of file diff --git a/i18n/bg-BG/docusaurus-plugin-content-docs/current/setup/install.md b/i18n/bg-BG/docusaurus-plugin-content-docs/current/setup/install.md index fd02cfa1cc..2fc7851f3b 100644 --- a/i18n/bg-BG/docusaurus-plugin-content-docs/current/setup/install.md +++ b/i18n/bg-BG/docusaurus-plugin-content-docs/current/setup/install.md @@ -1,13 +1,14 @@ # Installation -This page will walk you through the process of installing QuickShop-Hikari on your Spigot server. +This page will walk you through the process of installing QuickShop-Hikari on your PaperMC server. ## Requirements -- A [Spigot][spigot]-based Minecraft server (1.20 or higher, Java 21) - - You can also use [Paper][paper], which is a fork of Spigot for better compatibility, more features and higher performance. +- A [Paper][paper]-based Minecraft server (1.20 or higher, Java 21) - [Vault][vault] for bridging the economy system between QuickShop and your economy plugins. -- [ProtocolLib][plib] for virtual display item, Per-player localization. +- For virtual item displays, and per-player localization you need a supported protocol library: + - [ProtocolLib][plib] + - [PacketEvents][https://www.spigotmc.org/resources/packetevents-api.80279/] - Any Vault compatible economy plugin, such as [XConomy][xconomy], If you have [EssentialsX][essx], it will also works well. - A permission management plugin like [LuckPerms][luckperm]. @@ -15,13 +16,17 @@ In this document, we assume that you are using the latest version of QuickShop-H ## Installing dependencies -Before installing QuickShop-Hikari, you should make sure that you have all dependencies installed, including [Vault][vault], [ProtocolLib][plib], [XConomy][xconomy] (or [EssentialsX][essx] if you want) and [LuckPerms][luckperm]! +Before installing QuickShop-Hikari, you should make sure that you have all dependencies installed, including [Vault][vault], [ProtocolLib][plib] or \[PacketEvents]\[https\://www\.spigotmc.org/resources/packetevents-api.80279/], [XConomy][xconomy] (or [EssentialsX][essx] if you want) and [LuckPerms][luckperm]! Download the plugins and drop them into `plugins` folder and you're all set! +## Configuring the Display Protocol + +If you have both ProtocolLib and PacketEvents, and you want to utilize PacketEvents for your display items, you'll need to set it as such in config.yml: `shop. display-protocol: 'packetevents'` + ## Installing QuickShop-Hikari -Download the latest version of QuickShop-Hikari from [Modrinth][qs-modrinth], if you find multiple files that have `Compat-` prefix in file name, ignore them in this step.\ +Download the latest version of QuickShop-Hikari from [Modrinth][qs-modrinth], if you find multiple files that have `Compat-` prefix in file name, ignore them in this step. The only file you need to download should have a **Primary** tag like this in the image below: ![download primary file](./img/download-primary.png) @@ -52,12 +57,11 @@ For advanced permission setup, you can check [here](./permissions.md). Now QuickShop-Hikari is running on your server, for more settings, check the navigation panel on the left and see different sections. -[spigot]: https://www.spigotmc.org/wiki/buildtools/ [paper]: https://papermc.io/ -[vault]: https://www.spigotmc.org/resources/34315/ -[xconomy]: https://www.spigotmc.org/resources/75669/ +[vault]: https://www.spigotmc.org/resources/vaultunlocked.117277/ +[xconomy]: https://www.spigotmc.org/resources/xconomy.75669/ [essx]: https://modrinth.com/plugin/essentialsx -[plib]: https://www.spigotmc.org/resources/1997 +[plib]: https://www.spigotmc.org/resources/protocollib.1997/ [luckperm]: https://luckperms.net/ [qs-modrinth]: https://modrinth.com/plugin/quickshop-hikari [dc]: https://discord.gg/Bu3dVtmsD3 diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/addon/limited.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/addon/limited.md index 70af27e240..fae55a8c95 100644 --- a/i18n/ca-ES/docusaurus-plugin-content-docs/current/addon/limited.md +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/addon/limited.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -41,8 +35,8 @@ Limit players to purchase up to 16 items per month. /quickshop limit period MONTH ``` -The system is based on the QuickShop-Hikari calendar system.\ -The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year.\ +The system is based on the QuickShop-Hikari calendar system. +The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year. Same for days, months and hours. Available time units: diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/addon/list.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/addon/list.md index 93d182f083..f20b91fd7b 100644 --- a/i18n/ca-ES/docusaurus-plugin-content-docs/current/addon/list.md +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/addon/list.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/addon/plan.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/addon/plan.md index 52a6e79cb4..c10ef4df42 100644 --- a/i18n/ca-ES/docusaurus-plugin-content-docs/current/addon/plan.md +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/addon/plan.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -18,7 +18,7 @@ Recorded data can be displayed from Hikari v2.0.0.0 onwards, but only after vers - All shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 1000 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `5` in server scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `5` in server scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Player Scope @@ -27,7 +27,7 @@ And still is Plan limitations, the list sorting is disturbed, so the display ord - All owned shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 50 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `4` in player scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `4` in player scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Showcase diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/addon/reforges.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/addon/reforges.md index 2a14509eb7..25fff1752a 100644 --- a/i18n/ca-ES/docusaurus-plugin-content-docs/current/addon/reforges.md +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/addon/reforges.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.0.0.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md index 304d39bc05..6f9f51d250 100644 --- a/i18n/ca-ES/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.1.1.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -44,7 +38,7 @@ _This is not necessary if you are using an H2 database._ ### Prepare for convert -To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console.\ +To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console. If a player is in the server, the conversion cannot be started. Once the conversion has begun, the server will be locked during the conversion process and no players will be able to join the server during the conversion. diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/addon/shopitemonly.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/addon/shopitemonly.md index c45062f8c2..1ccfe977b3 100644 --- a/i18n/ca-ES/docusaurus-plugin-content-docs/current/addon/shopitemonly.md +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/addon/shopitemonly.md @@ -2,17 +2,11 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT - -::: - -This addon prevents players from putting non-store items into store containers.\ +This addon prevents players from putting non-store items into store containers. Does not apply to stores that use the item inventory redirection API (aka. InventoryWrapper API). This Addon will check for container (or transferring) items on events such as the player closing the container or hopper access. diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md new file mode 100644 index 0000000000..9c8b4f7407 --- /dev/null +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md @@ -0,0 +1,55 @@ +# 6.2.0.10 + +## Major Changes + +- Added support for 1.21.6 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.7 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.8 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Some internal updates for packetevents(2.9.0 is now required.) +- Updated Lands support + +## Addon Changes + +- Added MatcherPlus Addon + - Allows support for BreweryX and AdvancedItems stacks in shops with improved matching abilities +- Added FabledSkyblock Compat +- Added Dominion Compat +- Added HuskTowns Compat +- Added IridiumSkyblock Compat +- Added member-create for member creation in ARM compat +- Added admin-override and quickshop.arm.admin permission for admin overrides in ARM + +## Minor Changes + +- Added configurations for the coordinates of the display item. +- Added /qs toggledisplayall on/off server/owned + - Players need to have permission node quickshop.toggledisplayall.admin to toggle all on the server. +- Added ability to use abbreviations in /qs price and /qs create commands such as 2.5k for 2500 +- Added ability to set default display status using shop.default-display in config.yml + +## Fixes + +- Fixed issue with display item being sent to the moon on 1.21.5 +- Fixed issue where TRADE_UI interactions interfered with quick create. +- Fixed issue with displays on protocollib falling through the chest +- Fixed issue with signs on .9 and previous .10 snapshots on early versions +- Implemented some performance improvements for paper servers +- Fixed all outstanding issues with Folia usage.(thanks to RootB33R/SleazLee for contributions) + +## Possible 6.2.0.11 Features + +Here's an outline for some features that may arrive in 6.2.0.11: + +- Additional compats/addons that have been piling up. + - see: https://github.com/QuickShop-Community/QuickShop-Hikari/issues/1756 +- gradle?(interested to see compilation time uplifts) +- Update documentation +- Update configuration comments +- Update configuration system? + - auto updating? + - Allows removal of the update code +- Remove waste spigot modules? + - Any versions of 1.20 that can be discarded due to low use? +- Bug fixing, of course +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... \ No newline at end of file diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md new file mode 100644 index 0000000000..b41c88662a --- /dev/null +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md @@ -0,0 +1,173 @@ +## Outline + +- Update documentation +- Update configuration comments +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... + +# 6.2.0.11 + +## Major Changes + +- Removed Spigot Platform Modules, and stopped loading QS if Spigot is detected. This will mean that unless the protocol changes that we use for display items, QS won't need updated for each version. +- Revamped Economy Code Completely + - New classes for all economy-related systems + - Any economy-related or benefits-related events are incompatible with previous versions. +- Added sign layout customizations per-type allowing you to change how lines are configured, an empty string('') will leave an empty line for that line of the sign. + +``` + #The layout of signs for shops. + layout: + + #The layout of BUYING shops. + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of FROZEN shops. + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of SELLING shops. + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +- Add wildcard support for item blacklist patterns(thanks to bennycallanan) + - Added support for wildcard patterns in the item blacklist configuration, allowing users to block entire categories of items with simple patterns. + + - Features + - Wildcard patterns like \*_AXE and \*_SPAWN_EGG now work in blacklist configuration + - Supports \* for any characters and ? for single character matching + - Case-insensitive pattern matching +- Overhauled GUI system(thanks to Yusakidev) + - Implemented gui.yml configuration file for customizing the GUI. + - Implemented better filtering for qs browse + - Implement GUI system to be more stable, and less error prone. + - Added gui.yml for fully configurable GUI layouts and text + - Browse menu: search, sort (price/name/stock), and filter (all/buying/selling/in-stock) + - Staff menu: search functionality for player/staff selection + - Grouped item pages for better shop browsing + - Refactored all menu pages to use configurable display/lore +- Added worldedit compat to QS internally as it's widely used. +- Revamped the taxation system to be more flexible and easier to configure. + - introduced a new progressive tax system that allows you to tax based on the balance of players.(suggested by YuanYuanOwO) + - introduced the ability to tax the player interacting with the shop, the owner, or both + - all tax-related configurations have been moved under the shop-tax section of the config. this may require reconfiguration of your tax settings. + - added a new ShopEnhancedTaxEvent, deprecated the old ShopTaxEvent. + - Added a new TaxManager, and TaxProvider interfaces, this allows for custom tax providers to be added by addons/third-party developers. + +## Addons/Compats Changes + +- Added UltimateClaims compat +- Added SimpleClaimSystem compat +- Added Quests by Pika addon +- Added BetonQuest addon +- Added Pl3xMap addon +- MatcherPlus Compat Improvements + - Added support for CrazyCrates + - Added support for ExcellentCrates + - Added support for SilkSpawners. +- WorldGuard Compat Improvements(Thanks to golovin12) + - Added clear permission handling: + - Region owners and members automatically have permission to create and trade in their own regions. + - Other players must have the appropriate WorldGuard flags enabled (quickshophikari-create, quickshophikari-trade) to interact with shops. + - If a shop is located outside any region, default QuickShop behavior applies (no extra restrictions) +- Added colored markers based on shop state for bluemap(thanks to YusakiDev) +- Updated dynmap/towny addons to use the new ShopTypeEnhancedEvent instead of ShopTypeEvent. +- Removed worldedit compat, it's now included in the main plugin. +- Added support for global flags to the worldguard compat. + +## Internals/Developer APIs + +- Removed several deprecated methods and classes. +- Revamped the interaction manager. It is now more flexible and allows external additions + - This involves two classes InteractionBehavior and InteractionType. + - InteractionType details the type of interaction such as: STANDING_LEFT_CLICK_SIGN, STANDING_LEFT_CLICK_SHOP + - InteractionBehavior outlines a behavior for an InteractionType such as CONTROL_PANEL and TRADE_UI +- Added UserLimitCalculationEvent, which allows for custom limits to be applied to users. + - This is useful for limiting the number of shops a user can have, or adding on to the existing limits provided by the ranks system without needing to implement a new RankLimiter. +- Added a new ShopLayoutProvider interface, and default implementation. + - This allows for custom layouts to be used for shops, allowing for more customization. + - This also allows for developers to override the default layout provider and create their own implementation. +- How to make your own? + - Implement the classes you would like to then register with the InteractionManager: + - ```java + InteractionManager manager = QuickShop.getInstance().getInteractionManager(); + + manager.interaction(new MyTradeInteraction()); + manager.behavior(new MyTradeBehavior()); + ``` +- Replaced some Apache Commons calls that could be easily replaced with built-in java methods, reduces some calls by ~ 1100ms/method call +- Deprecated the ShopType enum, and the ShopTypeEvent. These are replaced with the new IShopType interface and implementing classes. + - The new event is ShopTypeEnhancedEvent. + - This allows for third-party addons to add their own shop types, and simplifies code checks for translations. +- Updated config system to use Boosted-yaml + - this allows for auto-updating of config files without complex update scripts + - this also allows for the config system to not be minecraft-dependent. +- Replaced logical PaperLib calls with native PaperAPI calls. + +## Minor Changes + +- Bump Java version up to 21 +- Added shop.display-allow-enchants to enable/disable enchantments for display items on shops. +- Added workaround for packetevents not supporting custom enchants on itemstacks for virtual display items. +- Using locale translations for shop-type in mode toggle icon(thanks to ExyiN) +- Bumped Residence version for the compat(thanks to YuanYuanOwO) +- add world whitelist support(thanks to wling-art) +- added /qs database save command, which saves all currently dirty-marked shops to the database. +- Split up interactions _SHOPBLOCK into _SHOPBLOCK and _CONTAINER. + - _SHOPBLOCK relates to shops, where _CONTAINER relates to shop-valid containers that are not currently shops. +- Added inventory as an option for command panel, this is useful for adding a secondary option for players to open a shop's inventory. +- Moved crowdin arguments from system properties to config.yml + - crowdin-host + - use-crowdin-ota + +## Fixes + +- Fixes issue with item price restrictions(thanks to maxcom1) +- Fixes issue with 1.20.x protocol lib displays(thanks to YuanYuanOwO) +- Fixes issue when no item is in hand for itemdebug(thanks to YuanYuanOwO) +- Fixes issue with dominion addon(thanks to YuanYuanOwO) +- Add a simple check to avoid this. If it is not own shop, reject limit request directly.(Thanks to YuanYuanOwO) +- Fix NPE by not setting tax for price in TransactionBuilder(thanks to maxcom1) +- Fixes /quickshop suggestprice to differentiate between buy/sell shops. (Thanks to MidSpike) +- PacketEvents ClassNotFoundException with ProtocolLib(thanks to wling-art) +- Reallocate block state access to region thread for shop creation(thanks to r00tbeerman) +- resolve SLF4J StaticLoggerBinder loading error(thanks to wling-art) +- sign hijacking issue by validating sign facing direction(thanks to wling-art) +- Performance improvements for QuickShop disabling to prevent potential freezes. +- Fixed issue with 1.20.4 packetevents virtual displays not staying put. +- Fixes critical issue in GriefPrevention compatibility plugin. +- Fixes issue with shop owner not getting money when benefits active. +- Fixes for lands addon on folia, Use regionThread for Folia compatibility(thanks to YusakiDev) +- Fixes for TRADE_DIRECT on stacking shops +- Fixes issue for protocollib 5.4.0 with undocumented packet changes. +- Fixes issue where item stacks could be used on creation above the max stack size. +- Fixes issue with BukkitAudiences-related crashes on 1.21.11. +- Fix issue with shop deletion when getting too impatient. +- Fix the permission check issue when a shop owned by a non-owner is transferred to someone else. (thanks to YuanYuanOwO) +- Fix ui with supertool (thanks to YuanYuanOwO) +- Fix issue with logs generating outside debug mode. +- Fix issue with /qs find. +- Fix configuration loading timing. +- Fix configuration loading/creation warning message language. +- Fix command description language key mismatch(thanks to wling-art) +- Fix qs clean command on folia(thanks to wling-art) +- Fix per-player-shop-sign on folia(thanks to wling-art) +- Fix potential recursive deadlock in virtual display packet sending(thanks to wling-art) +- Fix configuration loading/creation warning message language. +- Fix issue with /qs browse and ShopItemOnly addon not behaving properly together on folia. +- Fix issue with PLAN using outdated APIs. +- Fix issue with /qs clean on folia.(thanks to wling-art) +- Fix issue with /qs cleanghost on folia(thanks to wling-art) +- More thread safety fixes for shops on folia.(thanks to wling-art) +- Fix owner payment calculations with benefits(thanks to wling-art) \ No newline at end of file diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md index 8172f9b410..dcc3edc67d 100644 --- a/i18n/ca-ES/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md @@ -20,20 +20,20 @@ the ControlComponent object with a custom one that will replace the original dur ### Introduction of the Revamped Packet System 1. **About**: - - A modular and scalable system for managing packets related to virtual display items in Minecraft. - - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. + - A modular and scalable system for managing packets related to virtual display items in Minecraft. + - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. 2. **Custom Packet Factories**: - - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. - - Packet types: - - **Spawn Packet**: Spawns a virtual item entity at a specific location. - - **Metadata Packet**: Updates the visual properties of virtual items. - - **Velocity Packet**: Adds motion/velocity to entities (currently optional). - - **Destroy Packet**: Removes the entity from the client view. + - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. + - Packet types: + - **Spawn Packet**: Spawns a virtual item entity at a specific location. + - **Metadata Packet**: Updates the visual properties of virtual items. + - **Velocity Packet**: Adds motion/velocity to entities (currently optional). + - **Destroy Packet**: Removes the entity from the client view. 3. **Error Handling and Logging**: - - Enhanced debug logs to trace packet-related issues. - - Detailed error messages for missing factories or unregistered listeners. + - Enhanced debug logs to trace packet-related issues. + - Detailed error messages for missing factories or unregistered listeners. #### Improvements: diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md index 7775308722..c6e0948d19 100644 --- a/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md index f420997a9c..38587e3784 100644 --- a/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md index 5ed8182c9a..259c55f342 100644 --- a/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md index 924a37ac49..7fd4596a6a 100644 --- a/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,6 +10,6 @@ This is a BungeeCord plugin, you need install it within your BungeeCord's plugin ## How does it work? -BungeeCord Bridge plugins will register a `quickshop:bungee` channel for fowarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. +BungeeCord Bridge plugins will register a `quickshop:bungee` channel for forwarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. All forwarding is indicated by QuickShop-Hikari on the Spigot server and ends when it is not needed. diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md index 27d68956a8..20fbaf7a0c 100644 --- a/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,5 +10,5 @@ This compatibility module added [Chest Protect](https://www.spigotmc.org/resourc ## How does it work? -This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident.\ +This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident. It also prevents players from creating shops on ChestProtect protected containers. diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md index 220e26d8bb..e1757e7be9 100644 --- a/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/dominion.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/dominion.md new file mode 100644 index 0000000000..e1195278a8 --- /dev/null +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/dominion.md @@ -0,0 +1,138 @@ +# Dominion + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and Dominion. + +It ensures that shop creation and trading respect Dominion’s land and territory protection system. + +--- + +## What Does It Do? + +Dominion allows players or groups to claim land and define territory-based permissions. + +Without compatibility: + +- Players could create shops inside territories they do not control. +- Visitors might trade inside protected dominions. +- Dominion permission rules might not apply to shop interactions. + +The Dominion compat module ensures that: + +- Shop creation respects territory ownership. +- Shop trading follows Dominion permission settings. +- Protected land remains secure from unauthorized shop usage. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a Dominion-controlled area. +- Whether the player has permission within that territory. +- Whether Dominion rules allow shop interaction. + +If the action is not permitted by Dominion settings, QuickShop blocks it. + +If the location is outside any Dominion territory, default QuickShop behavior applies. + +--- + +## Territory Owner Control + +With this module enabled: + +- Territory owners can create and manage shops inside their dominion. +- Trusted members follow territory-based permissions. +- Outsiders are restricted unless explicitly allowed. +- Shop actions respect Dominion’s land rules automatically. + +This prevents unauthorized shop placement inside protected territories. + +--- + +## Installation + +1. Install Dominion. +2. Install the QuickShop Dominion compat module. +3. Restart your server. + +The module activates automatically if Dominion is detected. + +No manual configuration linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside dominions +whitelist-mode: false + +# Allow territory owners to override shop permissions +allow-owner-override: true +``` + +If Dominion is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For servers using Dominion: + +- Restrict shop creation to territory owners or trusted members. +- Prevent shop creation in wilderness if desired. +- Allow dominion owners to manage shop permissions. +- Review Dominion permission settings to align with shop behavior. + +This ensures protected territories remain secure and organized. + +--- + +## Common Questions + +### Can players create shops in someone else's dominion? + +Only if Dominion permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You may allow or restrict shops outside dominions. + +### What happens if Dominion is removed? + +QuickShop returns to normal behavior and stops checking Dominion territories. + +--- + +## Summary + +The Dominion compat module: + +- Enforces territory-based permissions +- Prevents unauthorized shop creation +- Protects claimed land from misuse +- Integrates seamlessly with Dominion + +It is recommended for servers running Dominion. \ No newline at end of file diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md index 743d3ae666..2ac9b10488 100644 --- a/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md new file mode 100644 index 0000000000..07ba4ada66 --- /dev/null +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md @@ -0,0 +1,133 @@ +# FabledSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and FabledSkyblock. + +It ensures that shop creation and trading properly respect island boundaries and island permissions. + +--- + +## What Does It Do? + +On Skyblock servers, players build and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Players might trade in areas they should not. +- Island protection rules might not apply to shops. + +The FabledSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members behave correctly with shops. +- Island visitors are restricted appropriately. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a FabledSkyblock island. +- Whether the player has permission on that island. +- Whether island settings allow the action. + +If the action is not permitted by island rules, QuickShop will deny it. + +--- + +## Island Ownership Rules + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow island permission settings. +- Visitors can only trade if island permissions allow it. +- Outside of islands, default QuickShop behavior applies. + +--- + +## Installation + +1. Install FabledSkyblock. +2. Install the QuickShop FabledSkyblock compat module. +3. Restart your server. + +The module activates automatically if FabledSkyblock is detected. + +No manual linking is required. + +--- + +## Configuration + +If the module provides configuration options, they will appear in its `config.yml`. + +Typical options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If FabledSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most Skyblock servers: + +- Allow shop creation only inside islands. +- Prevent trading in the void or wilderness. +- Let island owners control shop permissions. +- Use island rank systems to manage shop access. + +This helps maintain economic balance between islands. + +--- + +## Common Questions + +### Can players create shops in the void? + +Only if your configuration allows it. +Most servers disable shop creation outside islands. + +### Does this affect island war or PvP modes? + +No. +The module only checks island ownership and permissions for shop interactions. + +### What happens if FabledSkyblock is removed? + +QuickShop returns to normal behavior. + +--- + +## Summary + +The FabledSkyblock compat module: + +- Protects island economies +- Enforces island permission rules +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is strongly recommended for any server running FabledSkyblock. \ No newline at end of file diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md index 81b13d2c6b..32614d3019 100644 --- a/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md @@ -2,17 +2,17 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -GreifPrevention compatibility module added compaitibility with GF. +GreifPrevention compatibility module added compatibility with GF. ## How does it work This module allow QuickShop-Hikari check if player have permission to create or use QuickShop in specific region. -And delete shops when claim removed, untrusted, unclimed, expired, resized or subclaim created. +And delete shops when claim removed, untrusted, unclaimed, expired, resized or subclaim created. ## Configuration diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md new file mode 100644 index 0000000000..e71b34d462 --- /dev/null +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md @@ -0,0 +1,139 @@ +# HuskTowns + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and HuskTowns. + +It ensures that shop creation and trading respect town and claim permissions defined by HuskTowns. + +--- + +## What Does It Do? + +HuskTowns allows players to create towns and claim land. + +Without compatibility: + +- Players could create shops inside towns they do not belong to. +- Visitors might trade inside protected towns. +- Town permission rules might not apply to shop interactions. + +The HuskTowns compat module ensures that: + +- Shop creation respects town ownership. +- Trading follows town permission settings. +- Town members and visitors are handled correctly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a HuskTowns claim. +- Whether the player is a town member, trusted player, or outsider. +- Whether the town's permission settings allow the action. + +If the action is not permitted by town rules, QuickShop blocks it. + +Outside of town claims, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Town Owner Control + +With this module enabled: + +- Town owners can create and manage shops inside their town. +- Town members follow town-based permission settings. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect town claim protection. + +This prevents unauthorized shop placement and trading inside protected towns. + +--- + +## Installation + +1. Install HuskTowns. +2. Install the QuickShop HuskTowns compat module. +3. Restart your server. + +The module activates automatically if HuskTowns is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside towns +whitelist-mode: false + +# Allow town owners to override shop permissions +allow-owner-override: true +``` + +If HuskTowns is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For town-based survival servers: + +- Restrict shop creation to town members. +- Allow trading only where town permissions permit. +- Prevent shop creation in wilderness if desired. +- Enable owner override for better administrative control. + +This helps maintain town-based economic balance. + +--- + +## Common Questions + +### Can players create shops in another town? + +Only if that town's permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You can allow or restrict shops outside towns. + +### What happens if HuskTowns is removed? + +QuickShop returns to normal behavior and stops checking town permissions. + +--- + +## Summary + +The HuskTowns compat module: + +- Enforces town-based land permissions +- Protects towns from unauthorized shop usage +- Integrates smoothly with HuskTowns +- Requires minimal setup + +It is recommended for any server running HuskTowns. \ No newline at end of file diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md new file mode 100644 index 0000000000..3fa2995eb0 --- /dev/null +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md @@ -0,0 +1,139 @@ +# IridiumSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and IridiumSkyblock. + +It ensures that shop creation and trading respect island boundaries and island permission settings defined by IridiumSkyblock. + +--- + +## What Does It Do? + +IridiumSkyblock allows players to create and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Visitors might trade inside protected islands. +- Island protection rules might not apply correctly to shops. + +The IridiumSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members and visitors are handled properly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside an IridiumSkyblock island. +- Whether the player is the island owner, member, or visitor. +- Whether island permissions allow shop interaction. + +If the action is not permitted, QuickShop blocks it. + +Outside of islands, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Island Owner Permissions + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow the island's permission configuration. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect island protection rules. + +This prevents unauthorized shop usage inside protected islands. + +--- + +## Installation + +1. Install IridiumSkyblock. +2. Install the QuickShop IridiumSkyblock compat module. +3. Restart your server. + +The module activates automatically if IridiumSkyblock is detected. + +No additional setup is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If IridiumSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most IridiumSkyblock servers: + +- Restrict shop creation to island owners. +- Allow island members to trade if trusted. +- Prevent shop creation in the void or wilderness. +- Enable owner override for better management. + +This helps maintain balanced island economies. + +--- + +## Common Questions + +### Can players create shops outside their island? + +Only if your configuration allows it. + +Most Skyblock servers restrict shops to island areas. + +### Do island ranks affect shop permissions? + +Yes, if your island permissions are configured to control interaction rights. + +QuickShop follows island rules. + +### What happens if IridiumSkyblock is removed? + +QuickShop returns to normal behavior and stops checking island permissions. + +--- + +## Summary + +The IridiumSkyblock compat module: + +- Protects island economies +- Enforces island-based permissions +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is recommended for any server running IridiumSkyblock. diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md new file mode 100644 index 0000000000..3b4726cb9d --- /dev/null +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md @@ -0,0 +1,151 @@ +# ItemMatcherPlus + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +The ItemMatcherPlus module improves how QuickShop matches custom and plugin-modified items. + +It allows QuickShop to properly recognize and stack items created by other plugins that normally would not match using standard Bukkit item comparisons. + +This module is especially useful for servers that use: + +- Custom items +- Modified metadata +- NBT-based systems +- Advanced crate rewards +- Custom brewing systems +- Custom fishing rewards + +--- + +## What Does It Do? + +By default, Minecraft item matching checks: + +- Material type +- Basic metadata + +However, many plugins modify items with: + +- Custom NBT data +- Hidden tags +- Custom lore formats +- Unique identifiers + +Without enhanced matching: + +- Items may not stack +- Shops may refuse valid items +- Transactions may fail +- Buying/selling may not behave correctly + +ItemMatcherPlus improves compatibility and matching accuracy. + +--- + +## Supported Plugins + +ItemMatcherPlus includes built-in support for: + +- AdvancedItems +- BreweryX +- CrazyCrates +- ExcellentCrates +- PyroFishing +- SilkSpawners + +If any of these plugins are installed, QuickShop will automatically use enhanced matching logic. + +No additional configuration is required. + +--- + +## How It Works + +When a player trades with a shop: + +1. QuickShop checks the item. +2. If ItemMatcherPlus is enabled, it performs advanced matching. +3. Plugin-specific metadata is validated. +4. The item is confirmed as a match (or rejected safely). + +This allows: + +- Proper stacking of custom items +- Correct shop transactions +- Accurate buy/sell detection +- Reduced false mismatches + +--- + +## Installation + +1. Download the ItemMatcherPlus module. +2. Place the JAR into your `plugins` folder. +3. Restart your server. + +If supported plugins are detected, compatibility activates automatically. + +--- + +## Configuration + +ItemMatcherPlus does not require configuration. + +It activates automatically when: + +- The module is installed +- A supported plugin is detected + +If a supported plugin is not installed, no extra logic runs. + +--- + +## Why You Should Use It + +You should install ItemMatcherPlus if your server uses: + +- Custom fishing plugins +- Custom brewing systems +- Crate plugins with modified items +- Custom spawners +- Any plugin that modifies NBT data + +Without it, shops may not properly recognize custom items. + +--- + +## Common Questions + +### Do I need this if I don't use custom item plugins? + +No. +If you only use vanilla items, this module is not necessary. + +### Does this affect performance? + +The module only activates enhanced matching when needed. + +Normal item matching remains fast and efficient. + +### Will it break existing shops? + +No. +It improves compatibility and matching accuracy without modifying existing shop data. + +--- + +## Summary + +ItemMatcherPlus: + +- Improves item matching accuracy +- Adds support for major custom item plugins +- Prevents stacking and trade issues +- Requires no configuration +- Activates automatically + +If you run a heavily customized economy server, this module is highly recommended. \ No newline at end of file diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md index ba87606698..d4ae7d129a 100644 --- a/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/lands.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/lands.md index 06296f5779..7671fcdfe0 100644 --- a/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/lands.md +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/lands.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/openinv.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/openinv.md index c51f628615..4807d57873 100644 --- a/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/openinv.md +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/openinv.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md new file mode 100644 index 0000000000..c2136320b0 --- /dev/null +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md @@ -0,0 +1,138 @@ +# SimpleClaimSystem + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and SimpleClaimSystem. + +It ensures that shop creation and trading respect land ownership and claim permissions defined by SimpleClaimSystem. + +--- + +## What Does It Do? + +SimpleClaimSystem allows players to claim land and protect it from unauthorized interaction. + +Without compatibility: + +- Players could create shops inside claims they do not own. +- Visitors might trade inside protected areas. +- Claim protection might not apply correctly to shops. + +The SimpleClaimSystem compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops within their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a SimpleClaimSystem claim. +- Whether the player has permission within that claim. +- Whether claim rules allow shop interaction. + +If the action is not permitted by the claim, QuickShop blocks it. + +If the location is outside any claim, default QuickShop behavior applies. + +--- + +## Claim Owner Control + +With this module enabled: + +- Claim owners can create and manage shops inside their claim. +- Trusted players follow claim-based permissions. +- Visitors are restricted unless explicitly allowed. +- Claim protection rules apply automatically to shop interactions. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install SimpleClaimSystem. +2. Install the QuickShop SimpleClaimSystem compat module. +3. Restart your server. + +The module activates automatically if SimpleClaimSystem is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If SimpleClaimSystem is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Enable owner override for easier management. + +This ensures players maintain control over their protected land. + +--- + +## Common Questions + +### Can players create shops in someone else's claim? + +Only if claim permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can allow shops outside claims or restrict them. + +### What happens if SimpleClaimSystem is removed? + +QuickShop will revert to default behavior and stop checking claim permissions. + +--- + +## Summary + +The SimpleClaimSystem compat module: + +- Enforces claim-based permissions +- Prevents unauthorized shop creation +- Protects land from unwanted trading +- Requires minimal setup + +It is recommended for servers running SimpleClaimSystem. \ No newline at end of file diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md index a84dbf057b..4dfa8ae97c 100644 --- a/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/towny.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/towny.md index 52ab4818f4..b26c19d335 100644 --- a/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/towny.md +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/towny.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -26,7 +26,7 @@ Town sub-command allow you switch a quickshop between regular shop and town shop For a nation shop, the shop owner will changed to nation fake player created by Towny, and use Nation's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from nation Towny account.\ +All purchases will deposit or withdraw money from nation Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Nation Shop. @@ -35,7 +35,7 @@ If Plot type restriction is enabled, only a specific Plot type can create a Nati For a town shop, the shop owner will changed to town fake player created by Towny, and use Town's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from town Towny account.\ +All purchases will deposit or withdraw money from town Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Town Shop. @@ -88,7 +88,7 @@ bank-mode: ## Permission Override -By adjust configuration, you're allow mayor or king automaticlly grant administrator permission on all shops in their management range. +By adjust configuration, you're allow mayor or king automatically grant administrator permission on all shops in their management range. ```yaml #Should allow Mayor grant the shop administrator permission on they town. @@ -168,7 +168,7 @@ This causes Towny and QuickShop Hikari to use accounts with the same name but di You can adjust the option in configuration to enable workaround. -NOTE: It will force turned on if detected EssentialsX installed on your server.\ +NOTE: It will force turned on if detected EssentialsX installed on your server. At present, we do not provide a method for disable it. ```yaml diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md new file mode 100644 index 0000000000..0189958495 --- /dev/null +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md @@ -0,0 +1,138 @@ +# UltimateClaims + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and UltimateClaims. + +It ensures that shop creation and trading respect land claim permissions managed by UltimateClaims. + +--- + +## What Does It Do? + +On servers using land-claim plugins, players protect areas of the world from unauthorized interaction. + +Without compatibility: + +- Players may create shops inside claims they do not own. +- Visitors might trade in areas where they should not. +- Claim protection rules might not apply correctly to shops. + +The UltimateClaims compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops inside their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a claim. +- Whether the player has permission in that claim. +- Whether claim rules allow shop interaction. + +If the action violates claim settings, QuickShop blocks it. + +Outside of claims, normal QuickShop behavior applies. + +--- + +## Claim Owner Permissions + +With this module enabled: + +- Claim owners can create and manage shops within their claim. +- Trusted players follow claim permission settings. +- Visitors are restricted based on claim configuration. +- Shop actions outside of claims behave normally. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install UltimateClaims. +2. Install the QuickShop UltimateClaims compat module. +3. Restart your server. + +If UltimateClaims is detected on startup, compatibility activates automatically. + +No additional linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Common options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If UltimateClaims is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Keep owner override enabled for better control. + +This ensures players maintain full control over their protected land. + +--- + +## Common Questions + +### Can players create shops inside someone else's claim? + +Only if the claim permissions allow it. + +Otherwise, QuickShop will block the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can choose to restrict shops to claimed land only. + +### What happens if UltimateClaims is removed? + +QuickShop returns to normal behavior without claim checks. + +--- + +## Summary + +The UltimateClaims compat module: + +- Protects claimed land from unauthorized shop usage +- Enforces claim-based permissions +- Integrates smoothly with land-claim servers +- Requires minimal setup + +It is recommended for any server running UltimateClaims. \ No newline at end of file diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md index 87a71a205c..6437754503 100644 --- a/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md @@ -2,8 +2,10 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. Find out more [here](../modules/shops/worldedit.md). + +Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. \ No newline at end of file diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/development/01-getting-start.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/development/01-getting-start.md index 92b773451e..0e78e52367 100644 --- a/i18n/ca-ES/docusaurus-plugin-content-docs/current/development/01-getting-start.md +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/development/01-getting-start.md @@ -6,8 +6,8 @@ This series of articles will help you build extensions for QuickShop-Hikari or i ## License -QuickShop-Hikari is open source using the [GPLv3](https://www.gnu.org/licenses/quick-guide-gplv3.en.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari).\ -You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the GPLv3 agreement. +QuickShop-Hikari is open source using the [AGPLv3](https://www.gnu.org/licenses/agpl-3.0.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari). +You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the AGPLv3 agreement. ## 🚧Don't trust Javadoc too much @@ -48,7 +48,7 @@ QuickShop-Hikari divides operation sources into three types: - Server Main Thread - Async Thread (any other threads but not server main thread) -- Hybird +- Hybrid If you access the API through the wrong thread, QuickShop-Hikari will force a runtime error to be thrown. @@ -58,4 +58,4 @@ For APIs that may trigger network IO or long-time disk IO, you are required not You can see [Util.ensureThread()](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/3d1d271e1106ea1c83cc6068f8232ab7c7860918/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/util/Util.java#L351) and find out the requirements of the different APIs by looking up their use. APIs that do not use Util.ensureThread() are allowed to be called from any thread by default. -You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. +You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. \ No newline at end of file diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md index aa2404c594..7828d414ad 100644 --- a/i18n/ca-ES/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md @@ -10,7 +10,7 @@ ShopManager manager = api.getShopManager(); ## Getting a shop -Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates.\ +Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates. QuickShop-Hikari's store is only bound to one half of "Large Chest", so to get the store, you need to query both the cube itself and its associated cube. The good thing is that there is an API in the plugin that allows you to handle this situation very easily. @@ -71,7 +71,7 @@ manager.deleteShop(shop) // Permanently delete this store, both memory and datab ## Identify a store -Please note that store locations are technically variable and you should not use coordinates to identify a store.\ +Please note that store locations are technically variable and you should not use coordinates to identify a store. Also RuntimeRandomUniqueId should not be used to identify the store, as the name suggests, the value changes every time the server restarts, it should only be used to handle scenarios where the player interacts with the server. ```java diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md index 543f1851da..4f839ed652 100644 --- a/i18n/ca-ES/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md @@ -1,6 +1,6 @@ # 0x05 Per shop permission -QuickShop-Hikari has a per shop permission management system.\ +QuickShop-Hikari has a per shop permission management system. Therefore, for a normal permission node check is not enough, you need to attach an additional check. ## Check with shop diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/development/06-protocol-system.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/development/06-protocol-system.md index 5d37a15536..0380b789f9 100644 --- a/i18n/ca-ES/docusaurus-plugin-content-docs/current/development/06-protocol-system.md +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/development/06-protocol-system.md @@ -15,30 +15,30 @@ This documentation will guide developers through the components, implementation - **Purpose**: Manages packet handling and initialization logic. - **Interface**: `PacketHandler` - **Key Methods**: - - `Map> factories()` - - Retrieves a map of supported `PacketFactory` instances keyed by game versions. - - `void initialize()` - - Initializes the packet handler. - - `Optional> factory(String version)` - - Retrieves a `PacketFactory` for a specific game version. + - `Map> factories()` + - Retrieves a map of supported `PacketFactory` instances keyed by game versions. + - `void initialize()` + - Initializes the packet handler. + - `Optional> factory(String version)` + - Retrieves a `PacketFactory` for a specific game version. ### 2. **PacketFactory** - **Purpose**: Creates and sends specific packet types. - **Interface**: `PacketFactory` - **Supported Packets**: - - **Spawn Packet**: - - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. - - Example Use: Representing shop items visually. - - **Metadata Packet**: - - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. - - Example Use: Updating item display name or properties. - - **Velocity Packet**: - - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. - - Example Use: Custom animations for virtual items. - - **Destroy Packet**: - - Removes the entity from the client view. Created using `createDestroyPacket()`. - - Example Use: Unloading or removing a virtual display item. + - **Spawn Packet**: + - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. + - Example Use: Representing shop items visually. + - **Metadata Packet**: + - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. + - Example Use: Updating item display name or properties. + - **Velocity Packet**: + - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. + - Example Use: Custom animations for virtual items. + - **Destroy Packet**: + - Removes the entity from the client view. Created using `createDestroyPacket()`. + - Example Use: Unloading or removing a virtual display item. Developers implementing custom `PacketFactory` should ensure these packets are correctly handled and optimized for performance. @@ -46,24 +46,24 @@ Developers implementing custom `PacketFactory` should ensure these packets are c - **Purpose**: Oversees the lifecycle of virtual display items and integrates with packet handlers. - **Key Features**: - - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). - - Manages virtual display items mapped to chunks. - - Provides thread-safe operations for adding and removing display items. + - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). + - Manages virtual display items mapped to chunks. + - Provides thread-safe operations for adding and removing display items. ### 4. **VirtualDisplayItem** - **Purpose**: Represents a virtual item displayed to players. - **Key Features**: - - Generates and caches packets for spawning, metadata, velocity, and destruction. - - Manages packet senders for each player. - - Handles spawn and removal operations dynamically. + - Generates and caches packets for spawning, metadata, velocity, and destruction. + - Manages packet senders for each player. + - Handles spawn and removal operations dynamically. ### 5. **ProtocolLibHandler and PacketEventsHandler** - **Purpose**: Provide implementations of `PacketHandler` using ProtocolLib and PacketEvents, respectively. - **Differences**: - - `ProtocolLibHandler` leverages ProtocolLib API. - - `PacketEventsHandler` uses the PacketEvents library. + - `ProtocolLibHandler` leverages ProtocolLib API. + - `PacketEventsHandler` uses the PacketEvents library. --- @@ -140,11 +140,11 @@ public class CustomPacketFactory implements PacketFactory { Packet factories are provided for specific game versions through two primary implementations: - **ProtocolLib**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` - **PacketEvents**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` --- diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md new file mode 100644 index 0000000000..aebc035f87 --- /dev/null +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md @@ -0,0 +1,297 @@ +# Interaction System (Developer Guide) + +The Interaction System allows developers to fully customize how players interact with shops. + +As of 6.2.0.11, the system has been redesigned to be: + +- Modular +- Extensible +- Thread-safe +- Fully customizable by third-party addons + +This guide will walk you through: + +1. What the Interaction System is +2. Getting the `InteractionManager` +3. Understanding `InteractionType` +4. Understanding `InteractionBehavior` +5. Registering custom interactions +6. Best practices + +--- + +# Overview + +The Interaction System is composed of three main components: + +| Component | Purpose | +| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| `InteractionType` | Describes **what kind of click happened** (standing, sneaking, left-click, sign, shopblock, etc.) | +| `InteractionBehavior` | Describes **what action should happen** when that type is triggered | +| `InteractionManager` | Central registry that manages interactions and behaviors | + +This separation allows developers to: + +- Add new click types +- Add new behaviors +- Override existing ones +- Extend QuickShop without modifying core code + +--- + +# Getting the InteractionManager + +To begin registering custom interactions, you must retrieve the `InteractionManager` instance. + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +If you are working directly with the plugin instance: + +```java +InteractionManager manager = QuickShop.getInstance().getInteractionManager(); +``` + +Once obtained, you can: + +- Register new interaction types +- Register new behaviors +- Override existing behaviors + +--- + +# Understanding InteractionType + +`InteractionType` represents **how** a player interacted with a shop. + +Examples include: + +- `STANDING_LEFT_CLICK_SIGN` +- `STANDING_RIGHT_CLICK_SHOPBLOCK` +- `SNEAKING_LEFT_CLICK_CONTAINER` +- etc. + +Each `InteractionType` defines: + +- Player stance (standing/sneaking) +- Click type (left/right) +- Target (sign/shopblock/container) + +InteractionTypes do NOT define behavior — they only define the trigger. + +--- + +# Understanding InteractionBehavior + +`InteractionBehavior` defines **what happens** when an interaction is triggered. + +Examples of built-in behaviors: + +- `TRADE_INTERACTION` +- `TRADE_UI` +- `CONTROL_PANEL` +- `CONTROL_PANEL_UI` +- `NONE` + +A behavior: + +- Executes logic +- May open GUIs +- May send chat panels +- May directly trade items +- Can cancel or modify flow + +This separation makes it easy to reuse behaviors across multiple interaction types. + +--- + +# Registering Custom Interactions + +There are two things you can register: + +- A custom `InteractionType` +- A custom `InteractionBehavior` + +--- + +## Creating a Custom InteractionBehavior + +Create a class implementing `InteractionBehavior`. + +Example: + +```java +public class MyTradeBehavior implements InteractionBehavior { + + @Override + public String getKey() { + return "MY_CUSTOM_TRADE"; + } + + @Override + public void execute(InteractionClick click) { + Player player = click.getPlayer(); + Shop shop = click.getShop(); + + player.sendMessage("You triggered my custom interaction!"); + + // Add your custom logic here + } +} +``` + +Then register it: + +```java +InteractionManager manager = api.getInteractionManager(); +manager.behavior(new MyTradeBehavior()); +``` + +Now your behavior is available for use. + +--- + +## Creating a Custom InteractionType + +You may also register custom interaction types if you want to introduce new trigger definitions. + +Example: + +```java +public class MyCustomInteraction implements InteractionType { + + @Override + public String getKey() { + return "STANDING_DOUBLE_CLICK_SIGN"; + } + + @Override + public boolean matches(InteractionClick click) { + // Define custom logic to detect this interaction + return click.isStanding() + && click.isSign() + && click.isDoubleClick(); + } +} +``` + +Register it: + +```java +manager.interaction(new MyCustomInteraction()); +``` + +--- + +# Binding Types to Behaviors + +The InteractionManager internally maps interaction types to behaviors based on configuration and registration order. + +Once your behavior is registered: + +- It can be referenced in `interaction.yml` +- Or attached programmatically + +Example interaction.yml usage: + +```yaml +STANDING_LEFT_CLICK_SIGN: MY_CUSTOM_TRADE +``` + +--- + +# The InteractionClick Object + +When your behavior executes, you receive an `InteractionClick` object. + +It provides: + +- `getPlayer()` +- `getShop()` +- `getLocation()` +- `isSneaking()` +- `isSign()` +- `isShopBlock()` +- etc. + +This gives full context for safe execution. + +--- + +# Advanced: Overriding Built-in Behavior + +If you register a behavior using the same key as an existing one, your behavior can override the default. + +⚠️ Be careful when doing this — you are replacing core functionality. + +--- + +# Best Practices + +### Always Use Unique Keys + +Avoid naming collisions: + +``` +MYPLUGIN_CUSTOM_BEHAVIOR +``` + +### Keep Behavior Lightweight + +Do not block the main thread with: + +- Heavy database calls +- File IO +- Network calls + +Use async tasks if needed. + +### Respect Permissions + +Always validate: + +```java +if (!player.hasPermission("myplugin.use")) { + return; +} +``` + +### Avoid Hard Overrides Unless Necessary + +Instead of replacing built-in behaviors, consider extending them. + +--- + +# Example: Full Minimal Implementation + +```java +public class ExampleAddon { + + public void register(QuickShopAPI api) { + + InteractionManager manager = api.getInteractionManager(); + + manager.behavior(new MyTradeBehavior()); + manager.interaction(new MyCustomInteraction()); + } +} +``` + +--- + +# Conclusion + +The Interaction System is designed to allow: + +- Full extensibility +- Clean separation of triggers and actions +- Easy integration for third-party developers + +By retrieving the `InteractionManager`: + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +You gain full control over how shops respond to player actions. \ No newline at end of file diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/development/08-tax-manager.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/development/08-tax-manager.md new file mode 100644 index 0000000000..72a56f9e88 --- /dev/null +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/development/08-tax-manager.md @@ -0,0 +1,266 @@ +# Tax System (Developer Guide) + +The QuickShop tax system allows server owners and developers to define how transaction taxes are calculated, distributed, and extended. + +As of 6.2.0.11, the tax system has been fully rewritten to provide: + +- A flexible TaxManager +- Pluggable TaxProvider support +- Progressive taxation +- Tax targeting (shop owner, interacting player, or both) +- Custom extension capability for third-party addons + +This guide explains how to work with the tax system programmatically. + +--- + +# Overview + +The tax system is composed of three core components: + +TaxManager +Responsible for coordinating tax calculation and execution. + +TaxProvider +Defines how tax values are calculated. + +TaxRates +Represents calculated tax results for a transaction. + +The system is designed to allow custom providers to be registered and used without modifying core logic. + +--- + +# Getting the TaxManager + +To work with the tax system, retrieve the TaxManager from the ShopManager. + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +Once obtained, you can: + +- Access current tax configuration +- Register custom tax providers +- Calculate tax values +- Hook into tax events + +--- + +# How the Tax System Works + +During a shop transaction: + +1. A base price is determined. +2. The TaxManager selects the active TaxProvider. +3. The TaxProvider calculates applicable tax. +4. A TaxRates object is produced. +5. The system applies the tax to: + + - Shop owner + - Interacting player + - Or both (depending on configuration) + +This architecture allows tax behavior to be modified without altering transaction logic. + +--- + +# TaxProvider + +A TaxProvider defines how tax values are calculated. + +You may create your own provider to implement: + +- Progressive tax brackets +- Flat percentage tax +- Conditional tax rules +- Region-based tax +- Rank-based tax +- Time-based tax + +Example minimal provider: + +```java +public class MyCustomTaxProvider implements TaxProvider { + + @Override + public TaxRates calculateTax(TaxContext context) { + + double basePrice = context.getPrice(); + + double taxAmount = basePrice * 0.05; // 5% flat tax + + return new TaxRates() + .ownerTax(taxAmount) + .buyerTax(0.0); + } +} +``` + +Then register it: + +```java +taxManager.provider(new MyCustomTaxProvider()); +``` + +Once registered, your provider will be used for tax calculations. + +--- + +# TaxRates + +TaxRates represents the result of a tax calculation. + +It typically contains: + +- Owner tax amount +- Buyer tax amount +- Total tax impact +- Metadata (if applicable) + +The transaction system will read from TaxRates and apply deductions accordingly. + +--- + +# Progressive Taxation + +The built-in system supports progressive tax structures. + +This allows server administrators to tax based on: + +- Player balance +- Shop owner balance +- Configured tax brackets + +Example configuration concept: + +- 0–10,000 balance → 1% tax +- 10,000–100,000 → 2% tax +- 100,000+ → 3% tax + +Developers can extend or override this logic inside a custom TaxProvider. + +--- + +# Targeting Tax + +The new tax system allows taxes to be applied to: + +- Shop owner +- Interacting player +- Both + +This is controlled via configuration, but custom providers can override distribution logic by adjusting TaxRates output. + +Example: + +```java +return new TaxRates() + .ownerTax(basePrice * 0.02) + .buyerTax(basePrice * 0.01); +``` + +--- + +# Registering a Custom TaxProvider + +To replace or extend tax logic: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); + +taxManager.provider(new MyCustomTaxProvider()); +``` + +You may register only one primary provider at a time. If multiple providers are needed, implement internal delegation within your custom provider. + +--- + +# Tax Events + +The tax system integrates with the event system. + +The modern event used is: + +ShopEnhancedTaxEvent + +This replaces legacy tax events and provides improved context, including: + +- Transaction builder reference +- TaxRates object +- Modification capability before final execution + +You can listen for the event and modify tax behavior dynamically: + +```java +@EventHandler +public void onTax(ShopEnhancedTaxEvent event) { + + TaxRates rates = event.getTaxRates(); + + // Example: Give VIP players reduced owner tax + if (event.getOwner().hasPermission("vip.tax.discount")) { + rates.ownerTax(rates.getOwnerTax() * 0.5); + } +} +``` + +--- + +# Best Practices + +Always keep tax calculations lightweight. + +Avoid: + +- Heavy database queries inside calculateTax +- Blocking network calls +- Long-running computations + +If complex logic is required, pre-cache required data outside the tax execution path. + +Ensure negative tax values are not returned unless intentional. + +Always validate final amounts before applying modifications. + +Respect configuration hierarchy unless intentionally overriding it. + +--- + +# Example Full Implementation + +```java +public class ExampleTaxAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + TaxManager taxManager = manager.taxManager(); + + taxManager.provider(new MyCustomTaxProvider()); + } +} +``` + +--- + +# Conclusion + +The new tax system is designed for: + +- Flexibility +- Extensibility +- Clean separation of concerns +- Future expansion + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +You gain full control over how QuickShop calculates and applies tax during transactions. \ No newline at end of file diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/development/09-layout-provider.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/development/09-layout-provider.md new file mode 100644 index 0000000000..55e3cd3e91 --- /dev/null +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/development/09-layout-provider.md @@ -0,0 +1,275 @@ +# Shop Layout Provider (Developer Guide) + +The Shop Layout Provider system allows developers to customize how shop signs are structured and rendered. + +As of 6.2.0.11, shop layouts are no longer hardcoded. Instead, they are controlled through the `IShopLayoutProvider` interface, which allows: + +- Custom sign line ordering +- Per-shop-type layouts (BUYING, SELLING, FROZEN, or custom types) +- Dynamic layout resolution +- Complete replacement of the default layout system + +This guide explains how to access, override, and implement a custom layout provider. + +--- + +# Overview + +The layout provider controls how shop sign lines are arranged. + +Instead of hardcoding: + +Line 1 → Header +Line 2 → Trading info +Line 3 → Item +Line 4 → Price + +The system now allows full customization through: + +- Config-based layout definitions +- Custom `IShopLayoutProvider` implementations +- Runtime overrides + +The default implementation is `SimpleShopLayoutProvider`. + +--- + +# Accessing the Layout Provider + +To retrieve the current layout provider: + +```java +ShopManager manager = api.getShopManager(); +IShopLayoutProvider provider = manager.shopLayoutProvider(); +``` + +To replace the layout provider with a custom one: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Once replaced, your implementation will control how shop layouts are generated. + +--- + +# Understanding IShopLayoutProvider + +`IShopLayoutProvider` defines how layout data is retrieved and resolved. + +It is responsible for: + +- Providing layout configuration per shop type +- Determining which layout to use +- Supplying formatted line keys +- Allowing future extensibility + +The default implementation reads layout definitions from configuration and applies them based on shop type. + +--- + +# Default Layout Example + +The default configuration-based layout looks like this: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +Each line maps to a layout component key. + +An empty string (`""`) leaves that line blank. + +The layout provider resolves these keys into actual sign content. + +--- + +# Creating a Custom Layout Provider + +To override the default behavior, implement `IShopLayoutProvider`. + +Example minimal implementation: + +```java +public class MyCustomLayoutProvider implements IShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + + ShopLayout layout = new ShopLayout(); + + layout.setLine(1, "Custom Header"); + layout.setLine(2, "Owner: " + shop.getOwnerName()); + layout.setLine(3, shop.getItem().getType().name()); + layout.setLine(4, "$" + shop.getPrice()); + + return layout; + } +} +``` + +Then register it: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Your layout will now control all shop sign formatting. + +--- + +# Per-Type Layout Control + +Because the system no longer depends on the legacy ShopType enum, layouts can support: + +- Built-in types (BUYING, SELLING, FROZEN) +- Custom shop types +- Addon-defined shop types + +Your provider can determine layout logic dynamically: + +```java +@Override +public ShopLayout provideLayout(Shop shop) { + + if (shop.getShopType().key().equals("FROZEN")) { + return frozenLayout(shop); + } + + return defaultLayout(shop); +} +``` + +This allows conditional formatting, localization adjustments, or special event styling. + +--- + +# Advanced Customization + +A custom layout provider can: + +- Pull data from external plugins +- Inject dynamic placeholders +- Modify layout per player +- Apply formatting logic +- Override color schemes +- Apply region-based formatting +- Implement animated sign systems + +Because the layout provider is resolved at runtime, you can compute layouts dynamically instead of reading static config. + +--- + +# Replacing vs Extending the Default Provider + +You have two options: + +Replace entirely: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Or extend the default implementation: + +```java +public class ExtendedLayoutProvider extends SimpleShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + ShopLayout base = super.provideLayout(shop); + + base.setLine(1, "[Extended] " + base.getLine(1)); + + return base; + } +} +``` + +Extending is safer if you only want to modify small portions. + +--- + +# Best Practices + +Keep layout generation lightweight. + +Avoid: + +- Heavy database queries +- Blocking IO +- Complex network calls + +Layout generation runs during shop updates and sign refresh events. + +Always handle null values safely. + +Ensure layout line count does not exceed sign limits. + +Avoid hardcoding shop type names unless necessary. + +If your layout supports custom shop types, validate their keys properly. + +--- + +# Example Full Registration + +```java +public class LayoutAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + + manager.shopLayoutProvider(new MyCustomLayoutProvider()); + } +} +``` + +--- + +# Conclusion + +The Shop Layout Provider system allows complete control over shop sign structure. + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +``` + +And setting: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +You can redefine how every shop is displayed on the server. + +This system was designed to support: + +- Extensibility +- Custom shop types +- Localization +- Dynamic formatting +- Future expansion \ No newline at end of file diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/faq/compare-reremake.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/faq/compare-reremake.md index aaa1a9e507..6b39f02520 100644 --- a/i18n/ca-ES/docusaurus-plugin-content-docs/current/faq/compare-reremake.md +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/faq/compare-reremake.md @@ -64,7 +64,7 @@ If you are a Reremake user, you may be confused about the differences between Hi ## Which one should I use? Well, it depends on what your needs are.\ -If you have an old server (<1.20) instance, Reremake is your only choice.\ +If you have an old server ({'<'}1.20) instance, Reremake is your only choice.\ ~~If you are in China which has GFW interfere, you also should consider Reremake because it doesn't need to load libraries from Global Internet.~~ Solved in 6.0.0.0. If none of these applies, give Hikari a try! diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md index 551f579e7c..172be3a69b 100644 --- a/i18n/ca-ES/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md @@ -1,8 +1,8 @@ # Where Addons/Compacts is -Addons and Compatilibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. +Addons and Compatibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. -- Open Modrinth versions page, locate the version your're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) +- Open Modrinth versions page, locate the version you're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) - Frantically slide your mouse wheel down until the lowest end of the page. - You get it! diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/internal/database-schema.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/internal/database-schema.md index fea685e4fc..45e04adb56 100644 --- a/i18n/ca-ES/docusaurus-plugin-content-docs/current/internal/database-schema.md +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/internal/database-schema.md @@ -4,17 +4,17 @@ This chapter will explain the implementation details of QuickShop Hikari's datab ## Tables -This section explains the database tables created by QuickShop-Hikari.\ -Unless otherwise specified, the initial `qs_` in table name is the table prefix.\ +This section explains the database tables created by QuickShop-Hikari. +Unless otherwise specified, the initial `qs_` in table name is the table prefix. For the latest code definition for each table, see: [DataTables.java](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/hikari/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/database/DataTables.java) ### `data` -This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information.\ -No matter what, a data record should not be modified after it is created, until it got deleted.\ +This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information. +No matter what, a data record should not be modified after it is created, until it got deleted. Any new changes to the shop should create a new copy, apply the changes to the copy, and insert it as a new record. -Basiclly, Copy-on-write. +Basically, Copy-on-write. A data record only be deleted from the database when no any table references their `data_id`. @@ -29,7 +29,7 @@ A data record only be deleted from the database when no any table references the | unlimited | BIT NOT NULL | 0 | Indicates whether this store is an unlimited store, 0=Limited, 1=Unlimited | | hologram | BIT NOT NULL | 0 | Indicates the suspension status of this store's display item, 0=Follow global settings, 1=Disabled | | tax_account | VARCHAR(36) | NULL | The uuid for tax account, If it is not NULL, tax will be paid to the specified account | -| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serilized to JSON string | +| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serialized to JSON string | | extra | LONGTEXT | Empty Yaml | Used to store experimental settings of QuickShop Hikari or persistent data of other plugins | | inv_wrapper | VARCHAR(255) NOT NULL | N/A | Unique identifier for InventoryWrapper for this shop data entry | | inv_symbol_link | TEXT NOT NULL | N/A | Unique Inventory symbol used to pass to InventoryWrapper, for locating inventory | @@ -38,7 +38,7 @@ A data record only be deleted from the database when no any table references the ### `shops` -This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes.\ +This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes. Multiple `shop_id` can correspond to the same `data_id`. | Column Name | DataType | Default | Description | diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/cmd-alias.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/cmd-alias.md index 53f1577685..e6ed381c0d 100644 --- a/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/cmd-alias.md +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/cmd-alias.md @@ -23,7 +23,7 @@ custom-commands: - cshop ``` -Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect.\ +Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect. The effect should be like this: ![command-alias](./img/command-alias.png) diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/datasource.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/datasource.md index 6fc1bd8931..3fd3a8bdee 100644 --- a/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/datasource.md +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/datasource.md @@ -48,7 +48,7 @@ Execute the `/quickshop export` command in console, quickshop will export a zip ![exported data](img/database-export.png) -Stop your database, switch the datasource, and start the server.\ +Stop your database, switch the datasource, and start the server. You may noticed all shops are gone, because new datasources had no data inside, we will restore them from export. Rename that exported ZIP file to `recovery.zip`, execute `/quickshop recovery` and restart your server, all shops should back. diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/itemmatcher.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/itemmatcher.md index 56be243019..922907be27 100644 --- a/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/itemmatcher.md +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/itemmatcher.md @@ -4,7 +4,7 @@ ItemMatcher is a utility used by QuickShop-Hikari to compare the items, it is th :::caution -If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse.\ +If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse. **TL;DR: Keep default unless you know what you're doing.** ::: @@ -26,10 +26,10 @@ matcher: work-type: 1 ``` -By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility.\ +By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility. But still, you can toggle to QuickShop Item Matcher if you need to customize the comparing or running QuickShop on the server jar which have bug affect the Bukkit comparing system. -## Customize the metadata compareing +## Customize the metadata comparing Customize only works under QuickShop Item Matcher. diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md index fc2af69d2b..d04e8f2783 100644 --- a/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md @@ -4,7 +4,7 @@ ItemStack Loader is a workaround for loading the Bukkit ItemStack. :::caution -Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossble. +Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossible. ::: diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/localization.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/localization.md index e9121e1a36..d47589ab9a 100644 --- a/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/localization.md +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/localization.md @@ -10,7 +10,7 @@ To help translate QuickShop-Hikari, please visit our [Crowdin Homepage](https:// ## Crowdin OTA -QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will overrided when you reload QuickShop-Hikari or restart your server. +QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will override when you reload QuickShop-Hikari or restart your server. Your installation will keep translations up-to-date without any touch. @@ -110,6 +110,16 @@ To disable the CrowdinOTA, please add it in the startup flag: -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager.enableCrowdinOTA=false ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +use-crowdin-ota: false +``` + ### Self-Hosted OTA Server If you self-hosted our translation server by using [CrowdinCopyDeploy](https://github.com/Ghost-chu/CrowdinCopyDeploy) tool, you're able to change the OTA server to yourself server. @@ -118,4 +128,12 @@ If you self-hosted our translation server by using [CrowdinCopyDeploy](https://g -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager= ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml +Use + +```yaml +crowdin-host: +``` \ No newline at end of file diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/shops/benefit.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/shops/benefit.md index 4d7a9c8f42..c59d92e6d1 100644 --- a/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/shops/benefit.md +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/shops/benefit.md @@ -37,3 +37,13 @@ By default, for security, QuickShop-Hikari disallow add offline players into sho ```bash -Dcom.ghostchu.quickshop.command.subcommand.SubCommand_Benefit.allowOffline=true ``` + +### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +shop.allow-offline-benefit: true +``` \ No newline at end of file diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/shops/control-panel b/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/shops/control-panel new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/shops/control-panel @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/shops/history.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/shops/history.md index fa891adeab..195b64a042 100644 --- a/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/shops/history.md +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/shops/history.md @@ -24,7 +24,7 @@ The History GUI displays the details of each recorded transaction and other usef ### Transaction details -When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed.\ +When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed. If you are checking the history of more than one store, the player head will be replaced with an item from the corresponding store. ![history-gui](./img/history-gui.png) diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md new file mode 100644 index 0000000000..c5ed3b3fe4 --- /dev/null +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md @@ -0,0 +1,90 @@ +# Shop Types + +QuickShop supports multiple shop types, allowing shops to behave differently depending on their mode. + +The built-in shop types are: + +- Selling +- Buying +- Frozen + +Each type changes how the shop interacts with players. + +--- + +## Selling Shop + +A Selling shop allows players to: + +- Buy items from the shop owner +- Pay money to receive items + +This is the most common shop type. + +--- + +## Buying Shop + +A Buying shop allows players to: + +- Sell items to the shop owner +- Receive money in exchange + +This is commonly used for: + +- Resource collection +- Server buy-back shops +- Automated material sinks + +--- + +## Frozen Shop + +A Frozen shop temporarily disables trading. + +While frozen: + +- No buying is allowed +- No selling is allowed +- The shop remains intact +- Staff or admins can manage it + +This is useful for: + +- Temporary suspensions +- Investigation +- Event locking +- Maintenance + +--- + +## Switching Shop Types + +Shop types can be changed through: + +- Control panel +- GUI control panel +- Admin commands + +Frozen mode is also available via: + +/qs freeze + +--- + +## Custom Shop Types + +As of 6.2.x, the system supports extensible shop types internally. + +While server owners use the built-in types, the system now allows future expansion through addons. + +--- + +## Summary + +Shop types allow you to: + +- Control how money flows +- Enable buy-back mechanics +- Temporarily disable shops +- Build advanced economic systems \ No newline at end of file diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md new file mode 100644 index 0000000000..18e0a47407 --- /dev/null +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md @@ -0,0 +1,217 @@ +# Sign Layout + +QuickShop allows you to fully customize how shop signs are structured. + +You can change: + +- What appears on each line +- The order of information +- Layout per shop type +- Whether certain lines are blank + +This gives you complete control over how shops look on your server. + +--- + +## How Sign Layout Works + +Shop signs have four lines. + +Instead of being hardcoded, QuickShop uses a configurable layout system. + +Each shop type can have its own layout: + +- SELLING +- BUYING +- FROZEN + +You define what each line displays using layout keys. + +--- + +## Configuration Location + +Sign layout is configured in `config.yml` under: + +```yaml +layout: +``` + +Example default configuration: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## Available Layout Keys + +Each line value refers to a built-in layout component. + +Common layout keys include: + +- `header` – The shop header line +- `trading` – Buy/Sell direction information +- `item` – Item name +- `price` – Shop price + +These keys are automatically formatted using your language file and formatting settings. + +--- + +## Leaving a Line Blank + +To leave a line empty, use: + +```yaml +line2: "" +``` + +This is useful if you want: + +- Minimalist signs +- Cleaner layouts +- Custom spacing +- Decorative formatting + +--- + +## Customizing Per Shop Type + +Each shop type can have a different layout. + +For example: + +```yaml +layout: + + SELLING: + line1: "header" + line2: "item" + line3: "price" + line4: "" + + BUYING: + line1: "header" + line2: "price" + line3: "item" + line4: "" + + FROZEN: + line1: "header" + line2: "" + line3: "item" + line4: "Frozen" +``` + +This allows you to visually differentiate: + +- Selling shops +- Buying shops +- Frozen shops + +--- + +## Practical Examples + +### Minimal Style + +```yaml +layout: + SELLING: + line1: "item" + line2: "price" + line3: "" + line4: "" +``` + +### Compact Economy Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "price" + line3: "item" + line4: "" +``` + +### Large Clear Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## How Updates Affect Layout + +When you change the layout: + +- Existing shop signs will update automatically when refreshed. +- New shops will use the updated format immediately. + +If needed, you can reload QuickShop to apply changes. + +--- + +## Best Practices + +- Keep important information visible (price and item). +- Avoid overly complex formatting. +- Test layout changes before deploying on large servers. +- Use different layouts for BUYING and SELLING to reduce confusion. + +--- + +## Common Questions + +### Can I add more than four lines? + +No. +Minecraft signs are limited to four lines. + +### Can I add colors? + +Colors are controlled by your language file and formatting settings. + +### Can I change layout without restarting? + +Yes, but reloading or refreshing shops is recommended to ensure full update. + +--- + +## Summary + +The Sign Layout system allows you to: + +- Fully customize shop sign appearance +- Create per-type layouts +- Simplify or expand shop information +- Improve clarity for players + +All layout customization is handled inside `config.yml`. diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md index abcc288db7..2a0d52d788 100644 --- a/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md @@ -8,19 +8,6 @@ This feature added in 6.0.0.0. By default, QuickShop-Hikari uses the default brand material from the configuration file, but you can modify it to other brands for your store with the command. -## Configuration - -```yaml - #The wall sign material. - #ACACIA_WALL_SIGN - #BIRCH_WALL_SIGN - #DARK_OAK_WALL_SIGN - #JUNGLE_WALL_SIGN - #OAK_WALL_SIGN - #SPRUCE_WALL_SIGN - sign-material: OAK_WALL_SIGN -``` - ## Change the material Use command `/quickshop sign ` to change your shop sign material. diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md new file mode 100644 index 0000000000..980bad10f2 --- /dev/null +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md @@ -0,0 +1,130 @@ +# Shop Sign Waxing + +QuickShop can automatically wax shop signs to prevent players from editing them manually. + +Waxing protects the integrity of your shop signs and helps prevent tampering, spoofing, and accidental modification. + +As of modern Minecraft versions, waxed signs cannot be edited unless they are unwaxed first. + +--- + +## What Is Sign Waxing? + +In Minecraft, waxing a sign locks it so that: + +- Players cannot edit the text +- Players cannot modify lines +- Accidental changes are prevented +- Malicious edits are blocked + +When enabled in QuickShop, shop signs are automatically waxed when created. + +--- + +## Why Use It? + +Sign waxing protects against: + +- Players editing price lines +- Changing item names on signs +- Spoofing shop information +- Accidental formatting issues +- Sign hijacking attempts + +On public servers, this feature is strongly recommended. + +--- + +## How It Works + +When a shop is created: + +1. QuickShop generates the shop sign. +2. The sign text is written. +3. The sign is automatically waxed (if enabled). + +If a shop is updated: + +- The sign will be safely updated by QuickShop. +- The wax state is maintained. + +Players cannot manually edit shop signs while waxing is enabled. + +--- + +## Configuration + +To enable or disable sign waxing, edit `config.yml`: + +```yaml +shop: + sign-wax: true +``` + +### true + +- Shop signs are automatically waxed. +- Players cannot edit the sign manually. + +### false + +- Shop signs behave like normal Minecraft signs. +- Players may edit them if permitted by the game. + +--- + +## Recommended Setting + +For most servers: + +```yaml +shop: + sign-wax: true +``` + +This ensures shop data stays accurate and secure. + +--- + +## Common Questions + +### Can admins still modify shop signs? + +QuickShop controls shop sign formatting. +Manual edits are not recommended. + +Admins should use: + +- Control panel +- Shop commands +- Direct configuration changes + +### Does waxing affect shop functionality? + +No. +Waxing only prevents manual text edits. +The shop continues to function normally. + +### Can players un-wax shop signs? + +No. +QuickShop manages the sign state automatically. + +--- + +## Best Practices + +- Keep sign-wax enabled on survival servers. +- Combine sign-wax with proper permissions. +- Avoid manually editing shop signs through other plugins. + +--- + +## Summary + +Sign Waxing: + +- Prevents tampering +- Requires no additional setup + +Enable it once and QuickShop handles the rest. \ No newline at end of file diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/shops/taxes.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/shops/taxes.md new file mode 100644 index 0000000000..1a273fd978 --- /dev/null +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/shops/taxes.md @@ -0,0 +1,92 @@ +# Taxation System + +QuickShop includes a taxation system designed to give server owners more flexibility and control over shop-based income. + +This system was revamped as of 6.2.0.11+ + +The new system allows you to: + +- Apply tax to shop owners +- Apply tax to buyers +- Apply tax to both +- Use progressive tax brackets +- Customize tax behavior in configuration + +This system replaces the legacy tax configuration. + +--- + +## How It Works + +During a transaction: + +1. The shop price is calculated. +2. Tax is calculated based on your configuration. +3. Tax is deducted from the configured target(s). +4. Remaining funds are distributed normally. + +You can configure: + +- Flat percentage tax +- Progressive tax based on player balance +- Tax accounts +- Distribution rules + +--- + +## Progressive Tax + +The new system allows you to tax based on balance brackets. + +Example concept: + +- 0 – 10,000 balance → 1% tax +- 10,000 – 100,000 → 2% tax +- 100,000+ → 3% tax + +This helps prevent extremely wealthy players from dominating the economy. + +--- + +## Who Pays the Tax? + +You can configure whether tax applies to: + +- The shop owner +- The buyer +- Both + +This gives you flexibility depending on your economy design. + +--- + +## Configuration + +All tax-related settings are located under the `shop-tax` section in `config.yml`. + +After updating to 6.2.0.11+, review your tax configuration carefully, as the old tax system has been replaced. + +--- + +## Why Use Tax? + +The taxation system can help: + +- Remove currency from circulation +- Fund server banks or towns +- Create sink mechanics +- Balance inflation +- Reward active players + +--- + +## Summary + +The new taxation system is: + +- Flexible +- Configurable +- Balance-aware +- Designed for modern economy servers + +Make sure to review your configuration after upgrading. \ No newline at end of file diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md new file mode 100644 index 0000000000..247c24712d --- /dev/null +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md @@ -0,0 +1,161 @@ +# WorldEdit & FAWE Support + +QuickShop includes built-in protection and integration for WorldEdit and FastAsyncWorldEdit (FAWE). + +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. + +You do not need to download or install any additional compatibility plugins. + +--- + +## What This Does + +WorldEdit and FAWE allow administrators and builders to: + +- Copy and paste regions +- Replace large areas of blocks +- Mass-delete regions +- Roll back areas +- Regenerate terrain + +Without protection, these operations could: + +- Create ghost shops +- Leave orphaned shop data in the database +- Duplicate shops unintentionally +- Delete containers without cleaning up shop data +- Cause inconsistencies between world and database + +QuickShop now automatically detects and safely processes WorldEdit and FAWE operations. + +--- + +## Built-In Behavior + +When WorldEdit or FAWE modifies blocks: + +- Shops removed via WorldEdit are properly deleted from the database. +- Shop data stays synchronized with world changes. +- Ghost shops are prevented. +- Mass block replacements will not leave broken shop entries behind. + +This applies to: + +- //set +- //replace +- //cut +- //paste +- //regen +- Region deletion +- Mass container removal + +No configuration is required. + +--- + +## FAWE Support + +FastAsyncWorldEdit (FAWE) is fully supported. + +Because FAWE processes edits asynchronously, QuickShop handles: + +- Region-thread safe processing +- Async block updates +- Safe shop deletion during batch edits + +You do not need to enable anything manually. + +--- + +## Removing Shops with WorldEdit + +If you delete containers (chests, barrels, etc.) using WorldEdit: + +QuickShop will automatically: + +- Detect the block removal +- Unregister the shop +- Clean the database entry +- Prevent ghost shops + +You do not need to run `/qs cleanghost` after WorldEdit usage in normal circumstances. + +--- + +## Copying and Pasting Shops + +If you copy and paste regions that contain shops: + +- Shop data will not duplicate incorrectly. +- Shop IDs remain consistent. +- Invalid pasted shops will not auto-register unless properly created. + +This prevents accidental duplication exploits. + +--- + +## Performance + +WorldEdit and FAWE operations can modify thousands of blocks at once. + +QuickShop processes these safely and efficiently: + +- Batch-aware cleanup +- Thread-safe region access (especially on Folia) +- Minimal performance impact during mass edits + +--- + +## Configuration + +There are no specific WorldEdit configuration options in QuickShop. + +Support is automatic and always enabled if WorldEdit or FAWE is detected. + +If WorldEdit is not installed, no extra code is executed. + +--- + +## Common Questions + +### Do I need the old WorldEdit compatibility jar? + +No. + +As of 6.2.0.11, WorldEdit support is built-in and the separate compatibility module has been removed. + +### Does this work with FAWE? + +Yes. FAWE is fully supported. + +### Will shops break if I use //set air? + +No. Shops will be safely removed and cleaned up. + +### Do I need to restart after installing WorldEdit? + +No. QuickShop detects WorldEdit automatically on startup. + +--- + +## Best Practices + +Even though QuickShop safely handles WorldEdit operations, it is recommended to: + +- Avoid copying shops intentionally unless required +- Use backups before large region edits +- Test large FAWE operations on staging servers when possible + +--- + +## Summary + +QuickShop’s built-in WorldEdit and FAWE integration ensures: + +- Safe mass edits +- No ghost shops +- Automatic database cleanup +- Thread-safe processing +- No extra modules required + +WorldEdit support is now a core feature of QuickShop. \ No newline at end of file diff --git a/i18n/ca-ES/docusaurus-plugin-content-docs/current/setup/install.md b/i18n/ca-ES/docusaurus-plugin-content-docs/current/setup/install.md index fd02cfa1cc..2fc7851f3b 100644 --- a/i18n/ca-ES/docusaurus-plugin-content-docs/current/setup/install.md +++ b/i18n/ca-ES/docusaurus-plugin-content-docs/current/setup/install.md @@ -1,13 +1,14 @@ # Installation -This page will walk you through the process of installing QuickShop-Hikari on your Spigot server. +This page will walk you through the process of installing QuickShop-Hikari on your PaperMC server. ## Requirements -- A [Spigot][spigot]-based Minecraft server (1.20 or higher, Java 21) - - You can also use [Paper][paper], which is a fork of Spigot for better compatibility, more features and higher performance. +- A [Paper][paper]-based Minecraft server (1.20 or higher, Java 21) - [Vault][vault] for bridging the economy system between QuickShop and your economy plugins. -- [ProtocolLib][plib] for virtual display item, Per-player localization. +- For virtual item displays, and per-player localization you need a supported protocol library: + - [ProtocolLib][plib] + - [PacketEvents][https://www.spigotmc.org/resources/packetevents-api.80279/] - Any Vault compatible economy plugin, such as [XConomy][xconomy], If you have [EssentialsX][essx], it will also works well. - A permission management plugin like [LuckPerms][luckperm]. @@ -15,13 +16,17 @@ In this document, we assume that you are using the latest version of QuickShop-H ## Installing dependencies -Before installing QuickShop-Hikari, you should make sure that you have all dependencies installed, including [Vault][vault], [ProtocolLib][plib], [XConomy][xconomy] (or [EssentialsX][essx] if you want) and [LuckPerms][luckperm]! +Before installing QuickShop-Hikari, you should make sure that you have all dependencies installed, including [Vault][vault], [ProtocolLib][plib] or \[PacketEvents]\[https\://www\.spigotmc.org/resources/packetevents-api.80279/], [XConomy][xconomy] (or [EssentialsX][essx] if you want) and [LuckPerms][luckperm]! Download the plugins and drop them into `plugins` folder and you're all set! +## Configuring the Display Protocol + +If you have both ProtocolLib and PacketEvents, and you want to utilize PacketEvents for your display items, you'll need to set it as such in config.yml: `shop. display-protocol: 'packetevents'` + ## Installing QuickShop-Hikari -Download the latest version of QuickShop-Hikari from [Modrinth][qs-modrinth], if you find multiple files that have `Compat-` prefix in file name, ignore them in this step.\ +Download the latest version of QuickShop-Hikari from [Modrinth][qs-modrinth], if you find multiple files that have `Compat-` prefix in file name, ignore them in this step. The only file you need to download should have a **Primary** tag like this in the image below: ![download primary file](./img/download-primary.png) @@ -52,12 +57,11 @@ For advanced permission setup, you can check [here](./permissions.md). Now QuickShop-Hikari is running on your server, for more settings, check the navigation panel on the left and see different sections. -[spigot]: https://www.spigotmc.org/wiki/buildtools/ [paper]: https://papermc.io/ -[vault]: https://www.spigotmc.org/resources/34315/ -[xconomy]: https://www.spigotmc.org/resources/75669/ +[vault]: https://www.spigotmc.org/resources/vaultunlocked.117277/ +[xconomy]: https://www.spigotmc.org/resources/xconomy.75669/ [essx]: https://modrinth.com/plugin/essentialsx -[plib]: https://www.spigotmc.org/resources/1997 +[plib]: https://www.spigotmc.org/resources/protocollib.1997/ [luckperm]: https://luckperms.net/ [qs-modrinth]: https://modrinth.com/plugin/quickshop-hikari [dc]: https://discord.gg/Bu3dVtmsD3 diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/addon/limited.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/addon/limited.md index 70af27e240..fae55a8c95 100644 --- a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/addon/limited.md +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/addon/limited.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -41,8 +35,8 @@ Limit players to purchase up to 16 items per month. /quickshop limit period MONTH ``` -The system is based on the QuickShop-Hikari calendar system.\ -The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year.\ +The system is based on the QuickShop-Hikari calendar system. +The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year. Same for days, months and hours. Available time units: diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/addon/list.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/addon/list.md index 93d182f083..f20b91fd7b 100644 --- a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/addon/list.md +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/addon/list.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/addon/plan.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/addon/plan.md index 52a6e79cb4..c10ef4df42 100644 --- a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/addon/plan.md +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/addon/plan.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -18,7 +18,7 @@ Recorded data can be displayed from Hikari v2.0.0.0 onwards, but only after vers - All shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 1000 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `5` in server scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `5` in server scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Player Scope @@ -27,7 +27,7 @@ And still is Plan limitations, the list sorting is disturbed, so the display ord - All owned shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 50 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `4` in player scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `4` in player scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Showcase diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/addon/reforges.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/addon/reforges.md index 2a14509eb7..25fff1752a 100644 --- a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/addon/reforges.md +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/addon/reforges.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.0.0.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md index 304d39bc05..6f9f51d250 100644 --- a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.1.1.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -44,7 +38,7 @@ _This is not necessary if you are using an H2 database._ ### Prepare for convert -To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console.\ +To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console. If a player is in the server, the conversion cannot be started. Once the conversion has begun, the server will be locked during the conversion process and no players will be able to join the server during the conversion. diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/addon/shopitemonly.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/addon/shopitemonly.md index c45062f8c2..1ccfe977b3 100644 --- a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/addon/shopitemonly.md +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/addon/shopitemonly.md @@ -2,17 +2,11 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT - -::: - -This addon prevents players from putting non-store items into store containers.\ +This addon prevents players from putting non-store items into store containers. Does not apply to stores that use the item inventory redirection API (aka. InventoryWrapper API). This Addon will check for container (or transferring) items on events such as the player closing the container or hopper access. diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md new file mode 100644 index 0000000000..9c8b4f7407 --- /dev/null +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md @@ -0,0 +1,55 @@ +# 6.2.0.10 + +## Major Changes + +- Added support for 1.21.6 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.7 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.8 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Some internal updates for packetevents(2.9.0 is now required.) +- Updated Lands support + +## Addon Changes + +- Added MatcherPlus Addon + - Allows support for BreweryX and AdvancedItems stacks in shops with improved matching abilities +- Added FabledSkyblock Compat +- Added Dominion Compat +- Added HuskTowns Compat +- Added IridiumSkyblock Compat +- Added member-create for member creation in ARM compat +- Added admin-override and quickshop.arm.admin permission for admin overrides in ARM + +## Minor Changes + +- Added configurations for the coordinates of the display item. +- Added /qs toggledisplayall on/off server/owned + - Players need to have permission node quickshop.toggledisplayall.admin to toggle all on the server. +- Added ability to use abbreviations in /qs price and /qs create commands such as 2.5k for 2500 +- Added ability to set default display status using shop.default-display in config.yml + +## Fixes + +- Fixed issue with display item being sent to the moon on 1.21.5 +- Fixed issue where TRADE_UI interactions interfered with quick create. +- Fixed issue with displays on protocollib falling through the chest +- Fixed issue with signs on .9 and previous .10 snapshots on early versions +- Implemented some performance improvements for paper servers +- Fixed all outstanding issues with Folia usage.(thanks to RootB33R/SleazLee for contributions) + +## Possible 6.2.0.11 Features + +Here's an outline for some features that may arrive in 6.2.0.11: + +- Additional compats/addons that have been piling up. + - see: https://github.com/QuickShop-Community/QuickShop-Hikari/issues/1756 +- gradle?(interested to see compilation time uplifts) +- Update documentation +- Update configuration comments +- Update configuration system? + - auto updating? + - Allows removal of the update code +- Remove waste spigot modules? + - Any versions of 1.20 that can be discarded due to low use? +- Bug fixing, of course +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... \ No newline at end of file diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md new file mode 100644 index 0000000000..b41c88662a --- /dev/null +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md @@ -0,0 +1,173 @@ +## Outline + +- Update documentation +- Update configuration comments +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... + +# 6.2.0.11 + +## Major Changes + +- Removed Spigot Platform Modules, and stopped loading QS if Spigot is detected. This will mean that unless the protocol changes that we use for display items, QS won't need updated for each version. +- Revamped Economy Code Completely + - New classes for all economy-related systems + - Any economy-related or benefits-related events are incompatible with previous versions. +- Added sign layout customizations per-type allowing you to change how lines are configured, an empty string('') will leave an empty line for that line of the sign. + +``` + #The layout of signs for shops. + layout: + + #The layout of BUYING shops. + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of FROZEN shops. + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of SELLING shops. + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +- Add wildcard support for item blacklist patterns(thanks to bennycallanan) + - Added support for wildcard patterns in the item blacklist configuration, allowing users to block entire categories of items with simple patterns. + + - Features + - Wildcard patterns like \*_AXE and \*_SPAWN_EGG now work in blacklist configuration + - Supports \* for any characters and ? for single character matching + - Case-insensitive pattern matching +- Overhauled GUI system(thanks to Yusakidev) + - Implemented gui.yml configuration file for customizing the GUI. + - Implemented better filtering for qs browse + - Implement GUI system to be more stable, and less error prone. + - Added gui.yml for fully configurable GUI layouts and text + - Browse menu: search, sort (price/name/stock), and filter (all/buying/selling/in-stock) + - Staff menu: search functionality for player/staff selection + - Grouped item pages for better shop browsing + - Refactored all menu pages to use configurable display/lore +- Added worldedit compat to QS internally as it's widely used. +- Revamped the taxation system to be more flexible and easier to configure. + - introduced a new progressive tax system that allows you to tax based on the balance of players.(suggested by YuanYuanOwO) + - introduced the ability to tax the player interacting with the shop, the owner, or both + - all tax-related configurations have been moved under the shop-tax section of the config. this may require reconfiguration of your tax settings. + - added a new ShopEnhancedTaxEvent, deprecated the old ShopTaxEvent. + - Added a new TaxManager, and TaxProvider interfaces, this allows for custom tax providers to be added by addons/third-party developers. + +## Addons/Compats Changes + +- Added UltimateClaims compat +- Added SimpleClaimSystem compat +- Added Quests by Pika addon +- Added BetonQuest addon +- Added Pl3xMap addon +- MatcherPlus Compat Improvements + - Added support for CrazyCrates + - Added support for ExcellentCrates + - Added support for SilkSpawners. +- WorldGuard Compat Improvements(Thanks to golovin12) + - Added clear permission handling: + - Region owners and members automatically have permission to create and trade in their own regions. + - Other players must have the appropriate WorldGuard flags enabled (quickshophikari-create, quickshophikari-trade) to interact with shops. + - If a shop is located outside any region, default QuickShop behavior applies (no extra restrictions) +- Added colored markers based on shop state for bluemap(thanks to YusakiDev) +- Updated dynmap/towny addons to use the new ShopTypeEnhancedEvent instead of ShopTypeEvent. +- Removed worldedit compat, it's now included in the main plugin. +- Added support for global flags to the worldguard compat. + +## Internals/Developer APIs + +- Removed several deprecated methods and classes. +- Revamped the interaction manager. It is now more flexible and allows external additions + - This involves two classes InteractionBehavior and InteractionType. + - InteractionType details the type of interaction such as: STANDING_LEFT_CLICK_SIGN, STANDING_LEFT_CLICK_SHOP + - InteractionBehavior outlines a behavior for an InteractionType such as CONTROL_PANEL and TRADE_UI +- Added UserLimitCalculationEvent, which allows for custom limits to be applied to users. + - This is useful for limiting the number of shops a user can have, or adding on to the existing limits provided by the ranks system without needing to implement a new RankLimiter. +- Added a new ShopLayoutProvider interface, and default implementation. + - This allows for custom layouts to be used for shops, allowing for more customization. + - This also allows for developers to override the default layout provider and create their own implementation. +- How to make your own? + - Implement the classes you would like to then register with the InteractionManager: + - ```java + InteractionManager manager = QuickShop.getInstance().getInteractionManager(); + + manager.interaction(new MyTradeInteraction()); + manager.behavior(new MyTradeBehavior()); + ``` +- Replaced some Apache Commons calls that could be easily replaced with built-in java methods, reduces some calls by ~ 1100ms/method call +- Deprecated the ShopType enum, and the ShopTypeEvent. These are replaced with the new IShopType interface and implementing classes. + - The new event is ShopTypeEnhancedEvent. + - This allows for third-party addons to add their own shop types, and simplifies code checks for translations. +- Updated config system to use Boosted-yaml + - this allows for auto-updating of config files without complex update scripts + - this also allows for the config system to not be minecraft-dependent. +- Replaced logical PaperLib calls with native PaperAPI calls. + +## Minor Changes + +- Bump Java version up to 21 +- Added shop.display-allow-enchants to enable/disable enchantments for display items on shops. +- Added workaround for packetevents not supporting custom enchants on itemstacks for virtual display items. +- Using locale translations for shop-type in mode toggle icon(thanks to ExyiN) +- Bumped Residence version for the compat(thanks to YuanYuanOwO) +- add world whitelist support(thanks to wling-art) +- added /qs database save command, which saves all currently dirty-marked shops to the database. +- Split up interactions _SHOPBLOCK into _SHOPBLOCK and _CONTAINER. + - _SHOPBLOCK relates to shops, where _CONTAINER relates to shop-valid containers that are not currently shops. +- Added inventory as an option for command panel, this is useful for adding a secondary option for players to open a shop's inventory. +- Moved crowdin arguments from system properties to config.yml + - crowdin-host + - use-crowdin-ota + +## Fixes + +- Fixes issue with item price restrictions(thanks to maxcom1) +- Fixes issue with 1.20.x protocol lib displays(thanks to YuanYuanOwO) +- Fixes issue when no item is in hand for itemdebug(thanks to YuanYuanOwO) +- Fixes issue with dominion addon(thanks to YuanYuanOwO) +- Add a simple check to avoid this. If it is not own shop, reject limit request directly.(Thanks to YuanYuanOwO) +- Fix NPE by not setting tax for price in TransactionBuilder(thanks to maxcom1) +- Fixes /quickshop suggestprice to differentiate between buy/sell shops. (Thanks to MidSpike) +- PacketEvents ClassNotFoundException with ProtocolLib(thanks to wling-art) +- Reallocate block state access to region thread for shop creation(thanks to r00tbeerman) +- resolve SLF4J StaticLoggerBinder loading error(thanks to wling-art) +- sign hijacking issue by validating sign facing direction(thanks to wling-art) +- Performance improvements for QuickShop disabling to prevent potential freezes. +- Fixed issue with 1.20.4 packetevents virtual displays not staying put. +- Fixes critical issue in GriefPrevention compatibility plugin. +- Fixes issue with shop owner not getting money when benefits active. +- Fixes for lands addon on folia, Use regionThread for Folia compatibility(thanks to YusakiDev) +- Fixes for TRADE_DIRECT on stacking shops +- Fixes issue for protocollib 5.4.0 with undocumented packet changes. +- Fixes issue where item stacks could be used on creation above the max stack size. +- Fixes issue with BukkitAudiences-related crashes on 1.21.11. +- Fix issue with shop deletion when getting too impatient. +- Fix the permission check issue when a shop owned by a non-owner is transferred to someone else. (thanks to YuanYuanOwO) +- Fix ui with supertool (thanks to YuanYuanOwO) +- Fix issue with logs generating outside debug mode. +- Fix issue with /qs find. +- Fix configuration loading timing. +- Fix configuration loading/creation warning message language. +- Fix command description language key mismatch(thanks to wling-art) +- Fix qs clean command on folia(thanks to wling-art) +- Fix per-player-shop-sign on folia(thanks to wling-art) +- Fix potential recursive deadlock in virtual display packet sending(thanks to wling-art) +- Fix configuration loading/creation warning message language. +- Fix issue with /qs browse and ShopItemOnly addon not behaving properly together on folia. +- Fix issue with PLAN using outdated APIs. +- Fix issue with /qs clean on folia.(thanks to wling-art) +- Fix issue with /qs cleanghost on folia(thanks to wling-art) +- More thread safety fixes for shops on folia.(thanks to wling-art) +- Fix owner payment calculations with benefits(thanks to wling-art) \ No newline at end of file diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md index 8172f9b410..dcc3edc67d 100644 --- a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md @@ -20,20 +20,20 @@ the ControlComponent object with a custom one that will replace the original dur ### Introduction of the Revamped Packet System 1. **About**: - - A modular and scalable system for managing packets related to virtual display items in Minecraft. - - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. + - A modular and scalable system for managing packets related to virtual display items in Minecraft. + - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. 2. **Custom Packet Factories**: - - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. - - Packet types: - - **Spawn Packet**: Spawns a virtual item entity at a specific location. - - **Metadata Packet**: Updates the visual properties of virtual items. - - **Velocity Packet**: Adds motion/velocity to entities (currently optional). - - **Destroy Packet**: Removes the entity from the client view. + - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. + - Packet types: + - **Spawn Packet**: Spawns a virtual item entity at a specific location. + - **Metadata Packet**: Updates the visual properties of virtual items. + - **Velocity Packet**: Adds motion/velocity to entities (currently optional). + - **Destroy Packet**: Removes the entity from the client view. 3. **Error Handling and Logging**: - - Enhanced debug logs to trace packet-related issues. - - Detailed error messages for missing factories or unregistered listeners. + - Enhanced debug logs to trace packet-related issues. + - Detailed error messages for missing factories or unregistered listeners. #### Improvements: diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md index 7775308722..c6e0948d19 100644 --- a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md index f420997a9c..38587e3784 100644 --- a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md index 5ed8182c9a..259c55f342 100644 --- a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md index 924a37ac49..7fd4596a6a 100644 --- a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,6 +10,6 @@ This is a BungeeCord plugin, you need install it within your BungeeCord's plugin ## How does it work? -BungeeCord Bridge plugins will register a `quickshop:bungee` channel for fowarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. +BungeeCord Bridge plugins will register a `quickshop:bungee` channel for forwarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. All forwarding is indicated by QuickShop-Hikari on the Spigot server and ends when it is not needed. diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md index 27d68956a8..20fbaf7a0c 100644 --- a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,5 +10,5 @@ This compatibility module added [Chest Protect](https://www.spigotmc.org/resourc ## How does it work? -This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident.\ +This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident. It also prevents players from creating shops on ChestProtect protected containers. diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md index 220e26d8bb..e1757e7be9 100644 --- a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/dominion.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/dominion.md new file mode 100644 index 0000000000..e1195278a8 --- /dev/null +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/dominion.md @@ -0,0 +1,138 @@ +# Dominion + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and Dominion. + +It ensures that shop creation and trading respect Dominion’s land and territory protection system. + +--- + +## What Does It Do? + +Dominion allows players or groups to claim land and define territory-based permissions. + +Without compatibility: + +- Players could create shops inside territories they do not control. +- Visitors might trade inside protected dominions. +- Dominion permission rules might not apply to shop interactions. + +The Dominion compat module ensures that: + +- Shop creation respects territory ownership. +- Shop trading follows Dominion permission settings. +- Protected land remains secure from unauthorized shop usage. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a Dominion-controlled area. +- Whether the player has permission within that territory. +- Whether Dominion rules allow shop interaction. + +If the action is not permitted by Dominion settings, QuickShop blocks it. + +If the location is outside any Dominion territory, default QuickShop behavior applies. + +--- + +## Territory Owner Control + +With this module enabled: + +- Territory owners can create and manage shops inside their dominion. +- Trusted members follow territory-based permissions. +- Outsiders are restricted unless explicitly allowed. +- Shop actions respect Dominion’s land rules automatically. + +This prevents unauthorized shop placement inside protected territories. + +--- + +## Installation + +1. Install Dominion. +2. Install the QuickShop Dominion compat module. +3. Restart your server. + +The module activates automatically if Dominion is detected. + +No manual configuration linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside dominions +whitelist-mode: false + +# Allow territory owners to override shop permissions +allow-owner-override: true +``` + +If Dominion is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For servers using Dominion: + +- Restrict shop creation to territory owners or trusted members. +- Prevent shop creation in wilderness if desired. +- Allow dominion owners to manage shop permissions. +- Review Dominion permission settings to align with shop behavior. + +This ensures protected territories remain secure and organized. + +--- + +## Common Questions + +### Can players create shops in someone else's dominion? + +Only if Dominion permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You may allow or restrict shops outside dominions. + +### What happens if Dominion is removed? + +QuickShop returns to normal behavior and stops checking Dominion territories. + +--- + +## Summary + +The Dominion compat module: + +- Enforces territory-based permissions +- Prevents unauthorized shop creation +- Protects claimed land from misuse +- Integrates seamlessly with Dominion + +It is recommended for servers running Dominion. \ No newline at end of file diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md index 743d3ae666..2ac9b10488 100644 --- a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md new file mode 100644 index 0000000000..07ba4ada66 --- /dev/null +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md @@ -0,0 +1,133 @@ +# FabledSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and FabledSkyblock. + +It ensures that shop creation and trading properly respect island boundaries and island permissions. + +--- + +## What Does It Do? + +On Skyblock servers, players build and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Players might trade in areas they should not. +- Island protection rules might not apply to shops. + +The FabledSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members behave correctly with shops. +- Island visitors are restricted appropriately. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a FabledSkyblock island. +- Whether the player has permission on that island. +- Whether island settings allow the action. + +If the action is not permitted by island rules, QuickShop will deny it. + +--- + +## Island Ownership Rules + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow island permission settings. +- Visitors can only trade if island permissions allow it. +- Outside of islands, default QuickShop behavior applies. + +--- + +## Installation + +1. Install FabledSkyblock. +2. Install the QuickShop FabledSkyblock compat module. +3. Restart your server. + +The module activates automatically if FabledSkyblock is detected. + +No manual linking is required. + +--- + +## Configuration + +If the module provides configuration options, they will appear in its `config.yml`. + +Typical options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If FabledSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most Skyblock servers: + +- Allow shop creation only inside islands. +- Prevent trading in the void or wilderness. +- Let island owners control shop permissions. +- Use island rank systems to manage shop access. + +This helps maintain economic balance between islands. + +--- + +## Common Questions + +### Can players create shops in the void? + +Only if your configuration allows it. +Most servers disable shop creation outside islands. + +### Does this affect island war or PvP modes? + +No. +The module only checks island ownership and permissions for shop interactions. + +### What happens if FabledSkyblock is removed? + +QuickShop returns to normal behavior. + +--- + +## Summary + +The FabledSkyblock compat module: + +- Protects island economies +- Enforces island permission rules +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is strongly recommended for any server running FabledSkyblock. \ No newline at end of file diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md index 81b13d2c6b..32614d3019 100644 --- a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md @@ -2,17 +2,17 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -GreifPrevention compatibility module added compaitibility with GF. +GreifPrevention compatibility module added compatibility with GF. ## How does it work This module allow QuickShop-Hikari check if player have permission to create or use QuickShop in specific region. -And delete shops when claim removed, untrusted, unclimed, expired, resized or subclaim created. +And delete shops when claim removed, untrusted, unclaimed, expired, resized or subclaim created. ## Configuration diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md new file mode 100644 index 0000000000..e71b34d462 --- /dev/null +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md @@ -0,0 +1,139 @@ +# HuskTowns + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and HuskTowns. + +It ensures that shop creation and trading respect town and claim permissions defined by HuskTowns. + +--- + +## What Does It Do? + +HuskTowns allows players to create towns and claim land. + +Without compatibility: + +- Players could create shops inside towns they do not belong to. +- Visitors might trade inside protected towns. +- Town permission rules might not apply to shop interactions. + +The HuskTowns compat module ensures that: + +- Shop creation respects town ownership. +- Trading follows town permission settings. +- Town members and visitors are handled correctly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a HuskTowns claim. +- Whether the player is a town member, trusted player, or outsider. +- Whether the town's permission settings allow the action. + +If the action is not permitted by town rules, QuickShop blocks it. + +Outside of town claims, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Town Owner Control + +With this module enabled: + +- Town owners can create and manage shops inside their town. +- Town members follow town-based permission settings. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect town claim protection. + +This prevents unauthorized shop placement and trading inside protected towns. + +--- + +## Installation + +1. Install HuskTowns. +2. Install the QuickShop HuskTowns compat module. +3. Restart your server. + +The module activates automatically if HuskTowns is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside towns +whitelist-mode: false + +# Allow town owners to override shop permissions +allow-owner-override: true +``` + +If HuskTowns is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For town-based survival servers: + +- Restrict shop creation to town members. +- Allow trading only where town permissions permit. +- Prevent shop creation in wilderness if desired. +- Enable owner override for better administrative control. + +This helps maintain town-based economic balance. + +--- + +## Common Questions + +### Can players create shops in another town? + +Only if that town's permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You can allow or restrict shops outside towns. + +### What happens if HuskTowns is removed? + +QuickShop returns to normal behavior and stops checking town permissions. + +--- + +## Summary + +The HuskTowns compat module: + +- Enforces town-based land permissions +- Protects towns from unauthorized shop usage +- Integrates smoothly with HuskTowns +- Requires minimal setup + +It is recommended for any server running HuskTowns. \ No newline at end of file diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md new file mode 100644 index 0000000000..3fa2995eb0 --- /dev/null +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md @@ -0,0 +1,139 @@ +# IridiumSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and IridiumSkyblock. + +It ensures that shop creation and trading respect island boundaries and island permission settings defined by IridiumSkyblock. + +--- + +## What Does It Do? + +IridiumSkyblock allows players to create and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Visitors might trade inside protected islands. +- Island protection rules might not apply correctly to shops. + +The IridiumSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members and visitors are handled properly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside an IridiumSkyblock island. +- Whether the player is the island owner, member, or visitor. +- Whether island permissions allow shop interaction. + +If the action is not permitted, QuickShop blocks it. + +Outside of islands, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Island Owner Permissions + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow the island's permission configuration. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect island protection rules. + +This prevents unauthorized shop usage inside protected islands. + +--- + +## Installation + +1. Install IridiumSkyblock. +2. Install the QuickShop IridiumSkyblock compat module. +3. Restart your server. + +The module activates automatically if IridiumSkyblock is detected. + +No additional setup is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If IridiumSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most IridiumSkyblock servers: + +- Restrict shop creation to island owners. +- Allow island members to trade if trusted. +- Prevent shop creation in the void or wilderness. +- Enable owner override for better management. + +This helps maintain balanced island economies. + +--- + +## Common Questions + +### Can players create shops outside their island? + +Only if your configuration allows it. + +Most Skyblock servers restrict shops to island areas. + +### Do island ranks affect shop permissions? + +Yes, if your island permissions are configured to control interaction rights. + +QuickShop follows island rules. + +### What happens if IridiumSkyblock is removed? + +QuickShop returns to normal behavior and stops checking island permissions. + +--- + +## Summary + +The IridiumSkyblock compat module: + +- Protects island economies +- Enforces island-based permissions +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is recommended for any server running IridiumSkyblock. diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md new file mode 100644 index 0000000000..3b4726cb9d --- /dev/null +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md @@ -0,0 +1,151 @@ +# ItemMatcherPlus + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +The ItemMatcherPlus module improves how QuickShop matches custom and plugin-modified items. + +It allows QuickShop to properly recognize and stack items created by other plugins that normally would not match using standard Bukkit item comparisons. + +This module is especially useful for servers that use: + +- Custom items +- Modified metadata +- NBT-based systems +- Advanced crate rewards +- Custom brewing systems +- Custom fishing rewards + +--- + +## What Does It Do? + +By default, Minecraft item matching checks: + +- Material type +- Basic metadata + +However, many plugins modify items with: + +- Custom NBT data +- Hidden tags +- Custom lore formats +- Unique identifiers + +Without enhanced matching: + +- Items may not stack +- Shops may refuse valid items +- Transactions may fail +- Buying/selling may not behave correctly + +ItemMatcherPlus improves compatibility and matching accuracy. + +--- + +## Supported Plugins + +ItemMatcherPlus includes built-in support for: + +- AdvancedItems +- BreweryX +- CrazyCrates +- ExcellentCrates +- PyroFishing +- SilkSpawners + +If any of these plugins are installed, QuickShop will automatically use enhanced matching logic. + +No additional configuration is required. + +--- + +## How It Works + +When a player trades with a shop: + +1. QuickShop checks the item. +2. If ItemMatcherPlus is enabled, it performs advanced matching. +3. Plugin-specific metadata is validated. +4. The item is confirmed as a match (or rejected safely). + +This allows: + +- Proper stacking of custom items +- Correct shop transactions +- Accurate buy/sell detection +- Reduced false mismatches + +--- + +## Installation + +1. Download the ItemMatcherPlus module. +2. Place the JAR into your `plugins` folder. +3. Restart your server. + +If supported plugins are detected, compatibility activates automatically. + +--- + +## Configuration + +ItemMatcherPlus does not require configuration. + +It activates automatically when: + +- The module is installed +- A supported plugin is detected + +If a supported plugin is not installed, no extra logic runs. + +--- + +## Why You Should Use It + +You should install ItemMatcherPlus if your server uses: + +- Custom fishing plugins +- Custom brewing systems +- Crate plugins with modified items +- Custom spawners +- Any plugin that modifies NBT data + +Without it, shops may not properly recognize custom items. + +--- + +## Common Questions + +### Do I need this if I don't use custom item plugins? + +No. +If you only use vanilla items, this module is not necessary. + +### Does this affect performance? + +The module only activates enhanced matching when needed. + +Normal item matching remains fast and efficient. + +### Will it break existing shops? + +No. +It improves compatibility and matching accuracy without modifying existing shop data. + +--- + +## Summary + +ItemMatcherPlus: + +- Improves item matching accuracy +- Adds support for major custom item plugins +- Prevents stacking and trade issues +- Requires no configuration +- Activates automatically + +If you run a heavily customized economy server, this module is highly recommended. \ No newline at end of file diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md index ba87606698..d4ae7d129a 100644 --- a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/lands.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/lands.md index 06296f5779..7671fcdfe0 100644 --- a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/lands.md +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/lands.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/openinv.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/openinv.md index c51f628615..4807d57873 100644 --- a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/openinv.md +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/openinv.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md new file mode 100644 index 0000000000..c2136320b0 --- /dev/null +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md @@ -0,0 +1,138 @@ +# SimpleClaimSystem + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and SimpleClaimSystem. + +It ensures that shop creation and trading respect land ownership and claim permissions defined by SimpleClaimSystem. + +--- + +## What Does It Do? + +SimpleClaimSystem allows players to claim land and protect it from unauthorized interaction. + +Without compatibility: + +- Players could create shops inside claims they do not own. +- Visitors might trade inside protected areas. +- Claim protection might not apply correctly to shops. + +The SimpleClaimSystem compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops within their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a SimpleClaimSystem claim. +- Whether the player has permission within that claim. +- Whether claim rules allow shop interaction. + +If the action is not permitted by the claim, QuickShop blocks it. + +If the location is outside any claim, default QuickShop behavior applies. + +--- + +## Claim Owner Control + +With this module enabled: + +- Claim owners can create and manage shops inside their claim. +- Trusted players follow claim-based permissions. +- Visitors are restricted unless explicitly allowed. +- Claim protection rules apply automatically to shop interactions. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install SimpleClaimSystem. +2. Install the QuickShop SimpleClaimSystem compat module. +3. Restart your server. + +The module activates automatically if SimpleClaimSystem is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If SimpleClaimSystem is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Enable owner override for easier management. + +This ensures players maintain control over their protected land. + +--- + +## Common Questions + +### Can players create shops in someone else's claim? + +Only if claim permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can allow shops outside claims or restrict them. + +### What happens if SimpleClaimSystem is removed? + +QuickShop will revert to default behavior and stop checking claim permissions. + +--- + +## Summary + +The SimpleClaimSystem compat module: + +- Enforces claim-based permissions +- Prevents unauthorized shop creation +- Protects land from unwanted trading +- Requires minimal setup + +It is recommended for servers running SimpleClaimSystem. \ No newline at end of file diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md index a84dbf057b..4dfa8ae97c 100644 --- a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/towny.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/towny.md index 52ab4818f4..b26c19d335 100644 --- a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/towny.md +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/towny.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -26,7 +26,7 @@ Town sub-command allow you switch a quickshop between regular shop and town shop For a nation shop, the shop owner will changed to nation fake player created by Towny, and use Nation's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from nation Towny account.\ +All purchases will deposit or withdraw money from nation Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Nation Shop. @@ -35,7 +35,7 @@ If Plot type restriction is enabled, only a specific Plot type can create a Nati For a town shop, the shop owner will changed to town fake player created by Towny, and use Town's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from town Towny account.\ +All purchases will deposit or withdraw money from town Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Town Shop. @@ -88,7 +88,7 @@ bank-mode: ## Permission Override -By adjust configuration, you're allow mayor or king automaticlly grant administrator permission on all shops in their management range. +By adjust configuration, you're allow mayor or king automatically grant administrator permission on all shops in their management range. ```yaml #Should allow Mayor grant the shop administrator permission on they town. @@ -168,7 +168,7 @@ This causes Towny and QuickShop Hikari to use accounts with the same name but di You can adjust the option in configuration to enable workaround. -NOTE: It will force turned on if detected EssentialsX installed on your server.\ +NOTE: It will force turned on if detected EssentialsX installed on your server. At present, we do not provide a method for disable it. ```yaml diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md new file mode 100644 index 0000000000..0189958495 --- /dev/null +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md @@ -0,0 +1,138 @@ +# UltimateClaims + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and UltimateClaims. + +It ensures that shop creation and trading respect land claim permissions managed by UltimateClaims. + +--- + +## What Does It Do? + +On servers using land-claim plugins, players protect areas of the world from unauthorized interaction. + +Without compatibility: + +- Players may create shops inside claims they do not own. +- Visitors might trade in areas where they should not. +- Claim protection rules might not apply correctly to shops. + +The UltimateClaims compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops inside their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a claim. +- Whether the player has permission in that claim. +- Whether claim rules allow shop interaction. + +If the action violates claim settings, QuickShop blocks it. + +Outside of claims, normal QuickShop behavior applies. + +--- + +## Claim Owner Permissions + +With this module enabled: + +- Claim owners can create and manage shops within their claim. +- Trusted players follow claim permission settings. +- Visitors are restricted based on claim configuration. +- Shop actions outside of claims behave normally. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install UltimateClaims. +2. Install the QuickShop UltimateClaims compat module. +3. Restart your server. + +If UltimateClaims is detected on startup, compatibility activates automatically. + +No additional linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Common options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If UltimateClaims is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Keep owner override enabled for better control. + +This ensures players maintain full control over their protected land. + +--- + +## Common Questions + +### Can players create shops inside someone else's claim? + +Only if the claim permissions allow it. + +Otherwise, QuickShop will block the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can choose to restrict shops to claimed land only. + +### What happens if UltimateClaims is removed? + +QuickShop returns to normal behavior without claim checks. + +--- + +## Summary + +The UltimateClaims compat module: + +- Protects claimed land from unauthorized shop usage +- Enforces claim-based permissions +- Integrates smoothly with land-claim servers +- Requires minimal setup + +It is recommended for any server running UltimateClaims. \ No newline at end of file diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md index 87a71a205c..6437754503 100644 --- a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md @@ -2,8 +2,10 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. Find out more [here](../modules/shops/worldedit.md). + +Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. \ No newline at end of file diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/development/01-getting-start.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/development/01-getting-start.md index 92b773451e..0e78e52367 100644 --- a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/development/01-getting-start.md +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/development/01-getting-start.md @@ -6,8 +6,8 @@ This series of articles will help you build extensions for QuickShop-Hikari or i ## License -QuickShop-Hikari is open source using the [GPLv3](https://www.gnu.org/licenses/quick-guide-gplv3.en.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari).\ -You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the GPLv3 agreement. +QuickShop-Hikari is open source using the [AGPLv3](https://www.gnu.org/licenses/agpl-3.0.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari). +You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the AGPLv3 agreement. ## 🚧Don't trust Javadoc too much @@ -48,7 +48,7 @@ QuickShop-Hikari divides operation sources into three types: - Server Main Thread - Async Thread (any other threads but not server main thread) -- Hybird +- Hybrid If you access the API through the wrong thread, QuickShop-Hikari will force a runtime error to be thrown. @@ -58,4 +58,4 @@ For APIs that may trigger network IO or long-time disk IO, you are required not You can see [Util.ensureThread()](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/3d1d271e1106ea1c83cc6068f8232ab7c7860918/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/util/Util.java#L351) and find out the requirements of the different APIs by looking up their use. APIs that do not use Util.ensureThread() are allowed to be called from any thread by default. -You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. +You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. \ No newline at end of file diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md index aa2404c594..7828d414ad 100644 --- a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md @@ -10,7 +10,7 @@ ShopManager manager = api.getShopManager(); ## Getting a shop -Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates.\ +Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates. QuickShop-Hikari's store is only bound to one half of "Large Chest", so to get the store, you need to query both the cube itself and its associated cube. The good thing is that there is an API in the plugin that allows you to handle this situation very easily. @@ -71,7 +71,7 @@ manager.deleteShop(shop) // Permanently delete this store, both memory and datab ## Identify a store -Please note that store locations are technically variable and you should not use coordinates to identify a store.\ +Please note that store locations are technically variable and you should not use coordinates to identify a store. Also RuntimeRandomUniqueId should not be used to identify the store, as the name suggests, the value changes every time the server restarts, it should only be used to handle scenarios where the player interacts with the server. ```java diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md index 543f1851da..4f839ed652 100644 --- a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md @@ -1,6 +1,6 @@ # 0x05 Per shop permission -QuickShop-Hikari has a per shop permission management system.\ +QuickShop-Hikari has a per shop permission management system. Therefore, for a normal permission node check is not enough, you need to attach an additional check. ## Check with shop diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/development/06-protocol-system.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/development/06-protocol-system.md index 5d37a15536..0380b789f9 100644 --- a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/development/06-protocol-system.md +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/development/06-protocol-system.md @@ -15,30 +15,30 @@ This documentation will guide developers through the components, implementation - **Purpose**: Manages packet handling and initialization logic. - **Interface**: `PacketHandler` - **Key Methods**: - - `Map> factories()` - - Retrieves a map of supported `PacketFactory` instances keyed by game versions. - - `void initialize()` - - Initializes the packet handler. - - `Optional> factory(String version)` - - Retrieves a `PacketFactory` for a specific game version. + - `Map> factories()` + - Retrieves a map of supported `PacketFactory` instances keyed by game versions. + - `void initialize()` + - Initializes the packet handler. + - `Optional> factory(String version)` + - Retrieves a `PacketFactory` for a specific game version. ### 2. **PacketFactory** - **Purpose**: Creates and sends specific packet types. - **Interface**: `PacketFactory` - **Supported Packets**: - - **Spawn Packet**: - - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. - - Example Use: Representing shop items visually. - - **Metadata Packet**: - - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. - - Example Use: Updating item display name or properties. - - **Velocity Packet**: - - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. - - Example Use: Custom animations for virtual items. - - **Destroy Packet**: - - Removes the entity from the client view. Created using `createDestroyPacket()`. - - Example Use: Unloading or removing a virtual display item. + - **Spawn Packet**: + - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. + - Example Use: Representing shop items visually. + - **Metadata Packet**: + - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. + - Example Use: Updating item display name or properties. + - **Velocity Packet**: + - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. + - Example Use: Custom animations for virtual items. + - **Destroy Packet**: + - Removes the entity from the client view. Created using `createDestroyPacket()`. + - Example Use: Unloading or removing a virtual display item. Developers implementing custom `PacketFactory` should ensure these packets are correctly handled and optimized for performance. @@ -46,24 +46,24 @@ Developers implementing custom `PacketFactory` should ensure these packets are c - **Purpose**: Oversees the lifecycle of virtual display items and integrates with packet handlers. - **Key Features**: - - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). - - Manages virtual display items mapped to chunks. - - Provides thread-safe operations for adding and removing display items. + - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). + - Manages virtual display items mapped to chunks. + - Provides thread-safe operations for adding and removing display items. ### 4. **VirtualDisplayItem** - **Purpose**: Represents a virtual item displayed to players. - **Key Features**: - - Generates and caches packets for spawning, metadata, velocity, and destruction. - - Manages packet senders for each player. - - Handles spawn and removal operations dynamically. + - Generates and caches packets for spawning, metadata, velocity, and destruction. + - Manages packet senders for each player. + - Handles spawn and removal operations dynamically. ### 5. **ProtocolLibHandler and PacketEventsHandler** - **Purpose**: Provide implementations of `PacketHandler` using ProtocolLib and PacketEvents, respectively. - **Differences**: - - `ProtocolLibHandler` leverages ProtocolLib API. - - `PacketEventsHandler` uses the PacketEvents library. + - `ProtocolLibHandler` leverages ProtocolLib API. + - `PacketEventsHandler` uses the PacketEvents library. --- @@ -140,11 +140,11 @@ public class CustomPacketFactory implements PacketFactory { Packet factories are provided for specific game versions through two primary implementations: - **ProtocolLib**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` - **PacketEvents**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` --- diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md new file mode 100644 index 0000000000..aebc035f87 --- /dev/null +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md @@ -0,0 +1,297 @@ +# Interaction System (Developer Guide) + +The Interaction System allows developers to fully customize how players interact with shops. + +As of 6.2.0.11, the system has been redesigned to be: + +- Modular +- Extensible +- Thread-safe +- Fully customizable by third-party addons + +This guide will walk you through: + +1. What the Interaction System is +2. Getting the `InteractionManager` +3. Understanding `InteractionType` +4. Understanding `InteractionBehavior` +5. Registering custom interactions +6. Best practices + +--- + +# Overview + +The Interaction System is composed of three main components: + +| Component | Purpose | +| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| `InteractionType` | Describes **what kind of click happened** (standing, sneaking, left-click, sign, shopblock, etc.) | +| `InteractionBehavior` | Describes **what action should happen** when that type is triggered | +| `InteractionManager` | Central registry that manages interactions and behaviors | + +This separation allows developers to: + +- Add new click types +- Add new behaviors +- Override existing ones +- Extend QuickShop without modifying core code + +--- + +# Getting the InteractionManager + +To begin registering custom interactions, you must retrieve the `InteractionManager` instance. + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +If you are working directly with the plugin instance: + +```java +InteractionManager manager = QuickShop.getInstance().getInteractionManager(); +``` + +Once obtained, you can: + +- Register new interaction types +- Register new behaviors +- Override existing behaviors + +--- + +# Understanding InteractionType + +`InteractionType` represents **how** a player interacted with a shop. + +Examples include: + +- `STANDING_LEFT_CLICK_SIGN` +- `STANDING_RIGHT_CLICK_SHOPBLOCK` +- `SNEAKING_LEFT_CLICK_CONTAINER` +- etc. + +Each `InteractionType` defines: + +- Player stance (standing/sneaking) +- Click type (left/right) +- Target (sign/shopblock/container) + +InteractionTypes do NOT define behavior — they only define the trigger. + +--- + +# Understanding InteractionBehavior + +`InteractionBehavior` defines **what happens** when an interaction is triggered. + +Examples of built-in behaviors: + +- `TRADE_INTERACTION` +- `TRADE_UI` +- `CONTROL_PANEL` +- `CONTROL_PANEL_UI` +- `NONE` + +A behavior: + +- Executes logic +- May open GUIs +- May send chat panels +- May directly trade items +- Can cancel or modify flow + +This separation makes it easy to reuse behaviors across multiple interaction types. + +--- + +# Registering Custom Interactions + +There are two things you can register: + +- A custom `InteractionType` +- A custom `InteractionBehavior` + +--- + +## Creating a Custom InteractionBehavior + +Create a class implementing `InteractionBehavior`. + +Example: + +```java +public class MyTradeBehavior implements InteractionBehavior { + + @Override + public String getKey() { + return "MY_CUSTOM_TRADE"; + } + + @Override + public void execute(InteractionClick click) { + Player player = click.getPlayer(); + Shop shop = click.getShop(); + + player.sendMessage("You triggered my custom interaction!"); + + // Add your custom logic here + } +} +``` + +Then register it: + +```java +InteractionManager manager = api.getInteractionManager(); +manager.behavior(new MyTradeBehavior()); +``` + +Now your behavior is available for use. + +--- + +## Creating a Custom InteractionType + +You may also register custom interaction types if you want to introduce new trigger definitions. + +Example: + +```java +public class MyCustomInteraction implements InteractionType { + + @Override + public String getKey() { + return "STANDING_DOUBLE_CLICK_SIGN"; + } + + @Override + public boolean matches(InteractionClick click) { + // Define custom logic to detect this interaction + return click.isStanding() + && click.isSign() + && click.isDoubleClick(); + } +} +``` + +Register it: + +```java +manager.interaction(new MyCustomInteraction()); +``` + +--- + +# Binding Types to Behaviors + +The InteractionManager internally maps interaction types to behaviors based on configuration and registration order. + +Once your behavior is registered: + +- It can be referenced in `interaction.yml` +- Or attached programmatically + +Example interaction.yml usage: + +```yaml +STANDING_LEFT_CLICK_SIGN: MY_CUSTOM_TRADE +``` + +--- + +# The InteractionClick Object + +When your behavior executes, you receive an `InteractionClick` object. + +It provides: + +- `getPlayer()` +- `getShop()` +- `getLocation()` +- `isSneaking()` +- `isSign()` +- `isShopBlock()` +- etc. + +This gives full context for safe execution. + +--- + +# Advanced: Overriding Built-in Behavior + +If you register a behavior using the same key as an existing one, your behavior can override the default. + +⚠️ Be careful when doing this — you are replacing core functionality. + +--- + +# Best Practices + +### Always Use Unique Keys + +Avoid naming collisions: + +``` +MYPLUGIN_CUSTOM_BEHAVIOR +``` + +### Keep Behavior Lightweight + +Do not block the main thread with: + +- Heavy database calls +- File IO +- Network calls + +Use async tasks if needed. + +### Respect Permissions + +Always validate: + +```java +if (!player.hasPermission("myplugin.use")) { + return; +} +``` + +### Avoid Hard Overrides Unless Necessary + +Instead of replacing built-in behaviors, consider extending them. + +--- + +# Example: Full Minimal Implementation + +```java +public class ExampleAddon { + + public void register(QuickShopAPI api) { + + InteractionManager manager = api.getInteractionManager(); + + manager.behavior(new MyTradeBehavior()); + manager.interaction(new MyCustomInteraction()); + } +} +``` + +--- + +# Conclusion + +The Interaction System is designed to allow: + +- Full extensibility +- Clean separation of triggers and actions +- Easy integration for third-party developers + +By retrieving the `InteractionManager`: + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +You gain full control over how shops respond to player actions. \ No newline at end of file diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/development/08-tax-manager.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/development/08-tax-manager.md new file mode 100644 index 0000000000..72a56f9e88 --- /dev/null +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/development/08-tax-manager.md @@ -0,0 +1,266 @@ +# Tax System (Developer Guide) + +The QuickShop tax system allows server owners and developers to define how transaction taxes are calculated, distributed, and extended. + +As of 6.2.0.11, the tax system has been fully rewritten to provide: + +- A flexible TaxManager +- Pluggable TaxProvider support +- Progressive taxation +- Tax targeting (shop owner, interacting player, or both) +- Custom extension capability for third-party addons + +This guide explains how to work with the tax system programmatically. + +--- + +# Overview + +The tax system is composed of three core components: + +TaxManager +Responsible for coordinating tax calculation and execution. + +TaxProvider +Defines how tax values are calculated. + +TaxRates +Represents calculated tax results for a transaction. + +The system is designed to allow custom providers to be registered and used without modifying core logic. + +--- + +# Getting the TaxManager + +To work with the tax system, retrieve the TaxManager from the ShopManager. + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +Once obtained, you can: + +- Access current tax configuration +- Register custom tax providers +- Calculate tax values +- Hook into tax events + +--- + +# How the Tax System Works + +During a shop transaction: + +1. A base price is determined. +2. The TaxManager selects the active TaxProvider. +3. The TaxProvider calculates applicable tax. +4. A TaxRates object is produced. +5. The system applies the tax to: + + - Shop owner + - Interacting player + - Or both (depending on configuration) + +This architecture allows tax behavior to be modified without altering transaction logic. + +--- + +# TaxProvider + +A TaxProvider defines how tax values are calculated. + +You may create your own provider to implement: + +- Progressive tax brackets +- Flat percentage tax +- Conditional tax rules +- Region-based tax +- Rank-based tax +- Time-based tax + +Example minimal provider: + +```java +public class MyCustomTaxProvider implements TaxProvider { + + @Override + public TaxRates calculateTax(TaxContext context) { + + double basePrice = context.getPrice(); + + double taxAmount = basePrice * 0.05; // 5% flat tax + + return new TaxRates() + .ownerTax(taxAmount) + .buyerTax(0.0); + } +} +``` + +Then register it: + +```java +taxManager.provider(new MyCustomTaxProvider()); +``` + +Once registered, your provider will be used for tax calculations. + +--- + +# TaxRates + +TaxRates represents the result of a tax calculation. + +It typically contains: + +- Owner tax amount +- Buyer tax amount +- Total tax impact +- Metadata (if applicable) + +The transaction system will read from TaxRates and apply deductions accordingly. + +--- + +# Progressive Taxation + +The built-in system supports progressive tax structures. + +This allows server administrators to tax based on: + +- Player balance +- Shop owner balance +- Configured tax brackets + +Example configuration concept: + +- 0–10,000 balance → 1% tax +- 10,000–100,000 → 2% tax +- 100,000+ → 3% tax + +Developers can extend or override this logic inside a custom TaxProvider. + +--- + +# Targeting Tax + +The new tax system allows taxes to be applied to: + +- Shop owner +- Interacting player +- Both + +This is controlled via configuration, but custom providers can override distribution logic by adjusting TaxRates output. + +Example: + +```java +return new TaxRates() + .ownerTax(basePrice * 0.02) + .buyerTax(basePrice * 0.01); +``` + +--- + +# Registering a Custom TaxProvider + +To replace or extend tax logic: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); + +taxManager.provider(new MyCustomTaxProvider()); +``` + +You may register only one primary provider at a time. If multiple providers are needed, implement internal delegation within your custom provider. + +--- + +# Tax Events + +The tax system integrates with the event system. + +The modern event used is: + +ShopEnhancedTaxEvent + +This replaces legacy tax events and provides improved context, including: + +- Transaction builder reference +- TaxRates object +- Modification capability before final execution + +You can listen for the event and modify tax behavior dynamically: + +```java +@EventHandler +public void onTax(ShopEnhancedTaxEvent event) { + + TaxRates rates = event.getTaxRates(); + + // Example: Give VIP players reduced owner tax + if (event.getOwner().hasPermission("vip.tax.discount")) { + rates.ownerTax(rates.getOwnerTax() * 0.5); + } +} +``` + +--- + +# Best Practices + +Always keep tax calculations lightweight. + +Avoid: + +- Heavy database queries inside calculateTax +- Blocking network calls +- Long-running computations + +If complex logic is required, pre-cache required data outside the tax execution path. + +Ensure negative tax values are not returned unless intentional. + +Always validate final amounts before applying modifications. + +Respect configuration hierarchy unless intentionally overriding it. + +--- + +# Example Full Implementation + +```java +public class ExampleTaxAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + TaxManager taxManager = manager.taxManager(); + + taxManager.provider(new MyCustomTaxProvider()); + } +} +``` + +--- + +# Conclusion + +The new tax system is designed for: + +- Flexibility +- Extensibility +- Clean separation of concerns +- Future expansion + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +You gain full control over how QuickShop calculates and applies tax during transactions. \ No newline at end of file diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/development/09-layout-provider.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/development/09-layout-provider.md new file mode 100644 index 0000000000..55e3cd3e91 --- /dev/null +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/development/09-layout-provider.md @@ -0,0 +1,275 @@ +# Shop Layout Provider (Developer Guide) + +The Shop Layout Provider system allows developers to customize how shop signs are structured and rendered. + +As of 6.2.0.11, shop layouts are no longer hardcoded. Instead, they are controlled through the `IShopLayoutProvider` interface, which allows: + +- Custom sign line ordering +- Per-shop-type layouts (BUYING, SELLING, FROZEN, or custom types) +- Dynamic layout resolution +- Complete replacement of the default layout system + +This guide explains how to access, override, and implement a custom layout provider. + +--- + +# Overview + +The layout provider controls how shop sign lines are arranged. + +Instead of hardcoding: + +Line 1 → Header +Line 2 → Trading info +Line 3 → Item +Line 4 → Price + +The system now allows full customization through: + +- Config-based layout definitions +- Custom `IShopLayoutProvider` implementations +- Runtime overrides + +The default implementation is `SimpleShopLayoutProvider`. + +--- + +# Accessing the Layout Provider + +To retrieve the current layout provider: + +```java +ShopManager manager = api.getShopManager(); +IShopLayoutProvider provider = manager.shopLayoutProvider(); +``` + +To replace the layout provider with a custom one: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Once replaced, your implementation will control how shop layouts are generated. + +--- + +# Understanding IShopLayoutProvider + +`IShopLayoutProvider` defines how layout data is retrieved and resolved. + +It is responsible for: + +- Providing layout configuration per shop type +- Determining which layout to use +- Supplying formatted line keys +- Allowing future extensibility + +The default implementation reads layout definitions from configuration and applies them based on shop type. + +--- + +# Default Layout Example + +The default configuration-based layout looks like this: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +Each line maps to a layout component key. + +An empty string (`""`) leaves that line blank. + +The layout provider resolves these keys into actual sign content. + +--- + +# Creating a Custom Layout Provider + +To override the default behavior, implement `IShopLayoutProvider`. + +Example minimal implementation: + +```java +public class MyCustomLayoutProvider implements IShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + + ShopLayout layout = new ShopLayout(); + + layout.setLine(1, "Custom Header"); + layout.setLine(2, "Owner: " + shop.getOwnerName()); + layout.setLine(3, shop.getItem().getType().name()); + layout.setLine(4, "$" + shop.getPrice()); + + return layout; + } +} +``` + +Then register it: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Your layout will now control all shop sign formatting. + +--- + +# Per-Type Layout Control + +Because the system no longer depends on the legacy ShopType enum, layouts can support: + +- Built-in types (BUYING, SELLING, FROZEN) +- Custom shop types +- Addon-defined shop types + +Your provider can determine layout logic dynamically: + +```java +@Override +public ShopLayout provideLayout(Shop shop) { + + if (shop.getShopType().key().equals("FROZEN")) { + return frozenLayout(shop); + } + + return defaultLayout(shop); +} +``` + +This allows conditional formatting, localization adjustments, or special event styling. + +--- + +# Advanced Customization + +A custom layout provider can: + +- Pull data from external plugins +- Inject dynamic placeholders +- Modify layout per player +- Apply formatting logic +- Override color schemes +- Apply region-based formatting +- Implement animated sign systems + +Because the layout provider is resolved at runtime, you can compute layouts dynamically instead of reading static config. + +--- + +# Replacing vs Extending the Default Provider + +You have two options: + +Replace entirely: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Or extend the default implementation: + +```java +public class ExtendedLayoutProvider extends SimpleShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + ShopLayout base = super.provideLayout(shop); + + base.setLine(1, "[Extended] " + base.getLine(1)); + + return base; + } +} +``` + +Extending is safer if you only want to modify small portions. + +--- + +# Best Practices + +Keep layout generation lightweight. + +Avoid: + +- Heavy database queries +- Blocking IO +- Complex network calls + +Layout generation runs during shop updates and sign refresh events. + +Always handle null values safely. + +Ensure layout line count does not exceed sign limits. + +Avoid hardcoding shop type names unless necessary. + +If your layout supports custom shop types, validate their keys properly. + +--- + +# Example Full Registration + +```java +public class LayoutAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + + manager.shopLayoutProvider(new MyCustomLayoutProvider()); + } +} +``` + +--- + +# Conclusion + +The Shop Layout Provider system allows complete control over shop sign structure. + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +``` + +And setting: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +You can redefine how every shop is displayed on the server. + +This system was designed to support: + +- Extensibility +- Custom shop types +- Localization +- Dynamic formatting +- Future expansion \ No newline at end of file diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/faq/compare-reremake.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/faq/compare-reremake.md index aaa1a9e507..6b39f02520 100644 --- a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/faq/compare-reremake.md +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/faq/compare-reremake.md @@ -64,7 +64,7 @@ If you are a Reremake user, you may be confused about the differences between Hi ## Which one should I use? Well, it depends on what your needs are.\ -If you have an old server (<1.20) instance, Reremake is your only choice.\ +If you have an old server ({'<'}1.20) instance, Reremake is your only choice.\ ~~If you are in China which has GFW interfere, you also should consider Reremake because it doesn't need to load libraries from Global Internet.~~ Solved in 6.0.0.0. If none of these applies, give Hikari a try! diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md index 551f579e7c..172be3a69b 100644 --- a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md @@ -1,8 +1,8 @@ # Where Addons/Compacts is -Addons and Compatilibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. +Addons and Compatibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. -- Open Modrinth versions page, locate the version your're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) +- Open Modrinth versions page, locate the version you're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) - Frantically slide your mouse wheel down until the lowest end of the page. - You get it! diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/internal/database-schema.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/internal/database-schema.md index fea685e4fc..45e04adb56 100644 --- a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/internal/database-schema.md +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/internal/database-schema.md @@ -4,17 +4,17 @@ This chapter will explain the implementation details of QuickShop Hikari's datab ## Tables -This section explains the database tables created by QuickShop-Hikari.\ -Unless otherwise specified, the initial `qs_` in table name is the table prefix.\ +This section explains the database tables created by QuickShop-Hikari. +Unless otherwise specified, the initial `qs_` in table name is the table prefix. For the latest code definition for each table, see: [DataTables.java](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/hikari/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/database/DataTables.java) ### `data` -This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information.\ -No matter what, a data record should not be modified after it is created, until it got deleted.\ +This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information. +No matter what, a data record should not be modified after it is created, until it got deleted. Any new changes to the shop should create a new copy, apply the changes to the copy, and insert it as a new record. -Basiclly, Copy-on-write. +Basically, Copy-on-write. A data record only be deleted from the database when no any table references their `data_id`. @@ -29,7 +29,7 @@ A data record only be deleted from the database when no any table references the | unlimited | BIT NOT NULL | 0 | Indicates whether this store is an unlimited store, 0=Limited, 1=Unlimited | | hologram | BIT NOT NULL | 0 | Indicates the suspension status of this store's display item, 0=Follow global settings, 1=Disabled | | tax_account | VARCHAR(36) | NULL | The uuid for tax account, If it is not NULL, tax will be paid to the specified account | -| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serilized to JSON string | +| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serialized to JSON string | | extra | LONGTEXT | Empty Yaml | Used to store experimental settings of QuickShop Hikari or persistent data of other plugins | | inv_wrapper | VARCHAR(255) NOT NULL | N/A | Unique identifier for InventoryWrapper for this shop data entry | | inv_symbol_link | TEXT NOT NULL | N/A | Unique Inventory symbol used to pass to InventoryWrapper, for locating inventory | @@ -38,7 +38,7 @@ A data record only be deleted from the database when no any table references the ### `shops` -This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes.\ +This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes. Multiple `shop_id` can correspond to the same `data_id`. | Column Name | DataType | Default | Description | diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/cmd-alias.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/cmd-alias.md index 53f1577685..e6ed381c0d 100644 --- a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/cmd-alias.md +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/cmd-alias.md @@ -23,7 +23,7 @@ custom-commands: - cshop ``` -Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect.\ +Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect. The effect should be like this: ![command-alias](./img/command-alias.png) diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/datasource.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/datasource.md index 6fc1bd8931..3fd3a8bdee 100644 --- a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/datasource.md +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/datasource.md @@ -48,7 +48,7 @@ Execute the `/quickshop export` command in console, quickshop will export a zip ![exported data](img/database-export.png) -Stop your database, switch the datasource, and start the server.\ +Stop your database, switch the datasource, and start the server. You may noticed all shops are gone, because new datasources had no data inside, we will restore them from export. Rename that exported ZIP file to `recovery.zip`, execute `/quickshop recovery` and restart your server, all shops should back. diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/itemmatcher.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/itemmatcher.md index 56be243019..922907be27 100644 --- a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/itemmatcher.md +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/itemmatcher.md @@ -4,7 +4,7 @@ ItemMatcher is a utility used by QuickShop-Hikari to compare the items, it is th :::caution -If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse.\ +If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse. **TL;DR: Keep default unless you know what you're doing.** ::: @@ -26,10 +26,10 @@ matcher: work-type: 1 ``` -By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility.\ +By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility. But still, you can toggle to QuickShop Item Matcher if you need to customize the comparing or running QuickShop on the server jar which have bug affect the Bukkit comparing system. -## Customize the metadata compareing +## Customize the metadata comparing Customize only works under QuickShop Item Matcher. diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md index fc2af69d2b..d04e8f2783 100644 --- a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md @@ -4,7 +4,7 @@ ItemStack Loader is a workaround for loading the Bukkit ItemStack. :::caution -Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossble. +Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossible. ::: diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/localization.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/localization.md index e9121e1a36..d47589ab9a 100644 --- a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/localization.md +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/localization.md @@ -10,7 +10,7 @@ To help translate QuickShop-Hikari, please visit our [Crowdin Homepage](https:// ## Crowdin OTA -QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will overrided when you reload QuickShop-Hikari or restart your server. +QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will override when you reload QuickShop-Hikari or restart your server. Your installation will keep translations up-to-date without any touch. @@ -110,6 +110,16 @@ To disable the CrowdinOTA, please add it in the startup flag: -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager.enableCrowdinOTA=false ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +use-crowdin-ota: false +``` + ### Self-Hosted OTA Server If you self-hosted our translation server by using [CrowdinCopyDeploy](https://github.com/Ghost-chu/CrowdinCopyDeploy) tool, you're able to change the OTA server to yourself server. @@ -118,4 +128,12 @@ If you self-hosted our translation server by using [CrowdinCopyDeploy](https://g -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager= ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml +Use + +```yaml +crowdin-host: +``` \ No newline at end of file diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/shops/benefit.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/shops/benefit.md index 4d7a9c8f42..c59d92e6d1 100644 --- a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/shops/benefit.md +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/shops/benefit.md @@ -37,3 +37,13 @@ By default, for security, QuickShop-Hikari disallow add offline players into sho ```bash -Dcom.ghostchu.quickshop.command.subcommand.SubCommand_Benefit.allowOffline=true ``` + +### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +shop.allow-offline-benefit: true +``` \ No newline at end of file diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/shops/control-panel b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/shops/control-panel new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/shops/control-panel @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/shops/history.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/shops/history.md index fa891adeab..195b64a042 100644 --- a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/shops/history.md +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/shops/history.md @@ -24,7 +24,7 @@ The History GUI displays the details of each recorded transaction and other usef ### Transaction details -When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed.\ +When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed. If you are checking the history of more than one store, the player head will be replaced with an item from the corresponding store. ![history-gui](./img/history-gui.png) diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md new file mode 100644 index 0000000000..c5ed3b3fe4 --- /dev/null +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md @@ -0,0 +1,90 @@ +# Shop Types + +QuickShop supports multiple shop types, allowing shops to behave differently depending on their mode. + +The built-in shop types are: + +- Selling +- Buying +- Frozen + +Each type changes how the shop interacts with players. + +--- + +## Selling Shop + +A Selling shop allows players to: + +- Buy items from the shop owner +- Pay money to receive items + +This is the most common shop type. + +--- + +## Buying Shop + +A Buying shop allows players to: + +- Sell items to the shop owner +- Receive money in exchange + +This is commonly used for: + +- Resource collection +- Server buy-back shops +- Automated material sinks + +--- + +## Frozen Shop + +A Frozen shop temporarily disables trading. + +While frozen: + +- No buying is allowed +- No selling is allowed +- The shop remains intact +- Staff or admins can manage it + +This is useful for: + +- Temporary suspensions +- Investigation +- Event locking +- Maintenance + +--- + +## Switching Shop Types + +Shop types can be changed through: + +- Control panel +- GUI control panel +- Admin commands + +Frozen mode is also available via: + +/qs freeze + +--- + +## Custom Shop Types + +As of 6.2.x, the system supports extensible shop types internally. + +While server owners use the built-in types, the system now allows future expansion through addons. + +--- + +## Summary + +Shop types allow you to: + +- Control how money flows +- Enable buy-back mechanics +- Temporarily disable shops +- Build advanced economic systems \ No newline at end of file diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md new file mode 100644 index 0000000000..18e0a47407 --- /dev/null +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md @@ -0,0 +1,217 @@ +# Sign Layout + +QuickShop allows you to fully customize how shop signs are structured. + +You can change: + +- What appears on each line +- The order of information +- Layout per shop type +- Whether certain lines are blank + +This gives you complete control over how shops look on your server. + +--- + +## How Sign Layout Works + +Shop signs have four lines. + +Instead of being hardcoded, QuickShop uses a configurable layout system. + +Each shop type can have its own layout: + +- SELLING +- BUYING +- FROZEN + +You define what each line displays using layout keys. + +--- + +## Configuration Location + +Sign layout is configured in `config.yml` under: + +```yaml +layout: +``` + +Example default configuration: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## Available Layout Keys + +Each line value refers to a built-in layout component. + +Common layout keys include: + +- `header` – The shop header line +- `trading` – Buy/Sell direction information +- `item` – Item name +- `price` – Shop price + +These keys are automatically formatted using your language file and formatting settings. + +--- + +## Leaving a Line Blank + +To leave a line empty, use: + +```yaml +line2: "" +``` + +This is useful if you want: + +- Minimalist signs +- Cleaner layouts +- Custom spacing +- Decorative formatting + +--- + +## Customizing Per Shop Type + +Each shop type can have a different layout. + +For example: + +```yaml +layout: + + SELLING: + line1: "header" + line2: "item" + line3: "price" + line4: "" + + BUYING: + line1: "header" + line2: "price" + line3: "item" + line4: "" + + FROZEN: + line1: "header" + line2: "" + line3: "item" + line4: "Frozen" +``` + +This allows you to visually differentiate: + +- Selling shops +- Buying shops +- Frozen shops + +--- + +## Practical Examples + +### Minimal Style + +```yaml +layout: + SELLING: + line1: "item" + line2: "price" + line3: "" + line4: "" +``` + +### Compact Economy Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "price" + line3: "item" + line4: "" +``` + +### Large Clear Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## How Updates Affect Layout + +When you change the layout: + +- Existing shop signs will update automatically when refreshed. +- New shops will use the updated format immediately. + +If needed, you can reload QuickShop to apply changes. + +--- + +## Best Practices + +- Keep important information visible (price and item). +- Avoid overly complex formatting. +- Test layout changes before deploying on large servers. +- Use different layouts for BUYING and SELLING to reduce confusion. + +--- + +## Common Questions + +### Can I add more than four lines? + +No. +Minecraft signs are limited to four lines. + +### Can I add colors? + +Colors are controlled by your language file and formatting settings. + +### Can I change layout without restarting? + +Yes, but reloading or refreshing shops is recommended to ensure full update. + +--- + +## Summary + +The Sign Layout system allows you to: + +- Fully customize shop sign appearance +- Create per-type layouts +- Simplify or expand shop information +- Improve clarity for players + +All layout customization is handled inside `config.yml`. diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md index abcc288db7..2a0d52d788 100644 --- a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md @@ -8,19 +8,6 @@ This feature added in 6.0.0.0. By default, QuickShop-Hikari uses the default brand material from the configuration file, but you can modify it to other brands for your store with the command. -## Configuration - -```yaml - #The wall sign material. - #ACACIA_WALL_SIGN - #BIRCH_WALL_SIGN - #DARK_OAK_WALL_SIGN - #JUNGLE_WALL_SIGN - #OAK_WALL_SIGN - #SPRUCE_WALL_SIGN - sign-material: OAK_WALL_SIGN -``` - ## Change the material Use command `/quickshop sign ` to change your shop sign material. diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md new file mode 100644 index 0000000000..980bad10f2 --- /dev/null +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md @@ -0,0 +1,130 @@ +# Shop Sign Waxing + +QuickShop can automatically wax shop signs to prevent players from editing them manually. + +Waxing protects the integrity of your shop signs and helps prevent tampering, spoofing, and accidental modification. + +As of modern Minecraft versions, waxed signs cannot be edited unless they are unwaxed first. + +--- + +## What Is Sign Waxing? + +In Minecraft, waxing a sign locks it so that: + +- Players cannot edit the text +- Players cannot modify lines +- Accidental changes are prevented +- Malicious edits are blocked + +When enabled in QuickShop, shop signs are automatically waxed when created. + +--- + +## Why Use It? + +Sign waxing protects against: + +- Players editing price lines +- Changing item names on signs +- Spoofing shop information +- Accidental formatting issues +- Sign hijacking attempts + +On public servers, this feature is strongly recommended. + +--- + +## How It Works + +When a shop is created: + +1. QuickShop generates the shop sign. +2. The sign text is written. +3. The sign is automatically waxed (if enabled). + +If a shop is updated: + +- The sign will be safely updated by QuickShop. +- The wax state is maintained. + +Players cannot manually edit shop signs while waxing is enabled. + +--- + +## Configuration + +To enable or disable sign waxing, edit `config.yml`: + +```yaml +shop: + sign-wax: true +``` + +### true + +- Shop signs are automatically waxed. +- Players cannot edit the sign manually. + +### false + +- Shop signs behave like normal Minecraft signs. +- Players may edit them if permitted by the game. + +--- + +## Recommended Setting + +For most servers: + +```yaml +shop: + sign-wax: true +``` + +This ensures shop data stays accurate and secure. + +--- + +## Common Questions + +### Can admins still modify shop signs? + +QuickShop controls shop sign formatting. +Manual edits are not recommended. + +Admins should use: + +- Control panel +- Shop commands +- Direct configuration changes + +### Does waxing affect shop functionality? + +No. +Waxing only prevents manual text edits. +The shop continues to function normally. + +### Can players un-wax shop signs? + +No. +QuickShop manages the sign state automatically. + +--- + +## Best Practices + +- Keep sign-wax enabled on survival servers. +- Combine sign-wax with proper permissions. +- Avoid manually editing shop signs through other plugins. + +--- + +## Summary + +Sign Waxing: + +- Prevents tampering +- Requires no additional setup + +Enable it once and QuickShop handles the rest. \ No newline at end of file diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/shops/taxes.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/shops/taxes.md new file mode 100644 index 0000000000..1a273fd978 --- /dev/null +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/shops/taxes.md @@ -0,0 +1,92 @@ +# Taxation System + +QuickShop includes a taxation system designed to give server owners more flexibility and control over shop-based income. + +This system was revamped as of 6.2.0.11+ + +The new system allows you to: + +- Apply tax to shop owners +- Apply tax to buyers +- Apply tax to both +- Use progressive tax brackets +- Customize tax behavior in configuration + +This system replaces the legacy tax configuration. + +--- + +## How It Works + +During a transaction: + +1. The shop price is calculated. +2. Tax is calculated based on your configuration. +3. Tax is deducted from the configured target(s). +4. Remaining funds are distributed normally. + +You can configure: + +- Flat percentage tax +- Progressive tax based on player balance +- Tax accounts +- Distribution rules + +--- + +## Progressive Tax + +The new system allows you to tax based on balance brackets. + +Example concept: + +- 0 – 10,000 balance → 1% tax +- 10,000 – 100,000 → 2% tax +- 100,000+ → 3% tax + +This helps prevent extremely wealthy players from dominating the economy. + +--- + +## Who Pays the Tax? + +You can configure whether tax applies to: + +- The shop owner +- The buyer +- Both + +This gives you flexibility depending on your economy design. + +--- + +## Configuration + +All tax-related settings are located under the `shop-tax` section in `config.yml`. + +After updating to 6.2.0.11+, review your tax configuration carefully, as the old tax system has been replaced. + +--- + +## Why Use Tax? + +The taxation system can help: + +- Remove currency from circulation +- Fund server banks or towns +- Create sink mechanics +- Balance inflation +- Reward active players + +--- + +## Summary + +The new taxation system is: + +- Flexible +- Configurable +- Balance-aware +- Designed for modern economy servers + +Make sure to review your configuration after upgrading. \ No newline at end of file diff --git a/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md new file mode 100644 index 0000000000..247c24712d --- /dev/null +++ b/i18n/cs-CZ/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md @@ -0,0 +1,161 @@ +# WorldEdit & FAWE Support + +QuickShop includes built-in protection and integration for WorldEdit and FastAsyncWorldEdit (FAWE). + +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. + +You do not need to download or install any additional compatibility plugins. + +--- + +## What This Does + +WorldEdit and FAWE allow administrators and builders to: + +- Copy and paste regions +- Replace large areas of blocks +- Mass-delete regions +- Roll back areas +- Regenerate terrain + +Without protection, these operations could: + +- Create ghost shops +- Leave orphaned shop data in the database +- Duplicate shops unintentionally +- Delete containers without cleaning up shop data +- Cause inconsistencies between world and database + +QuickShop now automatically detects and safely processes WorldEdit and FAWE operations. + +--- + +## Built-In Behavior + +When WorldEdit or FAWE modifies blocks: + +- Shops removed via WorldEdit are properly deleted from the database. +- Shop data stays synchronized with world changes. +- Ghost shops are prevented. +- Mass block replacements will not leave broken shop entries behind. + +This applies to: + +- //set +- //replace +- //cut +- //paste +- //regen +- Region deletion +- Mass container removal + +No configuration is required. + +--- + +## FAWE Support + +FastAsyncWorldEdit (FAWE) is fully supported. + +Because FAWE processes edits asynchronously, QuickShop handles: + +- Region-thread safe processing +- Async block updates +- Safe shop deletion during batch edits + +You do not need to enable anything manually. + +--- + +## Removing Shops with WorldEdit + +If you delete containers (chests, barrels, etc.) using WorldEdit: + +QuickShop will automatically: + +- Detect the block removal +- Unregister the shop +- Clean the database entry +- Prevent ghost shops + +You do not need to run `/qs cleanghost` after WorldEdit usage in normal circumstances. + +--- + +## Copying and Pasting Shops + +If you copy and paste regions that contain shops: + +- Shop data will not duplicate incorrectly. +- Shop IDs remain consistent. +- Invalid pasted shops will not auto-register unless properly created. + +This prevents accidental duplication exploits. + +--- + +## Performance + +WorldEdit and FAWE operations can modify thousands of blocks at once. + +QuickShop processes these safely and efficiently: + +- Batch-aware cleanup +- Thread-safe region access (especially on Folia) +- Minimal performance impact during mass edits + +--- + +## Configuration + +There are no specific WorldEdit configuration options in QuickShop. + +Support is automatic and always enabled if WorldEdit or FAWE is detected. + +If WorldEdit is not installed, no extra code is executed. + +--- + +## Common Questions + +### Do I need the old WorldEdit compatibility jar? + +No. + +As of 6.2.0.11, WorldEdit support is built-in and the separate compatibility module has been removed. + +### Does this work with FAWE? + +Yes. FAWE is fully supported. + +### Will shops break if I use //set air? + +No. Shops will be safely removed and cleaned up. + +### Do I need to restart after installing WorldEdit? + +No. QuickShop detects WorldEdit automatically on startup. + +--- + +## Best Practices + +Even though QuickShop safely handles WorldEdit operations, it is recommended to: + +- Avoid copying shops intentionally unless required +- Use backups before large region edits +- Test large FAWE operations on staging servers when possible + +--- + +## Summary + +QuickShop’s built-in WorldEdit and FAWE integration ensures: + +- Safe mass edits +- No ghost shops +- Automatic database cleanup +- Thread-safe processing +- No extra modules required + +WorldEdit support is now a core feature of QuickShop. \ No newline at end of file diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/addon/limited.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/addon/limited.md index 70af27e240..fae55a8c95 100644 --- a/i18n/da-DK/docusaurus-plugin-content-docs/current/addon/limited.md +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/addon/limited.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -41,8 +35,8 @@ Limit players to purchase up to 16 items per month. /quickshop limit period MONTH ``` -The system is based on the QuickShop-Hikari calendar system.\ -The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year.\ +The system is based on the QuickShop-Hikari calendar system. +The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year. Same for days, months and hours. Available time units: diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/addon/list.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/addon/list.md index 93d182f083..f20b91fd7b 100644 --- a/i18n/da-DK/docusaurus-plugin-content-docs/current/addon/list.md +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/addon/list.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/addon/plan.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/addon/plan.md index 52a6e79cb4..c10ef4df42 100644 --- a/i18n/da-DK/docusaurus-plugin-content-docs/current/addon/plan.md +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/addon/plan.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -18,7 +18,7 @@ Recorded data can be displayed from Hikari v2.0.0.0 onwards, but only after vers - All shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 1000 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `5` in server scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `5` in server scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Player Scope @@ -27,7 +27,7 @@ And still is Plan limitations, the list sorting is disturbed, so the display ord - All owned shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 50 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `4` in player scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `4` in player scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Showcase diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/addon/reforges.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/addon/reforges.md index 2a14509eb7..25fff1752a 100644 --- a/i18n/da-DK/docusaurus-plugin-content-docs/current/addon/reforges.md +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/addon/reforges.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.0.0.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md index 304d39bc05..6f9f51d250 100644 --- a/i18n/da-DK/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.1.1.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -44,7 +38,7 @@ _This is not necessary if you are using an H2 database._ ### Prepare for convert -To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console.\ +To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console. If a player is in the server, the conversion cannot be started. Once the conversion has begun, the server will be locked during the conversion process and no players will be able to join the server during the conversion. diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/addon/shopitemonly.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/addon/shopitemonly.md index c45062f8c2..1ccfe977b3 100644 --- a/i18n/da-DK/docusaurus-plugin-content-docs/current/addon/shopitemonly.md +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/addon/shopitemonly.md @@ -2,17 +2,11 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT - -::: - -This addon prevents players from putting non-store items into store containers.\ +This addon prevents players from putting non-store items into store containers. Does not apply to stores that use the item inventory redirection API (aka. InventoryWrapper API). This Addon will check for container (or transferring) items on events such as the player closing the container or hopper access. diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md new file mode 100644 index 0000000000..9c8b4f7407 --- /dev/null +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md @@ -0,0 +1,55 @@ +# 6.2.0.10 + +## Major Changes + +- Added support for 1.21.6 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.7 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.8 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Some internal updates for packetevents(2.9.0 is now required.) +- Updated Lands support + +## Addon Changes + +- Added MatcherPlus Addon + - Allows support for BreweryX and AdvancedItems stacks in shops with improved matching abilities +- Added FabledSkyblock Compat +- Added Dominion Compat +- Added HuskTowns Compat +- Added IridiumSkyblock Compat +- Added member-create for member creation in ARM compat +- Added admin-override and quickshop.arm.admin permission for admin overrides in ARM + +## Minor Changes + +- Added configurations for the coordinates of the display item. +- Added /qs toggledisplayall on/off server/owned + - Players need to have permission node quickshop.toggledisplayall.admin to toggle all on the server. +- Added ability to use abbreviations in /qs price and /qs create commands such as 2.5k for 2500 +- Added ability to set default display status using shop.default-display in config.yml + +## Fixes + +- Fixed issue with display item being sent to the moon on 1.21.5 +- Fixed issue where TRADE_UI interactions interfered with quick create. +- Fixed issue with displays on protocollib falling through the chest +- Fixed issue with signs on .9 and previous .10 snapshots on early versions +- Implemented some performance improvements for paper servers +- Fixed all outstanding issues with Folia usage.(thanks to RootB33R/SleazLee for contributions) + +## Possible 6.2.0.11 Features + +Here's an outline for some features that may arrive in 6.2.0.11: + +- Additional compats/addons that have been piling up. + - see: https://github.com/QuickShop-Community/QuickShop-Hikari/issues/1756 +- gradle?(interested to see compilation time uplifts) +- Update documentation +- Update configuration comments +- Update configuration system? + - auto updating? + - Allows removal of the update code +- Remove waste spigot modules? + - Any versions of 1.20 that can be discarded due to low use? +- Bug fixing, of course +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... \ No newline at end of file diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md new file mode 100644 index 0000000000..b41c88662a --- /dev/null +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md @@ -0,0 +1,173 @@ +## Outline + +- Update documentation +- Update configuration comments +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... + +# 6.2.0.11 + +## Major Changes + +- Removed Spigot Platform Modules, and stopped loading QS if Spigot is detected. This will mean that unless the protocol changes that we use for display items, QS won't need updated for each version. +- Revamped Economy Code Completely + - New classes for all economy-related systems + - Any economy-related or benefits-related events are incompatible with previous versions. +- Added sign layout customizations per-type allowing you to change how lines are configured, an empty string('') will leave an empty line for that line of the sign. + +``` + #The layout of signs for shops. + layout: + + #The layout of BUYING shops. + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of FROZEN shops. + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of SELLING shops. + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +- Add wildcard support for item blacklist patterns(thanks to bennycallanan) + - Added support for wildcard patterns in the item blacklist configuration, allowing users to block entire categories of items with simple patterns. + + - Features + - Wildcard patterns like \*_AXE and \*_SPAWN_EGG now work in blacklist configuration + - Supports \* for any characters and ? for single character matching + - Case-insensitive pattern matching +- Overhauled GUI system(thanks to Yusakidev) + - Implemented gui.yml configuration file for customizing the GUI. + - Implemented better filtering for qs browse + - Implement GUI system to be more stable, and less error prone. + - Added gui.yml for fully configurable GUI layouts and text + - Browse menu: search, sort (price/name/stock), and filter (all/buying/selling/in-stock) + - Staff menu: search functionality for player/staff selection + - Grouped item pages for better shop browsing + - Refactored all menu pages to use configurable display/lore +- Added worldedit compat to QS internally as it's widely used. +- Revamped the taxation system to be more flexible and easier to configure. + - introduced a new progressive tax system that allows you to tax based on the balance of players.(suggested by YuanYuanOwO) + - introduced the ability to tax the player interacting with the shop, the owner, or both + - all tax-related configurations have been moved under the shop-tax section of the config. this may require reconfiguration of your tax settings. + - added a new ShopEnhancedTaxEvent, deprecated the old ShopTaxEvent. + - Added a new TaxManager, and TaxProvider interfaces, this allows for custom tax providers to be added by addons/third-party developers. + +## Addons/Compats Changes + +- Added UltimateClaims compat +- Added SimpleClaimSystem compat +- Added Quests by Pika addon +- Added BetonQuest addon +- Added Pl3xMap addon +- MatcherPlus Compat Improvements + - Added support for CrazyCrates + - Added support for ExcellentCrates + - Added support for SilkSpawners. +- WorldGuard Compat Improvements(Thanks to golovin12) + - Added clear permission handling: + - Region owners and members automatically have permission to create and trade in their own regions. + - Other players must have the appropriate WorldGuard flags enabled (quickshophikari-create, quickshophikari-trade) to interact with shops. + - If a shop is located outside any region, default QuickShop behavior applies (no extra restrictions) +- Added colored markers based on shop state for bluemap(thanks to YusakiDev) +- Updated dynmap/towny addons to use the new ShopTypeEnhancedEvent instead of ShopTypeEvent. +- Removed worldedit compat, it's now included in the main plugin. +- Added support for global flags to the worldguard compat. + +## Internals/Developer APIs + +- Removed several deprecated methods and classes. +- Revamped the interaction manager. It is now more flexible and allows external additions + - This involves two classes InteractionBehavior and InteractionType. + - InteractionType details the type of interaction such as: STANDING_LEFT_CLICK_SIGN, STANDING_LEFT_CLICK_SHOP + - InteractionBehavior outlines a behavior for an InteractionType such as CONTROL_PANEL and TRADE_UI +- Added UserLimitCalculationEvent, which allows for custom limits to be applied to users. + - This is useful for limiting the number of shops a user can have, or adding on to the existing limits provided by the ranks system without needing to implement a new RankLimiter. +- Added a new ShopLayoutProvider interface, and default implementation. + - This allows for custom layouts to be used for shops, allowing for more customization. + - This also allows for developers to override the default layout provider and create their own implementation. +- How to make your own? + - Implement the classes you would like to then register with the InteractionManager: + - ```java + InteractionManager manager = QuickShop.getInstance().getInteractionManager(); + + manager.interaction(new MyTradeInteraction()); + manager.behavior(new MyTradeBehavior()); + ``` +- Replaced some Apache Commons calls that could be easily replaced with built-in java methods, reduces some calls by ~ 1100ms/method call +- Deprecated the ShopType enum, and the ShopTypeEvent. These are replaced with the new IShopType interface and implementing classes. + - The new event is ShopTypeEnhancedEvent. + - This allows for third-party addons to add their own shop types, and simplifies code checks for translations. +- Updated config system to use Boosted-yaml + - this allows for auto-updating of config files without complex update scripts + - this also allows for the config system to not be minecraft-dependent. +- Replaced logical PaperLib calls with native PaperAPI calls. + +## Minor Changes + +- Bump Java version up to 21 +- Added shop.display-allow-enchants to enable/disable enchantments for display items on shops. +- Added workaround for packetevents not supporting custom enchants on itemstacks for virtual display items. +- Using locale translations for shop-type in mode toggle icon(thanks to ExyiN) +- Bumped Residence version for the compat(thanks to YuanYuanOwO) +- add world whitelist support(thanks to wling-art) +- added /qs database save command, which saves all currently dirty-marked shops to the database. +- Split up interactions _SHOPBLOCK into _SHOPBLOCK and _CONTAINER. + - _SHOPBLOCK relates to shops, where _CONTAINER relates to shop-valid containers that are not currently shops. +- Added inventory as an option for command panel, this is useful for adding a secondary option for players to open a shop's inventory. +- Moved crowdin arguments from system properties to config.yml + - crowdin-host + - use-crowdin-ota + +## Fixes + +- Fixes issue with item price restrictions(thanks to maxcom1) +- Fixes issue with 1.20.x protocol lib displays(thanks to YuanYuanOwO) +- Fixes issue when no item is in hand for itemdebug(thanks to YuanYuanOwO) +- Fixes issue with dominion addon(thanks to YuanYuanOwO) +- Add a simple check to avoid this. If it is not own shop, reject limit request directly.(Thanks to YuanYuanOwO) +- Fix NPE by not setting tax for price in TransactionBuilder(thanks to maxcom1) +- Fixes /quickshop suggestprice to differentiate between buy/sell shops. (Thanks to MidSpike) +- PacketEvents ClassNotFoundException with ProtocolLib(thanks to wling-art) +- Reallocate block state access to region thread for shop creation(thanks to r00tbeerman) +- resolve SLF4J StaticLoggerBinder loading error(thanks to wling-art) +- sign hijacking issue by validating sign facing direction(thanks to wling-art) +- Performance improvements for QuickShop disabling to prevent potential freezes. +- Fixed issue with 1.20.4 packetevents virtual displays not staying put. +- Fixes critical issue in GriefPrevention compatibility plugin. +- Fixes issue with shop owner not getting money when benefits active. +- Fixes for lands addon on folia, Use regionThread for Folia compatibility(thanks to YusakiDev) +- Fixes for TRADE_DIRECT on stacking shops +- Fixes issue for protocollib 5.4.0 with undocumented packet changes. +- Fixes issue where item stacks could be used on creation above the max stack size. +- Fixes issue with BukkitAudiences-related crashes on 1.21.11. +- Fix issue with shop deletion when getting too impatient. +- Fix the permission check issue when a shop owned by a non-owner is transferred to someone else. (thanks to YuanYuanOwO) +- Fix ui with supertool (thanks to YuanYuanOwO) +- Fix issue with logs generating outside debug mode. +- Fix issue with /qs find. +- Fix configuration loading timing. +- Fix configuration loading/creation warning message language. +- Fix command description language key mismatch(thanks to wling-art) +- Fix qs clean command on folia(thanks to wling-art) +- Fix per-player-shop-sign on folia(thanks to wling-art) +- Fix potential recursive deadlock in virtual display packet sending(thanks to wling-art) +- Fix configuration loading/creation warning message language. +- Fix issue with /qs browse and ShopItemOnly addon not behaving properly together on folia. +- Fix issue with PLAN using outdated APIs. +- Fix issue with /qs clean on folia.(thanks to wling-art) +- Fix issue with /qs cleanghost on folia(thanks to wling-art) +- More thread safety fixes for shops on folia.(thanks to wling-art) +- Fix owner payment calculations with benefits(thanks to wling-art) \ No newline at end of file diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md index 8172f9b410..dcc3edc67d 100644 --- a/i18n/da-DK/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md @@ -20,20 +20,20 @@ the ControlComponent object with a custom one that will replace the original dur ### Introduction of the Revamped Packet System 1. **About**: - - A modular and scalable system for managing packets related to virtual display items in Minecraft. - - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. + - A modular and scalable system for managing packets related to virtual display items in Minecraft. + - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. 2. **Custom Packet Factories**: - - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. - - Packet types: - - **Spawn Packet**: Spawns a virtual item entity at a specific location. - - **Metadata Packet**: Updates the visual properties of virtual items. - - **Velocity Packet**: Adds motion/velocity to entities (currently optional). - - **Destroy Packet**: Removes the entity from the client view. + - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. + - Packet types: + - **Spawn Packet**: Spawns a virtual item entity at a specific location. + - **Metadata Packet**: Updates the visual properties of virtual items. + - **Velocity Packet**: Adds motion/velocity to entities (currently optional). + - **Destroy Packet**: Removes the entity from the client view. 3. **Error Handling and Logging**: - - Enhanced debug logs to trace packet-related issues. - - Detailed error messages for missing factories or unregistered listeners. + - Enhanced debug logs to trace packet-related issues. + - Detailed error messages for missing factories or unregistered listeners. #### Improvements: diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md index 7775308722..c6e0948d19 100644 --- a/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md index f420997a9c..38587e3784 100644 --- a/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md index 5ed8182c9a..259c55f342 100644 --- a/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md index 924a37ac49..7fd4596a6a 100644 --- a/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,6 +10,6 @@ This is a BungeeCord plugin, you need install it within your BungeeCord's plugin ## How does it work? -BungeeCord Bridge plugins will register a `quickshop:bungee` channel for fowarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. +BungeeCord Bridge plugins will register a `quickshop:bungee` channel for forwarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. All forwarding is indicated by QuickShop-Hikari on the Spigot server and ends when it is not needed. diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md index 27d68956a8..20fbaf7a0c 100644 --- a/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,5 +10,5 @@ This compatibility module added [Chest Protect](https://www.spigotmc.org/resourc ## How does it work? -This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident.\ +This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident. It also prevents players from creating shops on ChestProtect protected containers. diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md index 220e26d8bb..e1757e7be9 100644 --- a/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/dominion.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/dominion.md new file mode 100644 index 0000000000..e1195278a8 --- /dev/null +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/dominion.md @@ -0,0 +1,138 @@ +# Dominion + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and Dominion. + +It ensures that shop creation and trading respect Dominion’s land and territory protection system. + +--- + +## What Does It Do? + +Dominion allows players or groups to claim land and define territory-based permissions. + +Without compatibility: + +- Players could create shops inside territories they do not control. +- Visitors might trade inside protected dominions. +- Dominion permission rules might not apply to shop interactions. + +The Dominion compat module ensures that: + +- Shop creation respects territory ownership. +- Shop trading follows Dominion permission settings. +- Protected land remains secure from unauthorized shop usage. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a Dominion-controlled area. +- Whether the player has permission within that territory. +- Whether Dominion rules allow shop interaction. + +If the action is not permitted by Dominion settings, QuickShop blocks it. + +If the location is outside any Dominion territory, default QuickShop behavior applies. + +--- + +## Territory Owner Control + +With this module enabled: + +- Territory owners can create and manage shops inside their dominion. +- Trusted members follow territory-based permissions. +- Outsiders are restricted unless explicitly allowed. +- Shop actions respect Dominion’s land rules automatically. + +This prevents unauthorized shop placement inside protected territories. + +--- + +## Installation + +1. Install Dominion. +2. Install the QuickShop Dominion compat module. +3. Restart your server. + +The module activates automatically if Dominion is detected. + +No manual configuration linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside dominions +whitelist-mode: false + +# Allow territory owners to override shop permissions +allow-owner-override: true +``` + +If Dominion is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For servers using Dominion: + +- Restrict shop creation to territory owners or trusted members. +- Prevent shop creation in wilderness if desired. +- Allow dominion owners to manage shop permissions. +- Review Dominion permission settings to align with shop behavior. + +This ensures protected territories remain secure and organized. + +--- + +## Common Questions + +### Can players create shops in someone else's dominion? + +Only if Dominion permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You may allow or restrict shops outside dominions. + +### What happens if Dominion is removed? + +QuickShop returns to normal behavior and stops checking Dominion territories. + +--- + +## Summary + +The Dominion compat module: + +- Enforces territory-based permissions +- Prevents unauthorized shop creation +- Protects claimed land from misuse +- Integrates seamlessly with Dominion + +It is recommended for servers running Dominion. \ No newline at end of file diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md index 743d3ae666..2ac9b10488 100644 --- a/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md new file mode 100644 index 0000000000..07ba4ada66 --- /dev/null +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md @@ -0,0 +1,133 @@ +# FabledSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and FabledSkyblock. + +It ensures that shop creation and trading properly respect island boundaries and island permissions. + +--- + +## What Does It Do? + +On Skyblock servers, players build and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Players might trade in areas they should not. +- Island protection rules might not apply to shops. + +The FabledSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members behave correctly with shops. +- Island visitors are restricted appropriately. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a FabledSkyblock island. +- Whether the player has permission on that island. +- Whether island settings allow the action. + +If the action is not permitted by island rules, QuickShop will deny it. + +--- + +## Island Ownership Rules + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow island permission settings. +- Visitors can only trade if island permissions allow it. +- Outside of islands, default QuickShop behavior applies. + +--- + +## Installation + +1. Install FabledSkyblock. +2. Install the QuickShop FabledSkyblock compat module. +3. Restart your server. + +The module activates automatically if FabledSkyblock is detected. + +No manual linking is required. + +--- + +## Configuration + +If the module provides configuration options, they will appear in its `config.yml`. + +Typical options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If FabledSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most Skyblock servers: + +- Allow shop creation only inside islands. +- Prevent trading in the void or wilderness. +- Let island owners control shop permissions. +- Use island rank systems to manage shop access. + +This helps maintain economic balance between islands. + +--- + +## Common Questions + +### Can players create shops in the void? + +Only if your configuration allows it. +Most servers disable shop creation outside islands. + +### Does this affect island war or PvP modes? + +No. +The module only checks island ownership and permissions for shop interactions. + +### What happens if FabledSkyblock is removed? + +QuickShop returns to normal behavior. + +--- + +## Summary + +The FabledSkyblock compat module: + +- Protects island economies +- Enforces island permission rules +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is strongly recommended for any server running FabledSkyblock. \ No newline at end of file diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md index 81b13d2c6b..32614d3019 100644 --- a/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md @@ -2,17 +2,17 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -GreifPrevention compatibility module added compaitibility with GF. +GreifPrevention compatibility module added compatibility with GF. ## How does it work This module allow QuickShop-Hikari check if player have permission to create or use QuickShop in specific region. -And delete shops when claim removed, untrusted, unclimed, expired, resized or subclaim created. +And delete shops when claim removed, untrusted, unclaimed, expired, resized or subclaim created. ## Configuration diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md new file mode 100644 index 0000000000..e71b34d462 --- /dev/null +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md @@ -0,0 +1,139 @@ +# HuskTowns + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and HuskTowns. + +It ensures that shop creation and trading respect town and claim permissions defined by HuskTowns. + +--- + +## What Does It Do? + +HuskTowns allows players to create towns and claim land. + +Without compatibility: + +- Players could create shops inside towns they do not belong to. +- Visitors might trade inside protected towns. +- Town permission rules might not apply to shop interactions. + +The HuskTowns compat module ensures that: + +- Shop creation respects town ownership. +- Trading follows town permission settings. +- Town members and visitors are handled correctly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a HuskTowns claim. +- Whether the player is a town member, trusted player, or outsider. +- Whether the town's permission settings allow the action. + +If the action is not permitted by town rules, QuickShop blocks it. + +Outside of town claims, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Town Owner Control + +With this module enabled: + +- Town owners can create and manage shops inside their town. +- Town members follow town-based permission settings. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect town claim protection. + +This prevents unauthorized shop placement and trading inside protected towns. + +--- + +## Installation + +1. Install HuskTowns. +2. Install the QuickShop HuskTowns compat module. +3. Restart your server. + +The module activates automatically if HuskTowns is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside towns +whitelist-mode: false + +# Allow town owners to override shop permissions +allow-owner-override: true +``` + +If HuskTowns is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For town-based survival servers: + +- Restrict shop creation to town members. +- Allow trading only where town permissions permit. +- Prevent shop creation in wilderness if desired. +- Enable owner override for better administrative control. + +This helps maintain town-based economic balance. + +--- + +## Common Questions + +### Can players create shops in another town? + +Only if that town's permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You can allow or restrict shops outside towns. + +### What happens if HuskTowns is removed? + +QuickShop returns to normal behavior and stops checking town permissions. + +--- + +## Summary + +The HuskTowns compat module: + +- Enforces town-based land permissions +- Protects towns from unauthorized shop usage +- Integrates smoothly with HuskTowns +- Requires minimal setup + +It is recommended for any server running HuskTowns. \ No newline at end of file diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md new file mode 100644 index 0000000000..3fa2995eb0 --- /dev/null +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md @@ -0,0 +1,139 @@ +# IridiumSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and IridiumSkyblock. + +It ensures that shop creation and trading respect island boundaries and island permission settings defined by IridiumSkyblock. + +--- + +## What Does It Do? + +IridiumSkyblock allows players to create and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Visitors might trade inside protected islands. +- Island protection rules might not apply correctly to shops. + +The IridiumSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members and visitors are handled properly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside an IridiumSkyblock island. +- Whether the player is the island owner, member, or visitor. +- Whether island permissions allow shop interaction. + +If the action is not permitted, QuickShop blocks it. + +Outside of islands, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Island Owner Permissions + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow the island's permission configuration. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect island protection rules. + +This prevents unauthorized shop usage inside protected islands. + +--- + +## Installation + +1. Install IridiumSkyblock. +2. Install the QuickShop IridiumSkyblock compat module. +3. Restart your server. + +The module activates automatically if IridiumSkyblock is detected. + +No additional setup is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If IridiumSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most IridiumSkyblock servers: + +- Restrict shop creation to island owners. +- Allow island members to trade if trusted. +- Prevent shop creation in the void or wilderness. +- Enable owner override for better management. + +This helps maintain balanced island economies. + +--- + +## Common Questions + +### Can players create shops outside their island? + +Only if your configuration allows it. + +Most Skyblock servers restrict shops to island areas. + +### Do island ranks affect shop permissions? + +Yes, if your island permissions are configured to control interaction rights. + +QuickShop follows island rules. + +### What happens if IridiumSkyblock is removed? + +QuickShop returns to normal behavior and stops checking island permissions. + +--- + +## Summary + +The IridiumSkyblock compat module: + +- Protects island economies +- Enforces island-based permissions +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is recommended for any server running IridiumSkyblock. diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md new file mode 100644 index 0000000000..3b4726cb9d --- /dev/null +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md @@ -0,0 +1,151 @@ +# ItemMatcherPlus + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +The ItemMatcherPlus module improves how QuickShop matches custom and plugin-modified items. + +It allows QuickShop to properly recognize and stack items created by other plugins that normally would not match using standard Bukkit item comparisons. + +This module is especially useful for servers that use: + +- Custom items +- Modified metadata +- NBT-based systems +- Advanced crate rewards +- Custom brewing systems +- Custom fishing rewards + +--- + +## What Does It Do? + +By default, Minecraft item matching checks: + +- Material type +- Basic metadata + +However, many plugins modify items with: + +- Custom NBT data +- Hidden tags +- Custom lore formats +- Unique identifiers + +Without enhanced matching: + +- Items may not stack +- Shops may refuse valid items +- Transactions may fail +- Buying/selling may not behave correctly + +ItemMatcherPlus improves compatibility and matching accuracy. + +--- + +## Supported Plugins + +ItemMatcherPlus includes built-in support for: + +- AdvancedItems +- BreweryX +- CrazyCrates +- ExcellentCrates +- PyroFishing +- SilkSpawners + +If any of these plugins are installed, QuickShop will automatically use enhanced matching logic. + +No additional configuration is required. + +--- + +## How It Works + +When a player trades with a shop: + +1. QuickShop checks the item. +2. If ItemMatcherPlus is enabled, it performs advanced matching. +3. Plugin-specific metadata is validated. +4. The item is confirmed as a match (or rejected safely). + +This allows: + +- Proper stacking of custom items +- Correct shop transactions +- Accurate buy/sell detection +- Reduced false mismatches + +--- + +## Installation + +1. Download the ItemMatcherPlus module. +2. Place the JAR into your `plugins` folder. +3. Restart your server. + +If supported plugins are detected, compatibility activates automatically. + +--- + +## Configuration + +ItemMatcherPlus does not require configuration. + +It activates automatically when: + +- The module is installed +- A supported plugin is detected + +If a supported plugin is not installed, no extra logic runs. + +--- + +## Why You Should Use It + +You should install ItemMatcherPlus if your server uses: + +- Custom fishing plugins +- Custom brewing systems +- Crate plugins with modified items +- Custom spawners +- Any plugin that modifies NBT data + +Without it, shops may not properly recognize custom items. + +--- + +## Common Questions + +### Do I need this if I don't use custom item plugins? + +No. +If you only use vanilla items, this module is not necessary. + +### Does this affect performance? + +The module only activates enhanced matching when needed. + +Normal item matching remains fast and efficient. + +### Will it break existing shops? + +No. +It improves compatibility and matching accuracy without modifying existing shop data. + +--- + +## Summary + +ItemMatcherPlus: + +- Improves item matching accuracy +- Adds support for major custom item plugins +- Prevents stacking and trade issues +- Requires no configuration +- Activates automatically + +If you run a heavily customized economy server, this module is highly recommended. \ No newline at end of file diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md index ba87606698..d4ae7d129a 100644 --- a/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/lands.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/lands.md index 06296f5779..7671fcdfe0 100644 --- a/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/lands.md +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/lands.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/openinv.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/openinv.md index c51f628615..4807d57873 100644 --- a/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/openinv.md +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/openinv.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md new file mode 100644 index 0000000000..c2136320b0 --- /dev/null +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md @@ -0,0 +1,138 @@ +# SimpleClaimSystem + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and SimpleClaimSystem. + +It ensures that shop creation and trading respect land ownership and claim permissions defined by SimpleClaimSystem. + +--- + +## What Does It Do? + +SimpleClaimSystem allows players to claim land and protect it from unauthorized interaction. + +Without compatibility: + +- Players could create shops inside claims they do not own. +- Visitors might trade inside protected areas. +- Claim protection might not apply correctly to shops. + +The SimpleClaimSystem compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops within their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a SimpleClaimSystem claim. +- Whether the player has permission within that claim. +- Whether claim rules allow shop interaction. + +If the action is not permitted by the claim, QuickShop blocks it. + +If the location is outside any claim, default QuickShop behavior applies. + +--- + +## Claim Owner Control + +With this module enabled: + +- Claim owners can create and manage shops inside their claim. +- Trusted players follow claim-based permissions. +- Visitors are restricted unless explicitly allowed. +- Claim protection rules apply automatically to shop interactions. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install SimpleClaimSystem. +2. Install the QuickShop SimpleClaimSystem compat module. +3. Restart your server. + +The module activates automatically if SimpleClaimSystem is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If SimpleClaimSystem is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Enable owner override for easier management. + +This ensures players maintain control over their protected land. + +--- + +## Common Questions + +### Can players create shops in someone else's claim? + +Only if claim permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can allow shops outside claims or restrict them. + +### What happens if SimpleClaimSystem is removed? + +QuickShop will revert to default behavior and stop checking claim permissions. + +--- + +## Summary + +The SimpleClaimSystem compat module: + +- Enforces claim-based permissions +- Prevents unauthorized shop creation +- Protects land from unwanted trading +- Requires minimal setup + +It is recommended for servers running SimpleClaimSystem. \ No newline at end of file diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md index a84dbf057b..4dfa8ae97c 100644 --- a/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/towny.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/towny.md index 52ab4818f4..b26c19d335 100644 --- a/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/towny.md +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/towny.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -26,7 +26,7 @@ Town sub-command allow you switch a quickshop between regular shop and town shop For a nation shop, the shop owner will changed to nation fake player created by Towny, and use Nation's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from nation Towny account.\ +All purchases will deposit or withdraw money from nation Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Nation Shop. @@ -35,7 +35,7 @@ If Plot type restriction is enabled, only a specific Plot type can create a Nati For a town shop, the shop owner will changed to town fake player created by Towny, and use Town's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from town Towny account.\ +All purchases will deposit or withdraw money from town Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Town Shop. @@ -88,7 +88,7 @@ bank-mode: ## Permission Override -By adjust configuration, you're allow mayor or king automaticlly grant administrator permission on all shops in their management range. +By adjust configuration, you're allow mayor or king automatically grant administrator permission on all shops in their management range. ```yaml #Should allow Mayor grant the shop administrator permission on they town. @@ -168,7 +168,7 @@ This causes Towny and QuickShop Hikari to use accounts with the same name but di You can adjust the option in configuration to enable workaround. -NOTE: It will force turned on if detected EssentialsX installed on your server.\ +NOTE: It will force turned on if detected EssentialsX installed on your server. At present, we do not provide a method for disable it. ```yaml diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md new file mode 100644 index 0000000000..0189958495 --- /dev/null +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md @@ -0,0 +1,138 @@ +# UltimateClaims + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and UltimateClaims. + +It ensures that shop creation and trading respect land claim permissions managed by UltimateClaims. + +--- + +## What Does It Do? + +On servers using land-claim plugins, players protect areas of the world from unauthorized interaction. + +Without compatibility: + +- Players may create shops inside claims they do not own. +- Visitors might trade in areas where they should not. +- Claim protection rules might not apply correctly to shops. + +The UltimateClaims compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops inside their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a claim. +- Whether the player has permission in that claim. +- Whether claim rules allow shop interaction. + +If the action violates claim settings, QuickShop blocks it. + +Outside of claims, normal QuickShop behavior applies. + +--- + +## Claim Owner Permissions + +With this module enabled: + +- Claim owners can create and manage shops within their claim. +- Trusted players follow claim permission settings. +- Visitors are restricted based on claim configuration. +- Shop actions outside of claims behave normally. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install UltimateClaims. +2. Install the QuickShop UltimateClaims compat module. +3. Restart your server. + +If UltimateClaims is detected on startup, compatibility activates automatically. + +No additional linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Common options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If UltimateClaims is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Keep owner override enabled for better control. + +This ensures players maintain full control over their protected land. + +--- + +## Common Questions + +### Can players create shops inside someone else's claim? + +Only if the claim permissions allow it. + +Otherwise, QuickShop will block the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can choose to restrict shops to claimed land only. + +### What happens if UltimateClaims is removed? + +QuickShop returns to normal behavior without claim checks. + +--- + +## Summary + +The UltimateClaims compat module: + +- Protects claimed land from unauthorized shop usage +- Enforces claim-based permissions +- Integrates smoothly with land-claim servers +- Requires minimal setup + +It is recommended for any server running UltimateClaims. \ No newline at end of file diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md index 87a71a205c..6437754503 100644 --- a/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md @@ -2,8 +2,10 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. Find out more [here](../modules/shops/worldedit.md). + +Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. \ No newline at end of file diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/development/01-getting-start.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/development/01-getting-start.md index 92b773451e..0e78e52367 100644 --- a/i18n/da-DK/docusaurus-plugin-content-docs/current/development/01-getting-start.md +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/development/01-getting-start.md @@ -6,8 +6,8 @@ This series of articles will help you build extensions for QuickShop-Hikari or i ## License -QuickShop-Hikari is open source using the [GPLv3](https://www.gnu.org/licenses/quick-guide-gplv3.en.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari).\ -You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the GPLv3 agreement. +QuickShop-Hikari is open source using the [AGPLv3](https://www.gnu.org/licenses/agpl-3.0.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari). +You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the AGPLv3 agreement. ## 🚧Don't trust Javadoc too much @@ -48,7 +48,7 @@ QuickShop-Hikari divides operation sources into three types: - Server Main Thread - Async Thread (any other threads but not server main thread) -- Hybird +- Hybrid If you access the API through the wrong thread, QuickShop-Hikari will force a runtime error to be thrown. @@ -58,4 +58,4 @@ For APIs that may trigger network IO or long-time disk IO, you are required not You can see [Util.ensureThread()](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/3d1d271e1106ea1c83cc6068f8232ab7c7860918/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/util/Util.java#L351) and find out the requirements of the different APIs by looking up their use. APIs that do not use Util.ensureThread() are allowed to be called from any thread by default. -You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. +You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. \ No newline at end of file diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md index aa2404c594..7828d414ad 100644 --- a/i18n/da-DK/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md @@ -10,7 +10,7 @@ ShopManager manager = api.getShopManager(); ## Getting a shop -Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates.\ +Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates. QuickShop-Hikari's store is only bound to one half of "Large Chest", so to get the store, you need to query both the cube itself and its associated cube. The good thing is that there is an API in the plugin that allows you to handle this situation very easily. @@ -71,7 +71,7 @@ manager.deleteShop(shop) // Permanently delete this store, both memory and datab ## Identify a store -Please note that store locations are technically variable and you should not use coordinates to identify a store.\ +Please note that store locations are technically variable and you should not use coordinates to identify a store. Also RuntimeRandomUniqueId should not be used to identify the store, as the name suggests, the value changes every time the server restarts, it should only be used to handle scenarios where the player interacts with the server. ```java diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md index 543f1851da..4f839ed652 100644 --- a/i18n/da-DK/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md @@ -1,6 +1,6 @@ # 0x05 Per shop permission -QuickShop-Hikari has a per shop permission management system.\ +QuickShop-Hikari has a per shop permission management system. Therefore, for a normal permission node check is not enough, you need to attach an additional check. ## Check with shop diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/development/06-protocol-system.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/development/06-protocol-system.md index 5d37a15536..0380b789f9 100644 --- a/i18n/da-DK/docusaurus-plugin-content-docs/current/development/06-protocol-system.md +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/development/06-protocol-system.md @@ -15,30 +15,30 @@ This documentation will guide developers through the components, implementation - **Purpose**: Manages packet handling and initialization logic. - **Interface**: `PacketHandler` - **Key Methods**: - - `Map> factories()` - - Retrieves a map of supported `PacketFactory` instances keyed by game versions. - - `void initialize()` - - Initializes the packet handler. - - `Optional> factory(String version)` - - Retrieves a `PacketFactory` for a specific game version. + - `Map> factories()` + - Retrieves a map of supported `PacketFactory` instances keyed by game versions. + - `void initialize()` + - Initializes the packet handler. + - `Optional> factory(String version)` + - Retrieves a `PacketFactory` for a specific game version. ### 2. **PacketFactory** - **Purpose**: Creates and sends specific packet types. - **Interface**: `PacketFactory` - **Supported Packets**: - - **Spawn Packet**: - - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. - - Example Use: Representing shop items visually. - - **Metadata Packet**: - - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. - - Example Use: Updating item display name or properties. - - **Velocity Packet**: - - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. - - Example Use: Custom animations for virtual items. - - **Destroy Packet**: - - Removes the entity from the client view. Created using `createDestroyPacket()`. - - Example Use: Unloading or removing a virtual display item. + - **Spawn Packet**: + - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. + - Example Use: Representing shop items visually. + - **Metadata Packet**: + - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. + - Example Use: Updating item display name or properties. + - **Velocity Packet**: + - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. + - Example Use: Custom animations for virtual items. + - **Destroy Packet**: + - Removes the entity from the client view. Created using `createDestroyPacket()`. + - Example Use: Unloading or removing a virtual display item. Developers implementing custom `PacketFactory` should ensure these packets are correctly handled and optimized for performance. @@ -46,24 +46,24 @@ Developers implementing custom `PacketFactory` should ensure these packets are c - **Purpose**: Oversees the lifecycle of virtual display items and integrates with packet handlers. - **Key Features**: - - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). - - Manages virtual display items mapped to chunks. - - Provides thread-safe operations for adding and removing display items. + - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). + - Manages virtual display items mapped to chunks. + - Provides thread-safe operations for adding and removing display items. ### 4. **VirtualDisplayItem** - **Purpose**: Represents a virtual item displayed to players. - **Key Features**: - - Generates and caches packets for spawning, metadata, velocity, and destruction. - - Manages packet senders for each player. - - Handles spawn and removal operations dynamically. + - Generates and caches packets for spawning, metadata, velocity, and destruction. + - Manages packet senders for each player. + - Handles spawn and removal operations dynamically. ### 5. **ProtocolLibHandler and PacketEventsHandler** - **Purpose**: Provide implementations of `PacketHandler` using ProtocolLib and PacketEvents, respectively. - **Differences**: - - `ProtocolLibHandler` leverages ProtocolLib API. - - `PacketEventsHandler` uses the PacketEvents library. + - `ProtocolLibHandler` leverages ProtocolLib API. + - `PacketEventsHandler` uses the PacketEvents library. --- @@ -140,11 +140,11 @@ public class CustomPacketFactory implements PacketFactory { Packet factories are provided for specific game versions through two primary implementations: - **ProtocolLib**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` - **PacketEvents**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` --- diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md new file mode 100644 index 0000000000..aebc035f87 --- /dev/null +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md @@ -0,0 +1,297 @@ +# Interaction System (Developer Guide) + +The Interaction System allows developers to fully customize how players interact with shops. + +As of 6.2.0.11, the system has been redesigned to be: + +- Modular +- Extensible +- Thread-safe +- Fully customizable by third-party addons + +This guide will walk you through: + +1. What the Interaction System is +2. Getting the `InteractionManager` +3. Understanding `InteractionType` +4. Understanding `InteractionBehavior` +5. Registering custom interactions +6. Best practices + +--- + +# Overview + +The Interaction System is composed of three main components: + +| Component | Purpose | +| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| `InteractionType` | Describes **what kind of click happened** (standing, sneaking, left-click, sign, shopblock, etc.) | +| `InteractionBehavior` | Describes **what action should happen** when that type is triggered | +| `InteractionManager` | Central registry that manages interactions and behaviors | + +This separation allows developers to: + +- Add new click types +- Add new behaviors +- Override existing ones +- Extend QuickShop without modifying core code + +--- + +# Getting the InteractionManager + +To begin registering custom interactions, you must retrieve the `InteractionManager` instance. + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +If you are working directly with the plugin instance: + +```java +InteractionManager manager = QuickShop.getInstance().getInteractionManager(); +``` + +Once obtained, you can: + +- Register new interaction types +- Register new behaviors +- Override existing behaviors + +--- + +# Understanding InteractionType + +`InteractionType` represents **how** a player interacted with a shop. + +Examples include: + +- `STANDING_LEFT_CLICK_SIGN` +- `STANDING_RIGHT_CLICK_SHOPBLOCK` +- `SNEAKING_LEFT_CLICK_CONTAINER` +- etc. + +Each `InteractionType` defines: + +- Player stance (standing/sneaking) +- Click type (left/right) +- Target (sign/shopblock/container) + +InteractionTypes do NOT define behavior — they only define the trigger. + +--- + +# Understanding InteractionBehavior + +`InteractionBehavior` defines **what happens** when an interaction is triggered. + +Examples of built-in behaviors: + +- `TRADE_INTERACTION` +- `TRADE_UI` +- `CONTROL_PANEL` +- `CONTROL_PANEL_UI` +- `NONE` + +A behavior: + +- Executes logic +- May open GUIs +- May send chat panels +- May directly trade items +- Can cancel or modify flow + +This separation makes it easy to reuse behaviors across multiple interaction types. + +--- + +# Registering Custom Interactions + +There are two things you can register: + +- A custom `InteractionType` +- A custom `InteractionBehavior` + +--- + +## Creating a Custom InteractionBehavior + +Create a class implementing `InteractionBehavior`. + +Example: + +```java +public class MyTradeBehavior implements InteractionBehavior { + + @Override + public String getKey() { + return "MY_CUSTOM_TRADE"; + } + + @Override + public void execute(InteractionClick click) { + Player player = click.getPlayer(); + Shop shop = click.getShop(); + + player.sendMessage("You triggered my custom interaction!"); + + // Add your custom logic here + } +} +``` + +Then register it: + +```java +InteractionManager manager = api.getInteractionManager(); +manager.behavior(new MyTradeBehavior()); +``` + +Now your behavior is available for use. + +--- + +## Creating a Custom InteractionType + +You may also register custom interaction types if you want to introduce new trigger definitions. + +Example: + +```java +public class MyCustomInteraction implements InteractionType { + + @Override + public String getKey() { + return "STANDING_DOUBLE_CLICK_SIGN"; + } + + @Override + public boolean matches(InteractionClick click) { + // Define custom logic to detect this interaction + return click.isStanding() + && click.isSign() + && click.isDoubleClick(); + } +} +``` + +Register it: + +```java +manager.interaction(new MyCustomInteraction()); +``` + +--- + +# Binding Types to Behaviors + +The InteractionManager internally maps interaction types to behaviors based on configuration and registration order. + +Once your behavior is registered: + +- It can be referenced in `interaction.yml` +- Or attached programmatically + +Example interaction.yml usage: + +```yaml +STANDING_LEFT_CLICK_SIGN: MY_CUSTOM_TRADE +``` + +--- + +# The InteractionClick Object + +When your behavior executes, you receive an `InteractionClick` object. + +It provides: + +- `getPlayer()` +- `getShop()` +- `getLocation()` +- `isSneaking()` +- `isSign()` +- `isShopBlock()` +- etc. + +This gives full context for safe execution. + +--- + +# Advanced: Overriding Built-in Behavior + +If you register a behavior using the same key as an existing one, your behavior can override the default. + +⚠️ Be careful when doing this — you are replacing core functionality. + +--- + +# Best Practices + +### Always Use Unique Keys + +Avoid naming collisions: + +``` +MYPLUGIN_CUSTOM_BEHAVIOR +``` + +### Keep Behavior Lightweight + +Do not block the main thread with: + +- Heavy database calls +- File IO +- Network calls + +Use async tasks if needed. + +### Respect Permissions + +Always validate: + +```java +if (!player.hasPermission("myplugin.use")) { + return; +} +``` + +### Avoid Hard Overrides Unless Necessary + +Instead of replacing built-in behaviors, consider extending them. + +--- + +# Example: Full Minimal Implementation + +```java +public class ExampleAddon { + + public void register(QuickShopAPI api) { + + InteractionManager manager = api.getInteractionManager(); + + manager.behavior(new MyTradeBehavior()); + manager.interaction(new MyCustomInteraction()); + } +} +``` + +--- + +# Conclusion + +The Interaction System is designed to allow: + +- Full extensibility +- Clean separation of triggers and actions +- Easy integration for third-party developers + +By retrieving the `InteractionManager`: + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +You gain full control over how shops respond to player actions. \ No newline at end of file diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/development/08-tax-manager.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/development/08-tax-manager.md new file mode 100644 index 0000000000..72a56f9e88 --- /dev/null +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/development/08-tax-manager.md @@ -0,0 +1,266 @@ +# Tax System (Developer Guide) + +The QuickShop tax system allows server owners and developers to define how transaction taxes are calculated, distributed, and extended. + +As of 6.2.0.11, the tax system has been fully rewritten to provide: + +- A flexible TaxManager +- Pluggable TaxProvider support +- Progressive taxation +- Tax targeting (shop owner, interacting player, or both) +- Custom extension capability for third-party addons + +This guide explains how to work with the tax system programmatically. + +--- + +# Overview + +The tax system is composed of three core components: + +TaxManager +Responsible for coordinating tax calculation and execution. + +TaxProvider +Defines how tax values are calculated. + +TaxRates +Represents calculated tax results for a transaction. + +The system is designed to allow custom providers to be registered and used without modifying core logic. + +--- + +# Getting the TaxManager + +To work with the tax system, retrieve the TaxManager from the ShopManager. + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +Once obtained, you can: + +- Access current tax configuration +- Register custom tax providers +- Calculate tax values +- Hook into tax events + +--- + +# How the Tax System Works + +During a shop transaction: + +1. A base price is determined. +2. The TaxManager selects the active TaxProvider. +3. The TaxProvider calculates applicable tax. +4. A TaxRates object is produced. +5. The system applies the tax to: + + - Shop owner + - Interacting player + - Or both (depending on configuration) + +This architecture allows tax behavior to be modified without altering transaction logic. + +--- + +# TaxProvider + +A TaxProvider defines how tax values are calculated. + +You may create your own provider to implement: + +- Progressive tax brackets +- Flat percentage tax +- Conditional tax rules +- Region-based tax +- Rank-based tax +- Time-based tax + +Example minimal provider: + +```java +public class MyCustomTaxProvider implements TaxProvider { + + @Override + public TaxRates calculateTax(TaxContext context) { + + double basePrice = context.getPrice(); + + double taxAmount = basePrice * 0.05; // 5% flat tax + + return new TaxRates() + .ownerTax(taxAmount) + .buyerTax(0.0); + } +} +``` + +Then register it: + +```java +taxManager.provider(new MyCustomTaxProvider()); +``` + +Once registered, your provider will be used for tax calculations. + +--- + +# TaxRates + +TaxRates represents the result of a tax calculation. + +It typically contains: + +- Owner tax amount +- Buyer tax amount +- Total tax impact +- Metadata (if applicable) + +The transaction system will read from TaxRates and apply deductions accordingly. + +--- + +# Progressive Taxation + +The built-in system supports progressive tax structures. + +This allows server administrators to tax based on: + +- Player balance +- Shop owner balance +- Configured tax brackets + +Example configuration concept: + +- 0–10,000 balance → 1% tax +- 10,000–100,000 → 2% tax +- 100,000+ → 3% tax + +Developers can extend or override this logic inside a custom TaxProvider. + +--- + +# Targeting Tax + +The new tax system allows taxes to be applied to: + +- Shop owner +- Interacting player +- Both + +This is controlled via configuration, but custom providers can override distribution logic by adjusting TaxRates output. + +Example: + +```java +return new TaxRates() + .ownerTax(basePrice * 0.02) + .buyerTax(basePrice * 0.01); +``` + +--- + +# Registering a Custom TaxProvider + +To replace or extend tax logic: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); + +taxManager.provider(new MyCustomTaxProvider()); +``` + +You may register only one primary provider at a time. If multiple providers are needed, implement internal delegation within your custom provider. + +--- + +# Tax Events + +The tax system integrates with the event system. + +The modern event used is: + +ShopEnhancedTaxEvent + +This replaces legacy tax events and provides improved context, including: + +- Transaction builder reference +- TaxRates object +- Modification capability before final execution + +You can listen for the event and modify tax behavior dynamically: + +```java +@EventHandler +public void onTax(ShopEnhancedTaxEvent event) { + + TaxRates rates = event.getTaxRates(); + + // Example: Give VIP players reduced owner tax + if (event.getOwner().hasPermission("vip.tax.discount")) { + rates.ownerTax(rates.getOwnerTax() * 0.5); + } +} +``` + +--- + +# Best Practices + +Always keep tax calculations lightweight. + +Avoid: + +- Heavy database queries inside calculateTax +- Blocking network calls +- Long-running computations + +If complex logic is required, pre-cache required data outside the tax execution path. + +Ensure negative tax values are not returned unless intentional. + +Always validate final amounts before applying modifications. + +Respect configuration hierarchy unless intentionally overriding it. + +--- + +# Example Full Implementation + +```java +public class ExampleTaxAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + TaxManager taxManager = manager.taxManager(); + + taxManager.provider(new MyCustomTaxProvider()); + } +} +``` + +--- + +# Conclusion + +The new tax system is designed for: + +- Flexibility +- Extensibility +- Clean separation of concerns +- Future expansion + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +You gain full control over how QuickShop calculates and applies tax during transactions. \ No newline at end of file diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/development/09-layout-provider.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/development/09-layout-provider.md new file mode 100644 index 0000000000..55e3cd3e91 --- /dev/null +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/development/09-layout-provider.md @@ -0,0 +1,275 @@ +# Shop Layout Provider (Developer Guide) + +The Shop Layout Provider system allows developers to customize how shop signs are structured and rendered. + +As of 6.2.0.11, shop layouts are no longer hardcoded. Instead, they are controlled through the `IShopLayoutProvider` interface, which allows: + +- Custom sign line ordering +- Per-shop-type layouts (BUYING, SELLING, FROZEN, or custom types) +- Dynamic layout resolution +- Complete replacement of the default layout system + +This guide explains how to access, override, and implement a custom layout provider. + +--- + +# Overview + +The layout provider controls how shop sign lines are arranged. + +Instead of hardcoding: + +Line 1 → Header +Line 2 → Trading info +Line 3 → Item +Line 4 → Price + +The system now allows full customization through: + +- Config-based layout definitions +- Custom `IShopLayoutProvider` implementations +- Runtime overrides + +The default implementation is `SimpleShopLayoutProvider`. + +--- + +# Accessing the Layout Provider + +To retrieve the current layout provider: + +```java +ShopManager manager = api.getShopManager(); +IShopLayoutProvider provider = manager.shopLayoutProvider(); +``` + +To replace the layout provider with a custom one: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Once replaced, your implementation will control how shop layouts are generated. + +--- + +# Understanding IShopLayoutProvider + +`IShopLayoutProvider` defines how layout data is retrieved and resolved. + +It is responsible for: + +- Providing layout configuration per shop type +- Determining which layout to use +- Supplying formatted line keys +- Allowing future extensibility + +The default implementation reads layout definitions from configuration and applies them based on shop type. + +--- + +# Default Layout Example + +The default configuration-based layout looks like this: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +Each line maps to a layout component key. + +An empty string (`""`) leaves that line blank. + +The layout provider resolves these keys into actual sign content. + +--- + +# Creating a Custom Layout Provider + +To override the default behavior, implement `IShopLayoutProvider`. + +Example minimal implementation: + +```java +public class MyCustomLayoutProvider implements IShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + + ShopLayout layout = new ShopLayout(); + + layout.setLine(1, "Custom Header"); + layout.setLine(2, "Owner: " + shop.getOwnerName()); + layout.setLine(3, shop.getItem().getType().name()); + layout.setLine(4, "$" + shop.getPrice()); + + return layout; + } +} +``` + +Then register it: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Your layout will now control all shop sign formatting. + +--- + +# Per-Type Layout Control + +Because the system no longer depends on the legacy ShopType enum, layouts can support: + +- Built-in types (BUYING, SELLING, FROZEN) +- Custom shop types +- Addon-defined shop types + +Your provider can determine layout logic dynamically: + +```java +@Override +public ShopLayout provideLayout(Shop shop) { + + if (shop.getShopType().key().equals("FROZEN")) { + return frozenLayout(shop); + } + + return defaultLayout(shop); +} +``` + +This allows conditional formatting, localization adjustments, or special event styling. + +--- + +# Advanced Customization + +A custom layout provider can: + +- Pull data from external plugins +- Inject dynamic placeholders +- Modify layout per player +- Apply formatting logic +- Override color schemes +- Apply region-based formatting +- Implement animated sign systems + +Because the layout provider is resolved at runtime, you can compute layouts dynamically instead of reading static config. + +--- + +# Replacing vs Extending the Default Provider + +You have two options: + +Replace entirely: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Or extend the default implementation: + +```java +public class ExtendedLayoutProvider extends SimpleShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + ShopLayout base = super.provideLayout(shop); + + base.setLine(1, "[Extended] " + base.getLine(1)); + + return base; + } +} +``` + +Extending is safer if you only want to modify small portions. + +--- + +# Best Practices + +Keep layout generation lightweight. + +Avoid: + +- Heavy database queries +- Blocking IO +- Complex network calls + +Layout generation runs during shop updates and sign refresh events. + +Always handle null values safely. + +Ensure layout line count does not exceed sign limits. + +Avoid hardcoding shop type names unless necessary. + +If your layout supports custom shop types, validate their keys properly. + +--- + +# Example Full Registration + +```java +public class LayoutAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + + manager.shopLayoutProvider(new MyCustomLayoutProvider()); + } +} +``` + +--- + +# Conclusion + +The Shop Layout Provider system allows complete control over shop sign structure. + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +``` + +And setting: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +You can redefine how every shop is displayed on the server. + +This system was designed to support: + +- Extensibility +- Custom shop types +- Localization +- Dynamic formatting +- Future expansion \ No newline at end of file diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/faq/compare-reremake.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/faq/compare-reremake.md index aaa1a9e507..6b39f02520 100644 --- a/i18n/da-DK/docusaurus-plugin-content-docs/current/faq/compare-reremake.md +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/faq/compare-reremake.md @@ -64,7 +64,7 @@ If you are a Reremake user, you may be confused about the differences between Hi ## Which one should I use? Well, it depends on what your needs are.\ -If you have an old server (<1.20) instance, Reremake is your only choice.\ +If you have an old server ({'<'}1.20) instance, Reremake is your only choice.\ ~~If you are in China which has GFW interfere, you also should consider Reremake because it doesn't need to load libraries from Global Internet.~~ Solved in 6.0.0.0. If none of these applies, give Hikari a try! diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md index 551f579e7c..172be3a69b 100644 --- a/i18n/da-DK/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md @@ -1,8 +1,8 @@ # Where Addons/Compacts is -Addons and Compatilibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. +Addons and Compatibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. -- Open Modrinth versions page, locate the version your're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) +- Open Modrinth versions page, locate the version you're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) - Frantically slide your mouse wheel down until the lowest end of the page. - You get it! diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/internal/database-schema.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/internal/database-schema.md index fea685e4fc..45e04adb56 100644 --- a/i18n/da-DK/docusaurus-plugin-content-docs/current/internal/database-schema.md +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/internal/database-schema.md @@ -4,17 +4,17 @@ This chapter will explain the implementation details of QuickShop Hikari's datab ## Tables -This section explains the database tables created by QuickShop-Hikari.\ -Unless otherwise specified, the initial `qs_` in table name is the table prefix.\ +This section explains the database tables created by QuickShop-Hikari. +Unless otherwise specified, the initial `qs_` in table name is the table prefix. For the latest code definition for each table, see: [DataTables.java](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/hikari/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/database/DataTables.java) ### `data` -This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information.\ -No matter what, a data record should not be modified after it is created, until it got deleted.\ +This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information. +No matter what, a data record should not be modified after it is created, until it got deleted. Any new changes to the shop should create a new copy, apply the changes to the copy, and insert it as a new record. -Basiclly, Copy-on-write. +Basically, Copy-on-write. A data record only be deleted from the database when no any table references their `data_id`. @@ -29,7 +29,7 @@ A data record only be deleted from the database when no any table references the | unlimited | BIT NOT NULL | 0 | Indicates whether this store is an unlimited store, 0=Limited, 1=Unlimited | | hologram | BIT NOT NULL | 0 | Indicates the suspension status of this store's display item, 0=Follow global settings, 1=Disabled | | tax_account | VARCHAR(36) | NULL | The uuid for tax account, If it is not NULL, tax will be paid to the specified account | -| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serilized to JSON string | +| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serialized to JSON string | | extra | LONGTEXT | Empty Yaml | Used to store experimental settings of QuickShop Hikari or persistent data of other plugins | | inv_wrapper | VARCHAR(255) NOT NULL | N/A | Unique identifier for InventoryWrapper for this shop data entry | | inv_symbol_link | TEXT NOT NULL | N/A | Unique Inventory symbol used to pass to InventoryWrapper, for locating inventory | @@ -38,7 +38,7 @@ A data record only be deleted from the database when no any table references the ### `shops` -This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes.\ +This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes. Multiple `shop_id` can correspond to the same `data_id`. | Column Name | DataType | Default | Description | diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/cmd-alias.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/cmd-alias.md index 53f1577685..e6ed381c0d 100644 --- a/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/cmd-alias.md +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/cmd-alias.md @@ -23,7 +23,7 @@ custom-commands: - cshop ``` -Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect.\ +Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect. The effect should be like this: ![command-alias](./img/command-alias.png) diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/datasource.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/datasource.md index 6fc1bd8931..3fd3a8bdee 100644 --- a/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/datasource.md +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/datasource.md @@ -48,7 +48,7 @@ Execute the `/quickshop export` command in console, quickshop will export a zip ![exported data](img/database-export.png) -Stop your database, switch the datasource, and start the server.\ +Stop your database, switch the datasource, and start the server. You may noticed all shops are gone, because new datasources had no data inside, we will restore them from export. Rename that exported ZIP file to `recovery.zip`, execute `/quickshop recovery` and restart your server, all shops should back. diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/itemmatcher.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/itemmatcher.md index 56be243019..922907be27 100644 --- a/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/itemmatcher.md +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/itemmatcher.md @@ -4,7 +4,7 @@ ItemMatcher is a utility used by QuickShop-Hikari to compare the items, it is th :::caution -If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse.\ +If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse. **TL;DR: Keep default unless you know what you're doing.** ::: @@ -26,10 +26,10 @@ matcher: work-type: 1 ``` -By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility.\ +By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility. But still, you can toggle to QuickShop Item Matcher if you need to customize the comparing or running QuickShop on the server jar which have bug affect the Bukkit comparing system. -## Customize the metadata compareing +## Customize the metadata comparing Customize only works under QuickShop Item Matcher. diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md index fc2af69d2b..d04e8f2783 100644 --- a/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md @@ -4,7 +4,7 @@ ItemStack Loader is a workaround for loading the Bukkit ItemStack. :::caution -Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossble. +Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossible. ::: diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/localization.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/localization.md index e9121e1a36..d47589ab9a 100644 --- a/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/localization.md +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/localization.md @@ -10,7 +10,7 @@ To help translate QuickShop-Hikari, please visit our [Crowdin Homepage](https:// ## Crowdin OTA -QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will overrided when you reload QuickShop-Hikari or restart your server. +QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will override when you reload QuickShop-Hikari or restart your server. Your installation will keep translations up-to-date without any touch. @@ -110,6 +110,16 @@ To disable the CrowdinOTA, please add it in the startup flag: -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager.enableCrowdinOTA=false ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +use-crowdin-ota: false +``` + ### Self-Hosted OTA Server If you self-hosted our translation server by using [CrowdinCopyDeploy](https://github.com/Ghost-chu/CrowdinCopyDeploy) tool, you're able to change the OTA server to yourself server. @@ -118,4 +128,12 @@ If you self-hosted our translation server by using [CrowdinCopyDeploy](https://g -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager= ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml +Use + +```yaml +crowdin-host: +``` \ No newline at end of file diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/shops/benefit.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/shops/benefit.md index 4d7a9c8f42..c59d92e6d1 100644 --- a/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/shops/benefit.md +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/shops/benefit.md @@ -37,3 +37,13 @@ By default, for security, QuickShop-Hikari disallow add offline players into sho ```bash -Dcom.ghostchu.quickshop.command.subcommand.SubCommand_Benefit.allowOffline=true ``` + +### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +shop.allow-offline-benefit: true +``` \ No newline at end of file diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/shops/control-panel b/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/shops/control-panel new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/shops/control-panel @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/shops/history.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/shops/history.md index fa891adeab..195b64a042 100644 --- a/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/shops/history.md +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/shops/history.md @@ -24,7 +24,7 @@ The History GUI displays the details of each recorded transaction and other usef ### Transaction details -When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed.\ +When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed. If you are checking the history of more than one store, the player head will be replaced with an item from the corresponding store. ![history-gui](./img/history-gui.png) diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md new file mode 100644 index 0000000000..c5ed3b3fe4 --- /dev/null +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md @@ -0,0 +1,90 @@ +# Shop Types + +QuickShop supports multiple shop types, allowing shops to behave differently depending on their mode. + +The built-in shop types are: + +- Selling +- Buying +- Frozen + +Each type changes how the shop interacts with players. + +--- + +## Selling Shop + +A Selling shop allows players to: + +- Buy items from the shop owner +- Pay money to receive items + +This is the most common shop type. + +--- + +## Buying Shop + +A Buying shop allows players to: + +- Sell items to the shop owner +- Receive money in exchange + +This is commonly used for: + +- Resource collection +- Server buy-back shops +- Automated material sinks + +--- + +## Frozen Shop + +A Frozen shop temporarily disables trading. + +While frozen: + +- No buying is allowed +- No selling is allowed +- The shop remains intact +- Staff or admins can manage it + +This is useful for: + +- Temporary suspensions +- Investigation +- Event locking +- Maintenance + +--- + +## Switching Shop Types + +Shop types can be changed through: + +- Control panel +- GUI control panel +- Admin commands + +Frozen mode is also available via: + +/qs freeze + +--- + +## Custom Shop Types + +As of 6.2.x, the system supports extensible shop types internally. + +While server owners use the built-in types, the system now allows future expansion through addons. + +--- + +## Summary + +Shop types allow you to: + +- Control how money flows +- Enable buy-back mechanics +- Temporarily disable shops +- Build advanced economic systems \ No newline at end of file diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md new file mode 100644 index 0000000000..18e0a47407 --- /dev/null +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md @@ -0,0 +1,217 @@ +# Sign Layout + +QuickShop allows you to fully customize how shop signs are structured. + +You can change: + +- What appears on each line +- The order of information +- Layout per shop type +- Whether certain lines are blank + +This gives you complete control over how shops look on your server. + +--- + +## How Sign Layout Works + +Shop signs have four lines. + +Instead of being hardcoded, QuickShop uses a configurable layout system. + +Each shop type can have its own layout: + +- SELLING +- BUYING +- FROZEN + +You define what each line displays using layout keys. + +--- + +## Configuration Location + +Sign layout is configured in `config.yml` under: + +```yaml +layout: +``` + +Example default configuration: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## Available Layout Keys + +Each line value refers to a built-in layout component. + +Common layout keys include: + +- `header` – The shop header line +- `trading` – Buy/Sell direction information +- `item` – Item name +- `price` – Shop price + +These keys are automatically formatted using your language file and formatting settings. + +--- + +## Leaving a Line Blank + +To leave a line empty, use: + +```yaml +line2: "" +``` + +This is useful if you want: + +- Minimalist signs +- Cleaner layouts +- Custom spacing +- Decorative formatting + +--- + +## Customizing Per Shop Type + +Each shop type can have a different layout. + +For example: + +```yaml +layout: + + SELLING: + line1: "header" + line2: "item" + line3: "price" + line4: "" + + BUYING: + line1: "header" + line2: "price" + line3: "item" + line4: "" + + FROZEN: + line1: "header" + line2: "" + line3: "item" + line4: "Frozen" +``` + +This allows you to visually differentiate: + +- Selling shops +- Buying shops +- Frozen shops + +--- + +## Practical Examples + +### Minimal Style + +```yaml +layout: + SELLING: + line1: "item" + line2: "price" + line3: "" + line4: "" +``` + +### Compact Economy Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "price" + line3: "item" + line4: "" +``` + +### Large Clear Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## How Updates Affect Layout + +When you change the layout: + +- Existing shop signs will update automatically when refreshed. +- New shops will use the updated format immediately. + +If needed, you can reload QuickShop to apply changes. + +--- + +## Best Practices + +- Keep important information visible (price and item). +- Avoid overly complex formatting. +- Test layout changes before deploying on large servers. +- Use different layouts for BUYING and SELLING to reduce confusion. + +--- + +## Common Questions + +### Can I add more than four lines? + +No. +Minecraft signs are limited to four lines. + +### Can I add colors? + +Colors are controlled by your language file and formatting settings. + +### Can I change layout without restarting? + +Yes, but reloading or refreshing shops is recommended to ensure full update. + +--- + +## Summary + +The Sign Layout system allows you to: + +- Fully customize shop sign appearance +- Create per-type layouts +- Simplify or expand shop information +- Improve clarity for players + +All layout customization is handled inside `config.yml`. diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md index abcc288db7..2a0d52d788 100644 --- a/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md @@ -8,19 +8,6 @@ This feature added in 6.0.0.0. By default, QuickShop-Hikari uses the default brand material from the configuration file, but you can modify it to other brands for your store with the command. -## Configuration - -```yaml - #The wall sign material. - #ACACIA_WALL_SIGN - #BIRCH_WALL_SIGN - #DARK_OAK_WALL_SIGN - #JUNGLE_WALL_SIGN - #OAK_WALL_SIGN - #SPRUCE_WALL_SIGN - sign-material: OAK_WALL_SIGN -``` - ## Change the material Use command `/quickshop sign ` to change your shop sign material. diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md new file mode 100644 index 0000000000..980bad10f2 --- /dev/null +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md @@ -0,0 +1,130 @@ +# Shop Sign Waxing + +QuickShop can automatically wax shop signs to prevent players from editing them manually. + +Waxing protects the integrity of your shop signs and helps prevent tampering, spoofing, and accidental modification. + +As of modern Minecraft versions, waxed signs cannot be edited unless they are unwaxed first. + +--- + +## What Is Sign Waxing? + +In Minecraft, waxing a sign locks it so that: + +- Players cannot edit the text +- Players cannot modify lines +- Accidental changes are prevented +- Malicious edits are blocked + +When enabled in QuickShop, shop signs are automatically waxed when created. + +--- + +## Why Use It? + +Sign waxing protects against: + +- Players editing price lines +- Changing item names on signs +- Spoofing shop information +- Accidental formatting issues +- Sign hijacking attempts + +On public servers, this feature is strongly recommended. + +--- + +## How It Works + +When a shop is created: + +1. QuickShop generates the shop sign. +2. The sign text is written. +3. The sign is automatically waxed (if enabled). + +If a shop is updated: + +- The sign will be safely updated by QuickShop. +- The wax state is maintained. + +Players cannot manually edit shop signs while waxing is enabled. + +--- + +## Configuration + +To enable or disable sign waxing, edit `config.yml`: + +```yaml +shop: + sign-wax: true +``` + +### true + +- Shop signs are automatically waxed. +- Players cannot edit the sign manually. + +### false + +- Shop signs behave like normal Minecraft signs. +- Players may edit them if permitted by the game. + +--- + +## Recommended Setting + +For most servers: + +```yaml +shop: + sign-wax: true +``` + +This ensures shop data stays accurate and secure. + +--- + +## Common Questions + +### Can admins still modify shop signs? + +QuickShop controls shop sign formatting. +Manual edits are not recommended. + +Admins should use: + +- Control panel +- Shop commands +- Direct configuration changes + +### Does waxing affect shop functionality? + +No. +Waxing only prevents manual text edits. +The shop continues to function normally. + +### Can players un-wax shop signs? + +No. +QuickShop manages the sign state automatically. + +--- + +## Best Practices + +- Keep sign-wax enabled on survival servers. +- Combine sign-wax with proper permissions. +- Avoid manually editing shop signs through other plugins. + +--- + +## Summary + +Sign Waxing: + +- Prevents tampering +- Requires no additional setup + +Enable it once and QuickShop handles the rest. \ No newline at end of file diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/shops/taxes.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/shops/taxes.md new file mode 100644 index 0000000000..1a273fd978 --- /dev/null +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/shops/taxes.md @@ -0,0 +1,92 @@ +# Taxation System + +QuickShop includes a taxation system designed to give server owners more flexibility and control over shop-based income. + +This system was revamped as of 6.2.0.11+ + +The new system allows you to: + +- Apply tax to shop owners +- Apply tax to buyers +- Apply tax to both +- Use progressive tax brackets +- Customize tax behavior in configuration + +This system replaces the legacy tax configuration. + +--- + +## How It Works + +During a transaction: + +1. The shop price is calculated. +2. Tax is calculated based on your configuration. +3. Tax is deducted from the configured target(s). +4. Remaining funds are distributed normally. + +You can configure: + +- Flat percentage tax +- Progressive tax based on player balance +- Tax accounts +- Distribution rules + +--- + +## Progressive Tax + +The new system allows you to tax based on balance brackets. + +Example concept: + +- 0 – 10,000 balance → 1% tax +- 10,000 – 100,000 → 2% tax +- 100,000+ → 3% tax + +This helps prevent extremely wealthy players from dominating the economy. + +--- + +## Who Pays the Tax? + +You can configure whether tax applies to: + +- The shop owner +- The buyer +- Both + +This gives you flexibility depending on your economy design. + +--- + +## Configuration + +All tax-related settings are located under the `shop-tax` section in `config.yml`. + +After updating to 6.2.0.11+, review your tax configuration carefully, as the old tax system has been replaced. + +--- + +## Why Use Tax? + +The taxation system can help: + +- Remove currency from circulation +- Fund server banks or towns +- Create sink mechanics +- Balance inflation +- Reward active players + +--- + +## Summary + +The new taxation system is: + +- Flexible +- Configurable +- Balance-aware +- Designed for modern economy servers + +Make sure to review your configuration after upgrading. \ No newline at end of file diff --git a/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md b/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md new file mode 100644 index 0000000000..247c24712d --- /dev/null +++ b/i18n/da-DK/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md @@ -0,0 +1,161 @@ +# WorldEdit & FAWE Support + +QuickShop includes built-in protection and integration for WorldEdit and FastAsyncWorldEdit (FAWE). + +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. + +You do not need to download or install any additional compatibility plugins. + +--- + +## What This Does + +WorldEdit and FAWE allow administrators and builders to: + +- Copy and paste regions +- Replace large areas of blocks +- Mass-delete regions +- Roll back areas +- Regenerate terrain + +Without protection, these operations could: + +- Create ghost shops +- Leave orphaned shop data in the database +- Duplicate shops unintentionally +- Delete containers without cleaning up shop data +- Cause inconsistencies between world and database + +QuickShop now automatically detects and safely processes WorldEdit and FAWE operations. + +--- + +## Built-In Behavior + +When WorldEdit or FAWE modifies blocks: + +- Shops removed via WorldEdit are properly deleted from the database. +- Shop data stays synchronized with world changes. +- Ghost shops are prevented. +- Mass block replacements will not leave broken shop entries behind. + +This applies to: + +- //set +- //replace +- //cut +- //paste +- //regen +- Region deletion +- Mass container removal + +No configuration is required. + +--- + +## FAWE Support + +FastAsyncWorldEdit (FAWE) is fully supported. + +Because FAWE processes edits asynchronously, QuickShop handles: + +- Region-thread safe processing +- Async block updates +- Safe shop deletion during batch edits + +You do not need to enable anything manually. + +--- + +## Removing Shops with WorldEdit + +If you delete containers (chests, barrels, etc.) using WorldEdit: + +QuickShop will automatically: + +- Detect the block removal +- Unregister the shop +- Clean the database entry +- Prevent ghost shops + +You do not need to run `/qs cleanghost` after WorldEdit usage in normal circumstances. + +--- + +## Copying and Pasting Shops + +If you copy and paste regions that contain shops: + +- Shop data will not duplicate incorrectly. +- Shop IDs remain consistent. +- Invalid pasted shops will not auto-register unless properly created. + +This prevents accidental duplication exploits. + +--- + +## Performance + +WorldEdit and FAWE operations can modify thousands of blocks at once. + +QuickShop processes these safely and efficiently: + +- Batch-aware cleanup +- Thread-safe region access (especially on Folia) +- Minimal performance impact during mass edits + +--- + +## Configuration + +There are no specific WorldEdit configuration options in QuickShop. + +Support is automatic and always enabled if WorldEdit or FAWE is detected. + +If WorldEdit is not installed, no extra code is executed. + +--- + +## Common Questions + +### Do I need the old WorldEdit compatibility jar? + +No. + +As of 6.2.0.11, WorldEdit support is built-in and the separate compatibility module has been removed. + +### Does this work with FAWE? + +Yes. FAWE is fully supported. + +### Will shops break if I use //set air? + +No. Shops will be safely removed and cleaned up. + +### Do I need to restart after installing WorldEdit? + +No. QuickShop detects WorldEdit automatically on startup. + +--- + +## Best Practices + +Even though QuickShop safely handles WorldEdit operations, it is recommended to: + +- Avoid copying shops intentionally unless required +- Use backups before large region edits +- Test large FAWE operations on staging servers when possible + +--- + +## Summary + +QuickShop’s built-in WorldEdit and FAWE integration ensures: + +- Safe mass edits +- No ghost shops +- Automatic database cleanup +- Thread-safe processing +- No extra modules required + +WorldEdit support is now a core feature of QuickShop. \ No newline at end of file diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/addon/limited.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/addon/limited.md index 70af27e240..fae55a8c95 100644 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/addon/limited.md +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/addon/limited.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -41,8 +35,8 @@ Limit players to purchase up to 16 items per month. /quickshop limit period MONTH ``` -The system is based on the QuickShop-Hikari calendar system.\ -The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year.\ +The system is based on the QuickShop-Hikari calendar system. +The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year. Same for days, months and hours. Available time units: diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/addon/list.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/addon/list.md index 93d182f083..f20b91fd7b 100644 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/addon/list.md +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/addon/list.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/addon/plan.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/addon/plan.md index 52a6e79cb4..c10ef4df42 100644 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/addon/plan.md +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/addon/plan.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -18,7 +18,7 @@ Recorded data can be displayed from Hikari v2.0.0.0 onwards, but only after vers - All shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 1000 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `5` in server scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `5` in server scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Player Scope @@ -27,7 +27,7 @@ And still is Plan limitations, the list sorting is disturbed, so the display ord - All owned shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 50 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `4` in player scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `4` in player scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Showcase diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/addon/reforges.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/addon/reforges.md index 2a14509eb7..25fff1752a 100644 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/addon/reforges.md +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/addon/reforges.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.0.0.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md index 304d39bc05..6f9f51d250 100644 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.1.1.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -44,7 +38,7 @@ _This is not necessary if you are using an H2 database._ ### Prepare for convert -To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console.\ +To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console. If a player is in the server, the conversion cannot be started. Once the conversion has begun, the server will be locked during the conversion process and no players will be able to join the server during the conversion. diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/addon/shopitemonly.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/addon/shopitemonly.md index c45062f8c2..1ccfe977b3 100644 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/addon/shopitemonly.md +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/addon/shopitemonly.md @@ -2,17 +2,11 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT - -::: - -This addon prevents players from putting non-store items into store containers.\ +This addon prevents players from putting non-store items into store containers. Does not apply to stores that use the item inventory redirection API (aka. InventoryWrapper API). This Addon will check for container (or transferring) items on events such as the player closing the container or hopper access. diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md new file mode 100644 index 0000000000..9c8b4f7407 --- /dev/null +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md @@ -0,0 +1,55 @@ +# 6.2.0.10 + +## Major Changes + +- Added support for 1.21.6 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.7 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.8 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Some internal updates for packetevents(2.9.0 is now required.) +- Updated Lands support + +## Addon Changes + +- Added MatcherPlus Addon + - Allows support for BreweryX and AdvancedItems stacks in shops with improved matching abilities +- Added FabledSkyblock Compat +- Added Dominion Compat +- Added HuskTowns Compat +- Added IridiumSkyblock Compat +- Added member-create for member creation in ARM compat +- Added admin-override and quickshop.arm.admin permission for admin overrides in ARM + +## Minor Changes + +- Added configurations for the coordinates of the display item. +- Added /qs toggledisplayall on/off server/owned + - Players need to have permission node quickshop.toggledisplayall.admin to toggle all on the server. +- Added ability to use abbreviations in /qs price and /qs create commands such as 2.5k for 2500 +- Added ability to set default display status using shop.default-display in config.yml + +## Fixes + +- Fixed issue with display item being sent to the moon on 1.21.5 +- Fixed issue where TRADE_UI interactions interfered with quick create. +- Fixed issue with displays on protocollib falling through the chest +- Fixed issue with signs on .9 and previous .10 snapshots on early versions +- Implemented some performance improvements for paper servers +- Fixed all outstanding issues with Folia usage.(thanks to RootB33R/SleazLee for contributions) + +## Possible 6.2.0.11 Features + +Here's an outline for some features that may arrive in 6.2.0.11: + +- Additional compats/addons that have been piling up. + - see: https://github.com/QuickShop-Community/QuickShop-Hikari/issues/1756 +- gradle?(interested to see compilation time uplifts) +- Update documentation +- Update configuration comments +- Update configuration system? + - auto updating? + - Allows removal of the update code +- Remove waste spigot modules? + - Any versions of 1.20 that can be discarded due to low use? +- Bug fixing, of course +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... \ No newline at end of file diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md new file mode 100644 index 0000000000..b41c88662a --- /dev/null +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md @@ -0,0 +1,173 @@ +## Outline + +- Update documentation +- Update configuration comments +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... + +# 6.2.0.11 + +## Major Changes + +- Removed Spigot Platform Modules, and stopped loading QS if Spigot is detected. This will mean that unless the protocol changes that we use for display items, QS won't need updated for each version. +- Revamped Economy Code Completely + - New classes for all economy-related systems + - Any economy-related or benefits-related events are incompatible with previous versions. +- Added sign layout customizations per-type allowing you to change how lines are configured, an empty string('') will leave an empty line for that line of the sign. + +``` + #The layout of signs for shops. + layout: + + #The layout of BUYING shops. + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of FROZEN shops. + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of SELLING shops. + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +- Add wildcard support for item blacklist patterns(thanks to bennycallanan) + - Added support for wildcard patterns in the item blacklist configuration, allowing users to block entire categories of items with simple patterns. + + - Features + - Wildcard patterns like \*_AXE and \*_SPAWN_EGG now work in blacklist configuration + - Supports \* for any characters and ? for single character matching + - Case-insensitive pattern matching +- Overhauled GUI system(thanks to Yusakidev) + - Implemented gui.yml configuration file for customizing the GUI. + - Implemented better filtering for qs browse + - Implement GUI system to be more stable, and less error prone. + - Added gui.yml for fully configurable GUI layouts and text + - Browse menu: search, sort (price/name/stock), and filter (all/buying/selling/in-stock) + - Staff menu: search functionality for player/staff selection + - Grouped item pages for better shop browsing + - Refactored all menu pages to use configurable display/lore +- Added worldedit compat to QS internally as it's widely used. +- Revamped the taxation system to be more flexible and easier to configure. + - introduced a new progressive tax system that allows you to tax based on the balance of players.(suggested by YuanYuanOwO) + - introduced the ability to tax the player interacting with the shop, the owner, or both + - all tax-related configurations have been moved under the shop-tax section of the config. this may require reconfiguration of your tax settings. + - added a new ShopEnhancedTaxEvent, deprecated the old ShopTaxEvent. + - Added a new TaxManager, and TaxProvider interfaces, this allows for custom tax providers to be added by addons/third-party developers. + +## Addons/Compats Changes + +- Added UltimateClaims compat +- Added SimpleClaimSystem compat +- Added Quests by Pika addon +- Added BetonQuest addon +- Added Pl3xMap addon +- MatcherPlus Compat Improvements + - Added support for CrazyCrates + - Added support for ExcellentCrates + - Added support for SilkSpawners. +- WorldGuard Compat Improvements(Thanks to golovin12) + - Added clear permission handling: + - Region owners and members automatically have permission to create and trade in their own regions. + - Other players must have the appropriate WorldGuard flags enabled (quickshophikari-create, quickshophikari-trade) to interact with shops. + - If a shop is located outside any region, default QuickShop behavior applies (no extra restrictions) +- Added colored markers based on shop state for bluemap(thanks to YusakiDev) +- Updated dynmap/towny addons to use the new ShopTypeEnhancedEvent instead of ShopTypeEvent. +- Removed worldedit compat, it's now included in the main plugin. +- Added support for global flags to the worldguard compat. + +## Internals/Developer APIs + +- Removed several deprecated methods and classes. +- Revamped the interaction manager. It is now more flexible and allows external additions + - This involves two classes InteractionBehavior and InteractionType. + - InteractionType details the type of interaction such as: STANDING_LEFT_CLICK_SIGN, STANDING_LEFT_CLICK_SHOP + - InteractionBehavior outlines a behavior for an InteractionType such as CONTROL_PANEL and TRADE_UI +- Added UserLimitCalculationEvent, which allows for custom limits to be applied to users. + - This is useful for limiting the number of shops a user can have, or adding on to the existing limits provided by the ranks system without needing to implement a new RankLimiter. +- Added a new ShopLayoutProvider interface, and default implementation. + - This allows for custom layouts to be used for shops, allowing for more customization. + - This also allows for developers to override the default layout provider and create their own implementation. +- How to make your own? + - Implement the classes you would like to then register with the InteractionManager: + - ```java + InteractionManager manager = QuickShop.getInstance().getInteractionManager(); + + manager.interaction(new MyTradeInteraction()); + manager.behavior(new MyTradeBehavior()); + ``` +- Replaced some Apache Commons calls that could be easily replaced with built-in java methods, reduces some calls by ~ 1100ms/method call +- Deprecated the ShopType enum, and the ShopTypeEvent. These are replaced with the new IShopType interface and implementing classes. + - The new event is ShopTypeEnhancedEvent. + - This allows for third-party addons to add their own shop types, and simplifies code checks for translations. +- Updated config system to use Boosted-yaml + - this allows for auto-updating of config files without complex update scripts + - this also allows for the config system to not be minecraft-dependent. +- Replaced logical PaperLib calls with native PaperAPI calls. + +## Minor Changes + +- Bump Java version up to 21 +- Added shop.display-allow-enchants to enable/disable enchantments for display items on shops. +- Added workaround for packetevents not supporting custom enchants on itemstacks for virtual display items. +- Using locale translations for shop-type in mode toggle icon(thanks to ExyiN) +- Bumped Residence version for the compat(thanks to YuanYuanOwO) +- add world whitelist support(thanks to wling-art) +- added /qs database save command, which saves all currently dirty-marked shops to the database. +- Split up interactions _SHOPBLOCK into _SHOPBLOCK and _CONTAINER. + - _SHOPBLOCK relates to shops, where _CONTAINER relates to shop-valid containers that are not currently shops. +- Added inventory as an option for command panel, this is useful for adding a secondary option for players to open a shop's inventory. +- Moved crowdin arguments from system properties to config.yml + - crowdin-host + - use-crowdin-ota + +## Fixes + +- Fixes issue with item price restrictions(thanks to maxcom1) +- Fixes issue with 1.20.x protocol lib displays(thanks to YuanYuanOwO) +- Fixes issue when no item is in hand for itemdebug(thanks to YuanYuanOwO) +- Fixes issue with dominion addon(thanks to YuanYuanOwO) +- Add a simple check to avoid this. If it is not own shop, reject limit request directly.(Thanks to YuanYuanOwO) +- Fix NPE by not setting tax for price in TransactionBuilder(thanks to maxcom1) +- Fixes /quickshop suggestprice to differentiate between buy/sell shops. (Thanks to MidSpike) +- PacketEvents ClassNotFoundException with ProtocolLib(thanks to wling-art) +- Reallocate block state access to region thread for shop creation(thanks to r00tbeerman) +- resolve SLF4J StaticLoggerBinder loading error(thanks to wling-art) +- sign hijacking issue by validating sign facing direction(thanks to wling-art) +- Performance improvements for QuickShop disabling to prevent potential freezes. +- Fixed issue with 1.20.4 packetevents virtual displays not staying put. +- Fixes critical issue in GriefPrevention compatibility plugin. +- Fixes issue with shop owner not getting money when benefits active. +- Fixes for lands addon on folia, Use regionThread for Folia compatibility(thanks to YusakiDev) +- Fixes for TRADE_DIRECT on stacking shops +- Fixes issue for protocollib 5.4.0 with undocumented packet changes. +- Fixes issue where item stacks could be used on creation above the max stack size. +- Fixes issue with BukkitAudiences-related crashes on 1.21.11. +- Fix issue with shop deletion when getting too impatient. +- Fix the permission check issue when a shop owned by a non-owner is transferred to someone else. (thanks to YuanYuanOwO) +- Fix ui with supertool (thanks to YuanYuanOwO) +- Fix issue with logs generating outside debug mode. +- Fix issue with /qs find. +- Fix configuration loading timing. +- Fix configuration loading/creation warning message language. +- Fix command description language key mismatch(thanks to wling-art) +- Fix qs clean command on folia(thanks to wling-art) +- Fix per-player-shop-sign on folia(thanks to wling-art) +- Fix potential recursive deadlock in virtual display packet sending(thanks to wling-art) +- Fix configuration loading/creation warning message language. +- Fix issue with /qs browse and ShopItemOnly addon not behaving properly together on folia. +- Fix issue with PLAN using outdated APIs. +- Fix issue with /qs clean on folia.(thanks to wling-art) +- Fix issue with /qs cleanghost on folia(thanks to wling-art) +- More thread safety fixes for shops on folia.(thanks to wling-art) +- Fix owner payment calculations with benefits(thanks to wling-art) \ No newline at end of file diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md index 8172f9b410..dcc3edc67d 100644 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md @@ -20,20 +20,20 @@ the ControlComponent object with a custom one that will replace the original dur ### Introduction of the Revamped Packet System 1. **About**: - - A modular and scalable system for managing packets related to virtual display items in Minecraft. - - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. + - A modular and scalable system for managing packets related to virtual display items in Minecraft. + - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. 2. **Custom Packet Factories**: - - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. - - Packet types: - - **Spawn Packet**: Spawns a virtual item entity at a specific location. - - **Metadata Packet**: Updates the visual properties of virtual items. - - **Velocity Packet**: Adds motion/velocity to entities (currently optional). - - **Destroy Packet**: Removes the entity from the client view. + - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. + - Packet types: + - **Spawn Packet**: Spawns a virtual item entity at a specific location. + - **Metadata Packet**: Updates the visual properties of virtual items. + - **Velocity Packet**: Adds motion/velocity to entities (currently optional). + - **Destroy Packet**: Removes the entity from the client view. 3. **Error Handling and Logging**: - - Enhanced debug logs to trace packet-related issues. - - Detailed error messages for missing factories or unregistered listeners. + - Enhanced debug logs to trace packet-related issues. + - Detailed error messages for missing factories or unregistered listeners. #### Improvements: diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md index 7775308722..c6e0948d19 100644 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md index f420997a9c..38587e3784 100644 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md index 5ed8182c9a..259c55f342 100644 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md index 924a37ac49..7fd4596a6a 100644 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,6 +10,6 @@ This is a BungeeCord plugin, you need install it within your BungeeCord's plugin ## How does it work? -BungeeCord Bridge plugins will register a `quickshop:bungee` channel for fowarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. +BungeeCord Bridge plugins will register a `quickshop:bungee` channel for forwarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. All forwarding is indicated by QuickShop-Hikari on the Spigot server and ends when it is not needed. diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md index 27d68956a8..20fbaf7a0c 100644 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,5 +10,5 @@ This compatibility module added [Chest Protect](https://www.spigotmc.org/resourc ## How does it work? -This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident.\ +This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident. It also prevents players from creating shops on ChestProtect protected containers. diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md index 220e26d8bb..e1757e7be9 100644 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/dominion.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/dominion.md new file mode 100644 index 0000000000..e1195278a8 --- /dev/null +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/dominion.md @@ -0,0 +1,138 @@ +# Dominion + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and Dominion. + +It ensures that shop creation and trading respect Dominion’s land and territory protection system. + +--- + +## What Does It Do? + +Dominion allows players or groups to claim land and define territory-based permissions. + +Without compatibility: + +- Players could create shops inside territories they do not control. +- Visitors might trade inside protected dominions. +- Dominion permission rules might not apply to shop interactions. + +The Dominion compat module ensures that: + +- Shop creation respects territory ownership. +- Shop trading follows Dominion permission settings. +- Protected land remains secure from unauthorized shop usage. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a Dominion-controlled area. +- Whether the player has permission within that territory. +- Whether Dominion rules allow shop interaction. + +If the action is not permitted by Dominion settings, QuickShop blocks it. + +If the location is outside any Dominion territory, default QuickShop behavior applies. + +--- + +## Territory Owner Control + +With this module enabled: + +- Territory owners can create and manage shops inside their dominion. +- Trusted members follow territory-based permissions. +- Outsiders are restricted unless explicitly allowed. +- Shop actions respect Dominion’s land rules automatically. + +This prevents unauthorized shop placement inside protected territories. + +--- + +## Installation + +1. Install Dominion. +2. Install the QuickShop Dominion compat module. +3. Restart your server. + +The module activates automatically if Dominion is detected. + +No manual configuration linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside dominions +whitelist-mode: false + +# Allow territory owners to override shop permissions +allow-owner-override: true +``` + +If Dominion is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For servers using Dominion: + +- Restrict shop creation to territory owners or trusted members. +- Prevent shop creation in wilderness if desired. +- Allow dominion owners to manage shop permissions. +- Review Dominion permission settings to align with shop behavior. + +This ensures protected territories remain secure and organized. + +--- + +## Common Questions + +### Can players create shops in someone else's dominion? + +Only if Dominion permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You may allow or restrict shops outside dominions. + +### What happens if Dominion is removed? + +QuickShop returns to normal behavior and stops checking Dominion territories. + +--- + +## Summary + +The Dominion compat module: + +- Enforces territory-based permissions +- Prevents unauthorized shop creation +- Protects claimed land from misuse +- Integrates seamlessly with Dominion + +It is recommended for servers running Dominion. \ No newline at end of file diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md index 743d3ae666..2ac9b10488 100644 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md new file mode 100644 index 0000000000..07ba4ada66 --- /dev/null +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md @@ -0,0 +1,133 @@ +# FabledSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and FabledSkyblock. + +It ensures that shop creation and trading properly respect island boundaries and island permissions. + +--- + +## What Does It Do? + +On Skyblock servers, players build and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Players might trade in areas they should not. +- Island protection rules might not apply to shops. + +The FabledSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members behave correctly with shops. +- Island visitors are restricted appropriately. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a FabledSkyblock island. +- Whether the player has permission on that island. +- Whether island settings allow the action. + +If the action is not permitted by island rules, QuickShop will deny it. + +--- + +## Island Ownership Rules + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow island permission settings. +- Visitors can only trade if island permissions allow it. +- Outside of islands, default QuickShop behavior applies. + +--- + +## Installation + +1. Install FabledSkyblock. +2. Install the QuickShop FabledSkyblock compat module. +3. Restart your server. + +The module activates automatically if FabledSkyblock is detected. + +No manual linking is required. + +--- + +## Configuration + +If the module provides configuration options, they will appear in its `config.yml`. + +Typical options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If FabledSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most Skyblock servers: + +- Allow shop creation only inside islands. +- Prevent trading in the void or wilderness. +- Let island owners control shop permissions. +- Use island rank systems to manage shop access. + +This helps maintain economic balance between islands. + +--- + +## Common Questions + +### Can players create shops in the void? + +Only if your configuration allows it. +Most servers disable shop creation outside islands. + +### Does this affect island war or PvP modes? + +No. +The module only checks island ownership and permissions for shop interactions. + +### What happens if FabledSkyblock is removed? + +QuickShop returns to normal behavior. + +--- + +## Summary + +The FabledSkyblock compat module: + +- Protects island economies +- Enforces island permission rules +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is strongly recommended for any server running FabledSkyblock. \ No newline at end of file diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md index 81b13d2c6b..32614d3019 100644 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md @@ -2,17 +2,17 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -GreifPrevention compatibility module added compaitibility with GF. +GreifPrevention compatibility module added compatibility with GF. ## How does it work This module allow QuickShop-Hikari check if player have permission to create or use QuickShop in specific region. -And delete shops when claim removed, untrusted, unclimed, expired, resized or subclaim created. +And delete shops when claim removed, untrusted, unclaimed, expired, resized or subclaim created. ## Configuration diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md new file mode 100644 index 0000000000..e71b34d462 --- /dev/null +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md @@ -0,0 +1,139 @@ +# HuskTowns + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and HuskTowns. + +It ensures that shop creation and trading respect town and claim permissions defined by HuskTowns. + +--- + +## What Does It Do? + +HuskTowns allows players to create towns and claim land. + +Without compatibility: + +- Players could create shops inside towns they do not belong to. +- Visitors might trade inside protected towns. +- Town permission rules might not apply to shop interactions. + +The HuskTowns compat module ensures that: + +- Shop creation respects town ownership. +- Trading follows town permission settings. +- Town members and visitors are handled correctly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a HuskTowns claim. +- Whether the player is a town member, trusted player, or outsider. +- Whether the town's permission settings allow the action. + +If the action is not permitted by town rules, QuickShop blocks it. + +Outside of town claims, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Town Owner Control + +With this module enabled: + +- Town owners can create and manage shops inside their town. +- Town members follow town-based permission settings. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect town claim protection. + +This prevents unauthorized shop placement and trading inside protected towns. + +--- + +## Installation + +1. Install HuskTowns. +2. Install the QuickShop HuskTowns compat module. +3. Restart your server. + +The module activates automatically if HuskTowns is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside towns +whitelist-mode: false + +# Allow town owners to override shop permissions +allow-owner-override: true +``` + +If HuskTowns is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For town-based survival servers: + +- Restrict shop creation to town members. +- Allow trading only where town permissions permit. +- Prevent shop creation in wilderness if desired. +- Enable owner override for better administrative control. + +This helps maintain town-based economic balance. + +--- + +## Common Questions + +### Can players create shops in another town? + +Only if that town's permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You can allow or restrict shops outside towns. + +### What happens if HuskTowns is removed? + +QuickShop returns to normal behavior and stops checking town permissions. + +--- + +## Summary + +The HuskTowns compat module: + +- Enforces town-based land permissions +- Protects towns from unauthorized shop usage +- Integrates smoothly with HuskTowns +- Requires minimal setup + +It is recommended for any server running HuskTowns. \ No newline at end of file diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md new file mode 100644 index 0000000000..3fa2995eb0 --- /dev/null +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md @@ -0,0 +1,139 @@ +# IridiumSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and IridiumSkyblock. + +It ensures that shop creation and trading respect island boundaries and island permission settings defined by IridiumSkyblock. + +--- + +## What Does It Do? + +IridiumSkyblock allows players to create and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Visitors might trade inside protected islands. +- Island protection rules might not apply correctly to shops. + +The IridiumSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members and visitors are handled properly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside an IridiumSkyblock island. +- Whether the player is the island owner, member, or visitor. +- Whether island permissions allow shop interaction. + +If the action is not permitted, QuickShop blocks it. + +Outside of islands, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Island Owner Permissions + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow the island's permission configuration. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect island protection rules. + +This prevents unauthorized shop usage inside protected islands. + +--- + +## Installation + +1. Install IridiumSkyblock. +2. Install the QuickShop IridiumSkyblock compat module. +3. Restart your server. + +The module activates automatically if IridiumSkyblock is detected. + +No additional setup is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If IridiumSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most IridiumSkyblock servers: + +- Restrict shop creation to island owners. +- Allow island members to trade if trusted. +- Prevent shop creation in the void or wilderness. +- Enable owner override for better management. + +This helps maintain balanced island economies. + +--- + +## Common Questions + +### Can players create shops outside their island? + +Only if your configuration allows it. + +Most Skyblock servers restrict shops to island areas. + +### Do island ranks affect shop permissions? + +Yes, if your island permissions are configured to control interaction rights. + +QuickShop follows island rules. + +### What happens if IridiumSkyblock is removed? + +QuickShop returns to normal behavior and stops checking island permissions. + +--- + +## Summary + +The IridiumSkyblock compat module: + +- Protects island economies +- Enforces island-based permissions +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is recommended for any server running IridiumSkyblock. diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md new file mode 100644 index 0000000000..3b4726cb9d --- /dev/null +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md @@ -0,0 +1,151 @@ +# ItemMatcherPlus + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +The ItemMatcherPlus module improves how QuickShop matches custom and plugin-modified items. + +It allows QuickShop to properly recognize and stack items created by other plugins that normally would not match using standard Bukkit item comparisons. + +This module is especially useful for servers that use: + +- Custom items +- Modified metadata +- NBT-based systems +- Advanced crate rewards +- Custom brewing systems +- Custom fishing rewards + +--- + +## What Does It Do? + +By default, Minecraft item matching checks: + +- Material type +- Basic metadata + +However, many plugins modify items with: + +- Custom NBT data +- Hidden tags +- Custom lore formats +- Unique identifiers + +Without enhanced matching: + +- Items may not stack +- Shops may refuse valid items +- Transactions may fail +- Buying/selling may not behave correctly + +ItemMatcherPlus improves compatibility and matching accuracy. + +--- + +## Supported Plugins + +ItemMatcherPlus includes built-in support for: + +- AdvancedItems +- BreweryX +- CrazyCrates +- ExcellentCrates +- PyroFishing +- SilkSpawners + +If any of these plugins are installed, QuickShop will automatically use enhanced matching logic. + +No additional configuration is required. + +--- + +## How It Works + +When a player trades with a shop: + +1. QuickShop checks the item. +2. If ItemMatcherPlus is enabled, it performs advanced matching. +3. Plugin-specific metadata is validated. +4. The item is confirmed as a match (or rejected safely). + +This allows: + +- Proper stacking of custom items +- Correct shop transactions +- Accurate buy/sell detection +- Reduced false mismatches + +--- + +## Installation + +1. Download the ItemMatcherPlus module. +2. Place the JAR into your `plugins` folder. +3. Restart your server. + +If supported plugins are detected, compatibility activates automatically. + +--- + +## Configuration + +ItemMatcherPlus does not require configuration. + +It activates automatically when: + +- The module is installed +- A supported plugin is detected + +If a supported plugin is not installed, no extra logic runs. + +--- + +## Why You Should Use It + +You should install ItemMatcherPlus if your server uses: + +- Custom fishing plugins +- Custom brewing systems +- Crate plugins with modified items +- Custom spawners +- Any plugin that modifies NBT data + +Without it, shops may not properly recognize custom items. + +--- + +## Common Questions + +### Do I need this if I don't use custom item plugins? + +No. +If you only use vanilla items, this module is not necessary. + +### Does this affect performance? + +The module only activates enhanced matching when needed. + +Normal item matching remains fast and efficient. + +### Will it break existing shops? + +No. +It improves compatibility and matching accuracy without modifying existing shop data. + +--- + +## Summary + +ItemMatcherPlus: + +- Improves item matching accuracy +- Adds support for major custom item plugins +- Prevents stacking and trade issues +- Requires no configuration +- Activates automatically + +If you run a heavily customized economy server, this module is highly recommended. \ No newline at end of file diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md index ba87606698..d4ae7d129a 100644 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/lands.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/lands.md index 06296f5779..7671fcdfe0 100644 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/lands.md +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/lands.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/openinv.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/openinv.md index c51f628615..4807d57873 100644 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/openinv.md +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/openinv.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md new file mode 100644 index 0000000000..c2136320b0 --- /dev/null +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md @@ -0,0 +1,138 @@ +# SimpleClaimSystem + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and SimpleClaimSystem. + +It ensures that shop creation and trading respect land ownership and claim permissions defined by SimpleClaimSystem. + +--- + +## What Does It Do? + +SimpleClaimSystem allows players to claim land and protect it from unauthorized interaction. + +Without compatibility: + +- Players could create shops inside claims they do not own. +- Visitors might trade inside protected areas. +- Claim protection might not apply correctly to shops. + +The SimpleClaimSystem compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops within their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a SimpleClaimSystem claim. +- Whether the player has permission within that claim. +- Whether claim rules allow shop interaction. + +If the action is not permitted by the claim, QuickShop blocks it. + +If the location is outside any claim, default QuickShop behavior applies. + +--- + +## Claim Owner Control + +With this module enabled: + +- Claim owners can create and manage shops inside their claim. +- Trusted players follow claim-based permissions. +- Visitors are restricted unless explicitly allowed. +- Claim protection rules apply automatically to shop interactions. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install SimpleClaimSystem. +2. Install the QuickShop SimpleClaimSystem compat module. +3. Restart your server. + +The module activates automatically if SimpleClaimSystem is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If SimpleClaimSystem is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Enable owner override for easier management. + +This ensures players maintain control over their protected land. + +--- + +## Common Questions + +### Can players create shops in someone else's claim? + +Only if claim permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can allow shops outside claims or restrict them. + +### What happens if SimpleClaimSystem is removed? + +QuickShop will revert to default behavior and stop checking claim permissions. + +--- + +## Summary + +The SimpleClaimSystem compat module: + +- Enforces claim-based permissions +- Prevents unauthorized shop creation +- Protects land from unwanted trading +- Requires minimal setup + +It is recommended for servers running SimpleClaimSystem. \ No newline at end of file diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md index a84dbf057b..4dfa8ae97c 100644 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/towny.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/towny.md index 52ab4818f4..b26c19d335 100644 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/towny.md +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/towny.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -26,7 +26,7 @@ Town sub-command allow you switch a quickshop between regular shop and town shop For a nation shop, the shop owner will changed to nation fake player created by Towny, and use Nation's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from nation Towny account.\ +All purchases will deposit or withdraw money from nation Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Nation Shop. @@ -35,7 +35,7 @@ If Plot type restriction is enabled, only a specific Plot type can create a Nati For a town shop, the shop owner will changed to town fake player created by Towny, and use Town's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from town Towny account.\ +All purchases will deposit or withdraw money from town Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Town Shop. @@ -88,7 +88,7 @@ bank-mode: ## Permission Override -By adjust configuration, you're allow mayor or king automaticlly grant administrator permission on all shops in their management range. +By adjust configuration, you're allow mayor or king automatically grant administrator permission on all shops in their management range. ```yaml #Should allow Mayor grant the shop administrator permission on they town. @@ -168,7 +168,7 @@ This causes Towny and QuickShop Hikari to use accounts with the same name but di You can adjust the option in configuration to enable workaround. -NOTE: It will force turned on if detected EssentialsX installed on your server.\ +NOTE: It will force turned on if detected EssentialsX installed on your server. At present, we do not provide a method for disable it. ```yaml diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md new file mode 100644 index 0000000000..0189958495 --- /dev/null +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md @@ -0,0 +1,138 @@ +# UltimateClaims + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and UltimateClaims. + +It ensures that shop creation and trading respect land claim permissions managed by UltimateClaims. + +--- + +## What Does It Do? + +On servers using land-claim plugins, players protect areas of the world from unauthorized interaction. + +Without compatibility: + +- Players may create shops inside claims they do not own. +- Visitors might trade in areas where they should not. +- Claim protection rules might not apply correctly to shops. + +The UltimateClaims compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops inside their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a claim. +- Whether the player has permission in that claim. +- Whether claim rules allow shop interaction. + +If the action violates claim settings, QuickShop blocks it. + +Outside of claims, normal QuickShop behavior applies. + +--- + +## Claim Owner Permissions + +With this module enabled: + +- Claim owners can create and manage shops within their claim. +- Trusted players follow claim permission settings. +- Visitors are restricted based on claim configuration. +- Shop actions outside of claims behave normally. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install UltimateClaims. +2. Install the QuickShop UltimateClaims compat module. +3. Restart your server. + +If UltimateClaims is detected on startup, compatibility activates automatically. + +No additional linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Common options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If UltimateClaims is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Keep owner override enabled for better control. + +This ensures players maintain full control over their protected land. + +--- + +## Common Questions + +### Can players create shops inside someone else's claim? + +Only if the claim permissions allow it. + +Otherwise, QuickShop will block the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can choose to restrict shops to claimed land only. + +### What happens if UltimateClaims is removed? + +QuickShop returns to normal behavior without claim checks. + +--- + +## Summary + +The UltimateClaims compat module: + +- Protects claimed land from unauthorized shop usage +- Enforces claim-based permissions +- Integrates smoothly with land-claim servers +- Requires minimal setup + +It is recommended for any server running UltimateClaims. \ No newline at end of file diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md index 87a71a205c..6437754503 100644 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md @@ -2,8 +2,10 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. Find out more [here](../modules/shops/worldedit.md). + +Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. \ No newline at end of file diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/development/01-getting-start.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/development/01-getting-start.md index 92b773451e..0e78e52367 100644 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/development/01-getting-start.md +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/development/01-getting-start.md @@ -6,8 +6,8 @@ This series of articles will help you build extensions for QuickShop-Hikari or i ## License -QuickShop-Hikari is open source using the [GPLv3](https://www.gnu.org/licenses/quick-guide-gplv3.en.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari).\ -You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the GPLv3 agreement. +QuickShop-Hikari is open source using the [AGPLv3](https://www.gnu.org/licenses/agpl-3.0.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari). +You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the AGPLv3 agreement. ## 🚧Don't trust Javadoc too much @@ -48,7 +48,7 @@ QuickShop-Hikari divides operation sources into three types: - Server Main Thread - Async Thread (any other threads but not server main thread) -- Hybird +- Hybrid If you access the API through the wrong thread, QuickShop-Hikari will force a runtime error to be thrown. @@ -58,4 +58,4 @@ For APIs that may trigger network IO or long-time disk IO, you are required not You can see [Util.ensureThread()](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/3d1d271e1106ea1c83cc6068f8232ab7c7860918/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/util/Util.java#L351) and find out the requirements of the different APIs by looking up their use. APIs that do not use Util.ensureThread() are allowed to be called from any thread by default. -You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. +You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. \ No newline at end of file diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md index aa2404c594..7828d414ad 100644 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md @@ -10,7 +10,7 @@ ShopManager manager = api.getShopManager(); ## Getting a shop -Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates.\ +Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates. QuickShop-Hikari's store is only bound to one half of "Large Chest", so to get the store, you need to query both the cube itself and its associated cube. The good thing is that there is an API in the plugin that allows you to handle this situation very easily. @@ -71,7 +71,7 @@ manager.deleteShop(shop) // Permanently delete this store, both memory and datab ## Identify a store -Please note that store locations are technically variable and you should not use coordinates to identify a store.\ +Please note that store locations are technically variable and you should not use coordinates to identify a store. Also RuntimeRandomUniqueId should not be used to identify the store, as the name suggests, the value changes every time the server restarts, it should only be used to handle scenarios where the player interacts with the server. ```java diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md index 543f1851da..4f839ed652 100644 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md @@ -1,6 +1,6 @@ # 0x05 Per shop permission -QuickShop-Hikari has a per shop permission management system.\ +QuickShop-Hikari has a per shop permission management system. Therefore, for a normal permission node check is not enough, you need to attach an additional check. ## Check with shop diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/development/06-protocol-system.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/development/06-protocol-system.md index 5d37a15536..0380b789f9 100644 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/development/06-protocol-system.md +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/development/06-protocol-system.md @@ -15,30 +15,30 @@ This documentation will guide developers through the components, implementation - **Purpose**: Manages packet handling and initialization logic. - **Interface**: `PacketHandler` - **Key Methods**: - - `Map> factories()` - - Retrieves a map of supported `PacketFactory` instances keyed by game versions. - - `void initialize()` - - Initializes the packet handler. - - `Optional> factory(String version)` - - Retrieves a `PacketFactory` for a specific game version. + - `Map> factories()` + - Retrieves a map of supported `PacketFactory` instances keyed by game versions. + - `void initialize()` + - Initializes the packet handler. + - `Optional> factory(String version)` + - Retrieves a `PacketFactory` for a specific game version. ### 2. **PacketFactory** - **Purpose**: Creates and sends specific packet types. - **Interface**: `PacketFactory` - **Supported Packets**: - - **Spawn Packet**: - - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. - - Example Use: Representing shop items visually. - - **Metadata Packet**: - - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. - - Example Use: Updating item display name or properties. - - **Velocity Packet**: - - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. - - Example Use: Custom animations for virtual items. - - **Destroy Packet**: - - Removes the entity from the client view. Created using `createDestroyPacket()`. - - Example Use: Unloading or removing a virtual display item. + - **Spawn Packet**: + - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. + - Example Use: Representing shop items visually. + - **Metadata Packet**: + - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. + - Example Use: Updating item display name or properties. + - **Velocity Packet**: + - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. + - Example Use: Custom animations for virtual items. + - **Destroy Packet**: + - Removes the entity from the client view. Created using `createDestroyPacket()`. + - Example Use: Unloading or removing a virtual display item. Developers implementing custom `PacketFactory` should ensure these packets are correctly handled and optimized for performance. @@ -46,24 +46,24 @@ Developers implementing custom `PacketFactory` should ensure these packets are c - **Purpose**: Oversees the lifecycle of virtual display items and integrates with packet handlers. - **Key Features**: - - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). - - Manages virtual display items mapped to chunks. - - Provides thread-safe operations for adding and removing display items. + - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). + - Manages virtual display items mapped to chunks. + - Provides thread-safe operations for adding and removing display items. ### 4. **VirtualDisplayItem** - **Purpose**: Represents a virtual item displayed to players. - **Key Features**: - - Generates and caches packets for spawning, metadata, velocity, and destruction. - - Manages packet senders for each player. - - Handles spawn and removal operations dynamically. + - Generates and caches packets for spawning, metadata, velocity, and destruction. + - Manages packet senders for each player. + - Handles spawn and removal operations dynamically. ### 5. **ProtocolLibHandler and PacketEventsHandler** - **Purpose**: Provide implementations of `PacketHandler` using ProtocolLib and PacketEvents, respectively. - **Differences**: - - `ProtocolLibHandler` leverages ProtocolLib API. - - `PacketEventsHandler` uses the PacketEvents library. + - `ProtocolLibHandler` leverages ProtocolLib API. + - `PacketEventsHandler` uses the PacketEvents library. --- @@ -140,11 +140,11 @@ public class CustomPacketFactory implements PacketFactory { Packet factories are provided for specific game versions through two primary implementations: - **ProtocolLib**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` - **PacketEvents**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` --- diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md new file mode 100644 index 0000000000..aebc035f87 --- /dev/null +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md @@ -0,0 +1,297 @@ +# Interaction System (Developer Guide) + +The Interaction System allows developers to fully customize how players interact with shops. + +As of 6.2.0.11, the system has been redesigned to be: + +- Modular +- Extensible +- Thread-safe +- Fully customizable by third-party addons + +This guide will walk you through: + +1. What the Interaction System is +2. Getting the `InteractionManager` +3. Understanding `InteractionType` +4. Understanding `InteractionBehavior` +5. Registering custom interactions +6. Best practices + +--- + +# Overview + +The Interaction System is composed of three main components: + +| Component | Purpose | +| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| `InteractionType` | Describes **what kind of click happened** (standing, sneaking, left-click, sign, shopblock, etc.) | +| `InteractionBehavior` | Describes **what action should happen** when that type is triggered | +| `InteractionManager` | Central registry that manages interactions and behaviors | + +This separation allows developers to: + +- Add new click types +- Add new behaviors +- Override existing ones +- Extend QuickShop without modifying core code + +--- + +# Getting the InteractionManager + +To begin registering custom interactions, you must retrieve the `InteractionManager` instance. + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +If you are working directly with the plugin instance: + +```java +InteractionManager manager = QuickShop.getInstance().getInteractionManager(); +``` + +Once obtained, you can: + +- Register new interaction types +- Register new behaviors +- Override existing behaviors + +--- + +# Understanding InteractionType + +`InteractionType` represents **how** a player interacted with a shop. + +Examples include: + +- `STANDING_LEFT_CLICK_SIGN` +- `STANDING_RIGHT_CLICK_SHOPBLOCK` +- `SNEAKING_LEFT_CLICK_CONTAINER` +- etc. + +Each `InteractionType` defines: + +- Player stance (standing/sneaking) +- Click type (left/right) +- Target (sign/shopblock/container) + +InteractionTypes do NOT define behavior — they only define the trigger. + +--- + +# Understanding InteractionBehavior + +`InteractionBehavior` defines **what happens** when an interaction is triggered. + +Examples of built-in behaviors: + +- `TRADE_INTERACTION` +- `TRADE_UI` +- `CONTROL_PANEL` +- `CONTROL_PANEL_UI` +- `NONE` + +A behavior: + +- Executes logic +- May open GUIs +- May send chat panels +- May directly trade items +- Can cancel or modify flow + +This separation makes it easy to reuse behaviors across multiple interaction types. + +--- + +# Registering Custom Interactions + +There are two things you can register: + +- A custom `InteractionType` +- A custom `InteractionBehavior` + +--- + +## Creating a Custom InteractionBehavior + +Create a class implementing `InteractionBehavior`. + +Example: + +```java +public class MyTradeBehavior implements InteractionBehavior { + + @Override + public String getKey() { + return "MY_CUSTOM_TRADE"; + } + + @Override + public void execute(InteractionClick click) { + Player player = click.getPlayer(); + Shop shop = click.getShop(); + + player.sendMessage("You triggered my custom interaction!"); + + // Add your custom logic here + } +} +``` + +Then register it: + +```java +InteractionManager manager = api.getInteractionManager(); +manager.behavior(new MyTradeBehavior()); +``` + +Now your behavior is available for use. + +--- + +## Creating a Custom InteractionType + +You may also register custom interaction types if you want to introduce new trigger definitions. + +Example: + +```java +public class MyCustomInteraction implements InteractionType { + + @Override + public String getKey() { + return "STANDING_DOUBLE_CLICK_SIGN"; + } + + @Override + public boolean matches(InteractionClick click) { + // Define custom logic to detect this interaction + return click.isStanding() + && click.isSign() + && click.isDoubleClick(); + } +} +``` + +Register it: + +```java +manager.interaction(new MyCustomInteraction()); +``` + +--- + +# Binding Types to Behaviors + +The InteractionManager internally maps interaction types to behaviors based on configuration and registration order. + +Once your behavior is registered: + +- It can be referenced in `interaction.yml` +- Or attached programmatically + +Example interaction.yml usage: + +```yaml +STANDING_LEFT_CLICK_SIGN: MY_CUSTOM_TRADE +``` + +--- + +# The InteractionClick Object + +When your behavior executes, you receive an `InteractionClick` object. + +It provides: + +- `getPlayer()` +- `getShop()` +- `getLocation()` +- `isSneaking()` +- `isSign()` +- `isShopBlock()` +- etc. + +This gives full context for safe execution. + +--- + +# Advanced: Overriding Built-in Behavior + +If you register a behavior using the same key as an existing one, your behavior can override the default. + +⚠️ Be careful when doing this — you are replacing core functionality. + +--- + +# Best Practices + +### Always Use Unique Keys + +Avoid naming collisions: + +``` +MYPLUGIN_CUSTOM_BEHAVIOR +``` + +### Keep Behavior Lightweight + +Do not block the main thread with: + +- Heavy database calls +- File IO +- Network calls + +Use async tasks if needed. + +### Respect Permissions + +Always validate: + +```java +if (!player.hasPermission("myplugin.use")) { + return; +} +``` + +### Avoid Hard Overrides Unless Necessary + +Instead of replacing built-in behaviors, consider extending them. + +--- + +# Example: Full Minimal Implementation + +```java +public class ExampleAddon { + + public void register(QuickShopAPI api) { + + InteractionManager manager = api.getInteractionManager(); + + manager.behavior(new MyTradeBehavior()); + manager.interaction(new MyCustomInteraction()); + } +} +``` + +--- + +# Conclusion + +The Interaction System is designed to allow: + +- Full extensibility +- Clean separation of triggers and actions +- Easy integration for third-party developers + +By retrieving the `InteractionManager`: + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +You gain full control over how shops respond to player actions. \ No newline at end of file diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/development/08-tax-manager.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/development/08-tax-manager.md new file mode 100644 index 0000000000..72a56f9e88 --- /dev/null +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/development/08-tax-manager.md @@ -0,0 +1,266 @@ +# Tax System (Developer Guide) + +The QuickShop tax system allows server owners and developers to define how transaction taxes are calculated, distributed, and extended. + +As of 6.2.0.11, the tax system has been fully rewritten to provide: + +- A flexible TaxManager +- Pluggable TaxProvider support +- Progressive taxation +- Tax targeting (shop owner, interacting player, or both) +- Custom extension capability for third-party addons + +This guide explains how to work with the tax system programmatically. + +--- + +# Overview + +The tax system is composed of three core components: + +TaxManager +Responsible for coordinating tax calculation and execution. + +TaxProvider +Defines how tax values are calculated. + +TaxRates +Represents calculated tax results for a transaction. + +The system is designed to allow custom providers to be registered and used without modifying core logic. + +--- + +# Getting the TaxManager + +To work with the tax system, retrieve the TaxManager from the ShopManager. + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +Once obtained, you can: + +- Access current tax configuration +- Register custom tax providers +- Calculate tax values +- Hook into tax events + +--- + +# How the Tax System Works + +During a shop transaction: + +1. A base price is determined. +2. The TaxManager selects the active TaxProvider. +3. The TaxProvider calculates applicable tax. +4. A TaxRates object is produced. +5. The system applies the tax to: + + - Shop owner + - Interacting player + - Or both (depending on configuration) + +This architecture allows tax behavior to be modified without altering transaction logic. + +--- + +# TaxProvider + +A TaxProvider defines how tax values are calculated. + +You may create your own provider to implement: + +- Progressive tax brackets +- Flat percentage tax +- Conditional tax rules +- Region-based tax +- Rank-based tax +- Time-based tax + +Example minimal provider: + +```java +public class MyCustomTaxProvider implements TaxProvider { + + @Override + public TaxRates calculateTax(TaxContext context) { + + double basePrice = context.getPrice(); + + double taxAmount = basePrice * 0.05; // 5% flat tax + + return new TaxRates() + .ownerTax(taxAmount) + .buyerTax(0.0); + } +} +``` + +Then register it: + +```java +taxManager.provider(new MyCustomTaxProvider()); +``` + +Once registered, your provider will be used for tax calculations. + +--- + +# TaxRates + +TaxRates represents the result of a tax calculation. + +It typically contains: + +- Owner tax amount +- Buyer tax amount +- Total tax impact +- Metadata (if applicable) + +The transaction system will read from TaxRates and apply deductions accordingly. + +--- + +# Progressive Taxation + +The built-in system supports progressive tax structures. + +This allows server administrators to tax based on: + +- Player balance +- Shop owner balance +- Configured tax brackets + +Example configuration concept: + +- 0–10,000 balance → 1% tax +- 10,000–100,000 → 2% tax +- 100,000+ → 3% tax + +Developers can extend or override this logic inside a custom TaxProvider. + +--- + +# Targeting Tax + +The new tax system allows taxes to be applied to: + +- Shop owner +- Interacting player +- Both + +This is controlled via configuration, but custom providers can override distribution logic by adjusting TaxRates output. + +Example: + +```java +return new TaxRates() + .ownerTax(basePrice * 0.02) + .buyerTax(basePrice * 0.01); +``` + +--- + +# Registering a Custom TaxProvider + +To replace or extend tax logic: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); + +taxManager.provider(new MyCustomTaxProvider()); +``` + +You may register only one primary provider at a time. If multiple providers are needed, implement internal delegation within your custom provider. + +--- + +# Tax Events + +The tax system integrates with the event system. + +The modern event used is: + +ShopEnhancedTaxEvent + +This replaces legacy tax events and provides improved context, including: + +- Transaction builder reference +- TaxRates object +- Modification capability before final execution + +You can listen for the event and modify tax behavior dynamically: + +```java +@EventHandler +public void onTax(ShopEnhancedTaxEvent event) { + + TaxRates rates = event.getTaxRates(); + + // Example: Give VIP players reduced owner tax + if (event.getOwner().hasPermission("vip.tax.discount")) { + rates.ownerTax(rates.getOwnerTax() * 0.5); + } +} +``` + +--- + +# Best Practices + +Always keep tax calculations lightweight. + +Avoid: + +- Heavy database queries inside calculateTax +- Blocking network calls +- Long-running computations + +If complex logic is required, pre-cache required data outside the tax execution path. + +Ensure negative tax values are not returned unless intentional. + +Always validate final amounts before applying modifications. + +Respect configuration hierarchy unless intentionally overriding it. + +--- + +# Example Full Implementation + +```java +public class ExampleTaxAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + TaxManager taxManager = manager.taxManager(); + + taxManager.provider(new MyCustomTaxProvider()); + } +} +``` + +--- + +# Conclusion + +The new tax system is designed for: + +- Flexibility +- Extensibility +- Clean separation of concerns +- Future expansion + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +You gain full control over how QuickShop calculates and applies tax during transactions. \ No newline at end of file diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/development/09-layout-provider.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/development/09-layout-provider.md new file mode 100644 index 0000000000..55e3cd3e91 --- /dev/null +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/development/09-layout-provider.md @@ -0,0 +1,275 @@ +# Shop Layout Provider (Developer Guide) + +The Shop Layout Provider system allows developers to customize how shop signs are structured and rendered. + +As of 6.2.0.11, shop layouts are no longer hardcoded. Instead, they are controlled through the `IShopLayoutProvider` interface, which allows: + +- Custom sign line ordering +- Per-shop-type layouts (BUYING, SELLING, FROZEN, or custom types) +- Dynamic layout resolution +- Complete replacement of the default layout system + +This guide explains how to access, override, and implement a custom layout provider. + +--- + +# Overview + +The layout provider controls how shop sign lines are arranged. + +Instead of hardcoding: + +Line 1 → Header +Line 2 → Trading info +Line 3 → Item +Line 4 → Price + +The system now allows full customization through: + +- Config-based layout definitions +- Custom `IShopLayoutProvider` implementations +- Runtime overrides + +The default implementation is `SimpleShopLayoutProvider`. + +--- + +# Accessing the Layout Provider + +To retrieve the current layout provider: + +```java +ShopManager manager = api.getShopManager(); +IShopLayoutProvider provider = manager.shopLayoutProvider(); +``` + +To replace the layout provider with a custom one: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Once replaced, your implementation will control how shop layouts are generated. + +--- + +# Understanding IShopLayoutProvider + +`IShopLayoutProvider` defines how layout data is retrieved and resolved. + +It is responsible for: + +- Providing layout configuration per shop type +- Determining which layout to use +- Supplying formatted line keys +- Allowing future extensibility + +The default implementation reads layout definitions from configuration and applies them based on shop type. + +--- + +# Default Layout Example + +The default configuration-based layout looks like this: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +Each line maps to a layout component key. + +An empty string (`""`) leaves that line blank. + +The layout provider resolves these keys into actual sign content. + +--- + +# Creating a Custom Layout Provider + +To override the default behavior, implement `IShopLayoutProvider`. + +Example minimal implementation: + +```java +public class MyCustomLayoutProvider implements IShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + + ShopLayout layout = new ShopLayout(); + + layout.setLine(1, "Custom Header"); + layout.setLine(2, "Owner: " + shop.getOwnerName()); + layout.setLine(3, shop.getItem().getType().name()); + layout.setLine(4, "$" + shop.getPrice()); + + return layout; + } +} +``` + +Then register it: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Your layout will now control all shop sign formatting. + +--- + +# Per-Type Layout Control + +Because the system no longer depends on the legacy ShopType enum, layouts can support: + +- Built-in types (BUYING, SELLING, FROZEN) +- Custom shop types +- Addon-defined shop types + +Your provider can determine layout logic dynamically: + +```java +@Override +public ShopLayout provideLayout(Shop shop) { + + if (shop.getShopType().key().equals("FROZEN")) { + return frozenLayout(shop); + } + + return defaultLayout(shop); +} +``` + +This allows conditional formatting, localization adjustments, or special event styling. + +--- + +# Advanced Customization + +A custom layout provider can: + +- Pull data from external plugins +- Inject dynamic placeholders +- Modify layout per player +- Apply formatting logic +- Override color schemes +- Apply region-based formatting +- Implement animated sign systems + +Because the layout provider is resolved at runtime, you can compute layouts dynamically instead of reading static config. + +--- + +# Replacing vs Extending the Default Provider + +You have two options: + +Replace entirely: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Or extend the default implementation: + +```java +public class ExtendedLayoutProvider extends SimpleShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + ShopLayout base = super.provideLayout(shop); + + base.setLine(1, "[Extended] " + base.getLine(1)); + + return base; + } +} +``` + +Extending is safer if you only want to modify small portions. + +--- + +# Best Practices + +Keep layout generation lightweight. + +Avoid: + +- Heavy database queries +- Blocking IO +- Complex network calls + +Layout generation runs during shop updates and sign refresh events. + +Always handle null values safely. + +Ensure layout line count does not exceed sign limits. + +Avoid hardcoding shop type names unless necessary. + +If your layout supports custom shop types, validate their keys properly. + +--- + +# Example Full Registration + +```java +public class LayoutAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + + manager.shopLayoutProvider(new MyCustomLayoutProvider()); + } +} +``` + +--- + +# Conclusion + +The Shop Layout Provider system allows complete control over shop sign structure. + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +``` + +And setting: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +You can redefine how every shop is displayed on the server. + +This system was designed to support: + +- Extensibility +- Custom shop types +- Localization +- Dynamic formatting +- Future expansion \ No newline at end of file diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/faq/compare-reremake.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/faq/compare-reremake.md index aaa1a9e507..6b39f02520 100644 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/faq/compare-reremake.md +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/faq/compare-reremake.md @@ -64,7 +64,7 @@ If you are a Reremake user, you may be confused about the differences between Hi ## Which one should I use? Well, it depends on what your needs are.\ -If you have an old server (<1.20) instance, Reremake is your only choice.\ +If you have an old server ({'<'}1.20) instance, Reremake is your only choice.\ ~~If you are in China which has GFW interfere, you also should consider Reremake because it doesn't need to load libraries from Global Internet.~~ Solved in 6.0.0.0. If none of these applies, give Hikari a try! diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md index 551f579e7c..172be3a69b 100644 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md @@ -1,8 +1,8 @@ # Where Addons/Compacts is -Addons and Compatilibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. +Addons and Compatibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. -- Open Modrinth versions page, locate the version your're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) +- Open Modrinth versions page, locate the version you're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) - Frantically slide your mouse wheel down until the lowest end of the page. - You get it! diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/internal/database-schema.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/internal/database-schema.md index fea685e4fc..45e04adb56 100644 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/internal/database-schema.md +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/internal/database-schema.md @@ -4,17 +4,17 @@ This chapter will explain the implementation details of QuickShop Hikari's datab ## Tables -This section explains the database tables created by QuickShop-Hikari.\ -Unless otherwise specified, the initial `qs_` in table name is the table prefix.\ +This section explains the database tables created by QuickShop-Hikari. +Unless otherwise specified, the initial `qs_` in table name is the table prefix. For the latest code definition for each table, see: [DataTables.java](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/hikari/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/database/DataTables.java) ### `data` -This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information.\ -No matter what, a data record should not be modified after it is created, until it got deleted.\ +This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information. +No matter what, a data record should not be modified after it is created, until it got deleted. Any new changes to the shop should create a new copy, apply the changes to the copy, and insert it as a new record. -Basiclly, Copy-on-write. +Basically, Copy-on-write. A data record only be deleted from the database when no any table references their `data_id`. @@ -29,7 +29,7 @@ A data record only be deleted from the database when no any table references the | unlimited | BIT NOT NULL | 0 | Indicates whether this store is an unlimited store, 0=Limited, 1=Unlimited | | hologram | BIT NOT NULL | 0 | Indicates the suspension status of this store's display item, 0=Follow global settings, 1=Disabled | | tax_account | VARCHAR(36) | NULL | The uuid for tax account, If it is not NULL, tax will be paid to the specified account | -| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serilized to JSON string | +| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serialized to JSON string | | extra | LONGTEXT | Empty Yaml | Used to store experimental settings of QuickShop Hikari or persistent data of other plugins | | inv_wrapper | VARCHAR(255) NOT NULL | N/A | Unique identifier for InventoryWrapper for this shop data entry | | inv_symbol_link | TEXT NOT NULL | N/A | Unique Inventory symbol used to pass to InventoryWrapper, for locating inventory | @@ -38,7 +38,7 @@ A data record only be deleted from the database when no any table references the ### `shops` -This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes.\ +This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes. Multiple `shop_id` can correspond to the same `data_id`. | Column Name | DataType | Default | Description | diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/cmd-alias.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/cmd-alias.md index 53f1577685..e6ed381c0d 100644 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/cmd-alias.md +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/cmd-alias.md @@ -23,7 +23,7 @@ custom-commands: - cshop ``` -Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect.\ +Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect. The effect should be like this: ![command-alias](./img/command-alias.png) diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/datasource.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/datasource.md index 6fc1bd8931..3fd3a8bdee 100644 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/datasource.md +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/datasource.md @@ -48,7 +48,7 @@ Execute the `/quickshop export` command in console, quickshop will export a zip ![exported data](img/database-export.png) -Stop your database, switch the datasource, and start the server.\ +Stop your database, switch the datasource, and start the server. You may noticed all shops are gone, because new datasources had no data inside, we will restore them from export. Rename that exported ZIP file to `recovery.zip`, execute `/quickshop recovery` and restart your server, all shops should back. diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/itemmatcher.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/itemmatcher.md index 56be243019..922907be27 100644 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/itemmatcher.md +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/itemmatcher.md @@ -4,7 +4,7 @@ ItemMatcher is a utility used by QuickShop-Hikari to compare the items, it is th :::caution -If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse.\ +If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse. **TL;DR: Keep default unless you know what you're doing.** ::: @@ -26,10 +26,10 @@ matcher: work-type: 1 ``` -By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility.\ +By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility. But still, you can toggle to QuickShop Item Matcher if you need to customize the comparing or running QuickShop on the server jar which have bug affect the Bukkit comparing system. -## Customize the metadata compareing +## Customize the metadata comparing Customize only works under QuickShop Item Matcher. diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md index fc2af69d2b..d04e8f2783 100644 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md @@ -4,7 +4,7 @@ ItemStack Loader is a workaround for loading the Bukkit ItemStack. :::caution -Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossble. +Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossible. ::: diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/localization.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/localization.md index e9121e1a36..d47589ab9a 100644 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/localization.md +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/localization.md @@ -10,7 +10,7 @@ To help translate QuickShop-Hikari, please visit our [Crowdin Homepage](https:// ## Crowdin OTA -QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will overrided when you reload QuickShop-Hikari or restart your server. +QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will override when you reload QuickShop-Hikari or restart your server. Your installation will keep translations up-to-date without any touch. @@ -110,6 +110,16 @@ To disable the CrowdinOTA, please add it in the startup flag: -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager.enableCrowdinOTA=false ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +use-crowdin-ota: false +``` + ### Self-Hosted OTA Server If you self-hosted our translation server by using [CrowdinCopyDeploy](https://github.com/Ghost-chu/CrowdinCopyDeploy) tool, you're able to change the OTA server to yourself server. @@ -118,4 +128,12 @@ If you self-hosted our translation server by using [CrowdinCopyDeploy](https://g -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager= ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml +Use + +```yaml +crowdin-host: +``` \ No newline at end of file diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/shops/benefit.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/shops/benefit.md index 4d7a9c8f42..c59d92e6d1 100644 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/shops/benefit.md +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/shops/benefit.md @@ -37,3 +37,13 @@ By default, for security, QuickShop-Hikari disallow add offline players into sho ```bash -Dcom.ghostchu.quickshop.command.subcommand.SubCommand_Benefit.allowOffline=true ``` + +### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +shop.allow-offline-benefit: true +``` \ No newline at end of file diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/shops/control-panel b/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/shops/control-panel new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/shops/control-panel @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/shops/history.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/shops/history.md index fa891adeab..195b64a042 100644 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/shops/history.md +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/shops/history.md @@ -24,7 +24,7 @@ The History GUI displays the details of each recorded transaction and other usef ### Transaction details -When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed.\ +When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed. If you are checking the history of more than one store, the player head will be replaced with an item from the corresponding store. ![history-gui](./img/history-gui.png) diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md new file mode 100644 index 0000000000..c5ed3b3fe4 --- /dev/null +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md @@ -0,0 +1,90 @@ +# Shop Types + +QuickShop supports multiple shop types, allowing shops to behave differently depending on their mode. + +The built-in shop types are: + +- Selling +- Buying +- Frozen + +Each type changes how the shop interacts with players. + +--- + +## Selling Shop + +A Selling shop allows players to: + +- Buy items from the shop owner +- Pay money to receive items + +This is the most common shop type. + +--- + +## Buying Shop + +A Buying shop allows players to: + +- Sell items to the shop owner +- Receive money in exchange + +This is commonly used for: + +- Resource collection +- Server buy-back shops +- Automated material sinks + +--- + +## Frozen Shop + +A Frozen shop temporarily disables trading. + +While frozen: + +- No buying is allowed +- No selling is allowed +- The shop remains intact +- Staff or admins can manage it + +This is useful for: + +- Temporary suspensions +- Investigation +- Event locking +- Maintenance + +--- + +## Switching Shop Types + +Shop types can be changed through: + +- Control panel +- GUI control panel +- Admin commands + +Frozen mode is also available via: + +/qs freeze + +--- + +## Custom Shop Types + +As of 6.2.x, the system supports extensible shop types internally. + +While server owners use the built-in types, the system now allows future expansion through addons. + +--- + +## Summary + +Shop types allow you to: + +- Control how money flows +- Enable buy-back mechanics +- Temporarily disable shops +- Build advanced economic systems \ No newline at end of file diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md new file mode 100644 index 0000000000..18e0a47407 --- /dev/null +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md @@ -0,0 +1,217 @@ +# Sign Layout + +QuickShop allows you to fully customize how shop signs are structured. + +You can change: + +- What appears on each line +- The order of information +- Layout per shop type +- Whether certain lines are blank + +This gives you complete control over how shops look on your server. + +--- + +## How Sign Layout Works + +Shop signs have four lines. + +Instead of being hardcoded, QuickShop uses a configurable layout system. + +Each shop type can have its own layout: + +- SELLING +- BUYING +- FROZEN + +You define what each line displays using layout keys. + +--- + +## Configuration Location + +Sign layout is configured in `config.yml` under: + +```yaml +layout: +``` + +Example default configuration: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## Available Layout Keys + +Each line value refers to a built-in layout component. + +Common layout keys include: + +- `header` – The shop header line +- `trading` – Buy/Sell direction information +- `item` – Item name +- `price` – Shop price + +These keys are automatically formatted using your language file and formatting settings. + +--- + +## Leaving a Line Blank + +To leave a line empty, use: + +```yaml +line2: "" +``` + +This is useful if you want: + +- Minimalist signs +- Cleaner layouts +- Custom spacing +- Decorative formatting + +--- + +## Customizing Per Shop Type + +Each shop type can have a different layout. + +For example: + +```yaml +layout: + + SELLING: + line1: "header" + line2: "item" + line3: "price" + line4: "" + + BUYING: + line1: "header" + line2: "price" + line3: "item" + line4: "" + + FROZEN: + line1: "header" + line2: "" + line3: "item" + line4: "Frozen" +``` + +This allows you to visually differentiate: + +- Selling shops +- Buying shops +- Frozen shops + +--- + +## Practical Examples + +### Minimal Style + +```yaml +layout: + SELLING: + line1: "item" + line2: "price" + line3: "" + line4: "" +``` + +### Compact Economy Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "price" + line3: "item" + line4: "" +``` + +### Large Clear Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## How Updates Affect Layout + +When you change the layout: + +- Existing shop signs will update automatically when refreshed. +- New shops will use the updated format immediately. + +If needed, you can reload QuickShop to apply changes. + +--- + +## Best Practices + +- Keep important information visible (price and item). +- Avoid overly complex formatting. +- Test layout changes before deploying on large servers. +- Use different layouts for BUYING and SELLING to reduce confusion. + +--- + +## Common Questions + +### Can I add more than four lines? + +No. +Minecraft signs are limited to four lines. + +### Can I add colors? + +Colors are controlled by your language file and formatting settings. + +### Can I change layout without restarting? + +Yes, but reloading or refreshing shops is recommended to ensure full update. + +--- + +## Summary + +The Sign Layout system allows you to: + +- Fully customize shop sign appearance +- Create per-type layouts +- Simplify or expand shop information +- Improve clarity for players + +All layout customization is handled inside `config.yml`. diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md index abcc288db7..2a0d52d788 100644 --- a/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md @@ -8,19 +8,6 @@ This feature added in 6.0.0.0. By default, QuickShop-Hikari uses the default brand material from the configuration file, but you can modify it to other brands for your store with the command. -## Configuration - -```yaml - #The wall sign material. - #ACACIA_WALL_SIGN - #BIRCH_WALL_SIGN - #DARK_OAK_WALL_SIGN - #JUNGLE_WALL_SIGN - #OAK_WALL_SIGN - #SPRUCE_WALL_SIGN - sign-material: OAK_WALL_SIGN -``` - ## Change the material Use command `/quickshop sign ` to change your shop sign material. diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md new file mode 100644 index 0000000000..980bad10f2 --- /dev/null +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md @@ -0,0 +1,130 @@ +# Shop Sign Waxing + +QuickShop can automatically wax shop signs to prevent players from editing them manually. + +Waxing protects the integrity of your shop signs and helps prevent tampering, spoofing, and accidental modification. + +As of modern Minecraft versions, waxed signs cannot be edited unless they are unwaxed first. + +--- + +## What Is Sign Waxing? + +In Minecraft, waxing a sign locks it so that: + +- Players cannot edit the text +- Players cannot modify lines +- Accidental changes are prevented +- Malicious edits are blocked + +When enabled in QuickShop, shop signs are automatically waxed when created. + +--- + +## Why Use It? + +Sign waxing protects against: + +- Players editing price lines +- Changing item names on signs +- Spoofing shop information +- Accidental formatting issues +- Sign hijacking attempts + +On public servers, this feature is strongly recommended. + +--- + +## How It Works + +When a shop is created: + +1. QuickShop generates the shop sign. +2. The sign text is written. +3. The sign is automatically waxed (if enabled). + +If a shop is updated: + +- The sign will be safely updated by QuickShop. +- The wax state is maintained. + +Players cannot manually edit shop signs while waxing is enabled. + +--- + +## Configuration + +To enable or disable sign waxing, edit `config.yml`: + +```yaml +shop: + sign-wax: true +``` + +### true + +- Shop signs are automatically waxed. +- Players cannot edit the sign manually. + +### false + +- Shop signs behave like normal Minecraft signs. +- Players may edit them if permitted by the game. + +--- + +## Recommended Setting + +For most servers: + +```yaml +shop: + sign-wax: true +``` + +This ensures shop data stays accurate and secure. + +--- + +## Common Questions + +### Can admins still modify shop signs? + +QuickShop controls shop sign formatting. +Manual edits are not recommended. + +Admins should use: + +- Control panel +- Shop commands +- Direct configuration changes + +### Does waxing affect shop functionality? + +No. +Waxing only prevents manual text edits. +The shop continues to function normally. + +### Can players un-wax shop signs? + +No. +QuickShop manages the sign state automatically. + +--- + +## Best Practices + +- Keep sign-wax enabled on survival servers. +- Combine sign-wax with proper permissions. +- Avoid manually editing shop signs through other plugins. + +--- + +## Summary + +Sign Waxing: + +- Prevents tampering +- Requires no additional setup + +Enable it once and QuickShop handles the rest. \ No newline at end of file diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/shops/taxes.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/shops/taxes.md new file mode 100644 index 0000000000..1a273fd978 --- /dev/null +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/shops/taxes.md @@ -0,0 +1,92 @@ +# Taxation System + +QuickShop includes a taxation system designed to give server owners more flexibility and control over shop-based income. + +This system was revamped as of 6.2.0.11+ + +The new system allows you to: + +- Apply tax to shop owners +- Apply tax to buyers +- Apply tax to both +- Use progressive tax brackets +- Customize tax behavior in configuration + +This system replaces the legacy tax configuration. + +--- + +## How It Works + +During a transaction: + +1. The shop price is calculated. +2. Tax is calculated based on your configuration. +3. Tax is deducted from the configured target(s). +4. Remaining funds are distributed normally. + +You can configure: + +- Flat percentage tax +- Progressive tax based on player balance +- Tax accounts +- Distribution rules + +--- + +## Progressive Tax + +The new system allows you to tax based on balance brackets. + +Example concept: + +- 0 – 10,000 balance → 1% tax +- 10,000 – 100,000 → 2% tax +- 100,000+ → 3% tax + +This helps prevent extremely wealthy players from dominating the economy. + +--- + +## Who Pays the Tax? + +You can configure whether tax applies to: + +- The shop owner +- The buyer +- Both + +This gives you flexibility depending on your economy design. + +--- + +## Configuration + +All tax-related settings are located under the `shop-tax` section in `config.yml`. + +After updating to 6.2.0.11+, review your tax configuration carefully, as the old tax system has been replaced. + +--- + +## Why Use Tax? + +The taxation system can help: + +- Remove currency from circulation +- Fund server banks or towns +- Create sink mechanics +- Balance inflation +- Reward active players + +--- + +## Summary + +The new taxation system is: + +- Flexible +- Configurable +- Balance-aware +- Designed for modern economy servers + +Make sure to review your configuration after upgrading. \ No newline at end of file diff --git a/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md b/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md new file mode 100644 index 0000000000..247c24712d --- /dev/null +++ b/i18n/de-DE/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md @@ -0,0 +1,161 @@ +# WorldEdit & FAWE Support + +QuickShop includes built-in protection and integration for WorldEdit and FastAsyncWorldEdit (FAWE). + +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. + +You do not need to download or install any additional compatibility plugins. + +--- + +## What This Does + +WorldEdit and FAWE allow administrators and builders to: + +- Copy and paste regions +- Replace large areas of blocks +- Mass-delete regions +- Roll back areas +- Regenerate terrain + +Without protection, these operations could: + +- Create ghost shops +- Leave orphaned shop data in the database +- Duplicate shops unintentionally +- Delete containers without cleaning up shop data +- Cause inconsistencies between world and database + +QuickShop now automatically detects and safely processes WorldEdit and FAWE operations. + +--- + +## Built-In Behavior + +When WorldEdit or FAWE modifies blocks: + +- Shops removed via WorldEdit are properly deleted from the database. +- Shop data stays synchronized with world changes. +- Ghost shops are prevented. +- Mass block replacements will not leave broken shop entries behind. + +This applies to: + +- //set +- //replace +- //cut +- //paste +- //regen +- Region deletion +- Mass container removal + +No configuration is required. + +--- + +## FAWE Support + +FastAsyncWorldEdit (FAWE) is fully supported. + +Because FAWE processes edits asynchronously, QuickShop handles: + +- Region-thread safe processing +- Async block updates +- Safe shop deletion during batch edits + +You do not need to enable anything manually. + +--- + +## Removing Shops with WorldEdit + +If you delete containers (chests, barrels, etc.) using WorldEdit: + +QuickShop will automatically: + +- Detect the block removal +- Unregister the shop +- Clean the database entry +- Prevent ghost shops + +You do not need to run `/qs cleanghost` after WorldEdit usage in normal circumstances. + +--- + +## Copying and Pasting Shops + +If you copy and paste regions that contain shops: + +- Shop data will not duplicate incorrectly. +- Shop IDs remain consistent. +- Invalid pasted shops will not auto-register unless properly created. + +This prevents accidental duplication exploits. + +--- + +## Performance + +WorldEdit and FAWE operations can modify thousands of blocks at once. + +QuickShop processes these safely and efficiently: + +- Batch-aware cleanup +- Thread-safe region access (especially on Folia) +- Minimal performance impact during mass edits + +--- + +## Configuration + +There are no specific WorldEdit configuration options in QuickShop. + +Support is automatic and always enabled if WorldEdit or FAWE is detected. + +If WorldEdit is not installed, no extra code is executed. + +--- + +## Common Questions + +### Do I need the old WorldEdit compatibility jar? + +No. + +As of 6.2.0.11, WorldEdit support is built-in and the separate compatibility module has been removed. + +### Does this work with FAWE? + +Yes. FAWE is fully supported. + +### Will shops break if I use //set air? + +No. Shops will be safely removed and cleaned up. + +### Do I need to restart after installing WorldEdit? + +No. QuickShop detects WorldEdit automatically on startup. + +--- + +## Best Practices + +Even though QuickShop safely handles WorldEdit operations, it is recommended to: + +- Avoid copying shops intentionally unless required +- Use backups before large region edits +- Test large FAWE operations on staging servers when possible + +--- + +## Summary + +QuickShop’s built-in WorldEdit and FAWE integration ensures: + +- Safe mass edits +- No ghost shops +- Automatic database cleanup +- Thread-safe processing +- No extra modules required + +WorldEdit support is now a core feature of QuickShop. \ No newline at end of file diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/addon/limited.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/addon/limited.md index 70af27e240..fae55a8c95 100644 --- a/i18n/el-GR/docusaurus-plugin-content-docs/current/addon/limited.md +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/addon/limited.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -41,8 +35,8 @@ Limit players to purchase up to 16 items per month. /quickshop limit period MONTH ``` -The system is based on the QuickShop-Hikari calendar system.\ -The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year.\ +The system is based on the QuickShop-Hikari calendar system. +The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year. Same for days, months and hours. Available time units: diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/addon/list.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/addon/list.md index 93d182f083..f20b91fd7b 100644 --- a/i18n/el-GR/docusaurus-plugin-content-docs/current/addon/list.md +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/addon/list.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/addon/plan.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/addon/plan.md index 52a6e79cb4..c10ef4df42 100644 --- a/i18n/el-GR/docusaurus-plugin-content-docs/current/addon/plan.md +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/addon/plan.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -18,7 +18,7 @@ Recorded data can be displayed from Hikari v2.0.0.0 onwards, but only after vers - All shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 1000 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `5` in server scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `5` in server scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Player Scope @@ -27,7 +27,7 @@ And still is Plan limitations, the list sorting is disturbed, so the display ord - All owned shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 50 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `4` in player scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `4` in player scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Showcase diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/addon/reforges.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/addon/reforges.md index 2a14509eb7..25fff1752a 100644 --- a/i18n/el-GR/docusaurus-plugin-content-docs/current/addon/reforges.md +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/addon/reforges.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.0.0.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md index 304d39bc05..6f9f51d250 100644 --- a/i18n/el-GR/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.1.1.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -44,7 +38,7 @@ _This is not necessary if you are using an H2 database._ ### Prepare for convert -To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console.\ +To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console. If a player is in the server, the conversion cannot be started. Once the conversion has begun, the server will be locked during the conversion process and no players will be able to join the server during the conversion. diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/addon/shopitemonly.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/addon/shopitemonly.md index c45062f8c2..1ccfe977b3 100644 --- a/i18n/el-GR/docusaurus-plugin-content-docs/current/addon/shopitemonly.md +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/addon/shopitemonly.md @@ -2,17 +2,11 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT - -::: - -This addon prevents players from putting non-store items into store containers.\ +This addon prevents players from putting non-store items into store containers. Does not apply to stores that use the item inventory redirection API (aka. InventoryWrapper API). This Addon will check for container (or transferring) items on events such as the player closing the container or hopper access. diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md new file mode 100644 index 0000000000..9c8b4f7407 --- /dev/null +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md @@ -0,0 +1,55 @@ +# 6.2.0.10 + +## Major Changes + +- Added support for 1.21.6 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.7 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.8 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Some internal updates for packetevents(2.9.0 is now required.) +- Updated Lands support + +## Addon Changes + +- Added MatcherPlus Addon + - Allows support for BreweryX and AdvancedItems stacks in shops with improved matching abilities +- Added FabledSkyblock Compat +- Added Dominion Compat +- Added HuskTowns Compat +- Added IridiumSkyblock Compat +- Added member-create for member creation in ARM compat +- Added admin-override and quickshop.arm.admin permission for admin overrides in ARM + +## Minor Changes + +- Added configurations for the coordinates of the display item. +- Added /qs toggledisplayall on/off server/owned + - Players need to have permission node quickshop.toggledisplayall.admin to toggle all on the server. +- Added ability to use abbreviations in /qs price and /qs create commands such as 2.5k for 2500 +- Added ability to set default display status using shop.default-display in config.yml + +## Fixes + +- Fixed issue with display item being sent to the moon on 1.21.5 +- Fixed issue where TRADE_UI interactions interfered with quick create. +- Fixed issue with displays on protocollib falling through the chest +- Fixed issue with signs on .9 and previous .10 snapshots on early versions +- Implemented some performance improvements for paper servers +- Fixed all outstanding issues with Folia usage.(thanks to RootB33R/SleazLee for contributions) + +## Possible 6.2.0.11 Features + +Here's an outline for some features that may arrive in 6.2.0.11: + +- Additional compats/addons that have been piling up. + - see: https://github.com/QuickShop-Community/QuickShop-Hikari/issues/1756 +- gradle?(interested to see compilation time uplifts) +- Update documentation +- Update configuration comments +- Update configuration system? + - auto updating? + - Allows removal of the update code +- Remove waste spigot modules? + - Any versions of 1.20 that can be discarded due to low use? +- Bug fixing, of course +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... \ No newline at end of file diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md new file mode 100644 index 0000000000..b41c88662a --- /dev/null +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md @@ -0,0 +1,173 @@ +## Outline + +- Update documentation +- Update configuration comments +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... + +# 6.2.0.11 + +## Major Changes + +- Removed Spigot Platform Modules, and stopped loading QS if Spigot is detected. This will mean that unless the protocol changes that we use for display items, QS won't need updated for each version. +- Revamped Economy Code Completely + - New classes for all economy-related systems + - Any economy-related or benefits-related events are incompatible with previous versions. +- Added sign layout customizations per-type allowing you to change how lines are configured, an empty string('') will leave an empty line for that line of the sign. + +``` + #The layout of signs for shops. + layout: + + #The layout of BUYING shops. + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of FROZEN shops. + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of SELLING shops. + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +- Add wildcard support for item blacklist patterns(thanks to bennycallanan) + - Added support for wildcard patterns in the item blacklist configuration, allowing users to block entire categories of items with simple patterns. + + - Features + - Wildcard patterns like \*_AXE and \*_SPAWN_EGG now work in blacklist configuration + - Supports \* for any characters and ? for single character matching + - Case-insensitive pattern matching +- Overhauled GUI system(thanks to Yusakidev) + - Implemented gui.yml configuration file for customizing the GUI. + - Implemented better filtering for qs browse + - Implement GUI system to be more stable, and less error prone. + - Added gui.yml for fully configurable GUI layouts and text + - Browse menu: search, sort (price/name/stock), and filter (all/buying/selling/in-stock) + - Staff menu: search functionality for player/staff selection + - Grouped item pages for better shop browsing + - Refactored all menu pages to use configurable display/lore +- Added worldedit compat to QS internally as it's widely used. +- Revamped the taxation system to be more flexible and easier to configure. + - introduced a new progressive tax system that allows you to tax based on the balance of players.(suggested by YuanYuanOwO) + - introduced the ability to tax the player interacting with the shop, the owner, or both + - all tax-related configurations have been moved under the shop-tax section of the config. this may require reconfiguration of your tax settings. + - added a new ShopEnhancedTaxEvent, deprecated the old ShopTaxEvent. + - Added a new TaxManager, and TaxProvider interfaces, this allows for custom tax providers to be added by addons/third-party developers. + +## Addons/Compats Changes + +- Added UltimateClaims compat +- Added SimpleClaimSystem compat +- Added Quests by Pika addon +- Added BetonQuest addon +- Added Pl3xMap addon +- MatcherPlus Compat Improvements + - Added support for CrazyCrates + - Added support for ExcellentCrates + - Added support for SilkSpawners. +- WorldGuard Compat Improvements(Thanks to golovin12) + - Added clear permission handling: + - Region owners and members automatically have permission to create and trade in their own regions. + - Other players must have the appropriate WorldGuard flags enabled (quickshophikari-create, quickshophikari-trade) to interact with shops. + - If a shop is located outside any region, default QuickShop behavior applies (no extra restrictions) +- Added colored markers based on shop state for bluemap(thanks to YusakiDev) +- Updated dynmap/towny addons to use the new ShopTypeEnhancedEvent instead of ShopTypeEvent. +- Removed worldedit compat, it's now included in the main plugin. +- Added support for global flags to the worldguard compat. + +## Internals/Developer APIs + +- Removed several deprecated methods and classes. +- Revamped the interaction manager. It is now more flexible and allows external additions + - This involves two classes InteractionBehavior and InteractionType. + - InteractionType details the type of interaction such as: STANDING_LEFT_CLICK_SIGN, STANDING_LEFT_CLICK_SHOP + - InteractionBehavior outlines a behavior for an InteractionType such as CONTROL_PANEL and TRADE_UI +- Added UserLimitCalculationEvent, which allows for custom limits to be applied to users. + - This is useful for limiting the number of shops a user can have, or adding on to the existing limits provided by the ranks system without needing to implement a new RankLimiter. +- Added a new ShopLayoutProvider interface, and default implementation. + - This allows for custom layouts to be used for shops, allowing for more customization. + - This also allows for developers to override the default layout provider and create their own implementation. +- How to make your own? + - Implement the classes you would like to then register with the InteractionManager: + - ```java + InteractionManager manager = QuickShop.getInstance().getInteractionManager(); + + manager.interaction(new MyTradeInteraction()); + manager.behavior(new MyTradeBehavior()); + ``` +- Replaced some Apache Commons calls that could be easily replaced with built-in java methods, reduces some calls by ~ 1100ms/method call +- Deprecated the ShopType enum, and the ShopTypeEvent. These are replaced with the new IShopType interface and implementing classes. + - The new event is ShopTypeEnhancedEvent. + - This allows for third-party addons to add their own shop types, and simplifies code checks for translations. +- Updated config system to use Boosted-yaml + - this allows for auto-updating of config files without complex update scripts + - this also allows for the config system to not be minecraft-dependent. +- Replaced logical PaperLib calls with native PaperAPI calls. + +## Minor Changes + +- Bump Java version up to 21 +- Added shop.display-allow-enchants to enable/disable enchantments for display items on shops. +- Added workaround for packetevents not supporting custom enchants on itemstacks for virtual display items. +- Using locale translations for shop-type in mode toggle icon(thanks to ExyiN) +- Bumped Residence version for the compat(thanks to YuanYuanOwO) +- add world whitelist support(thanks to wling-art) +- added /qs database save command, which saves all currently dirty-marked shops to the database. +- Split up interactions _SHOPBLOCK into _SHOPBLOCK and _CONTAINER. + - _SHOPBLOCK relates to shops, where _CONTAINER relates to shop-valid containers that are not currently shops. +- Added inventory as an option for command panel, this is useful for adding a secondary option for players to open a shop's inventory. +- Moved crowdin arguments from system properties to config.yml + - crowdin-host + - use-crowdin-ota + +## Fixes + +- Fixes issue with item price restrictions(thanks to maxcom1) +- Fixes issue with 1.20.x protocol lib displays(thanks to YuanYuanOwO) +- Fixes issue when no item is in hand for itemdebug(thanks to YuanYuanOwO) +- Fixes issue with dominion addon(thanks to YuanYuanOwO) +- Add a simple check to avoid this. If it is not own shop, reject limit request directly.(Thanks to YuanYuanOwO) +- Fix NPE by not setting tax for price in TransactionBuilder(thanks to maxcom1) +- Fixes /quickshop suggestprice to differentiate between buy/sell shops. (Thanks to MidSpike) +- PacketEvents ClassNotFoundException with ProtocolLib(thanks to wling-art) +- Reallocate block state access to region thread for shop creation(thanks to r00tbeerman) +- resolve SLF4J StaticLoggerBinder loading error(thanks to wling-art) +- sign hijacking issue by validating sign facing direction(thanks to wling-art) +- Performance improvements for QuickShop disabling to prevent potential freezes. +- Fixed issue with 1.20.4 packetevents virtual displays not staying put. +- Fixes critical issue in GriefPrevention compatibility plugin. +- Fixes issue with shop owner not getting money when benefits active. +- Fixes for lands addon on folia, Use regionThread for Folia compatibility(thanks to YusakiDev) +- Fixes for TRADE_DIRECT on stacking shops +- Fixes issue for protocollib 5.4.0 with undocumented packet changes. +- Fixes issue where item stacks could be used on creation above the max stack size. +- Fixes issue with BukkitAudiences-related crashes on 1.21.11. +- Fix issue with shop deletion when getting too impatient. +- Fix the permission check issue when a shop owned by a non-owner is transferred to someone else. (thanks to YuanYuanOwO) +- Fix ui with supertool (thanks to YuanYuanOwO) +- Fix issue with logs generating outside debug mode. +- Fix issue with /qs find. +- Fix configuration loading timing. +- Fix configuration loading/creation warning message language. +- Fix command description language key mismatch(thanks to wling-art) +- Fix qs clean command on folia(thanks to wling-art) +- Fix per-player-shop-sign on folia(thanks to wling-art) +- Fix potential recursive deadlock in virtual display packet sending(thanks to wling-art) +- Fix configuration loading/creation warning message language. +- Fix issue with /qs browse and ShopItemOnly addon not behaving properly together on folia. +- Fix issue with PLAN using outdated APIs. +- Fix issue with /qs clean on folia.(thanks to wling-art) +- Fix issue with /qs cleanghost on folia(thanks to wling-art) +- More thread safety fixes for shops on folia.(thanks to wling-art) +- Fix owner payment calculations with benefits(thanks to wling-art) \ No newline at end of file diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md index 8172f9b410..dcc3edc67d 100644 --- a/i18n/el-GR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md @@ -20,20 +20,20 @@ the ControlComponent object with a custom one that will replace the original dur ### Introduction of the Revamped Packet System 1. **About**: - - A modular and scalable system for managing packets related to virtual display items in Minecraft. - - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. + - A modular and scalable system for managing packets related to virtual display items in Minecraft. + - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. 2. **Custom Packet Factories**: - - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. - - Packet types: - - **Spawn Packet**: Spawns a virtual item entity at a specific location. - - **Metadata Packet**: Updates the visual properties of virtual items. - - **Velocity Packet**: Adds motion/velocity to entities (currently optional). - - **Destroy Packet**: Removes the entity from the client view. + - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. + - Packet types: + - **Spawn Packet**: Spawns a virtual item entity at a specific location. + - **Metadata Packet**: Updates the visual properties of virtual items. + - **Velocity Packet**: Adds motion/velocity to entities (currently optional). + - **Destroy Packet**: Removes the entity from the client view. 3. **Error Handling and Logging**: - - Enhanced debug logs to trace packet-related issues. - - Detailed error messages for missing factories or unregistered listeners. + - Enhanced debug logs to trace packet-related issues. + - Detailed error messages for missing factories or unregistered listeners. #### Improvements: diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md index 7775308722..c6e0948d19 100644 --- a/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md index f420997a9c..38587e3784 100644 --- a/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md index 5ed8182c9a..259c55f342 100644 --- a/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md index 924a37ac49..7fd4596a6a 100644 --- a/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,6 +10,6 @@ This is a BungeeCord plugin, you need install it within your BungeeCord's plugin ## How does it work? -BungeeCord Bridge plugins will register a `quickshop:bungee` channel for fowarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. +BungeeCord Bridge plugins will register a `quickshop:bungee` channel for forwarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. All forwarding is indicated by QuickShop-Hikari on the Spigot server and ends when it is not needed. diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md index 27d68956a8..20fbaf7a0c 100644 --- a/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,5 +10,5 @@ This compatibility module added [Chest Protect](https://www.spigotmc.org/resourc ## How does it work? -This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident.\ +This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident. It also prevents players from creating shops on ChestProtect protected containers. diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md index 220e26d8bb..e1757e7be9 100644 --- a/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/dominion.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/dominion.md new file mode 100644 index 0000000000..e1195278a8 --- /dev/null +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/dominion.md @@ -0,0 +1,138 @@ +# Dominion + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and Dominion. + +It ensures that shop creation and trading respect Dominion’s land and territory protection system. + +--- + +## What Does It Do? + +Dominion allows players or groups to claim land and define territory-based permissions. + +Without compatibility: + +- Players could create shops inside territories they do not control. +- Visitors might trade inside protected dominions. +- Dominion permission rules might not apply to shop interactions. + +The Dominion compat module ensures that: + +- Shop creation respects territory ownership. +- Shop trading follows Dominion permission settings. +- Protected land remains secure from unauthorized shop usage. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a Dominion-controlled area. +- Whether the player has permission within that territory. +- Whether Dominion rules allow shop interaction. + +If the action is not permitted by Dominion settings, QuickShop blocks it. + +If the location is outside any Dominion territory, default QuickShop behavior applies. + +--- + +## Territory Owner Control + +With this module enabled: + +- Territory owners can create and manage shops inside their dominion. +- Trusted members follow territory-based permissions. +- Outsiders are restricted unless explicitly allowed. +- Shop actions respect Dominion’s land rules automatically. + +This prevents unauthorized shop placement inside protected territories. + +--- + +## Installation + +1. Install Dominion. +2. Install the QuickShop Dominion compat module. +3. Restart your server. + +The module activates automatically if Dominion is detected. + +No manual configuration linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside dominions +whitelist-mode: false + +# Allow territory owners to override shop permissions +allow-owner-override: true +``` + +If Dominion is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For servers using Dominion: + +- Restrict shop creation to territory owners or trusted members. +- Prevent shop creation in wilderness if desired. +- Allow dominion owners to manage shop permissions. +- Review Dominion permission settings to align with shop behavior. + +This ensures protected territories remain secure and organized. + +--- + +## Common Questions + +### Can players create shops in someone else's dominion? + +Only if Dominion permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You may allow or restrict shops outside dominions. + +### What happens if Dominion is removed? + +QuickShop returns to normal behavior and stops checking Dominion territories. + +--- + +## Summary + +The Dominion compat module: + +- Enforces territory-based permissions +- Prevents unauthorized shop creation +- Protects claimed land from misuse +- Integrates seamlessly with Dominion + +It is recommended for servers running Dominion. \ No newline at end of file diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md index 743d3ae666..2ac9b10488 100644 --- a/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md new file mode 100644 index 0000000000..07ba4ada66 --- /dev/null +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md @@ -0,0 +1,133 @@ +# FabledSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and FabledSkyblock. + +It ensures that shop creation and trading properly respect island boundaries and island permissions. + +--- + +## What Does It Do? + +On Skyblock servers, players build and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Players might trade in areas they should not. +- Island protection rules might not apply to shops. + +The FabledSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members behave correctly with shops. +- Island visitors are restricted appropriately. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a FabledSkyblock island. +- Whether the player has permission on that island. +- Whether island settings allow the action. + +If the action is not permitted by island rules, QuickShop will deny it. + +--- + +## Island Ownership Rules + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow island permission settings. +- Visitors can only trade if island permissions allow it. +- Outside of islands, default QuickShop behavior applies. + +--- + +## Installation + +1. Install FabledSkyblock. +2. Install the QuickShop FabledSkyblock compat module. +3. Restart your server. + +The module activates automatically if FabledSkyblock is detected. + +No manual linking is required. + +--- + +## Configuration + +If the module provides configuration options, they will appear in its `config.yml`. + +Typical options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If FabledSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most Skyblock servers: + +- Allow shop creation only inside islands. +- Prevent trading in the void or wilderness. +- Let island owners control shop permissions. +- Use island rank systems to manage shop access. + +This helps maintain economic balance between islands. + +--- + +## Common Questions + +### Can players create shops in the void? + +Only if your configuration allows it. +Most servers disable shop creation outside islands. + +### Does this affect island war or PvP modes? + +No. +The module only checks island ownership and permissions for shop interactions. + +### What happens if FabledSkyblock is removed? + +QuickShop returns to normal behavior. + +--- + +## Summary + +The FabledSkyblock compat module: + +- Protects island economies +- Enforces island permission rules +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is strongly recommended for any server running FabledSkyblock. \ No newline at end of file diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md index 81b13d2c6b..32614d3019 100644 --- a/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md @@ -2,17 +2,17 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -GreifPrevention compatibility module added compaitibility with GF. +GreifPrevention compatibility module added compatibility with GF. ## How does it work This module allow QuickShop-Hikari check if player have permission to create or use QuickShop in specific region. -And delete shops when claim removed, untrusted, unclimed, expired, resized or subclaim created. +And delete shops when claim removed, untrusted, unclaimed, expired, resized or subclaim created. ## Configuration diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md new file mode 100644 index 0000000000..e71b34d462 --- /dev/null +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md @@ -0,0 +1,139 @@ +# HuskTowns + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and HuskTowns. + +It ensures that shop creation and trading respect town and claim permissions defined by HuskTowns. + +--- + +## What Does It Do? + +HuskTowns allows players to create towns and claim land. + +Without compatibility: + +- Players could create shops inside towns they do not belong to. +- Visitors might trade inside protected towns. +- Town permission rules might not apply to shop interactions. + +The HuskTowns compat module ensures that: + +- Shop creation respects town ownership. +- Trading follows town permission settings. +- Town members and visitors are handled correctly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a HuskTowns claim. +- Whether the player is a town member, trusted player, or outsider. +- Whether the town's permission settings allow the action. + +If the action is not permitted by town rules, QuickShop blocks it. + +Outside of town claims, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Town Owner Control + +With this module enabled: + +- Town owners can create and manage shops inside their town. +- Town members follow town-based permission settings. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect town claim protection. + +This prevents unauthorized shop placement and trading inside protected towns. + +--- + +## Installation + +1. Install HuskTowns. +2. Install the QuickShop HuskTowns compat module. +3. Restart your server. + +The module activates automatically if HuskTowns is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside towns +whitelist-mode: false + +# Allow town owners to override shop permissions +allow-owner-override: true +``` + +If HuskTowns is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For town-based survival servers: + +- Restrict shop creation to town members. +- Allow trading only where town permissions permit. +- Prevent shop creation in wilderness if desired. +- Enable owner override for better administrative control. + +This helps maintain town-based economic balance. + +--- + +## Common Questions + +### Can players create shops in another town? + +Only if that town's permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You can allow or restrict shops outside towns. + +### What happens if HuskTowns is removed? + +QuickShop returns to normal behavior and stops checking town permissions. + +--- + +## Summary + +The HuskTowns compat module: + +- Enforces town-based land permissions +- Protects towns from unauthorized shop usage +- Integrates smoothly with HuskTowns +- Requires minimal setup + +It is recommended for any server running HuskTowns. \ No newline at end of file diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md new file mode 100644 index 0000000000..3fa2995eb0 --- /dev/null +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md @@ -0,0 +1,139 @@ +# IridiumSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and IridiumSkyblock. + +It ensures that shop creation and trading respect island boundaries and island permission settings defined by IridiumSkyblock. + +--- + +## What Does It Do? + +IridiumSkyblock allows players to create and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Visitors might trade inside protected islands. +- Island protection rules might not apply correctly to shops. + +The IridiumSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members and visitors are handled properly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside an IridiumSkyblock island. +- Whether the player is the island owner, member, or visitor. +- Whether island permissions allow shop interaction. + +If the action is not permitted, QuickShop blocks it. + +Outside of islands, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Island Owner Permissions + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow the island's permission configuration. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect island protection rules. + +This prevents unauthorized shop usage inside protected islands. + +--- + +## Installation + +1. Install IridiumSkyblock. +2. Install the QuickShop IridiumSkyblock compat module. +3. Restart your server. + +The module activates automatically if IridiumSkyblock is detected. + +No additional setup is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If IridiumSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most IridiumSkyblock servers: + +- Restrict shop creation to island owners. +- Allow island members to trade if trusted. +- Prevent shop creation in the void or wilderness. +- Enable owner override for better management. + +This helps maintain balanced island economies. + +--- + +## Common Questions + +### Can players create shops outside their island? + +Only if your configuration allows it. + +Most Skyblock servers restrict shops to island areas. + +### Do island ranks affect shop permissions? + +Yes, if your island permissions are configured to control interaction rights. + +QuickShop follows island rules. + +### What happens if IridiumSkyblock is removed? + +QuickShop returns to normal behavior and stops checking island permissions. + +--- + +## Summary + +The IridiumSkyblock compat module: + +- Protects island economies +- Enforces island-based permissions +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is recommended for any server running IridiumSkyblock. diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md new file mode 100644 index 0000000000..3b4726cb9d --- /dev/null +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md @@ -0,0 +1,151 @@ +# ItemMatcherPlus + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +The ItemMatcherPlus module improves how QuickShop matches custom and plugin-modified items. + +It allows QuickShop to properly recognize and stack items created by other plugins that normally would not match using standard Bukkit item comparisons. + +This module is especially useful for servers that use: + +- Custom items +- Modified metadata +- NBT-based systems +- Advanced crate rewards +- Custom brewing systems +- Custom fishing rewards + +--- + +## What Does It Do? + +By default, Minecraft item matching checks: + +- Material type +- Basic metadata + +However, many plugins modify items with: + +- Custom NBT data +- Hidden tags +- Custom lore formats +- Unique identifiers + +Without enhanced matching: + +- Items may not stack +- Shops may refuse valid items +- Transactions may fail +- Buying/selling may not behave correctly + +ItemMatcherPlus improves compatibility and matching accuracy. + +--- + +## Supported Plugins + +ItemMatcherPlus includes built-in support for: + +- AdvancedItems +- BreweryX +- CrazyCrates +- ExcellentCrates +- PyroFishing +- SilkSpawners + +If any of these plugins are installed, QuickShop will automatically use enhanced matching logic. + +No additional configuration is required. + +--- + +## How It Works + +When a player trades with a shop: + +1. QuickShop checks the item. +2. If ItemMatcherPlus is enabled, it performs advanced matching. +3. Plugin-specific metadata is validated. +4. The item is confirmed as a match (or rejected safely). + +This allows: + +- Proper stacking of custom items +- Correct shop transactions +- Accurate buy/sell detection +- Reduced false mismatches + +--- + +## Installation + +1. Download the ItemMatcherPlus module. +2. Place the JAR into your `plugins` folder. +3. Restart your server. + +If supported plugins are detected, compatibility activates automatically. + +--- + +## Configuration + +ItemMatcherPlus does not require configuration. + +It activates automatically when: + +- The module is installed +- A supported plugin is detected + +If a supported plugin is not installed, no extra logic runs. + +--- + +## Why You Should Use It + +You should install ItemMatcherPlus if your server uses: + +- Custom fishing plugins +- Custom brewing systems +- Crate plugins with modified items +- Custom spawners +- Any plugin that modifies NBT data + +Without it, shops may not properly recognize custom items. + +--- + +## Common Questions + +### Do I need this if I don't use custom item plugins? + +No. +If you only use vanilla items, this module is not necessary. + +### Does this affect performance? + +The module only activates enhanced matching when needed. + +Normal item matching remains fast and efficient. + +### Will it break existing shops? + +No. +It improves compatibility and matching accuracy without modifying existing shop data. + +--- + +## Summary + +ItemMatcherPlus: + +- Improves item matching accuracy +- Adds support for major custom item plugins +- Prevents stacking and trade issues +- Requires no configuration +- Activates automatically + +If you run a heavily customized economy server, this module is highly recommended. \ No newline at end of file diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md index ba87606698..d4ae7d129a 100644 --- a/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/lands.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/lands.md index 06296f5779..7671fcdfe0 100644 --- a/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/lands.md +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/lands.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/openinv.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/openinv.md index c51f628615..4807d57873 100644 --- a/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/openinv.md +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/openinv.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md new file mode 100644 index 0000000000..c2136320b0 --- /dev/null +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md @@ -0,0 +1,138 @@ +# SimpleClaimSystem + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and SimpleClaimSystem. + +It ensures that shop creation and trading respect land ownership and claim permissions defined by SimpleClaimSystem. + +--- + +## What Does It Do? + +SimpleClaimSystem allows players to claim land and protect it from unauthorized interaction. + +Without compatibility: + +- Players could create shops inside claims they do not own. +- Visitors might trade inside protected areas. +- Claim protection might not apply correctly to shops. + +The SimpleClaimSystem compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops within their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a SimpleClaimSystem claim. +- Whether the player has permission within that claim. +- Whether claim rules allow shop interaction. + +If the action is not permitted by the claim, QuickShop blocks it. + +If the location is outside any claim, default QuickShop behavior applies. + +--- + +## Claim Owner Control + +With this module enabled: + +- Claim owners can create and manage shops inside their claim. +- Trusted players follow claim-based permissions. +- Visitors are restricted unless explicitly allowed. +- Claim protection rules apply automatically to shop interactions. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install SimpleClaimSystem. +2. Install the QuickShop SimpleClaimSystem compat module. +3. Restart your server. + +The module activates automatically if SimpleClaimSystem is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If SimpleClaimSystem is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Enable owner override for easier management. + +This ensures players maintain control over their protected land. + +--- + +## Common Questions + +### Can players create shops in someone else's claim? + +Only if claim permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can allow shops outside claims or restrict them. + +### What happens if SimpleClaimSystem is removed? + +QuickShop will revert to default behavior and stop checking claim permissions. + +--- + +## Summary + +The SimpleClaimSystem compat module: + +- Enforces claim-based permissions +- Prevents unauthorized shop creation +- Protects land from unwanted trading +- Requires minimal setup + +It is recommended for servers running SimpleClaimSystem. \ No newline at end of file diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md index a84dbf057b..4dfa8ae97c 100644 --- a/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/towny.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/towny.md index 52ab4818f4..b26c19d335 100644 --- a/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/towny.md +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/towny.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -26,7 +26,7 @@ Town sub-command allow you switch a quickshop between regular shop and town shop For a nation shop, the shop owner will changed to nation fake player created by Towny, and use Nation's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from nation Towny account.\ +All purchases will deposit or withdraw money from nation Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Nation Shop. @@ -35,7 +35,7 @@ If Plot type restriction is enabled, only a specific Plot type can create a Nati For a town shop, the shop owner will changed to town fake player created by Towny, and use Town's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from town Towny account.\ +All purchases will deposit or withdraw money from town Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Town Shop. @@ -88,7 +88,7 @@ bank-mode: ## Permission Override -By adjust configuration, you're allow mayor or king automaticlly grant administrator permission on all shops in their management range. +By adjust configuration, you're allow mayor or king automatically grant administrator permission on all shops in their management range. ```yaml #Should allow Mayor grant the shop administrator permission on they town. @@ -168,7 +168,7 @@ This causes Towny and QuickShop Hikari to use accounts with the same name but di You can adjust the option in configuration to enable workaround. -NOTE: It will force turned on if detected EssentialsX installed on your server.\ +NOTE: It will force turned on if detected EssentialsX installed on your server. At present, we do not provide a method for disable it. ```yaml diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md new file mode 100644 index 0000000000..0189958495 --- /dev/null +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md @@ -0,0 +1,138 @@ +# UltimateClaims + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and UltimateClaims. + +It ensures that shop creation and trading respect land claim permissions managed by UltimateClaims. + +--- + +## What Does It Do? + +On servers using land-claim plugins, players protect areas of the world from unauthorized interaction. + +Without compatibility: + +- Players may create shops inside claims they do not own. +- Visitors might trade in areas where they should not. +- Claim protection rules might not apply correctly to shops. + +The UltimateClaims compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops inside their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a claim. +- Whether the player has permission in that claim. +- Whether claim rules allow shop interaction. + +If the action violates claim settings, QuickShop blocks it. + +Outside of claims, normal QuickShop behavior applies. + +--- + +## Claim Owner Permissions + +With this module enabled: + +- Claim owners can create and manage shops within their claim. +- Trusted players follow claim permission settings. +- Visitors are restricted based on claim configuration. +- Shop actions outside of claims behave normally. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install UltimateClaims. +2. Install the QuickShop UltimateClaims compat module. +3. Restart your server. + +If UltimateClaims is detected on startup, compatibility activates automatically. + +No additional linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Common options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If UltimateClaims is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Keep owner override enabled for better control. + +This ensures players maintain full control over their protected land. + +--- + +## Common Questions + +### Can players create shops inside someone else's claim? + +Only if the claim permissions allow it. + +Otherwise, QuickShop will block the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can choose to restrict shops to claimed land only. + +### What happens if UltimateClaims is removed? + +QuickShop returns to normal behavior without claim checks. + +--- + +## Summary + +The UltimateClaims compat module: + +- Protects claimed land from unauthorized shop usage +- Enforces claim-based permissions +- Integrates smoothly with land-claim servers +- Requires minimal setup + +It is recommended for any server running UltimateClaims. \ No newline at end of file diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md index 87a71a205c..6437754503 100644 --- a/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md @@ -2,8 +2,10 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. Find out more [here](../modules/shops/worldedit.md). + +Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. \ No newline at end of file diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/development/01-getting-start.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/development/01-getting-start.md index 92b773451e..0e78e52367 100644 --- a/i18n/el-GR/docusaurus-plugin-content-docs/current/development/01-getting-start.md +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/development/01-getting-start.md @@ -6,8 +6,8 @@ This series of articles will help you build extensions for QuickShop-Hikari or i ## License -QuickShop-Hikari is open source using the [GPLv3](https://www.gnu.org/licenses/quick-guide-gplv3.en.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari).\ -You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the GPLv3 agreement. +QuickShop-Hikari is open source using the [AGPLv3](https://www.gnu.org/licenses/agpl-3.0.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari). +You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the AGPLv3 agreement. ## 🚧Don't trust Javadoc too much @@ -48,7 +48,7 @@ QuickShop-Hikari divides operation sources into three types: - Server Main Thread - Async Thread (any other threads but not server main thread) -- Hybird +- Hybrid If you access the API through the wrong thread, QuickShop-Hikari will force a runtime error to be thrown. @@ -58,4 +58,4 @@ For APIs that may trigger network IO or long-time disk IO, you are required not You can see [Util.ensureThread()](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/3d1d271e1106ea1c83cc6068f8232ab7c7860918/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/util/Util.java#L351) and find out the requirements of the different APIs by looking up their use. APIs that do not use Util.ensureThread() are allowed to be called from any thread by default. -You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. +You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. \ No newline at end of file diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md index aa2404c594..7828d414ad 100644 --- a/i18n/el-GR/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md @@ -10,7 +10,7 @@ ShopManager manager = api.getShopManager(); ## Getting a shop -Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates.\ +Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates. QuickShop-Hikari's store is only bound to one half of "Large Chest", so to get the store, you need to query both the cube itself and its associated cube. The good thing is that there is an API in the plugin that allows you to handle this situation very easily. @@ -71,7 +71,7 @@ manager.deleteShop(shop) // Permanently delete this store, both memory and datab ## Identify a store -Please note that store locations are technically variable and you should not use coordinates to identify a store.\ +Please note that store locations are technically variable and you should not use coordinates to identify a store. Also RuntimeRandomUniqueId should not be used to identify the store, as the name suggests, the value changes every time the server restarts, it should only be used to handle scenarios where the player interacts with the server. ```java diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md index 543f1851da..4f839ed652 100644 --- a/i18n/el-GR/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md @@ -1,6 +1,6 @@ # 0x05 Per shop permission -QuickShop-Hikari has a per shop permission management system.\ +QuickShop-Hikari has a per shop permission management system. Therefore, for a normal permission node check is not enough, you need to attach an additional check. ## Check with shop diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/development/06-protocol-system.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/development/06-protocol-system.md index 5d37a15536..0380b789f9 100644 --- a/i18n/el-GR/docusaurus-plugin-content-docs/current/development/06-protocol-system.md +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/development/06-protocol-system.md @@ -15,30 +15,30 @@ This documentation will guide developers through the components, implementation - **Purpose**: Manages packet handling and initialization logic. - **Interface**: `PacketHandler` - **Key Methods**: - - `Map> factories()` - - Retrieves a map of supported `PacketFactory` instances keyed by game versions. - - `void initialize()` - - Initializes the packet handler. - - `Optional> factory(String version)` - - Retrieves a `PacketFactory` for a specific game version. + - `Map> factories()` + - Retrieves a map of supported `PacketFactory` instances keyed by game versions. + - `void initialize()` + - Initializes the packet handler. + - `Optional> factory(String version)` + - Retrieves a `PacketFactory` for a specific game version. ### 2. **PacketFactory** - **Purpose**: Creates and sends specific packet types. - **Interface**: `PacketFactory` - **Supported Packets**: - - **Spawn Packet**: - - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. - - Example Use: Representing shop items visually. - - **Metadata Packet**: - - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. - - Example Use: Updating item display name or properties. - - **Velocity Packet**: - - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. - - Example Use: Custom animations for virtual items. - - **Destroy Packet**: - - Removes the entity from the client view. Created using `createDestroyPacket()`. - - Example Use: Unloading or removing a virtual display item. + - **Spawn Packet**: + - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. + - Example Use: Representing shop items visually. + - **Metadata Packet**: + - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. + - Example Use: Updating item display name or properties. + - **Velocity Packet**: + - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. + - Example Use: Custom animations for virtual items. + - **Destroy Packet**: + - Removes the entity from the client view. Created using `createDestroyPacket()`. + - Example Use: Unloading or removing a virtual display item. Developers implementing custom `PacketFactory` should ensure these packets are correctly handled and optimized for performance. @@ -46,24 +46,24 @@ Developers implementing custom `PacketFactory` should ensure these packets are c - **Purpose**: Oversees the lifecycle of virtual display items and integrates with packet handlers. - **Key Features**: - - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). - - Manages virtual display items mapped to chunks. - - Provides thread-safe operations for adding and removing display items. + - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). + - Manages virtual display items mapped to chunks. + - Provides thread-safe operations for adding and removing display items. ### 4. **VirtualDisplayItem** - **Purpose**: Represents a virtual item displayed to players. - **Key Features**: - - Generates and caches packets for spawning, metadata, velocity, and destruction. - - Manages packet senders for each player. - - Handles spawn and removal operations dynamically. + - Generates and caches packets for spawning, metadata, velocity, and destruction. + - Manages packet senders for each player. + - Handles spawn and removal operations dynamically. ### 5. **ProtocolLibHandler and PacketEventsHandler** - **Purpose**: Provide implementations of `PacketHandler` using ProtocolLib and PacketEvents, respectively. - **Differences**: - - `ProtocolLibHandler` leverages ProtocolLib API. - - `PacketEventsHandler` uses the PacketEvents library. + - `ProtocolLibHandler` leverages ProtocolLib API. + - `PacketEventsHandler` uses the PacketEvents library. --- @@ -140,11 +140,11 @@ public class CustomPacketFactory implements PacketFactory { Packet factories are provided for specific game versions through two primary implementations: - **ProtocolLib**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` - **PacketEvents**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` --- diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md new file mode 100644 index 0000000000..aebc035f87 --- /dev/null +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md @@ -0,0 +1,297 @@ +# Interaction System (Developer Guide) + +The Interaction System allows developers to fully customize how players interact with shops. + +As of 6.2.0.11, the system has been redesigned to be: + +- Modular +- Extensible +- Thread-safe +- Fully customizable by third-party addons + +This guide will walk you through: + +1. What the Interaction System is +2. Getting the `InteractionManager` +3. Understanding `InteractionType` +4. Understanding `InteractionBehavior` +5. Registering custom interactions +6. Best practices + +--- + +# Overview + +The Interaction System is composed of three main components: + +| Component | Purpose | +| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| `InteractionType` | Describes **what kind of click happened** (standing, sneaking, left-click, sign, shopblock, etc.) | +| `InteractionBehavior` | Describes **what action should happen** when that type is triggered | +| `InteractionManager` | Central registry that manages interactions and behaviors | + +This separation allows developers to: + +- Add new click types +- Add new behaviors +- Override existing ones +- Extend QuickShop without modifying core code + +--- + +# Getting the InteractionManager + +To begin registering custom interactions, you must retrieve the `InteractionManager` instance. + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +If you are working directly with the plugin instance: + +```java +InteractionManager manager = QuickShop.getInstance().getInteractionManager(); +``` + +Once obtained, you can: + +- Register new interaction types +- Register new behaviors +- Override existing behaviors + +--- + +# Understanding InteractionType + +`InteractionType` represents **how** a player interacted with a shop. + +Examples include: + +- `STANDING_LEFT_CLICK_SIGN` +- `STANDING_RIGHT_CLICK_SHOPBLOCK` +- `SNEAKING_LEFT_CLICK_CONTAINER` +- etc. + +Each `InteractionType` defines: + +- Player stance (standing/sneaking) +- Click type (left/right) +- Target (sign/shopblock/container) + +InteractionTypes do NOT define behavior — they only define the trigger. + +--- + +# Understanding InteractionBehavior + +`InteractionBehavior` defines **what happens** when an interaction is triggered. + +Examples of built-in behaviors: + +- `TRADE_INTERACTION` +- `TRADE_UI` +- `CONTROL_PANEL` +- `CONTROL_PANEL_UI` +- `NONE` + +A behavior: + +- Executes logic +- May open GUIs +- May send chat panels +- May directly trade items +- Can cancel or modify flow + +This separation makes it easy to reuse behaviors across multiple interaction types. + +--- + +# Registering Custom Interactions + +There are two things you can register: + +- A custom `InteractionType` +- A custom `InteractionBehavior` + +--- + +## Creating a Custom InteractionBehavior + +Create a class implementing `InteractionBehavior`. + +Example: + +```java +public class MyTradeBehavior implements InteractionBehavior { + + @Override + public String getKey() { + return "MY_CUSTOM_TRADE"; + } + + @Override + public void execute(InteractionClick click) { + Player player = click.getPlayer(); + Shop shop = click.getShop(); + + player.sendMessage("You triggered my custom interaction!"); + + // Add your custom logic here + } +} +``` + +Then register it: + +```java +InteractionManager manager = api.getInteractionManager(); +manager.behavior(new MyTradeBehavior()); +``` + +Now your behavior is available for use. + +--- + +## Creating a Custom InteractionType + +You may also register custom interaction types if you want to introduce new trigger definitions. + +Example: + +```java +public class MyCustomInteraction implements InteractionType { + + @Override + public String getKey() { + return "STANDING_DOUBLE_CLICK_SIGN"; + } + + @Override + public boolean matches(InteractionClick click) { + // Define custom logic to detect this interaction + return click.isStanding() + && click.isSign() + && click.isDoubleClick(); + } +} +``` + +Register it: + +```java +manager.interaction(new MyCustomInteraction()); +``` + +--- + +# Binding Types to Behaviors + +The InteractionManager internally maps interaction types to behaviors based on configuration and registration order. + +Once your behavior is registered: + +- It can be referenced in `interaction.yml` +- Or attached programmatically + +Example interaction.yml usage: + +```yaml +STANDING_LEFT_CLICK_SIGN: MY_CUSTOM_TRADE +``` + +--- + +# The InteractionClick Object + +When your behavior executes, you receive an `InteractionClick` object. + +It provides: + +- `getPlayer()` +- `getShop()` +- `getLocation()` +- `isSneaking()` +- `isSign()` +- `isShopBlock()` +- etc. + +This gives full context for safe execution. + +--- + +# Advanced: Overriding Built-in Behavior + +If you register a behavior using the same key as an existing one, your behavior can override the default. + +⚠️ Be careful when doing this — you are replacing core functionality. + +--- + +# Best Practices + +### Always Use Unique Keys + +Avoid naming collisions: + +``` +MYPLUGIN_CUSTOM_BEHAVIOR +``` + +### Keep Behavior Lightweight + +Do not block the main thread with: + +- Heavy database calls +- File IO +- Network calls + +Use async tasks if needed. + +### Respect Permissions + +Always validate: + +```java +if (!player.hasPermission("myplugin.use")) { + return; +} +``` + +### Avoid Hard Overrides Unless Necessary + +Instead of replacing built-in behaviors, consider extending them. + +--- + +# Example: Full Minimal Implementation + +```java +public class ExampleAddon { + + public void register(QuickShopAPI api) { + + InteractionManager manager = api.getInteractionManager(); + + manager.behavior(new MyTradeBehavior()); + manager.interaction(new MyCustomInteraction()); + } +} +``` + +--- + +# Conclusion + +The Interaction System is designed to allow: + +- Full extensibility +- Clean separation of triggers and actions +- Easy integration for third-party developers + +By retrieving the `InteractionManager`: + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +You gain full control over how shops respond to player actions. \ No newline at end of file diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/development/08-tax-manager.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/development/08-tax-manager.md new file mode 100644 index 0000000000..72a56f9e88 --- /dev/null +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/development/08-tax-manager.md @@ -0,0 +1,266 @@ +# Tax System (Developer Guide) + +The QuickShop tax system allows server owners and developers to define how transaction taxes are calculated, distributed, and extended. + +As of 6.2.0.11, the tax system has been fully rewritten to provide: + +- A flexible TaxManager +- Pluggable TaxProvider support +- Progressive taxation +- Tax targeting (shop owner, interacting player, or both) +- Custom extension capability for third-party addons + +This guide explains how to work with the tax system programmatically. + +--- + +# Overview + +The tax system is composed of three core components: + +TaxManager +Responsible for coordinating tax calculation and execution. + +TaxProvider +Defines how tax values are calculated. + +TaxRates +Represents calculated tax results for a transaction. + +The system is designed to allow custom providers to be registered and used without modifying core logic. + +--- + +# Getting the TaxManager + +To work with the tax system, retrieve the TaxManager from the ShopManager. + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +Once obtained, you can: + +- Access current tax configuration +- Register custom tax providers +- Calculate tax values +- Hook into tax events + +--- + +# How the Tax System Works + +During a shop transaction: + +1. A base price is determined. +2. The TaxManager selects the active TaxProvider. +3. The TaxProvider calculates applicable tax. +4. A TaxRates object is produced. +5. The system applies the tax to: + + - Shop owner + - Interacting player + - Or both (depending on configuration) + +This architecture allows tax behavior to be modified without altering transaction logic. + +--- + +# TaxProvider + +A TaxProvider defines how tax values are calculated. + +You may create your own provider to implement: + +- Progressive tax brackets +- Flat percentage tax +- Conditional tax rules +- Region-based tax +- Rank-based tax +- Time-based tax + +Example minimal provider: + +```java +public class MyCustomTaxProvider implements TaxProvider { + + @Override + public TaxRates calculateTax(TaxContext context) { + + double basePrice = context.getPrice(); + + double taxAmount = basePrice * 0.05; // 5% flat tax + + return new TaxRates() + .ownerTax(taxAmount) + .buyerTax(0.0); + } +} +``` + +Then register it: + +```java +taxManager.provider(new MyCustomTaxProvider()); +``` + +Once registered, your provider will be used for tax calculations. + +--- + +# TaxRates + +TaxRates represents the result of a tax calculation. + +It typically contains: + +- Owner tax amount +- Buyer tax amount +- Total tax impact +- Metadata (if applicable) + +The transaction system will read from TaxRates and apply deductions accordingly. + +--- + +# Progressive Taxation + +The built-in system supports progressive tax structures. + +This allows server administrators to tax based on: + +- Player balance +- Shop owner balance +- Configured tax brackets + +Example configuration concept: + +- 0–10,000 balance → 1% tax +- 10,000–100,000 → 2% tax +- 100,000+ → 3% tax + +Developers can extend or override this logic inside a custom TaxProvider. + +--- + +# Targeting Tax + +The new tax system allows taxes to be applied to: + +- Shop owner +- Interacting player +- Both + +This is controlled via configuration, but custom providers can override distribution logic by adjusting TaxRates output. + +Example: + +```java +return new TaxRates() + .ownerTax(basePrice * 0.02) + .buyerTax(basePrice * 0.01); +``` + +--- + +# Registering a Custom TaxProvider + +To replace or extend tax logic: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); + +taxManager.provider(new MyCustomTaxProvider()); +``` + +You may register only one primary provider at a time. If multiple providers are needed, implement internal delegation within your custom provider. + +--- + +# Tax Events + +The tax system integrates with the event system. + +The modern event used is: + +ShopEnhancedTaxEvent + +This replaces legacy tax events and provides improved context, including: + +- Transaction builder reference +- TaxRates object +- Modification capability before final execution + +You can listen for the event and modify tax behavior dynamically: + +```java +@EventHandler +public void onTax(ShopEnhancedTaxEvent event) { + + TaxRates rates = event.getTaxRates(); + + // Example: Give VIP players reduced owner tax + if (event.getOwner().hasPermission("vip.tax.discount")) { + rates.ownerTax(rates.getOwnerTax() * 0.5); + } +} +``` + +--- + +# Best Practices + +Always keep tax calculations lightweight. + +Avoid: + +- Heavy database queries inside calculateTax +- Blocking network calls +- Long-running computations + +If complex logic is required, pre-cache required data outside the tax execution path. + +Ensure negative tax values are not returned unless intentional. + +Always validate final amounts before applying modifications. + +Respect configuration hierarchy unless intentionally overriding it. + +--- + +# Example Full Implementation + +```java +public class ExampleTaxAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + TaxManager taxManager = manager.taxManager(); + + taxManager.provider(new MyCustomTaxProvider()); + } +} +``` + +--- + +# Conclusion + +The new tax system is designed for: + +- Flexibility +- Extensibility +- Clean separation of concerns +- Future expansion + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +You gain full control over how QuickShop calculates and applies tax during transactions. \ No newline at end of file diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/development/09-layout-provider.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/development/09-layout-provider.md new file mode 100644 index 0000000000..55e3cd3e91 --- /dev/null +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/development/09-layout-provider.md @@ -0,0 +1,275 @@ +# Shop Layout Provider (Developer Guide) + +The Shop Layout Provider system allows developers to customize how shop signs are structured and rendered. + +As of 6.2.0.11, shop layouts are no longer hardcoded. Instead, they are controlled through the `IShopLayoutProvider` interface, which allows: + +- Custom sign line ordering +- Per-shop-type layouts (BUYING, SELLING, FROZEN, or custom types) +- Dynamic layout resolution +- Complete replacement of the default layout system + +This guide explains how to access, override, and implement a custom layout provider. + +--- + +# Overview + +The layout provider controls how shop sign lines are arranged. + +Instead of hardcoding: + +Line 1 → Header +Line 2 → Trading info +Line 3 → Item +Line 4 → Price + +The system now allows full customization through: + +- Config-based layout definitions +- Custom `IShopLayoutProvider` implementations +- Runtime overrides + +The default implementation is `SimpleShopLayoutProvider`. + +--- + +# Accessing the Layout Provider + +To retrieve the current layout provider: + +```java +ShopManager manager = api.getShopManager(); +IShopLayoutProvider provider = manager.shopLayoutProvider(); +``` + +To replace the layout provider with a custom one: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Once replaced, your implementation will control how shop layouts are generated. + +--- + +# Understanding IShopLayoutProvider + +`IShopLayoutProvider` defines how layout data is retrieved and resolved. + +It is responsible for: + +- Providing layout configuration per shop type +- Determining which layout to use +- Supplying formatted line keys +- Allowing future extensibility + +The default implementation reads layout definitions from configuration and applies them based on shop type. + +--- + +# Default Layout Example + +The default configuration-based layout looks like this: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +Each line maps to a layout component key. + +An empty string (`""`) leaves that line blank. + +The layout provider resolves these keys into actual sign content. + +--- + +# Creating a Custom Layout Provider + +To override the default behavior, implement `IShopLayoutProvider`. + +Example minimal implementation: + +```java +public class MyCustomLayoutProvider implements IShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + + ShopLayout layout = new ShopLayout(); + + layout.setLine(1, "Custom Header"); + layout.setLine(2, "Owner: " + shop.getOwnerName()); + layout.setLine(3, shop.getItem().getType().name()); + layout.setLine(4, "$" + shop.getPrice()); + + return layout; + } +} +``` + +Then register it: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Your layout will now control all shop sign formatting. + +--- + +# Per-Type Layout Control + +Because the system no longer depends on the legacy ShopType enum, layouts can support: + +- Built-in types (BUYING, SELLING, FROZEN) +- Custom shop types +- Addon-defined shop types + +Your provider can determine layout logic dynamically: + +```java +@Override +public ShopLayout provideLayout(Shop shop) { + + if (shop.getShopType().key().equals("FROZEN")) { + return frozenLayout(shop); + } + + return defaultLayout(shop); +} +``` + +This allows conditional formatting, localization adjustments, or special event styling. + +--- + +# Advanced Customization + +A custom layout provider can: + +- Pull data from external plugins +- Inject dynamic placeholders +- Modify layout per player +- Apply formatting logic +- Override color schemes +- Apply region-based formatting +- Implement animated sign systems + +Because the layout provider is resolved at runtime, you can compute layouts dynamically instead of reading static config. + +--- + +# Replacing vs Extending the Default Provider + +You have two options: + +Replace entirely: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Or extend the default implementation: + +```java +public class ExtendedLayoutProvider extends SimpleShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + ShopLayout base = super.provideLayout(shop); + + base.setLine(1, "[Extended] " + base.getLine(1)); + + return base; + } +} +``` + +Extending is safer if you only want to modify small portions. + +--- + +# Best Practices + +Keep layout generation lightweight. + +Avoid: + +- Heavy database queries +- Blocking IO +- Complex network calls + +Layout generation runs during shop updates and sign refresh events. + +Always handle null values safely. + +Ensure layout line count does not exceed sign limits. + +Avoid hardcoding shop type names unless necessary. + +If your layout supports custom shop types, validate their keys properly. + +--- + +# Example Full Registration + +```java +public class LayoutAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + + manager.shopLayoutProvider(new MyCustomLayoutProvider()); + } +} +``` + +--- + +# Conclusion + +The Shop Layout Provider system allows complete control over shop sign structure. + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +``` + +And setting: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +You can redefine how every shop is displayed on the server. + +This system was designed to support: + +- Extensibility +- Custom shop types +- Localization +- Dynamic formatting +- Future expansion \ No newline at end of file diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/faq/compare-reremake.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/faq/compare-reremake.md index aaa1a9e507..6b39f02520 100644 --- a/i18n/el-GR/docusaurus-plugin-content-docs/current/faq/compare-reremake.md +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/faq/compare-reremake.md @@ -64,7 +64,7 @@ If you are a Reremake user, you may be confused about the differences between Hi ## Which one should I use? Well, it depends on what your needs are.\ -If you have an old server (<1.20) instance, Reremake is your only choice.\ +If you have an old server ({'<'}1.20) instance, Reremake is your only choice.\ ~~If you are in China which has GFW interfere, you also should consider Reremake because it doesn't need to load libraries from Global Internet.~~ Solved in 6.0.0.0. If none of these applies, give Hikari a try! diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md index 551f579e7c..172be3a69b 100644 --- a/i18n/el-GR/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md @@ -1,8 +1,8 @@ # Where Addons/Compacts is -Addons and Compatilibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. +Addons and Compatibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. -- Open Modrinth versions page, locate the version your're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) +- Open Modrinth versions page, locate the version you're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) - Frantically slide your mouse wheel down until the lowest end of the page. - You get it! diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/internal/database-schema.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/internal/database-schema.md index fea685e4fc..45e04adb56 100644 --- a/i18n/el-GR/docusaurus-plugin-content-docs/current/internal/database-schema.md +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/internal/database-schema.md @@ -4,17 +4,17 @@ This chapter will explain the implementation details of QuickShop Hikari's datab ## Tables -This section explains the database tables created by QuickShop-Hikari.\ -Unless otherwise specified, the initial `qs_` in table name is the table prefix.\ +This section explains the database tables created by QuickShop-Hikari. +Unless otherwise specified, the initial `qs_` in table name is the table prefix. For the latest code definition for each table, see: [DataTables.java](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/hikari/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/database/DataTables.java) ### `data` -This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information.\ -No matter what, a data record should not be modified after it is created, until it got deleted.\ +This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information. +No matter what, a data record should not be modified after it is created, until it got deleted. Any new changes to the shop should create a new copy, apply the changes to the copy, and insert it as a new record. -Basiclly, Copy-on-write. +Basically, Copy-on-write. A data record only be deleted from the database when no any table references their `data_id`. @@ -29,7 +29,7 @@ A data record only be deleted from the database when no any table references the | unlimited | BIT NOT NULL | 0 | Indicates whether this store is an unlimited store, 0=Limited, 1=Unlimited | | hologram | BIT NOT NULL | 0 | Indicates the suspension status of this store's display item, 0=Follow global settings, 1=Disabled | | tax_account | VARCHAR(36) | NULL | The uuid for tax account, If it is not NULL, tax will be paid to the specified account | -| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serilized to JSON string | +| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serialized to JSON string | | extra | LONGTEXT | Empty Yaml | Used to store experimental settings of QuickShop Hikari or persistent data of other plugins | | inv_wrapper | VARCHAR(255) NOT NULL | N/A | Unique identifier for InventoryWrapper for this shop data entry | | inv_symbol_link | TEXT NOT NULL | N/A | Unique Inventory symbol used to pass to InventoryWrapper, for locating inventory | @@ -38,7 +38,7 @@ A data record only be deleted from the database when no any table references the ### `shops` -This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes.\ +This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes. Multiple `shop_id` can correspond to the same `data_id`. | Column Name | DataType | Default | Description | diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/cmd-alias.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/cmd-alias.md index 53f1577685..e6ed381c0d 100644 --- a/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/cmd-alias.md +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/cmd-alias.md @@ -23,7 +23,7 @@ custom-commands: - cshop ``` -Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect.\ +Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect. The effect should be like this: ![command-alias](./img/command-alias.png) diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/datasource.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/datasource.md index 6fc1bd8931..3fd3a8bdee 100644 --- a/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/datasource.md +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/datasource.md @@ -48,7 +48,7 @@ Execute the `/quickshop export` command in console, quickshop will export a zip ![exported data](img/database-export.png) -Stop your database, switch the datasource, and start the server.\ +Stop your database, switch the datasource, and start the server. You may noticed all shops are gone, because new datasources had no data inside, we will restore them from export. Rename that exported ZIP file to `recovery.zip`, execute `/quickshop recovery` and restart your server, all shops should back. diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/itemmatcher.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/itemmatcher.md index 56be243019..922907be27 100644 --- a/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/itemmatcher.md +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/itemmatcher.md @@ -4,7 +4,7 @@ ItemMatcher is a utility used by QuickShop-Hikari to compare the items, it is th :::caution -If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse.\ +If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse. **TL;DR: Keep default unless you know what you're doing.** ::: @@ -26,10 +26,10 @@ matcher: work-type: 1 ``` -By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility.\ +By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility. But still, you can toggle to QuickShop Item Matcher if you need to customize the comparing or running QuickShop on the server jar which have bug affect the Bukkit comparing system. -## Customize the metadata compareing +## Customize the metadata comparing Customize only works under QuickShop Item Matcher. diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md index fc2af69d2b..d04e8f2783 100644 --- a/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md @@ -4,7 +4,7 @@ ItemStack Loader is a workaround for loading the Bukkit ItemStack. :::caution -Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossble. +Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossible. ::: diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/localization.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/localization.md index e9121e1a36..d47589ab9a 100644 --- a/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/localization.md +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/localization.md @@ -10,7 +10,7 @@ To help translate QuickShop-Hikari, please visit our [Crowdin Homepage](https:// ## Crowdin OTA -QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will overrided when you reload QuickShop-Hikari or restart your server. +QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will override when you reload QuickShop-Hikari or restart your server. Your installation will keep translations up-to-date without any touch. @@ -110,6 +110,16 @@ To disable the CrowdinOTA, please add it in the startup flag: -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager.enableCrowdinOTA=false ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +use-crowdin-ota: false +``` + ### Self-Hosted OTA Server If you self-hosted our translation server by using [CrowdinCopyDeploy](https://github.com/Ghost-chu/CrowdinCopyDeploy) tool, you're able to change the OTA server to yourself server. @@ -118,4 +128,12 @@ If you self-hosted our translation server by using [CrowdinCopyDeploy](https://g -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager= ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml +Use + +```yaml +crowdin-host: +``` \ No newline at end of file diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/shops/benefit.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/shops/benefit.md index 4d7a9c8f42..c59d92e6d1 100644 --- a/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/shops/benefit.md +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/shops/benefit.md @@ -37,3 +37,13 @@ By default, for security, QuickShop-Hikari disallow add offline players into sho ```bash -Dcom.ghostchu.quickshop.command.subcommand.SubCommand_Benefit.allowOffline=true ``` + +### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +shop.allow-offline-benefit: true +``` \ No newline at end of file diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/shops/control-panel b/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/shops/control-panel new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/shops/control-panel @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/shops/history.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/shops/history.md index fa891adeab..195b64a042 100644 --- a/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/shops/history.md +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/shops/history.md @@ -24,7 +24,7 @@ The History GUI displays the details of each recorded transaction and other usef ### Transaction details -When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed.\ +When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed. If you are checking the history of more than one store, the player head will be replaced with an item from the corresponding store. ![history-gui](./img/history-gui.png) diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md new file mode 100644 index 0000000000..c5ed3b3fe4 --- /dev/null +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md @@ -0,0 +1,90 @@ +# Shop Types + +QuickShop supports multiple shop types, allowing shops to behave differently depending on their mode. + +The built-in shop types are: + +- Selling +- Buying +- Frozen + +Each type changes how the shop interacts with players. + +--- + +## Selling Shop + +A Selling shop allows players to: + +- Buy items from the shop owner +- Pay money to receive items + +This is the most common shop type. + +--- + +## Buying Shop + +A Buying shop allows players to: + +- Sell items to the shop owner +- Receive money in exchange + +This is commonly used for: + +- Resource collection +- Server buy-back shops +- Automated material sinks + +--- + +## Frozen Shop + +A Frozen shop temporarily disables trading. + +While frozen: + +- No buying is allowed +- No selling is allowed +- The shop remains intact +- Staff or admins can manage it + +This is useful for: + +- Temporary suspensions +- Investigation +- Event locking +- Maintenance + +--- + +## Switching Shop Types + +Shop types can be changed through: + +- Control panel +- GUI control panel +- Admin commands + +Frozen mode is also available via: + +/qs freeze + +--- + +## Custom Shop Types + +As of 6.2.x, the system supports extensible shop types internally. + +While server owners use the built-in types, the system now allows future expansion through addons. + +--- + +## Summary + +Shop types allow you to: + +- Control how money flows +- Enable buy-back mechanics +- Temporarily disable shops +- Build advanced economic systems \ No newline at end of file diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md new file mode 100644 index 0000000000..18e0a47407 --- /dev/null +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md @@ -0,0 +1,217 @@ +# Sign Layout + +QuickShop allows you to fully customize how shop signs are structured. + +You can change: + +- What appears on each line +- The order of information +- Layout per shop type +- Whether certain lines are blank + +This gives you complete control over how shops look on your server. + +--- + +## How Sign Layout Works + +Shop signs have four lines. + +Instead of being hardcoded, QuickShop uses a configurable layout system. + +Each shop type can have its own layout: + +- SELLING +- BUYING +- FROZEN + +You define what each line displays using layout keys. + +--- + +## Configuration Location + +Sign layout is configured in `config.yml` under: + +```yaml +layout: +``` + +Example default configuration: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## Available Layout Keys + +Each line value refers to a built-in layout component. + +Common layout keys include: + +- `header` – The shop header line +- `trading` – Buy/Sell direction information +- `item` – Item name +- `price` – Shop price + +These keys are automatically formatted using your language file and formatting settings. + +--- + +## Leaving a Line Blank + +To leave a line empty, use: + +```yaml +line2: "" +``` + +This is useful if you want: + +- Minimalist signs +- Cleaner layouts +- Custom spacing +- Decorative formatting + +--- + +## Customizing Per Shop Type + +Each shop type can have a different layout. + +For example: + +```yaml +layout: + + SELLING: + line1: "header" + line2: "item" + line3: "price" + line4: "" + + BUYING: + line1: "header" + line2: "price" + line3: "item" + line4: "" + + FROZEN: + line1: "header" + line2: "" + line3: "item" + line4: "Frozen" +``` + +This allows you to visually differentiate: + +- Selling shops +- Buying shops +- Frozen shops + +--- + +## Practical Examples + +### Minimal Style + +```yaml +layout: + SELLING: + line1: "item" + line2: "price" + line3: "" + line4: "" +``` + +### Compact Economy Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "price" + line3: "item" + line4: "" +``` + +### Large Clear Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## How Updates Affect Layout + +When you change the layout: + +- Existing shop signs will update automatically when refreshed. +- New shops will use the updated format immediately. + +If needed, you can reload QuickShop to apply changes. + +--- + +## Best Practices + +- Keep important information visible (price and item). +- Avoid overly complex formatting. +- Test layout changes before deploying on large servers. +- Use different layouts for BUYING and SELLING to reduce confusion. + +--- + +## Common Questions + +### Can I add more than four lines? + +No. +Minecraft signs are limited to four lines. + +### Can I add colors? + +Colors are controlled by your language file and formatting settings. + +### Can I change layout without restarting? + +Yes, but reloading or refreshing shops is recommended to ensure full update. + +--- + +## Summary + +The Sign Layout system allows you to: + +- Fully customize shop sign appearance +- Create per-type layouts +- Simplify or expand shop information +- Improve clarity for players + +All layout customization is handled inside `config.yml`. diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md index abcc288db7..2a0d52d788 100644 --- a/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md @@ -8,19 +8,6 @@ This feature added in 6.0.0.0. By default, QuickShop-Hikari uses the default brand material from the configuration file, but you can modify it to other brands for your store with the command. -## Configuration - -```yaml - #The wall sign material. - #ACACIA_WALL_SIGN - #BIRCH_WALL_SIGN - #DARK_OAK_WALL_SIGN - #JUNGLE_WALL_SIGN - #OAK_WALL_SIGN - #SPRUCE_WALL_SIGN - sign-material: OAK_WALL_SIGN -``` - ## Change the material Use command `/quickshop sign ` to change your shop sign material. diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md new file mode 100644 index 0000000000..980bad10f2 --- /dev/null +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md @@ -0,0 +1,130 @@ +# Shop Sign Waxing + +QuickShop can automatically wax shop signs to prevent players from editing them manually. + +Waxing protects the integrity of your shop signs and helps prevent tampering, spoofing, and accidental modification. + +As of modern Minecraft versions, waxed signs cannot be edited unless they are unwaxed first. + +--- + +## What Is Sign Waxing? + +In Minecraft, waxing a sign locks it so that: + +- Players cannot edit the text +- Players cannot modify lines +- Accidental changes are prevented +- Malicious edits are blocked + +When enabled in QuickShop, shop signs are automatically waxed when created. + +--- + +## Why Use It? + +Sign waxing protects against: + +- Players editing price lines +- Changing item names on signs +- Spoofing shop information +- Accidental formatting issues +- Sign hijacking attempts + +On public servers, this feature is strongly recommended. + +--- + +## How It Works + +When a shop is created: + +1. QuickShop generates the shop sign. +2. The sign text is written. +3. The sign is automatically waxed (if enabled). + +If a shop is updated: + +- The sign will be safely updated by QuickShop. +- The wax state is maintained. + +Players cannot manually edit shop signs while waxing is enabled. + +--- + +## Configuration + +To enable or disable sign waxing, edit `config.yml`: + +```yaml +shop: + sign-wax: true +``` + +### true + +- Shop signs are automatically waxed. +- Players cannot edit the sign manually. + +### false + +- Shop signs behave like normal Minecraft signs. +- Players may edit them if permitted by the game. + +--- + +## Recommended Setting + +For most servers: + +```yaml +shop: + sign-wax: true +``` + +This ensures shop data stays accurate and secure. + +--- + +## Common Questions + +### Can admins still modify shop signs? + +QuickShop controls shop sign formatting. +Manual edits are not recommended. + +Admins should use: + +- Control panel +- Shop commands +- Direct configuration changes + +### Does waxing affect shop functionality? + +No. +Waxing only prevents manual text edits. +The shop continues to function normally. + +### Can players un-wax shop signs? + +No. +QuickShop manages the sign state automatically. + +--- + +## Best Practices + +- Keep sign-wax enabled on survival servers. +- Combine sign-wax with proper permissions. +- Avoid manually editing shop signs through other plugins. + +--- + +## Summary + +Sign Waxing: + +- Prevents tampering +- Requires no additional setup + +Enable it once and QuickShop handles the rest. \ No newline at end of file diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/shops/taxes.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/shops/taxes.md new file mode 100644 index 0000000000..1a273fd978 --- /dev/null +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/shops/taxes.md @@ -0,0 +1,92 @@ +# Taxation System + +QuickShop includes a taxation system designed to give server owners more flexibility and control over shop-based income. + +This system was revamped as of 6.2.0.11+ + +The new system allows you to: + +- Apply tax to shop owners +- Apply tax to buyers +- Apply tax to both +- Use progressive tax brackets +- Customize tax behavior in configuration + +This system replaces the legacy tax configuration. + +--- + +## How It Works + +During a transaction: + +1. The shop price is calculated. +2. Tax is calculated based on your configuration. +3. Tax is deducted from the configured target(s). +4. Remaining funds are distributed normally. + +You can configure: + +- Flat percentage tax +- Progressive tax based on player balance +- Tax accounts +- Distribution rules + +--- + +## Progressive Tax + +The new system allows you to tax based on balance brackets. + +Example concept: + +- 0 – 10,000 balance → 1% tax +- 10,000 – 100,000 → 2% tax +- 100,000+ → 3% tax + +This helps prevent extremely wealthy players from dominating the economy. + +--- + +## Who Pays the Tax? + +You can configure whether tax applies to: + +- The shop owner +- The buyer +- Both + +This gives you flexibility depending on your economy design. + +--- + +## Configuration + +All tax-related settings are located under the `shop-tax` section in `config.yml`. + +After updating to 6.2.0.11+, review your tax configuration carefully, as the old tax system has been replaced. + +--- + +## Why Use Tax? + +The taxation system can help: + +- Remove currency from circulation +- Fund server banks or towns +- Create sink mechanics +- Balance inflation +- Reward active players + +--- + +## Summary + +The new taxation system is: + +- Flexible +- Configurable +- Balance-aware +- Designed for modern economy servers + +Make sure to review your configuration after upgrading. \ No newline at end of file diff --git a/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md b/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md new file mode 100644 index 0000000000..247c24712d --- /dev/null +++ b/i18n/el-GR/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md @@ -0,0 +1,161 @@ +# WorldEdit & FAWE Support + +QuickShop includes built-in protection and integration for WorldEdit and FastAsyncWorldEdit (FAWE). + +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. + +You do not need to download or install any additional compatibility plugins. + +--- + +## What This Does + +WorldEdit and FAWE allow administrators and builders to: + +- Copy and paste regions +- Replace large areas of blocks +- Mass-delete regions +- Roll back areas +- Regenerate terrain + +Without protection, these operations could: + +- Create ghost shops +- Leave orphaned shop data in the database +- Duplicate shops unintentionally +- Delete containers without cleaning up shop data +- Cause inconsistencies between world and database + +QuickShop now automatically detects and safely processes WorldEdit and FAWE operations. + +--- + +## Built-In Behavior + +When WorldEdit or FAWE modifies blocks: + +- Shops removed via WorldEdit are properly deleted from the database. +- Shop data stays synchronized with world changes. +- Ghost shops are prevented. +- Mass block replacements will not leave broken shop entries behind. + +This applies to: + +- //set +- //replace +- //cut +- //paste +- //regen +- Region deletion +- Mass container removal + +No configuration is required. + +--- + +## FAWE Support + +FastAsyncWorldEdit (FAWE) is fully supported. + +Because FAWE processes edits asynchronously, QuickShop handles: + +- Region-thread safe processing +- Async block updates +- Safe shop deletion during batch edits + +You do not need to enable anything manually. + +--- + +## Removing Shops with WorldEdit + +If you delete containers (chests, barrels, etc.) using WorldEdit: + +QuickShop will automatically: + +- Detect the block removal +- Unregister the shop +- Clean the database entry +- Prevent ghost shops + +You do not need to run `/qs cleanghost` after WorldEdit usage in normal circumstances. + +--- + +## Copying and Pasting Shops + +If you copy and paste regions that contain shops: + +- Shop data will not duplicate incorrectly. +- Shop IDs remain consistent. +- Invalid pasted shops will not auto-register unless properly created. + +This prevents accidental duplication exploits. + +--- + +## Performance + +WorldEdit and FAWE operations can modify thousands of blocks at once. + +QuickShop processes these safely and efficiently: + +- Batch-aware cleanup +- Thread-safe region access (especially on Folia) +- Minimal performance impact during mass edits + +--- + +## Configuration + +There are no specific WorldEdit configuration options in QuickShop. + +Support is automatic and always enabled if WorldEdit or FAWE is detected. + +If WorldEdit is not installed, no extra code is executed. + +--- + +## Common Questions + +### Do I need the old WorldEdit compatibility jar? + +No. + +As of 6.2.0.11, WorldEdit support is built-in and the separate compatibility module has been removed. + +### Does this work with FAWE? + +Yes. FAWE is fully supported. + +### Will shops break if I use //set air? + +No. Shops will be safely removed and cleaned up. + +### Do I need to restart after installing WorldEdit? + +No. QuickShop detects WorldEdit automatically on startup. + +--- + +## Best Practices + +Even though QuickShop safely handles WorldEdit operations, it is recommended to: + +- Avoid copying shops intentionally unless required +- Use backups before large region edits +- Test large FAWE operations on staging servers when possible + +--- + +## Summary + +QuickShop’s built-in WorldEdit and FAWE integration ensures: + +- Safe mass edits +- No ghost shops +- Automatic database cleanup +- Thread-safe processing +- No extra modules required + +WorldEdit support is now a core feature of QuickShop. \ No newline at end of file diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/addon/limited.md b/i18n/en-US/docusaurus-plugin-content-docs/current/addon/limited.md index 70af27e240..fae55a8c95 100644 --- a/i18n/en-US/docusaurus-plugin-content-docs/current/addon/limited.md +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/addon/limited.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -41,8 +35,8 @@ Limit players to purchase up to 16 items per month. /quickshop limit period MONTH ``` -The system is based on the QuickShop-Hikari calendar system.\ -The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year.\ +The system is based on the QuickShop-Hikari calendar system. +The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year. Same for days, months and hours. Available time units: diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/addon/list.md b/i18n/en-US/docusaurus-plugin-content-docs/current/addon/list.md index 93d182f083..f20b91fd7b 100644 --- a/i18n/en-US/docusaurus-plugin-content-docs/current/addon/list.md +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/addon/list.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/addon/plan.md b/i18n/en-US/docusaurus-plugin-content-docs/current/addon/plan.md index 52a6e79cb4..c10ef4df42 100644 --- a/i18n/en-US/docusaurus-plugin-content-docs/current/addon/plan.md +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/addon/plan.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -18,7 +18,7 @@ Recorded data can be displayed from Hikari v2.0.0.0 onwards, but only after vers - All shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 1000 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `5` in server scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `5` in server scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Player Scope @@ -27,7 +27,7 @@ And still is Plan limitations, the list sorting is disturbed, so the display ord - All owned shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 50 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `4` in player scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `4` in player scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Showcase diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/addon/reforges.md b/i18n/en-US/docusaurus-plugin-content-docs/current/addon/reforges.md index 2a14509eb7..25fff1752a 100644 --- a/i18n/en-US/docusaurus-plugin-content-docs/current/addon/reforges.md +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/addon/reforges.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.0.0.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md b/i18n/en-US/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md index 304d39bc05..6f9f51d250 100644 --- a/i18n/en-US/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.1.1.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -44,7 +38,7 @@ _This is not necessary if you are using an H2 database._ ### Prepare for convert -To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console.\ +To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console. If a player is in the server, the conversion cannot be started. Once the conversion has begun, the server will be locked during the conversion process and no players will be able to join the server during the conversion. diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/addon/shopitemonly.md b/i18n/en-US/docusaurus-plugin-content-docs/current/addon/shopitemonly.md index c45062f8c2..1ccfe977b3 100644 --- a/i18n/en-US/docusaurus-plugin-content-docs/current/addon/shopitemonly.md +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/addon/shopitemonly.md @@ -2,17 +2,11 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT - -::: - -This addon prevents players from putting non-store items into store containers.\ +This addon prevents players from putting non-store items into store containers. Does not apply to stores that use the item inventory redirection API (aka. InventoryWrapper API). This Addon will check for container (or transferring) items on events such as the player closing the container or hopper access. diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md b/i18n/en-US/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md new file mode 100644 index 0000000000..9c8b4f7407 --- /dev/null +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md @@ -0,0 +1,55 @@ +# 6.2.0.10 + +## Major Changes + +- Added support for 1.21.6 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.7 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.8 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Some internal updates for packetevents(2.9.0 is now required.) +- Updated Lands support + +## Addon Changes + +- Added MatcherPlus Addon + - Allows support for BreweryX and AdvancedItems stacks in shops with improved matching abilities +- Added FabledSkyblock Compat +- Added Dominion Compat +- Added HuskTowns Compat +- Added IridiumSkyblock Compat +- Added member-create for member creation in ARM compat +- Added admin-override and quickshop.arm.admin permission for admin overrides in ARM + +## Minor Changes + +- Added configurations for the coordinates of the display item. +- Added /qs toggledisplayall on/off server/owned + - Players need to have permission node quickshop.toggledisplayall.admin to toggle all on the server. +- Added ability to use abbreviations in /qs price and /qs create commands such as 2.5k for 2500 +- Added ability to set default display status using shop.default-display in config.yml + +## Fixes + +- Fixed issue with display item being sent to the moon on 1.21.5 +- Fixed issue where TRADE_UI interactions interfered with quick create. +- Fixed issue with displays on protocollib falling through the chest +- Fixed issue with signs on .9 and previous .10 snapshots on early versions +- Implemented some performance improvements for paper servers +- Fixed all outstanding issues with Folia usage.(thanks to RootB33R/SleazLee for contributions) + +## Possible 6.2.0.11 Features + +Here's an outline for some features that may arrive in 6.2.0.11: + +- Additional compats/addons that have been piling up. + - see: https://github.com/QuickShop-Community/QuickShop-Hikari/issues/1756 +- gradle?(interested to see compilation time uplifts) +- Update documentation +- Update configuration comments +- Update configuration system? + - auto updating? + - Allows removal of the update code +- Remove waste spigot modules? + - Any versions of 1.20 that can be discarded due to low use? +- Bug fixing, of course +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... \ No newline at end of file diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md b/i18n/en-US/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md new file mode 100644 index 0000000000..b41c88662a --- /dev/null +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md @@ -0,0 +1,173 @@ +## Outline + +- Update documentation +- Update configuration comments +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... + +# 6.2.0.11 + +## Major Changes + +- Removed Spigot Platform Modules, and stopped loading QS if Spigot is detected. This will mean that unless the protocol changes that we use for display items, QS won't need updated for each version. +- Revamped Economy Code Completely + - New classes for all economy-related systems + - Any economy-related or benefits-related events are incompatible with previous versions. +- Added sign layout customizations per-type allowing you to change how lines are configured, an empty string('') will leave an empty line for that line of the sign. + +``` + #The layout of signs for shops. + layout: + + #The layout of BUYING shops. + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of FROZEN shops. + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of SELLING shops. + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +- Add wildcard support for item blacklist patterns(thanks to bennycallanan) + - Added support for wildcard patterns in the item blacklist configuration, allowing users to block entire categories of items with simple patterns. + + - Features + - Wildcard patterns like \*_AXE and \*_SPAWN_EGG now work in blacklist configuration + - Supports \* for any characters and ? for single character matching + - Case-insensitive pattern matching +- Overhauled GUI system(thanks to Yusakidev) + - Implemented gui.yml configuration file for customizing the GUI. + - Implemented better filtering for qs browse + - Implement GUI system to be more stable, and less error prone. + - Added gui.yml for fully configurable GUI layouts and text + - Browse menu: search, sort (price/name/stock), and filter (all/buying/selling/in-stock) + - Staff menu: search functionality for player/staff selection + - Grouped item pages for better shop browsing + - Refactored all menu pages to use configurable display/lore +- Added worldedit compat to QS internally as it's widely used. +- Revamped the taxation system to be more flexible and easier to configure. + - introduced a new progressive tax system that allows you to tax based on the balance of players.(suggested by YuanYuanOwO) + - introduced the ability to tax the player interacting with the shop, the owner, or both + - all tax-related configurations have been moved under the shop-tax section of the config. this may require reconfiguration of your tax settings. + - added a new ShopEnhancedTaxEvent, deprecated the old ShopTaxEvent. + - Added a new TaxManager, and TaxProvider interfaces, this allows for custom tax providers to be added by addons/third-party developers. + +## Addons/Compats Changes + +- Added UltimateClaims compat +- Added SimpleClaimSystem compat +- Added Quests by Pika addon +- Added BetonQuest addon +- Added Pl3xMap addon +- MatcherPlus Compat Improvements + - Added support for CrazyCrates + - Added support for ExcellentCrates + - Added support for SilkSpawners. +- WorldGuard Compat Improvements(Thanks to golovin12) + - Added clear permission handling: + - Region owners and members automatically have permission to create and trade in their own regions. + - Other players must have the appropriate WorldGuard flags enabled (quickshophikari-create, quickshophikari-trade) to interact with shops. + - If a shop is located outside any region, default QuickShop behavior applies (no extra restrictions) +- Added colored markers based on shop state for bluemap(thanks to YusakiDev) +- Updated dynmap/towny addons to use the new ShopTypeEnhancedEvent instead of ShopTypeEvent. +- Removed worldedit compat, it's now included in the main plugin. +- Added support for global flags to the worldguard compat. + +## Internals/Developer APIs + +- Removed several deprecated methods and classes. +- Revamped the interaction manager. It is now more flexible and allows external additions + - This involves two classes InteractionBehavior and InteractionType. + - InteractionType details the type of interaction such as: STANDING_LEFT_CLICK_SIGN, STANDING_LEFT_CLICK_SHOP + - InteractionBehavior outlines a behavior for an InteractionType such as CONTROL_PANEL and TRADE_UI +- Added UserLimitCalculationEvent, which allows for custom limits to be applied to users. + - This is useful for limiting the number of shops a user can have, or adding on to the existing limits provided by the ranks system without needing to implement a new RankLimiter. +- Added a new ShopLayoutProvider interface, and default implementation. + - This allows for custom layouts to be used for shops, allowing for more customization. + - This also allows for developers to override the default layout provider and create their own implementation. +- How to make your own? + - Implement the classes you would like to then register with the InteractionManager: + - ```java + InteractionManager manager = QuickShop.getInstance().getInteractionManager(); + + manager.interaction(new MyTradeInteraction()); + manager.behavior(new MyTradeBehavior()); + ``` +- Replaced some Apache Commons calls that could be easily replaced with built-in java methods, reduces some calls by ~ 1100ms/method call +- Deprecated the ShopType enum, and the ShopTypeEvent. These are replaced with the new IShopType interface and implementing classes. + - The new event is ShopTypeEnhancedEvent. + - This allows for third-party addons to add their own shop types, and simplifies code checks for translations. +- Updated config system to use Boosted-yaml + - this allows for auto-updating of config files without complex update scripts + - this also allows for the config system to not be minecraft-dependent. +- Replaced logical PaperLib calls with native PaperAPI calls. + +## Minor Changes + +- Bump Java version up to 21 +- Added shop.display-allow-enchants to enable/disable enchantments for display items on shops. +- Added workaround for packetevents not supporting custom enchants on itemstacks for virtual display items. +- Using locale translations for shop-type in mode toggle icon(thanks to ExyiN) +- Bumped Residence version for the compat(thanks to YuanYuanOwO) +- add world whitelist support(thanks to wling-art) +- added /qs database save command, which saves all currently dirty-marked shops to the database. +- Split up interactions _SHOPBLOCK into _SHOPBLOCK and _CONTAINER. + - _SHOPBLOCK relates to shops, where _CONTAINER relates to shop-valid containers that are not currently shops. +- Added inventory as an option for command panel, this is useful for adding a secondary option for players to open a shop's inventory. +- Moved crowdin arguments from system properties to config.yml + - crowdin-host + - use-crowdin-ota + +## Fixes + +- Fixes issue with item price restrictions(thanks to maxcom1) +- Fixes issue with 1.20.x protocol lib displays(thanks to YuanYuanOwO) +- Fixes issue when no item is in hand for itemdebug(thanks to YuanYuanOwO) +- Fixes issue with dominion addon(thanks to YuanYuanOwO) +- Add a simple check to avoid this. If it is not own shop, reject limit request directly.(Thanks to YuanYuanOwO) +- Fix NPE by not setting tax for price in TransactionBuilder(thanks to maxcom1) +- Fixes /quickshop suggestprice to differentiate between buy/sell shops. (Thanks to MidSpike) +- PacketEvents ClassNotFoundException with ProtocolLib(thanks to wling-art) +- Reallocate block state access to region thread for shop creation(thanks to r00tbeerman) +- resolve SLF4J StaticLoggerBinder loading error(thanks to wling-art) +- sign hijacking issue by validating sign facing direction(thanks to wling-art) +- Performance improvements for QuickShop disabling to prevent potential freezes. +- Fixed issue with 1.20.4 packetevents virtual displays not staying put. +- Fixes critical issue in GriefPrevention compatibility plugin. +- Fixes issue with shop owner not getting money when benefits active. +- Fixes for lands addon on folia, Use regionThread for Folia compatibility(thanks to YusakiDev) +- Fixes for TRADE_DIRECT on stacking shops +- Fixes issue for protocollib 5.4.0 with undocumented packet changes. +- Fixes issue where item stacks could be used on creation above the max stack size. +- Fixes issue with BukkitAudiences-related crashes on 1.21.11. +- Fix issue with shop deletion when getting too impatient. +- Fix the permission check issue when a shop owned by a non-owner is transferred to someone else. (thanks to YuanYuanOwO) +- Fix ui with supertool (thanks to YuanYuanOwO) +- Fix issue with logs generating outside debug mode. +- Fix issue with /qs find. +- Fix configuration loading timing. +- Fix configuration loading/creation warning message language. +- Fix command description language key mismatch(thanks to wling-art) +- Fix qs clean command on folia(thanks to wling-art) +- Fix per-player-shop-sign on folia(thanks to wling-art) +- Fix potential recursive deadlock in virtual display packet sending(thanks to wling-art) +- Fix configuration loading/creation warning message language. +- Fix issue with /qs browse and ShopItemOnly addon not behaving properly together on folia. +- Fix issue with PLAN using outdated APIs. +- Fix issue with /qs clean on folia.(thanks to wling-art) +- Fix issue with /qs cleanghost on folia(thanks to wling-art) +- More thread safety fixes for shops on folia.(thanks to wling-art) +- Fix owner payment calculations with benefits(thanks to wling-art) \ No newline at end of file diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md b/i18n/en-US/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md index 8172f9b410..dcc3edc67d 100644 --- a/i18n/en-US/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md @@ -20,20 +20,20 @@ the ControlComponent object with a custom one that will replace the original dur ### Introduction of the Revamped Packet System 1. **About**: - - A modular and scalable system for managing packets related to virtual display items in Minecraft. - - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. + - A modular and scalable system for managing packets related to virtual display items in Minecraft. + - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. 2. **Custom Packet Factories**: - - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. - - Packet types: - - **Spawn Packet**: Spawns a virtual item entity at a specific location. - - **Metadata Packet**: Updates the visual properties of virtual items. - - **Velocity Packet**: Adds motion/velocity to entities (currently optional). - - **Destroy Packet**: Removes the entity from the client view. + - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. + - Packet types: + - **Spawn Packet**: Spawns a virtual item entity at a specific location. + - **Metadata Packet**: Updates the visual properties of virtual items. + - **Velocity Packet**: Adds motion/velocity to entities (currently optional). + - **Destroy Packet**: Removes the entity from the client view. 3. **Error Handling and Logging**: - - Enhanced debug logs to trace packet-related issues. - - Detailed error messages for missing factories or unregistered listeners. + - Enhanced debug logs to trace packet-related issues. + - Detailed error messages for missing factories or unregistered listeners. #### Improvements: diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md b/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md index 7775308722..c6e0948d19 100644 --- a/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md b/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md index f420997a9c..38587e3784 100644 --- a/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md b/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md index 5ed8182c9a..259c55f342 100644 --- a/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md b/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md index 924a37ac49..7fd4596a6a 100644 --- a/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,6 +10,6 @@ This is a BungeeCord plugin, you need install it within your BungeeCord's plugin ## How does it work? -BungeeCord Bridge plugins will register a `quickshop:bungee` channel for fowarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. +BungeeCord Bridge plugins will register a `quickshop:bungee` channel for forwarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. All forwarding is indicated by QuickShop-Hikari on the Spigot server and ends when it is not needed. diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md b/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md index 27d68956a8..20fbaf7a0c 100644 --- a/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,5 +10,5 @@ This compatibility module added [Chest Protect](https://www.spigotmc.org/resourc ## How does it work? -This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident.\ +This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident. It also prevents players from creating shops on ChestProtect protected containers. diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md b/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md index 220e26d8bb..e1757e7be9 100644 --- a/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/dominion.md b/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/dominion.md new file mode 100644 index 0000000000..e1195278a8 --- /dev/null +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/dominion.md @@ -0,0 +1,138 @@ +# Dominion + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and Dominion. + +It ensures that shop creation and trading respect Dominion’s land and territory protection system. + +--- + +## What Does It Do? + +Dominion allows players or groups to claim land and define territory-based permissions. + +Without compatibility: + +- Players could create shops inside territories they do not control. +- Visitors might trade inside protected dominions. +- Dominion permission rules might not apply to shop interactions. + +The Dominion compat module ensures that: + +- Shop creation respects territory ownership. +- Shop trading follows Dominion permission settings. +- Protected land remains secure from unauthorized shop usage. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a Dominion-controlled area. +- Whether the player has permission within that territory. +- Whether Dominion rules allow shop interaction. + +If the action is not permitted by Dominion settings, QuickShop blocks it. + +If the location is outside any Dominion territory, default QuickShop behavior applies. + +--- + +## Territory Owner Control + +With this module enabled: + +- Territory owners can create and manage shops inside their dominion. +- Trusted members follow territory-based permissions. +- Outsiders are restricted unless explicitly allowed. +- Shop actions respect Dominion’s land rules automatically. + +This prevents unauthorized shop placement inside protected territories. + +--- + +## Installation + +1. Install Dominion. +2. Install the QuickShop Dominion compat module. +3. Restart your server. + +The module activates automatically if Dominion is detected. + +No manual configuration linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside dominions +whitelist-mode: false + +# Allow territory owners to override shop permissions +allow-owner-override: true +``` + +If Dominion is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For servers using Dominion: + +- Restrict shop creation to territory owners or trusted members. +- Prevent shop creation in wilderness if desired. +- Allow dominion owners to manage shop permissions. +- Review Dominion permission settings to align with shop behavior. + +This ensures protected territories remain secure and organized. + +--- + +## Common Questions + +### Can players create shops in someone else's dominion? + +Only if Dominion permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You may allow or restrict shops outside dominions. + +### What happens if Dominion is removed? + +QuickShop returns to normal behavior and stops checking Dominion territories. + +--- + +## Summary + +The Dominion compat module: + +- Enforces territory-based permissions +- Prevents unauthorized shop creation +- Protects claimed land from misuse +- Integrates seamlessly with Dominion + +It is recommended for servers running Dominion. \ No newline at end of file diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md b/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md index 743d3ae666..2ac9b10488 100644 --- a/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md b/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md new file mode 100644 index 0000000000..07ba4ada66 --- /dev/null +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md @@ -0,0 +1,133 @@ +# FabledSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and FabledSkyblock. + +It ensures that shop creation and trading properly respect island boundaries and island permissions. + +--- + +## What Does It Do? + +On Skyblock servers, players build and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Players might trade in areas they should not. +- Island protection rules might not apply to shops. + +The FabledSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members behave correctly with shops. +- Island visitors are restricted appropriately. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a FabledSkyblock island. +- Whether the player has permission on that island. +- Whether island settings allow the action. + +If the action is not permitted by island rules, QuickShop will deny it. + +--- + +## Island Ownership Rules + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow island permission settings. +- Visitors can only trade if island permissions allow it. +- Outside of islands, default QuickShop behavior applies. + +--- + +## Installation + +1. Install FabledSkyblock. +2. Install the QuickShop FabledSkyblock compat module. +3. Restart your server. + +The module activates automatically if FabledSkyblock is detected. + +No manual linking is required. + +--- + +## Configuration + +If the module provides configuration options, they will appear in its `config.yml`. + +Typical options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If FabledSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most Skyblock servers: + +- Allow shop creation only inside islands. +- Prevent trading in the void or wilderness. +- Let island owners control shop permissions. +- Use island rank systems to manage shop access. + +This helps maintain economic balance between islands. + +--- + +## Common Questions + +### Can players create shops in the void? + +Only if your configuration allows it. +Most servers disable shop creation outside islands. + +### Does this affect island war or PvP modes? + +No. +The module only checks island ownership and permissions for shop interactions. + +### What happens if FabledSkyblock is removed? + +QuickShop returns to normal behavior. + +--- + +## Summary + +The FabledSkyblock compat module: + +- Protects island economies +- Enforces island permission rules +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is strongly recommended for any server running FabledSkyblock. \ No newline at end of file diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md b/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md index 81b13d2c6b..32614d3019 100644 --- a/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md @@ -2,17 +2,17 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -GreifPrevention compatibility module added compaitibility with GF. +GreifPrevention compatibility module added compatibility with GF. ## How does it work This module allow QuickShop-Hikari check if player have permission to create or use QuickShop in specific region. -And delete shops when claim removed, untrusted, unclimed, expired, resized or subclaim created. +And delete shops when claim removed, untrusted, unclaimed, expired, resized or subclaim created. ## Configuration diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md b/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md new file mode 100644 index 0000000000..e71b34d462 --- /dev/null +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md @@ -0,0 +1,139 @@ +# HuskTowns + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and HuskTowns. + +It ensures that shop creation and trading respect town and claim permissions defined by HuskTowns. + +--- + +## What Does It Do? + +HuskTowns allows players to create towns and claim land. + +Without compatibility: + +- Players could create shops inside towns they do not belong to. +- Visitors might trade inside protected towns. +- Town permission rules might not apply to shop interactions. + +The HuskTowns compat module ensures that: + +- Shop creation respects town ownership. +- Trading follows town permission settings. +- Town members and visitors are handled correctly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a HuskTowns claim. +- Whether the player is a town member, trusted player, or outsider. +- Whether the town's permission settings allow the action. + +If the action is not permitted by town rules, QuickShop blocks it. + +Outside of town claims, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Town Owner Control + +With this module enabled: + +- Town owners can create and manage shops inside their town. +- Town members follow town-based permission settings. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect town claim protection. + +This prevents unauthorized shop placement and trading inside protected towns. + +--- + +## Installation + +1. Install HuskTowns. +2. Install the QuickShop HuskTowns compat module. +3. Restart your server. + +The module activates automatically if HuskTowns is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside towns +whitelist-mode: false + +# Allow town owners to override shop permissions +allow-owner-override: true +``` + +If HuskTowns is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For town-based survival servers: + +- Restrict shop creation to town members. +- Allow trading only where town permissions permit. +- Prevent shop creation in wilderness if desired. +- Enable owner override for better administrative control. + +This helps maintain town-based economic balance. + +--- + +## Common Questions + +### Can players create shops in another town? + +Only if that town's permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You can allow or restrict shops outside towns. + +### What happens if HuskTowns is removed? + +QuickShop returns to normal behavior and stops checking town permissions. + +--- + +## Summary + +The HuskTowns compat module: + +- Enforces town-based land permissions +- Protects towns from unauthorized shop usage +- Integrates smoothly with HuskTowns +- Requires minimal setup + +It is recommended for any server running HuskTowns. \ No newline at end of file diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md b/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md new file mode 100644 index 0000000000..3fa2995eb0 --- /dev/null +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md @@ -0,0 +1,139 @@ +# IridiumSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and IridiumSkyblock. + +It ensures that shop creation and trading respect island boundaries and island permission settings defined by IridiumSkyblock. + +--- + +## What Does It Do? + +IridiumSkyblock allows players to create and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Visitors might trade inside protected islands. +- Island protection rules might not apply correctly to shops. + +The IridiumSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members and visitors are handled properly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside an IridiumSkyblock island. +- Whether the player is the island owner, member, or visitor. +- Whether island permissions allow shop interaction. + +If the action is not permitted, QuickShop blocks it. + +Outside of islands, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Island Owner Permissions + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow the island's permission configuration. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect island protection rules. + +This prevents unauthorized shop usage inside protected islands. + +--- + +## Installation + +1. Install IridiumSkyblock. +2. Install the QuickShop IridiumSkyblock compat module. +3. Restart your server. + +The module activates automatically if IridiumSkyblock is detected. + +No additional setup is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If IridiumSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most IridiumSkyblock servers: + +- Restrict shop creation to island owners. +- Allow island members to trade if trusted. +- Prevent shop creation in the void or wilderness. +- Enable owner override for better management. + +This helps maintain balanced island economies. + +--- + +## Common Questions + +### Can players create shops outside their island? + +Only if your configuration allows it. + +Most Skyblock servers restrict shops to island areas. + +### Do island ranks affect shop permissions? + +Yes, if your island permissions are configured to control interaction rights. + +QuickShop follows island rules. + +### What happens if IridiumSkyblock is removed? + +QuickShop returns to normal behavior and stops checking island permissions. + +--- + +## Summary + +The IridiumSkyblock compat module: + +- Protects island economies +- Enforces island-based permissions +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is recommended for any server running IridiumSkyblock. diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md b/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md new file mode 100644 index 0000000000..3b4726cb9d --- /dev/null +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md @@ -0,0 +1,151 @@ +# ItemMatcherPlus + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +The ItemMatcherPlus module improves how QuickShop matches custom and plugin-modified items. + +It allows QuickShop to properly recognize and stack items created by other plugins that normally would not match using standard Bukkit item comparisons. + +This module is especially useful for servers that use: + +- Custom items +- Modified metadata +- NBT-based systems +- Advanced crate rewards +- Custom brewing systems +- Custom fishing rewards + +--- + +## What Does It Do? + +By default, Minecraft item matching checks: + +- Material type +- Basic metadata + +However, many plugins modify items with: + +- Custom NBT data +- Hidden tags +- Custom lore formats +- Unique identifiers + +Without enhanced matching: + +- Items may not stack +- Shops may refuse valid items +- Transactions may fail +- Buying/selling may not behave correctly + +ItemMatcherPlus improves compatibility and matching accuracy. + +--- + +## Supported Plugins + +ItemMatcherPlus includes built-in support for: + +- AdvancedItems +- BreweryX +- CrazyCrates +- ExcellentCrates +- PyroFishing +- SilkSpawners + +If any of these plugins are installed, QuickShop will automatically use enhanced matching logic. + +No additional configuration is required. + +--- + +## How It Works + +When a player trades with a shop: + +1. QuickShop checks the item. +2. If ItemMatcherPlus is enabled, it performs advanced matching. +3. Plugin-specific metadata is validated. +4. The item is confirmed as a match (or rejected safely). + +This allows: + +- Proper stacking of custom items +- Correct shop transactions +- Accurate buy/sell detection +- Reduced false mismatches + +--- + +## Installation + +1. Download the ItemMatcherPlus module. +2. Place the JAR into your `plugins` folder. +3. Restart your server. + +If supported plugins are detected, compatibility activates automatically. + +--- + +## Configuration + +ItemMatcherPlus does not require configuration. + +It activates automatically when: + +- The module is installed +- A supported plugin is detected + +If a supported plugin is not installed, no extra logic runs. + +--- + +## Why You Should Use It + +You should install ItemMatcherPlus if your server uses: + +- Custom fishing plugins +- Custom brewing systems +- Crate plugins with modified items +- Custom spawners +- Any plugin that modifies NBT data + +Without it, shops may not properly recognize custom items. + +--- + +## Common Questions + +### Do I need this if I don't use custom item plugins? + +No. +If you only use vanilla items, this module is not necessary. + +### Does this affect performance? + +The module only activates enhanced matching when needed. + +Normal item matching remains fast and efficient. + +### Will it break existing shops? + +No. +It improves compatibility and matching accuracy without modifying existing shop data. + +--- + +## Summary + +ItemMatcherPlus: + +- Improves item matching accuracy +- Adds support for major custom item plugins +- Prevents stacking and trade issues +- Requires no configuration +- Activates automatically + +If you run a heavily customized economy server, this module is highly recommended. \ No newline at end of file diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md b/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md index ba87606698..d4ae7d129a 100644 --- a/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/lands.md b/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/lands.md index 06296f5779..7671fcdfe0 100644 --- a/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/lands.md +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/lands.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/openinv.md b/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/openinv.md index c51f628615..4807d57873 100644 --- a/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/openinv.md +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/openinv.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md b/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md new file mode 100644 index 0000000000..c2136320b0 --- /dev/null +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md @@ -0,0 +1,138 @@ +# SimpleClaimSystem + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and SimpleClaimSystem. + +It ensures that shop creation and trading respect land ownership and claim permissions defined by SimpleClaimSystem. + +--- + +## What Does It Do? + +SimpleClaimSystem allows players to claim land and protect it from unauthorized interaction. + +Without compatibility: + +- Players could create shops inside claims they do not own. +- Visitors might trade inside protected areas. +- Claim protection might not apply correctly to shops. + +The SimpleClaimSystem compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops within their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a SimpleClaimSystem claim. +- Whether the player has permission within that claim. +- Whether claim rules allow shop interaction. + +If the action is not permitted by the claim, QuickShop blocks it. + +If the location is outside any claim, default QuickShop behavior applies. + +--- + +## Claim Owner Control + +With this module enabled: + +- Claim owners can create and manage shops inside their claim. +- Trusted players follow claim-based permissions. +- Visitors are restricted unless explicitly allowed. +- Claim protection rules apply automatically to shop interactions. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install SimpleClaimSystem. +2. Install the QuickShop SimpleClaimSystem compat module. +3. Restart your server. + +The module activates automatically if SimpleClaimSystem is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If SimpleClaimSystem is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Enable owner override for easier management. + +This ensures players maintain control over their protected land. + +--- + +## Common Questions + +### Can players create shops in someone else's claim? + +Only if claim permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can allow shops outside claims or restrict them. + +### What happens if SimpleClaimSystem is removed? + +QuickShop will revert to default behavior and stop checking claim permissions. + +--- + +## Summary + +The SimpleClaimSystem compat module: + +- Enforces claim-based permissions +- Prevents unauthorized shop creation +- Protects land from unwanted trading +- Requires minimal setup + +It is recommended for servers running SimpleClaimSystem. \ No newline at end of file diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md b/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md index a84dbf057b..4dfa8ae97c 100644 --- a/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/towny.md b/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/towny.md index 52ab4818f4..b26c19d335 100644 --- a/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/towny.md +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/towny.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -26,7 +26,7 @@ Town sub-command allow you switch a quickshop between regular shop and town shop For a nation shop, the shop owner will changed to nation fake player created by Towny, and use Nation's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from nation Towny account.\ +All purchases will deposit or withdraw money from nation Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Nation Shop. @@ -35,7 +35,7 @@ If Plot type restriction is enabled, only a specific Plot type can create a Nati For a town shop, the shop owner will changed to town fake player created by Towny, and use Town's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from town Towny account.\ +All purchases will deposit or withdraw money from town Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Town Shop. @@ -88,7 +88,7 @@ bank-mode: ## Permission Override -By adjust configuration, you're allow mayor or king automaticlly grant administrator permission on all shops in their management range. +By adjust configuration, you're allow mayor or king automatically grant administrator permission on all shops in their management range. ```yaml #Should allow Mayor grant the shop administrator permission on they town. @@ -168,7 +168,7 @@ This causes Towny and QuickShop Hikari to use accounts with the same name but di You can adjust the option in configuration to enable workaround. -NOTE: It will force turned on if detected EssentialsX installed on your server.\ +NOTE: It will force turned on if detected EssentialsX installed on your server. At present, we do not provide a method for disable it. ```yaml diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md b/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md new file mode 100644 index 0000000000..0189958495 --- /dev/null +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md @@ -0,0 +1,138 @@ +# UltimateClaims + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and UltimateClaims. + +It ensures that shop creation and trading respect land claim permissions managed by UltimateClaims. + +--- + +## What Does It Do? + +On servers using land-claim plugins, players protect areas of the world from unauthorized interaction. + +Without compatibility: + +- Players may create shops inside claims they do not own. +- Visitors might trade in areas where they should not. +- Claim protection rules might not apply correctly to shops. + +The UltimateClaims compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops inside their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a claim. +- Whether the player has permission in that claim. +- Whether claim rules allow shop interaction. + +If the action violates claim settings, QuickShop blocks it. + +Outside of claims, normal QuickShop behavior applies. + +--- + +## Claim Owner Permissions + +With this module enabled: + +- Claim owners can create and manage shops within their claim. +- Trusted players follow claim permission settings. +- Visitors are restricted based on claim configuration. +- Shop actions outside of claims behave normally. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install UltimateClaims. +2. Install the QuickShop UltimateClaims compat module. +3. Restart your server. + +If UltimateClaims is detected on startup, compatibility activates automatically. + +No additional linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Common options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If UltimateClaims is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Keep owner override enabled for better control. + +This ensures players maintain full control over their protected land. + +--- + +## Common Questions + +### Can players create shops inside someone else's claim? + +Only if the claim permissions allow it. + +Otherwise, QuickShop will block the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can choose to restrict shops to claimed land only. + +### What happens if UltimateClaims is removed? + +QuickShop returns to normal behavior without claim checks. + +--- + +## Summary + +The UltimateClaims compat module: + +- Protects claimed land from unauthorized shop usage +- Enforces claim-based permissions +- Integrates smoothly with land-claim servers +- Requires minimal setup + +It is recommended for any server running UltimateClaims. \ No newline at end of file diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md b/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md index 87a71a205c..6437754503 100644 --- a/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md @@ -2,8 +2,10 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. Find out more [here](../modules/shops/worldedit.md). + +Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. \ No newline at end of file diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/development/01-getting-start.md b/i18n/en-US/docusaurus-plugin-content-docs/current/development/01-getting-start.md index 92b773451e..0e78e52367 100644 --- a/i18n/en-US/docusaurus-plugin-content-docs/current/development/01-getting-start.md +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/development/01-getting-start.md @@ -6,8 +6,8 @@ This series of articles will help you build extensions for QuickShop-Hikari or i ## License -QuickShop-Hikari is open source using the [GPLv3](https://www.gnu.org/licenses/quick-guide-gplv3.en.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari).\ -You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the GPLv3 agreement. +QuickShop-Hikari is open source using the [AGPLv3](https://www.gnu.org/licenses/agpl-3.0.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari). +You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the AGPLv3 agreement. ## 🚧Don't trust Javadoc too much @@ -48,7 +48,7 @@ QuickShop-Hikari divides operation sources into three types: - Server Main Thread - Async Thread (any other threads but not server main thread) -- Hybird +- Hybrid If you access the API through the wrong thread, QuickShop-Hikari will force a runtime error to be thrown. @@ -58,4 +58,4 @@ For APIs that may trigger network IO or long-time disk IO, you are required not You can see [Util.ensureThread()](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/3d1d271e1106ea1c83cc6068f8232ab7c7860918/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/util/Util.java#L351) and find out the requirements of the different APIs by looking up their use. APIs that do not use Util.ensureThread() are allowed to be called from any thread by default. -You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. +You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. \ No newline at end of file diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md b/i18n/en-US/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md index aa2404c594..7828d414ad 100644 --- a/i18n/en-US/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md @@ -10,7 +10,7 @@ ShopManager manager = api.getShopManager(); ## Getting a shop -Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates.\ +Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates. QuickShop-Hikari's store is only bound to one half of "Large Chest", so to get the store, you need to query both the cube itself and its associated cube. The good thing is that there is an API in the plugin that allows you to handle this situation very easily. @@ -71,7 +71,7 @@ manager.deleteShop(shop) // Permanently delete this store, both memory and datab ## Identify a store -Please note that store locations are technically variable and you should not use coordinates to identify a store.\ +Please note that store locations are technically variable and you should not use coordinates to identify a store. Also RuntimeRandomUniqueId should not be used to identify the store, as the name suggests, the value changes every time the server restarts, it should only be used to handle scenarios where the player interacts with the server. ```java diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md b/i18n/en-US/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md index 543f1851da..4f839ed652 100644 --- a/i18n/en-US/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md @@ -1,6 +1,6 @@ # 0x05 Per shop permission -QuickShop-Hikari has a per shop permission management system.\ +QuickShop-Hikari has a per shop permission management system. Therefore, for a normal permission node check is not enough, you need to attach an additional check. ## Check with shop diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/development/06-protocol-system.md b/i18n/en-US/docusaurus-plugin-content-docs/current/development/06-protocol-system.md index 5d37a15536..0380b789f9 100644 --- a/i18n/en-US/docusaurus-plugin-content-docs/current/development/06-protocol-system.md +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/development/06-protocol-system.md @@ -15,30 +15,30 @@ This documentation will guide developers through the components, implementation - **Purpose**: Manages packet handling and initialization logic. - **Interface**: `PacketHandler` - **Key Methods**: - - `Map> factories()` - - Retrieves a map of supported `PacketFactory` instances keyed by game versions. - - `void initialize()` - - Initializes the packet handler. - - `Optional> factory(String version)` - - Retrieves a `PacketFactory` for a specific game version. + - `Map> factories()` + - Retrieves a map of supported `PacketFactory` instances keyed by game versions. + - `void initialize()` + - Initializes the packet handler. + - `Optional> factory(String version)` + - Retrieves a `PacketFactory` for a specific game version. ### 2. **PacketFactory** - **Purpose**: Creates and sends specific packet types. - **Interface**: `PacketFactory` - **Supported Packets**: - - **Spawn Packet**: - - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. - - Example Use: Representing shop items visually. - - **Metadata Packet**: - - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. - - Example Use: Updating item display name or properties. - - **Velocity Packet**: - - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. - - Example Use: Custom animations for virtual items. - - **Destroy Packet**: - - Removes the entity from the client view. Created using `createDestroyPacket()`. - - Example Use: Unloading or removing a virtual display item. + - **Spawn Packet**: + - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. + - Example Use: Representing shop items visually. + - **Metadata Packet**: + - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. + - Example Use: Updating item display name or properties. + - **Velocity Packet**: + - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. + - Example Use: Custom animations for virtual items. + - **Destroy Packet**: + - Removes the entity from the client view. Created using `createDestroyPacket()`. + - Example Use: Unloading or removing a virtual display item. Developers implementing custom `PacketFactory` should ensure these packets are correctly handled and optimized for performance. @@ -46,24 +46,24 @@ Developers implementing custom `PacketFactory` should ensure these packets are c - **Purpose**: Oversees the lifecycle of virtual display items and integrates with packet handlers. - **Key Features**: - - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). - - Manages virtual display items mapped to chunks. - - Provides thread-safe operations for adding and removing display items. + - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). + - Manages virtual display items mapped to chunks. + - Provides thread-safe operations for adding and removing display items. ### 4. **VirtualDisplayItem** - **Purpose**: Represents a virtual item displayed to players. - **Key Features**: - - Generates and caches packets for spawning, metadata, velocity, and destruction. - - Manages packet senders for each player. - - Handles spawn and removal operations dynamically. + - Generates and caches packets for spawning, metadata, velocity, and destruction. + - Manages packet senders for each player. + - Handles spawn and removal operations dynamically. ### 5. **ProtocolLibHandler and PacketEventsHandler** - **Purpose**: Provide implementations of `PacketHandler` using ProtocolLib and PacketEvents, respectively. - **Differences**: - - `ProtocolLibHandler` leverages ProtocolLib API. - - `PacketEventsHandler` uses the PacketEvents library. + - `ProtocolLibHandler` leverages ProtocolLib API. + - `PacketEventsHandler` uses the PacketEvents library. --- @@ -140,11 +140,11 @@ public class CustomPacketFactory implements PacketFactory { Packet factories are provided for specific game versions through two primary implementations: - **ProtocolLib**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` - **PacketEvents**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` --- diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md b/i18n/en-US/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md new file mode 100644 index 0000000000..aebc035f87 --- /dev/null +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md @@ -0,0 +1,297 @@ +# Interaction System (Developer Guide) + +The Interaction System allows developers to fully customize how players interact with shops. + +As of 6.2.0.11, the system has been redesigned to be: + +- Modular +- Extensible +- Thread-safe +- Fully customizable by third-party addons + +This guide will walk you through: + +1. What the Interaction System is +2. Getting the `InteractionManager` +3. Understanding `InteractionType` +4. Understanding `InteractionBehavior` +5. Registering custom interactions +6. Best practices + +--- + +# Overview + +The Interaction System is composed of three main components: + +| Component | Purpose | +| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| `InteractionType` | Describes **what kind of click happened** (standing, sneaking, left-click, sign, shopblock, etc.) | +| `InteractionBehavior` | Describes **what action should happen** when that type is triggered | +| `InteractionManager` | Central registry that manages interactions and behaviors | + +This separation allows developers to: + +- Add new click types +- Add new behaviors +- Override existing ones +- Extend QuickShop without modifying core code + +--- + +# Getting the InteractionManager + +To begin registering custom interactions, you must retrieve the `InteractionManager` instance. + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +If you are working directly with the plugin instance: + +```java +InteractionManager manager = QuickShop.getInstance().getInteractionManager(); +``` + +Once obtained, you can: + +- Register new interaction types +- Register new behaviors +- Override existing behaviors + +--- + +# Understanding InteractionType + +`InteractionType` represents **how** a player interacted with a shop. + +Examples include: + +- `STANDING_LEFT_CLICK_SIGN` +- `STANDING_RIGHT_CLICK_SHOPBLOCK` +- `SNEAKING_LEFT_CLICK_CONTAINER` +- etc. + +Each `InteractionType` defines: + +- Player stance (standing/sneaking) +- Click type (left/right) +- Target (sign/shopblock/container) + +InteractionTypes do NOT define behavior — they only define the trigger. + +--- + +# Understanding InteractionBehavior + +`InteractionBehavior` defines **what happens** when an interaction is triggered. + +Examples of built-in behaviors: + +- `TRADE_INTERACTION` +- `TRADE_UI` +- `CONTROL_PANEL` +- `CONTROL_PANEL_UI` +- `NONE` + +A behavior: + +- Executes logic +- May open GUIs +- May send chat panels +- May directly trade items +- Can cancel or modify flow + +This separation makes it easy to reuse behaviors across multiple interaction types. + +--- + +# Registering Custom Interactions + +There are two things you can register: + +- A custom `InteractionType` +- A custom `InteractionBehavior` + +--- + +## Creating a Custom InteractionBehavior + +Create a class implementing `InteractionBehavior`. + +Example: + +```java +public class MyTradeBehavior implements InteractionBehavior { + + @Override + public String getKey() { + return "MY_CUSTOM_TRADE"; + } + + @Override + public void execute(InteractionClick click) { + Player player = click.getPlayer(); + Shop shop = click.getShop(); + + player.sendMessage("You triggered my custom interaction!"); + + // Add your custom logic here + } +} +``` + +Then register it: + +```java +InteractionManager manager = api.getInteractionManager(); +manager.behavior(new MyTradeBehavior()); +``` + +Now your behavior is available for use. + +--- + +## Creating a Custom InteractionType + +You may also register custom interaction types if you want to introduce new trigger definitions. + +Example: + +```java +public class MyCustomInteraction implements InteractionType { + + @Override + public String getKey() { + return "STANDING_DOUBLE_CLICK_SIGN"; + } + + @Override + public boolean matches(InteractionClick click) { + // Define custom logic to detect this interaction + return click.isStanding() + && click.isSign() + && click.isDoubleClick(); + } +} +``` + +Register it: + +```java +manager.interaction(new MyCustomInteraction()); +``` + +--- + +# Binding Types to Behaviors + +The InteractionManager internally maps interaction types to behaviors based on configuration and registration order. + +Once your behavior is registered: + +- It can be referenced in `interaction.yml` +- Or attached programmatically + +Example interaction.yml usage: + +```yaml +STANDING_LEFT_CLICK_SIGN: MY_CUSTOM_TRADE +``` + +--- + +# The InteractionClick Object + +When your behavior executes, you receive an `InteractionClick` object. + +It provides: + +- `getPlayer()` +- `getShop()` +- `getLocation()` +- `isSneaking()` +- `isSign()` +- `isShopBlock()` +- etc. + +This gives full context for safe execution. + +--- + +# Advanced: Overriding Built-in Behavior + +If you register a behavior using the same key as an existing one, your behavior can override the default. + +⚠️ Be careful when doing this — you are replacing core functionality. + +--- + +# Best Practices + +### Always Use Unique Keys + +Avoid naming collisions: + +``` +MYPLUGIN_CUSTOM_BEHAVIOR +``` + +### Keep Behavior Lightweight + +Do not block the main thread with: + +- Heavy database calls +- File IO +- Network calls + +Use async tasks if needed. + +### Respect Permissions + +Always validate: + +```java +if (!player.hasPermission("myplugin.use")) { + return; +} +``` + +### Avoid Hard Overrides Unless Necessary + +Instead of replacing built-in behaviors, consider extending them. + +--- + +# Example: Full Minimal Implementation + +```java +public class ExampleAddon { + + public void register(QuickShopAPI api) { + + InteractionManager manager = api.getInteractionManager(); + + manager.behavior(new MyTradeBehavior()); + manager.interaction(new MyCustomInteraction()); + } +} +``` + +--- + +# Conclusion + +The Interaction System is designed to allow: + +- Full extensibility +- Clean separation of triggers and actions +- Easy integration for third-party developers + +By retrieving the `InteractionManager`: + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +You gain full control over how shops respond to player actions. \ No newline at end of file diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/development/08-tax-manager.md b/i18n/en-US/docusaurus-plugin-content-docs/current/development/08-tax-manager.md new file mode 100644 index 0000000000..72a56f9e88 --- /dev/null +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/development/08-tax-manager.md @@ -0,0 +1,266 @@ +# Tax System (Developer Guide) + +The QuickShop tax system allows server owners and developers to define how transaction taxes are calculated, distributed, and extended. + +As of 6.2.0.11, the tax system has been fully rewritten to provide: + +- A flexible TaxManager +- Pluggable TaxProvider support +- Progressive taxation +- Tax targeting (shop owner, interacting player, or both) +- Custom extension capability for third-party addons + +This guide explains how to work with the tax system programmatically. + +--- + +# Overview + +The tax system is composed of three core components: + +TaxManager +Responsible for coordinating tax calculation and execution. + +TaxProvider +Defines how tax values are calculated. + +TaxRates +Represents calculated tax results for a transaction. + +The system is designed to allow custom providers to be registered and used without modifying core logic. + +--- + +# Getting the TaxManager + +To work with the tax system, retrieve the TaxManager from the ShopManager. + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +Once obtained, you can: + +- Access current tax configuration +- Register custom tax providers +- Calculate tax values +- Hook into tax events + +--- + +# How the Tax System Works + +During a shop transaction: + +1. A base price is determined. +2. The TaxManager selects the active TaxProvider. +3. The TaxProvider calculates applicable tax. +4. A TaxRates object is produced. +5. The system applies the tax to: + + - Shop owner + - Interacting player + - Or both (depending on configuration) + +This architecture allows tax behavior to be modified without altering transaction logic. + +--- + +# TaxProvider + +A TaxProvider defines how tax values are calculated. + +You may create your own provider to implement: + +- Progressive tax brackets +- Flat percentage tax +- Conditional tax rules +- Region-based tax +- Rank-based tax +- Time-based tax + +Example minimal provider: + +```java +public class MyCustomTaxProvider implements TaxProvider { + + @Override + public TaxRates calculateTax(TaxContext context) { + + double basePrice = context.getPrice(); + + double taxAmount = basePrice * 0.05; // 5% flat tax + + return new TaxRates() + .ownerTax(taxAmount) + .buyerTax(0.0); + } +} +``` + +Then register it: + +```java +taxManager.provider(new MyCustomTaxProvider()); +``` + +Once registered, your provider will be used for tax calculations. + +--- + +# TaxRates + +TaxRates represents the result of a tax calculation. + +It typically contains: + +- Owner tax amount +- Buyer tax amount +- Total tax impact +- Metadata (if applicable) + +The transaction system will read from TaxRates and apply deductions accordingly. + +--- + +# Progressive Taxation + +The built-in system supports progressive tax structures. + +This allows server administrators to tax based on: + +- Player balance +- Shop owner balance +- Configured tax brackets + +Example configuration concept: + +- 0–10,000 balance → 1% tax +- 10,000–100,000 → 2% tax +- 100,000+ → 3% tax + +Developers can extend or override this logic inside a custom TaxProvider. + +--- + +# Targeting Tax + +The new tax system allows taxes to be applied to: + +- Shop owner +- Interacting player +- Both + +This is controlled via configuration, but custom providers can override distribution logic by adjusting TaxRates output. + +Example: + +```java +return new TaxRates() + .ownerTax(basePrice * 0.02) + .buyerTax(basePrice * 0.01); +``` + +--- + +# Registering a Custom TaxProvider + +To replace or extend tax logic: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); + +taxManager.provider(new MyCustomTaxProvider()); +``` + +You may register only one primary provider at a time. If multiple providers are needed, implement internal delegation within your custom provider. + +--- + +# Tax Events + +The tax system integrates with the event system. + +The modern event used is: + +ShopEnhancedTaxEvent + +This replaces legacy tax events and provides improved context, including: + +- Transaction builder reference +- TaxRates object +- Modification capability before final execution + +You can listen for the event and modify tax behavior dynamically: + +```java +@EventHandler +public void onTax(ShopEnhancedTaxEvent event) { + + TaxRates rates = event.getTaxRates(); + + // Example: Give VIP players reduced owner tax + if (event.getOwner().hasPermission("vip.tax.discount")) { + rates.ownerTax(rates.getOwnerTax() * 0.5); + } +} +``` + +--- + +# Best Practices + +Always keep tax calculations lightweight. + +Avoid: + +- Heavy database queries inside calculateTax +- Blocking network calls +- Long-running computations + +If complex logic is required, pre-cache required data outside the tax execution path. + +Ensure negative tax values are not returned unless intentional. + +Always validate final amounts before applying modifications. + +Respect configuration hierarchy unless intentionally overriding it. + +--- + +# Example Full Implementation + +```java +public class ExampleTaxAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + TaxManager taxManager = manager.taxManager(); + + taxManager.provider(new MyCustomTaxProvider()); + } +} +``` + +--- + +# Conclusion + +The new tax system is designed for: + +- Flexibility +- Extensibility +- Clean separation of concerns +- Future expansion + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +You gain full control over how QuickShop calculates and applies tax during transactions. \ No newline at end of file diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/development/09-layout-provider.md b/i18n/en-US/docusaurus-plugin-content-docs/current/development/09-layout-provider.md new file mode 100644 index 0000000000..55e3cd3e91 --- /dev/null +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/development/09-layout-provider.md @@ -0,0 +1,275 @@ +# Shop Layout Provider (Developer Guide) + +The Shop Layout Provider system allows developers to customize how shop signs are structured and rendered. + +As of 6.2.0.11, shop layouts are no longer hardcoded. Instead, they are controlled through the `IShopLayoutProvider` interface, which allows: + +- Custom sign line ordering +- Per-shop-type layouts (BUYING, SELLING, FROZEN, or custom types) +- Dynamic layout resolution +- Complete replacement of the default layout system + +This guide explains how to access, override, and implement a custom layout provider. + +--- + +# Overview + +The layout provider controls how shop sign lines are arranged. + +Instead of hardcoding: + +Line 1 → Header +Line 2 → Trading info +Line 3 → Item +Line 4 → Price + +The system now allows full customization through: + +- Config-based layout definitions +- Custom `IShopLayoutProvider` implementations +- Runtime overrides + +The default implementation is `SimpleShopLayoutProvider`. + +--- + +# Accessing the Layout Provider + +To retrieve the current layout provider: + +```java +ShopManager manager = api.getShopManager(); +IShopLayoutProvider provider = manager.shopLayoutProvider(); +``` + +To replace the layout provider with a custom one: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Once replaced, your implementation will control how shop layouts are generated. + +--- + +# Understanding IShopLayoutProvider + +`IShopLayoutProvider` defines how layout data is retrieved and resolved. + +It is responsible for: + +- Providing layout configuration per shop type +- Determining which layout to use +- Supplying formatted line keys +- Allowing future extensibility + +The default implementation reads layout definitions from configuration and applies them based on shop type. + +--- + +# Default Layout Example + +The default configuration-based layout looks like this: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +Each line maps to a layout component key. + +An empty string (`""`) leaves that line blank. + +The layout provider resolves these keys into actual sign content. + +--- + +# Creating a Custom Layout Provider + +To override the default behavior, implement `IShopLayoutProvider`. + +Example minimal implementation: + +```java +public class MyCustomLayoutProvider implements IShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + + ShopLayout layout = new ShopLayout(); + + layout.setLine(1, "Custom Header"); + layout.setLine(2, "Owner: " + shop.getOwnerName()); + layout.setLine(3, shop.getItem().getType().name()); + layout.setLine(4, "$" + shop.getPrice()); + + return layout; + } +} +``` + +Then register it: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Your layout will now control all shop sign formatting. + +--- + +# Per-Type Layout Control + +Because the system no longer depends on the legacy ShopType enum, layouts can support: + +- Built-in types (BUYING, SELLING, FROZEN) +- Custom shop types +- Addon-defined shop types + +Your provider can determine layout logic dynamically: + +```java +@Override +public ShopLayout provideLayout(Shop shop) { + + if (shop.getShopType().key().equals("FROZEN")) { + return frozenLayout(shop); + } + + return defaultLayout(shop); +} +``` + +This allows conditional formatting, localization adjustments, or special event styling. + +--- + +# Advanced Customization + +A custom layout provider can: + +- Pull data from external plugins +- Inject dynamic placeholders +- Modify layout per player +- Apply formatting logic +- Override color schemes +- Apply region-based formatting +- Implement animated sign systems + +Because the layout provider is resolved at runtime, you can compute layouts dynamically instead of reading static config. + +--- + +# Replacing vs Extending the Default Provider + +You have two options: + +Replace entirely: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Or extend the default implementation: + +```java +public class ExtendedLayoutProvider extends SimpleShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + ShopLayout base = super.provideLayout(shop); + + base.setLine(1, "[Extended] " + base.getLine(1)); + + return base; + } +} +``` + +Extending is safer if you only want to modify small portions. + +--- + +# Best Practices + +Keep layout generation lightweight. + +Avoid: + +- Heavy database queries +- Blocking IO +- Complex network calls + +Layout generation runs during shop updates and sign refresh events. + +Always handle null values safely. + +Ensure layout line count does not exceed sign limits. + +Avoid hardcoding shop type names unless necessary. + +If your layout supports custom shop types, validate their keys properly. + +--- + +# Example Full Registration + +```java +public class LayoutAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + + manager.shopLayoutProvider(new MyCustomLayoutProvider()); + } +} +``` + +--- + +# Conclusion + +The Shop Layout Provider system allows complete control over shop sign structure. + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +``` + +And setting: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +You can redefine how every shop is displayed on the server. + +This system was designed to support: + +- Extensibility +- Custom shop types +- Localization +- Dynamic formatting +- Future expansion \ No newline at end of file diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/faq/compare-reremake.md b/i18n/en-US/docusaurus-plugin-content-docs/current/faq/compare-reremake.md index aaa1a9e507..6b39f02520 100644 --- a/i18n/en-US/docusaurus-plugin-content-docs/current/faq/compare-reremake.md +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/faq/compare-reremake.md @@ -64,7 +64,7 @@ If you are a Reremake user, you may be confused about the differences between Hi ## Which one should I use? Well, it depends on what your needs are.\ -If you have an old server (<1.20) instance, Reremake is your only choice.\ +If you have an old server ({'<'}1.20) instance, Reremake is your only choice.\ ~~If you are in China which has GFW interfere, you also should consider Reremake because it doesn't need to load libraries from Global Internet.~~ Solved in 6.0.0.0. If none of these applies, give Hikari a try! diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md b/i18n/en-US/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md index 551f579e7c..172be3a69b 100644 --- a/i18n/en-US/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md @@ -1,8 +1,8 @@ # Where Addons/Compacts is -Addons and Compatilibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. +Addons and Compatibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. -- Open Modrinth versions page, locate the version your're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) +- Open Modrinth versions page, locate the version you're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) - Frantically slide your mouse wheel down until the lowest end of the page. - You get it! diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/internal/database-schema.md b/i18n/en-US/docusaurus-plugin-content-docs/current/internal/database-schema.md index fea685e4fc..45e04adb56 100644 --- a/i18n/en-US/docusaurus-plugin-content-docs/current/internal/database-schema.md +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/internal/database-schema.md @@ -4,17 +4,17 @@ This chapter will explain the implementation details of QuickShop Hikari's datab ## Tables -This section explains the database tables created by QuickShop-Hikari.\ -Unless otherwise specified, the initial `qs_` in table name is the table prefix.\ +This section explains the database tables created by QuickShop-Hikari. +Unless otherwise specified, the initial `qs_` in table name is the table prefix. For the latest code definition for each table, see: [DataTables.java](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/hikari/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/database/DataTables.java) ### `data` -This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information.\ -No matter what, a data record should not be modified after it is created, until it got deleted.\ +This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information. +No matter what, a data record should not be modified after it is created, until it got deleted. Any new changes to the shop should create a new copy, apply the changes to the copy, and insert it as a new record. -Basiclly, Copy-on-write. +Basically, Copy-on-write. A data record only be deleted from the database when no any table references their `data_id`. @@ -29,7 +29,7 @@ A data record only be deleted from the database when no any table references the | unlimited | BIT NOT NULL | 0 | Indicates whether this store is an unlimited store, 0=Limited, 1=Unlimited | | hologram | BIT NOT NULL | 0 | Indicates the suspension status of this store's display item, 0=Follow global settings, 1=Disabled | | tax_account | VARCHAR(36) | NULL | The uuid for tax account, If it is not NULL, tax will be paid to the specified account | -| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serilized to JSON string | +| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serialized to JSON string | | extra | LONGTEXT | Empty Yaml | Used to store experimental settings of QuickShop Hikari or persistent data of other plugins | | inv_wrapper | VARCHAR(255) NOT NULL | N/A | Unique identifier for InventoryWrapper for this shop data entry | | inv_symbol_link | TEXT NOT NULL | N/A | Unique Inventory symbol used to pass to InventoryWrapper, for locating inventory | @@ -38,7 +38,7 @@ A data record only be deleted from the database when no any table references the ### `shops` -This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes.\ +This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes. Multiple `shop_id` can correspond to the same `data_id`. | Column Name | DataType | Default | Description | diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/modules/cmd-alias.md b/i18n/en-US/docusaurus-plugin-content-docs/current/modules/cmd-alias.md index 53f1577685..e6ed381c0d 100644 --- a/i18n/en-US/docusaurus-plugin-content-docs/current/modules/cmd-alias.md +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/modules/cmd-alias.md @@ -23,7 +23,7 @@ custom-commands: - cshop ``` -Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect.\ +Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect. The effect should be like this: ![command-alias](./img/command-alias.png) diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/modules/datasource.md b/i18n/en-US/docusaurus-plugin-content-docs/current/modules/datasource.md index 6fc1bd8931..3fd3a8bdee 100644 --- a/i18n/en-US/docusaurus-plugin-content-docs/current/modules/datasource.md +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/modules/datasource.md @@ -48,7 +48,7 @@ Execute the `/quickshop export` command in console, quickshop will export a zip ![exported data](img/database-export.png) -Stop your database, switch the datasource, and start the server.\ +Stop your database, switch the datasource, and start the server. You may noticed all shops are gone, because new datasources had no data inside, we will restore them from export. Rename that exported ZIP file to `recovery.zip`, execute `/quickshop recovery` and restart your server, all shops should back. diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/modules/itemmatcher.md b/i18n/en-US/docusaurus-plugin-content-docs/current/modules/itemmatcher.md index 56be243019..922907be27 100644 --- a/i18n/en-US/docusaurus-plugin-content-docs/current/modules/itemmatcher.md +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/modules/itemmatcher.md @@ -4,7 +4,7 @@ ItemMatcher is a utility used by QuickShop-Hikari to compare the items, it is th :::caution -If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse.\ +If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse. **TL;DR: Keep default unless you know what you're doing.** ::: @@ -26,10 +26,10 @@ matcher: work-type: 1 ``` -By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility.\ +By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility. But still, you can toggle to QuickShop Item Matcher if you need to customize the comparing or running QuickShop on the server jar which have bug affect the Bukkit comparing system. -## Customize the metadata compareing +## Customize the metadata comparing Customize only works under QuickShop Item Matcher. diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md b/i18n/en-US/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md index fc2af69d2b..d04e8f2783 100644 --- a/i18n/en-US/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md @@ -4,7 +4,7 @@ ItemStack Loader is a workaround for loading the Bukkit ItemStack. :::caution -Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossble. +Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossible. ::: diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/modules/localization.md b/i18n/en-US/docusaurus-plugin-content-docs/current/modules/localization.md index e9121e1a36..d47589ab9a 100644 --- a/i18n/en-US/docusaurus-plugin-content-docs/current/modules/localization.md +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/modules/localization.md @@ -10,7 +10,7 @@ To help translate QuickShop-Hikari, please visit our [Crowdin Homepage](https:// ## Crowdin OTA -QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will overrided when you reload QuickShop-Hikari or restart your server. +QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will override when you reload QuickShop-Hikari or restart your server. Your installation will keep translations up-to-date without any touch. @@ -110,6 +110,16 @@ To disable the CrowdinOTA, please add it in the startup flag: -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager.enableCrowdinOTA=false ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +use-crowdin-ota: false +``` + ### Self-Hosted OTA Server If you self-hosted our translation server by using [CrowdinCopyDeploy](https://github.com/Ghost-chu/CrowdinCopyDeploy) tool, you're able to change the OTA server to yourself server. @@ -118,4 +128,12 @@ If you self-hosted our translation server by using [CrowdinCopyDeploy](https://g -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager= ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml +Use + +```yaml +crowdin-host: +``` \ No newline at end of file diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/modules/shops/benefit.md b/i18n/en-US/docusaurus-plugin-content-docs/current/modules/shops/benefit.md index 4d7a9c8f42..c59d92e6d1 100644 --- a/i18n/en-US/docusaurus-plugin-content-docs/current/modules/shops/benefit.md +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/modules/shops/benefit.md @@ -37,3 +37,13 @@ By default, for security, QuickShop-Hikari disallow add offline players into sho ```bash -Dcom.ghostchu.quickshop.command.subcommand.SubCommand_Benefit.allowOffline=true ``` + +### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +shop.allow-offline-benefit: true +``` \ No newline at end of file diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/modules/shops/control-panel b/i18n/en-US/docusaurus-plugin-content-docs/current/modules/shops/control-panel new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/modules/shops/control-panel @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md b/i18n/en-US/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/modules/shops/history.md b/i18n/en-US/docusaurus-plugin-content-docs/current/modules/shops/history.md index fa891adeab..195b64a042 100644 --- a/i18n/en-US/docusaurus-plugin-content-docs/current/modules/shops/history.md +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/modules/shops/history.md @@ -24,7 +24,7 @@ The History GUI displays the details of each recorded transaction and other usef ### Transaction details -When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed.\ +When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed. If you are checking the history of more than one store, the player head will be replaced with an item from the corresponding store. ![history-gui](./img/history-gui.png) diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md b/i18n/en-US/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md new file mode 100644 index 0000000000..c5ed3b3fe4 --- /dev/null +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md @@ -0,0 +1,90 @@ +# Shop Types + +QuickShop supports multiple shop types, allowing shops to behave differently depending on their mode. + +The built-in shop types are: + +- Selling +- Buying +- Frozen + +Each type changes how the shop interacts with players. + +--- + +## Selling Shop + +A Selling shop allows players to: + +- Buy items from the shop owner +- Pay money to receive items + +This is the most common shop type. + +--- + +## Buying Shop + +A Buying shop allows players to: + +- Sell items to the shop owner +- Receive money in exchange + +This is commonly used for: + +- Resource collection +- Server buy-back shops +- Automated material sinks + +--- + +## Frozen Shop + +A Frozen shop temporarily disables trading. + +While frozen: + +- No buying is allowed +- No selling is allowed +- The shop remains intact +- Staff or admins can manage it + +This is useful for: + +- Temporary suspensions +- Investigation +- Event locking +- Maintenance + +--- + +## Switching Shop Types + +Shop types can be changed through: + +- Control panel +- GUI control panel +- Admin commands + +Frozen mode is also available via: + +/qs freeze + +--- + +## Custom Shop Types + +As of 6.2.x, the system supports extensible shop types internally. + +While server owners use the built-in types, the system now allows future expansion through addons. + +--- + +## Summary + +Shop types allow you to: + +- Control how money flows +- Enable buy-back mechanics +- Temporarily disable shops +- Build advanced economic systems \ No newline at end of file diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md b/i18n/en-US/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md new file mode 100644 index 0000000000..18e0a47407 --- /dev/null +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md @@ -0,0 +1,217 @@ +# Sign Layout + +QuickShop allows you to fully customize how shop signs are structured. + +You can change: + +- What appears on each line +- The order of information +- Layout per shop type +- Whether certain lines are blank + +This gives you complete control over how shops look on your server. + +--- + +## How Sign Layout Works + +Shop signs have four lines. + +Instead of being hardcoded, QuickShop uses a configurable layout system. + +Each shop type can have its own layout: + +- SELLING +- BUYING +- FROZEN + +You define what each line displays using layout keys. + +--- + +## Configuration Location + +Sign layout is configured in `config.yml` under: + +```yaml +layout: +``` + +Example default configuration: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## Available Layout Keys + +Each line value refers to a built-in layout component. + +Common layout keys include: + +- `header` – The shop header line +- `trading` – Buy/Sell direction information +- `item` – Item name +- `price` – Shop price + +These keys are automatically formatted using your language file and formatting settings. + +--- + +## Leaving a Line Blank + +To leave a line empty, use: + +```yaml +line2: "" +``` + +This is useful if you want: + +- Minimalist signs +- Cleaner layouts +- Custom spacing +- Decorative formatting + +--- + +## Customizing Per Shop Type + +Each shop type can have a different layout. + +For example: + +```yaml +layout: + + SELLING: + line1: "header" + line2: "item" + line3: "price" + line4: "" + + BUYING: + line1: "header" + line2: "price" + line3: "item" + line4: "" + + FROZEN: + line1: "header" + line2: "" + line3: "item" + line4: "Frozen" +``` + +This allows you to visually differentiate: + +- Selling shops +- Buying shops +- Frozen shops + +--- + +## Practical Examples + +### Minimal Style + +```yaml +layout: + SELLING: + line1: "item" + line2: "price" + line3: "" + line4: "" +``` + +### Compact Economy Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "price" + line3: "item" + line4: "" +``` + +### Large Clear Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## How Updates Affect Layout + +When you change the layout: + +- Existing shop signs will update automatically when refreshed. +- New shops will use the updated format immediately. + +If needed, you can reload QuickShop to apply changes. + +--- + +## Best Practices + +- Keep important information visible (price and item). +- Avoid overly complex formatting. +- Test layout changes before deploying on large servers. +- Use different layouts for BUYING and SELLING to reduce confusion. + +--- + +## Common Questions + +### Can I add more than four lines? + +No. +Minecraft signs are limited to four lines. + +### Can I add colors? + +Colors are controlled by your language file and formatting settings. + +### Can I change layout without restarting? + +Yes, but reloading or refreshing shops is recommended to ensure full update. + +--- + +## Summary + +The Sign Layout system allows you to: + +- Fully customize shop sign appearance +- Create per-type layouts +- Simplify or expand shop information +- Improve clarity for players + +All layout customization is handled inside `config.yml`. diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md b/i18n/en-US/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md new file mode 100644 index 0000000000..980bad10f2 --- /dev/null +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md @@ -0,0 +1,130 @@ +# Shop Sign Waxing + +QuickShop can automatically wax shop signs to prevent players from editing them manually. + +Waxing protects the integrity of your shop signs and helps prevent tampering, spoofing, and accidental modification. + +As of modern Minecraft versions, waxed signs cannot be edited unless they are unwaxed first. + +--- + +## What Is Sign Waxing? + +In Minecraft, waxing a sign locks it so that: + +- Players cannot edit the text +- Players cannot modify lines +- Accidental changes are prevented +- Malicious edits are blocked + +When enabled in QuickShop, shop signs are automatically waxed when created. + +--- + +## Why Use It? + +Sign waxing protects against: + +- Players editing price lines +- Changing item names on signs +- Spoofing shop information +- Accidental formatting issues +- Sign hijacking attempts + +On public servers, this feature is strongly recommended. + +--- + +## How It Works + +When a shop is created: + +1. QuickShop generates the shop sign. +2. The sign text is written. +3. The sign is automatically waxed (if enabled). + +If a shop is updated: + +- The sign will be safely updated by QuickShop. +- The wax state is maintained. + +Players cannot manually edit shop signs while waxing is enabled. + +--- + +## Configuration + +To enable or disable sign waxing, edit `config.yml`: + +```yaml +shop: + sign-wax: true +``` + +### true + +- Shop signs are automatically waxed. +- Players cannot edit the sign manually. + +### false + +- Shop signs behave like normal Minecraft signs. +- Players may edit them if permitted by the game. + +--- + +## Recommended Setting + +For most servers: + +```yaml +shop: + sign-wax: true +``` + +This ensures shop data stays accurate and secure. + +--- + +## Common Questions + +### Can admins still modify shop signs? + +QuickShop controls shop sign formatting. +Manual edits are not recommended. + +Admins should use: + +- Control panel +- Shop commands +- Direct configuration changes + +### Does waxing affect shop functionality? + +No. +Waxing only prevents manual text edits. +The shop continues to function normally. + +### Can players un-wax shop signs? + +No. +QuickShop manages the sign state automatically. + +--- + +## Best Practices + +- Keep sign-wax enabled on survival servers. +- Combine sign-wax with proper permissions. +- Avoid manually editing shop signs through other plugins. + +--- + +## Summary + +Sign Waxing: + +- Prevents tampering +- Requires no additional setup + +Enable it once and QuickShop handles the rest. \ No newline at end of file diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/modules/shops/taxes.md b/i18n/en-US/docusaurus-plugin-content-docs/current/modules/shops/taxes.md new file mode 100644 index 0000000000..1a273fd978 --- /dev/null +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/modules/shops/taxes.md @@ -0,0 +1,92 @@ +# Taxation System + +QuickShop includes a taxation system designed to give server owners more flexibility and control over shop-based income. + +This system was revamped as of 6.2.0.11+ + +The new system allows you to: + +- Apply tax to shop owners +- Apply tax to buyers +- Apply tax to both +- Use progressive tax brackets +- Customize tax behavior in configuration + +This system replaces the legacy tax configuration. + +--- + +## How It Works + +During a transaction: + +1. The shop price is calculated. +2. Tax is calculated based on your configuration. +3. Tax is deducted from the configured target(s). +4. Remaining funds are distributed normally. + +You can configure: + +- Flat percentage tax +- Progressive tax based on player balance +- Tax accounts +- Distribution rules + +--- + +## Progressive Tax + +The new system allows you to tax based on balance brackets. + +Example concept: + +- 0 – 10,000 balance → 1% tax +- 10,000 – 100,000 → 2% tax +- 100,000+ → 3% tax + +This helps prevent extremely wealthy players from dominating the economy. + +--- + +## Who Pays the Tax? + +You can configure whether tax applies to: + +- The shop owner +- The buyer +- Both + +This gives you flexibility depending on your economy design. + +--- + +## Configuration + +All tax-related settings are located under the `shop-tax` section in `config.yml`. + +After updating to 6.2.0.11+, review your tax configuration carefully, as the old tax system has been replaced. + +--- + +## Why Use Tax? + +The taxation system can help: + +- Remove currency from circulation +- Fund server banks or towns +- Create sink mechanics +- Balance inflation +- Reward active players + +--- + +## Summary + +The new taxation system is: + +- Flexible +- Configurable +- Balance-aware +- Designed for modern economy servers + +Make sure to review your configuration after upgrading. \ No newline at end of file diff --git a/i18n/en-US/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md b/i18n/en-US/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md new file mode 100644 index 0000000000..247c24712d --- /dev/null +++ b/i18n/en-US/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md @@ -0,0 +1,161 @@ +# WorldEdit & FAWE Support + +QuickShop includes built-in protection and integration for WorldEdit and FastAsyncWorldEdit (FAWE). + +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. + +You do not need to download or install any additional compatibility plugins. + +--- + +## What This Does + +WorldEdit and FAWE allow administrators and builders to: + +- Copy and paste regions +- Replace large areas of blocks +- Mass-delete regions +- Roll back areas +- Regenerate terrain + +Without protection, these operations could: + +- Create ghost shops +- Leave orphaned shop data in the database +- Duplicate shops unintentionally +- Delete containers without cleaning up shop data +- Cause inconsistencies between world and database + +QuickShop now automatically detects and safely processes WorldEdit and FAWE operations. + +--- + +## Built-In Behavior + +When WorldEdit or FAWE modifies blocks: + +- Shops removed via WorldEdit are properly deleted from the database. +- Shop data stays synchronized with world changes. +- Ghost shops are prevented. +- Mass block replacements will not leave broken shop entries behind. + +This applies to: + +- //set +- //replace +- //cut +- //paste +- //regen +- Region deletion +- Mass container removal + +No configuration is required. + +--- + +## FAWE Support + +FastAsyncWorldEdit (FAWE) is fully supported. + +Because FAWE processes edits asynchronously, QuickShop handles: + +- Region-thread safe processing +- Async block updates +- Safe shop deletion during batch edits + +You do not need to enable anything manually. + +--- + +## Removing Shops with WorldEdit + +If you delete containers (chests, barrels, etc.) using WorldEdit: + +QuickShop will automatically: + +- Detect the block removal +- Unregister the shop +- Clean the database entry +- Prevent ghost shops + +You do not need to run `/qs cleanghost` after WorldEdit usage in normal circumstances. + +--- + +## Copying and Pasting Shops + +If you copy and paste regions that contain shops: + +- Shop data will not duplicate incorrectly. +- Shop IDs remain consistent. +- Invalid pasted shops will not auto-register unless properly created. + +This prevents accidental duplication exploits. + +--- + +## Performance + +WorldEdit and FAWE operations can modify thousands of blocks at once. + +QuickShop processes these safely and efficiently: + +- Batch-aware cleanup +- Thread-safe region access (especially on Folia) +- Minimal performance impact during mass edits + +--- + +## Configuration + +There are no specific WorldEdit configuration options in QuickShop. + +Support is automatic and always enabled if WorldEdit or FAWE is detected. + +If WorldEdit is not installed, no extra code is executed. + +--- + +## Common Questions + +### Do I need the old WorldEdit compatibility jar? + +No. + +As of 6.2.0.11, WorldEdit support is built-in and the separate compatibility module has been removed. + +### Does this work with FAWE? + +Yes. FAWE is fully supported. + +### Will shops break if I use //set air? + +No. Shops will be safely removed and cleaned up. + +### Do I need to restart after installing WorldEdit? + +No. QuickShop detects WorldEdit automatically on startup. + +--- + +## Best Practices + +Even though QuickShop safely handles WorldEdit operations, it is recommended to: + +- Avoid copying shops intentionally unless required +- Use backups before large region edits +- Test large FAWE operations on staging servers when possible + +--- + +## Summary + +QuickShop’s built-in WorldEdit and FAWE integration ensures: + +- Safe mass edits +- No ghost shops +- Automatic database cleanup +- Thread-safe processing +- No extra modules required + +WorldEdit support is now a core feature of QuickShop. \ No newline at end of file diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/addon/limited.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/addon/limited.md index 70af27e240..fae55a8c95 100644 --- a/i18n/es-ES/docusaurus-plugin-content-docs/current/addon/limited.md +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/addon/limited.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -41,8 +35,8 @@ Limit players to purchase up to 16 items per month. /quickshop limit period MONTH ``` -The system is based on the QuickShop-Hikari calendar system.\ -The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year.\ +The system is based on the QuickShop-Hikari calendar system. +The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year. Same for days, months and hours. Available time units: diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/addon/list.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/addon/list.md index 93d182f083..f20b91fd7b 100644 --- a/i18n/es-ES/docusaurus-plugin-content-docs/current/addon/list.md +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/addon/list.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/addon/plan.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/addon/plan.md index 52a6e79cb4..c10ef4df42 100644 --- a/i18n/es-ES/docusaurus-plugin-content-docs/current/addon/plan.md +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/addon/plan.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -18,7 +18,7 @@ Recorded data can be displayed from Hikari v2.0.0.0 onwards, but only after vers - All shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 1000 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `5` in server scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `5` in server scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Player Scope @@ -27,7 +27,7 @@ And still is Plan limitations, the list sorting is disturbed, so the display ord - All owned shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 50 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `4` in player scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `4` in player scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Showcase diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/addon/reforges.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/addon/reforges.md index 2a14509eb7..25fff1752a 100644 --- a/i18n/es-ES/docusaurus-plugin-content-docs/current/addon/reforges.md +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/addon/reforges.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.0.0.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md index 304d39bc05..6f9f51d250 100644 --- a/i18n/es-ES/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.1.1.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -44,7 +38,7 @@ _This is not necessary if you are using an H2 database._ ### Prepare for convert -To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console.\ +To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console. If a player is in the server, the conversion cannot be started. Once the conversion has begun, the server will be locked during the conversion process and no players will be able to join the server during the conversion. diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/addon/shopitemonly.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/addon/shopitemonly.md index c45062f8c2..1ccfe977b3 100644 --- a/i18n/es-ES/docusaurus-plugin-content-docs/current/addon/shopitemonly.md +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/addon/shopitemonly.md @@ -2,17 +2,11 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT - -::: - -This addon prevents players from putting non-store items into store containers.\ +This addon prevents players from putting non-store items into store containers. Does not apply to stores that use the item inventory redirection API (aka. InventoryWrapper API). This Addon will check for container (or transferring) items on events such as the player closing the container or hopper access. diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md new file mode 100644 index 0000000000..9c8b4f7407 --- /dev/null +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md @@ -0,0 +1,55 @@ +# 6.2.0.10 + +## Major Changes + +- Added support for 1.21.6 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.7 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.8 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Some internal updates for packetevents(2.9.0 is now required.) +- Updated Lands support + +## Addon Changes + +- Added MatcherPlus Addon + - Allows support for BreweryX and AdvancedItems stacks in shops with improved matching abilities +- Added FabledSkyblock Compat +- Added Dominion Compat +- Added HuskTowns Compat +- Added IridiumSkyblock Compat +- Added member-create for member creation in ARM compat +- Added admin-override and quickshop.arm.admin permission for admin overrides in ARM + +## Minor Changes + +- Added configurations for the coordinates of the display item. +- Added /qs toggledisplayall on/off server/owned + - Players need to have permission node quickshop.toggledisplayall.admin to toggle all on the server. +- Added ability to use abbreviations in /qs price and /qs create commands such as 2.5k for 2500 +- Added ability to set default display status using shop.default-display in config.yml + +## Fixes + +- Fixed issue with display item being sent to the moon on 1.21.5 +- Fixed issue where TRADE_UI interactions interfered with quick create. +- Fixed issue with displays on protocollib falling through the chest +- Fixed issue with signs on .9 and previous .10 snapshots on early versions +- Implemented some performance improvements for paper servers +- Fixed all outstanding issues with Folia usage.(thanks to RootB33R/SleazLee for contributions) + +## Possible 6.2.0.11 Features + +Here's an outline for some features that may arrive in 6.2.0.11: + +- Additional compats/addons that have been piling up. + - see: https://github.com/QuickShop-Community/QuickShop-Hikari/issues/1756 +- gradle?(interested to see compilation time uplifts) +- Update documentation +- Update configuration comments +- Update configuration system? + - auto updating? + - Allows removal of the update code +- Remove waste spigot modules? + - Any versions of 1.20 that can be discarded due to low use? +- Bug fixing, of course +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... \ No newline at end of file diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md new file mode 100644 index 0000000000..b41c88662a --- /dev/null +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md @@ -0,0 +1,173 @@ +## Outline + +- Update documentation +- Update configuration comments +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... + +# 6.2.0.11 + +## Major Changes + +- Removed Spigot Platform Modules, and stopped loading QS if Spigot is detected. This will mean that unless the protocol changes that we use for display items, QS won't need updated for each version. +- Revamped Economy Code Completely + - New classes for all economy-related systems + - Any economy-related or benefits-related events are incompatible with previous versions. +- Added sign layout customizations per-type allowing you to change how lines are configured, an empty string('') will leave an empty line for that line of the sign. + +``` + #The layout of signs for shops. + layout: + + #The layout of BUYING shops. + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of FROZEN shops. + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of SELLING shops. + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +- Add wildcard support for item blacklist patterns(thanks to bennycallanan) + - Added support for wildcard patterns in the item blacklist configuration, allowing users to block entire categories of items with simple patterns. + + - Features + - Wildcard patterns like \*_AXE and \*_SPAWN_EGG now work in blacklist configuration + - Supports \* for any characters and ? for single character matching + - Case-insensitive pattern matching +- Overhauled GUI system(thanks to Yusakidev) + - Implemented gui.yml configuration file for customizing the GUI. + - Implemented better filtering for qs browse + - Implement GUI system to be more stable, and less error prone. + - Added gui.yml for fully configurable GUI layouts and text + - Browse menu: search, sort (price/name/stock), and filter (all/buying/selling/in-stock) + - Staff menu: search functionality for player/staff selection + - Grouped item pages for better shop browsing + - Refactored all menu pages to use configurable display/lore +- Added worldedit compat to QS internally as it's widely used. +- Revamped the taxation system to be more flexible and easier to configure. + - introduced a new progressive tax system that allows you to tax based on the balance of players.(suggested by YuanYuanOwO) + - introduced the ability to tax the player interacting with the shop, the owner, or both + - all tax-related configurations have been moved under the shop-tax section of the config. this may require reconfiguration of your tax settings. + - added a new ShopEnhancedTaxEvent, deprecated the old ShopTaxEvent. + - Added a new TaxManager, and TaxProvider interfaces, this allows for custom tax providers to be added by addons/third-party developers. + +## Addons/Compats Changes + +- Added UltimateClaims compat +- Added SimpleClaimSystem compat +- Added Quests by Pika addon +- Added BetonQuest addon +- Added Pl3xMap addon +- MatcherPlus Compat Improvements + - Added support for CrazyCrates + - Added support for ExcellentCrates + - Added support for SilkSpawners. +- WorldGuard Compat Improvements(Thanks to golovin12) + - Added clear permission handling: + - Region owners and members automatically have permission to create and trade in their own regions. + - Other players must have the appropriate WorldGuard flags enabled (quickshophikari-create, quickshophikari-trade) to interact with shops. + - If a shop is located outside any region, default QuickShop behavior applies (no extra restrictions) +- Added colored markers based on shop state for bluemap(thanks to YusakiDev) +- Updated dynmap/towny addons to use the new ShopTypeEnhancedEvent instead of ShopTypeEvent. +- Removed worldedit compat, it's now included in the main plugin. +- Added support for global flags to the worldguard compat. + +## Internals/Developer APIs + +- Removed several deprecated methods and classes. +- Revamped the interaction manager. It is now more flexible and allows external additions + - This involves two classes InteractionBehavior and InteractionType. + - InteractionType details the type of interaction such as: STANDING_LEFT_CLICK_SIGN, STANDING_LEFT_CLICK_SHOP + - InteractionBehavior outlines a behavior for an InteractionType such as CONTROL_PANEL and TRADE_UI +- Added UserLimitCalculationEvent, which allows for custom limits to be applied to users. + - This is useful for limiting the number of shops a user can have, or adding on to the existing limits provided by the ranks system without needing to implement a new RankLimiter. +- Added a new ShopLayoutProvider interface, and default implementation. + - This allows for custom layouts to be used for shops, allowing for more customization. + - This also allows for developers to override the default layout provider and create their own implementation. +- How to make your own? + - Implement the classes you would like to then register with the InteractionManager: + - ```java + InteractionManager manager = QuickShop.getInstance().getInteractionManager(); + + manager.interaction(new MyTradeInteraction()); + manager.behavior(new MyTradeBehavior()); + ``` +- Replaced some Apache Commons calls that could be easily replaced with built-in java methods, reduces some calls by ~ 1100ms/method call +- Deprecated the ShopType enum, and the ShopTypeEvent. These are replaced with the new IShopType interface and implementing classes. + - The new event is ShopTypeEnhancedEvent. + - This allows for third-party addons to add their own shop types, and simplifies code checks for translations. +- Updated config system to use Boosted-yaml + - this allows for auto-updating of config files without complex update scripts + - this also allows for the config system to not be minecraft-dependent. +- Replaced logical PaperLib calls with native PaperAPI calls. + +## Minor Changes + +- Bump Java version up to 21 +- Added shop.display-allow-enchants to enable/disable enchantments for display items on shops. +- Added workaround for packetevents not supporting custom enchants on itemstacks for virtual display items. +- Using locale translations for shop-type in mode toggle icon(thanks to ExyiN) +- Bumped Residence version for the compat(thanks to YuanYuanOwO) +- add world whitelist support(thanks to wling-art) +- added /qs database save command, which saves all currently dirty-marked shops to the database. +- Split up interactions _SHOPBLOCK into _SHOPBLOCK and _CONTAINER. + - _SHOPBLOCK relates to shops, where _CONTAINER relates to shop-valid containers that are not currently shops. +- Added inventory as an option for command panel, this is useful for adding a secondary option for players to open a shop's inventory. +- Moved crowdin arguments from system properties to config.yml + - crowdin-host + - use-crowdin-ota + +## Fixes + +- Fixes issue with item price restrictions(thanks to maxcom1) +- Fixes issue with 1.20.x protocol lib displays(thanks to YuanYuanOwO) +- Fixes issue when no item is in hand for itemdebug(thanks to YuanYuanOwO) +- Fixes issue with dominion addon(thanks to YuanYuanOwO) +- Add a simple check to avoid this. If it is not own shop, reject limit request directly.(Thanks to YuanYuanOwO) +- Fix NPE by not setting tax for price in TransactionBuilder(thanks to maxcom1) +- Fixes /quickshop suggestprice to differentiate between buy/sell shops. (Thanks to MidSpike) +- PacketEvents ClassNotFoundException with ProtocolLib(thanks to wling-art) +- Reallocate block state access to region thread for shop creation(thanks to r00tbeerman) +- resolve SLF4J StaticLoggerBinder loading error(thanks to wling-art) +- sign hijacking issue by validating sign facing direction(thanks to wling-art) +- Performance improvements for QuickShop disabling to prevent potential freezes. +- Fixed issue with 1.20.4 packetevents virtual displays not staying put. +- Fixes critical issue in GriefPrevention compatibility plugin. +- Fixes issue with shop owner not getting money when benefits active. +- Fixes for lands addon on folia, Use regionThread for Folia compatibility(thanks to YusakiDev) +- Fixes for TRADE_DIRECT on stacking shops +- Fixes issue for protocollib 5.4.0 with undocumented packet changes. +- Fixes issue where item stacks could be used on creation above the max stack size. +- Fixes issue with BukkitAudiences-related crashes on 1.21.11. +- Fix issue with shop deletion when getting too impatient. +- Fix the permission check issue when a shop owned by a non-owner is transferred to someone else. (thanks to YuanYuanOwO) +- Fix ui with supertool (thanks to YuanYuanOwO) +- Fix issue with logs generating outside debug mode. +- Fix issue with /qs find. +- Fix configuration loading timing. +- Fix configuration loading/creation warning message language. +- Fix command description language key mismatch(thanks to wling-art) +- Fix qs clean command on folia(thanks to wling-art) +- Fix per-player-shop-sign on folia(thanks to wling-art) +- Fix potential recursive deadlock in virtual display packet sending(thanks to wling-art) +- Fix configuration loading/creation warning message language. +- Fix issue with /qs browse and ShopItemOnly addon not behaving properly together on folia. +- Fix issue with PLAN using outdated APIs. +- Fix issue with /qs clean on folia.(thanks to wling-art) +- Fix issue with /qs cleanghost on folia(thanks to wling-art) +- More thread safety fixes for shops on folia.(thanks to wling-art) +- Fix owner payment calculations with benefits(thanks to wling-art) \ No newline at end of file diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md index 8172f9b410..dcc3edc67d 100644 --- a/i18n/es-ES/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md @@ -20,20 +20,20 @@ the ControlComponent object with a custom one that will replace the original dur ### Introduction of the Revamped Packet System 1. **About**: - - A modular and scalable system for managing packets related to virtual display items in Minecraft. - - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. + - A modular and scalable system for managing packets related to virtual display items in Minecraft. + - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. 2. **Custom Packet Factories**: - - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. - - Packet types: - - **Spawn Packet**: Spawns a virtual item entity at a specific location. - - **Metadata Packet**: Updates the visual properties of virtual items. - - **Velocity Packet**: Adds motion/velocity to entities (currently optional). - - **Destroy Packet**: Removes the entity from the client view. + - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. + - Packet types: + - **Spawn Packet**: Spawns a virtual item entity at a specific location. + - **Metadata Packet**: Updates the visual properties of virtual items. + - **Velocity Packet**: Adds motion/velocity to entities (currently optional). + - **Destroy Packet**: Removes the entity from the client view. 3. **Error Handling and Logging**: - - Enhanced debug logs to trace packet-related issues. - - Detailed error messages for missing factories or unregistered listeners. + - Enhanced debug logs to trace packet-related issues. + - Detailed error messages for missing factories or unregistered listeners. #### Improvements: diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md index 7775308722..c6e0948d19 100644 --- a/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md index f420997a9c..38587e3784 100644 --- a/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md index 5ed8182c9a..259c55f342 100644 --- a/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md index 924a37ac49..7fd4596a6a 100644 --- a/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,6 +10,6 @@ This is a BungeeCord plugin, you need install it within your BungeeCord's plugin ## How does it work? -BungeeCord Bridge plugins will register a `quickshop:bungee` channel for fowarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. +BungeeCord Bridge plugins will register a `quickshop:bungee` channel for forwarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. All forwarding is indicated by QuickShop-Hikari on the Spigot server and ends when it is not needed. diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md index 27d68956a8..20fbaf7a0c 100644 --- a/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,5 +10,5 @@ This compatibility module added [Chest Protect](https://www.spigotmc.org/resourc ## How does it work? -This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident.\ +This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident. It also prevents players from creating shops on ChestProtect protected containers. diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md index 220e26d8bb..e1757e7be9 100644 --- a/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/dominion.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/dominion.md new file mode 100644 index 0000000000..e1195278a8 --- /dev/null +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/dominion.md @@ -0,0 +1,138 @@ +# Dominion + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and Dominion. + +It ensures that shop creation and trading respect Dominion’s land and territory protection system. + +--- + +## What Does It Do? + +Dominion allows players or groups to claim land and define territory-based permissions. + +Without compatibility: + +- Players could create shops inside territories they do not control. +- Visitors might trade inside protected dominions. +- Dominion permission rules might not apply to shop interactions. + +The Dominion compat module ensures that: + +- Shop creation respects territory ownership. +- Shop trading follows Dominion permission settings. +- Protected land remains secure from unauthorized shop usage. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a Dominion-controlled area. +- Whether the player has permission within that territory. +- Whether Dominion rules allow shop interaction. + +If the action is not permitted by Dominion settings, QuickShop blocks it. + +If the location is outside any Dominion territory, default QuickShop behavior applies. + +--- + +## Territory Owner Control + +With this module enabled: + +- Territory owners can create and manage shops inside their dominion. +- Trusted members follow territory-based permissions. +- Outsiders are restricted unless explicitly allowed. +- Shop actions respect Dominion’s land rules automatically. + +This prevents unauthorized shop placement inside protected territories. + +--- + +## Installation + +1. Install Dominion. +2. Install the QuickShop Dominion compat module. +3. Restart your server. + +The module activates automatically if Dominion is detected. + +No manual configuration linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside dominions +whitelist-mode: false + +# Allow territory owners to override shop permissions +allow-owner-override: true +``` + +If Dominion is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For servers using Dominion: + +- Restrict shop creation to territory owners or trusted members. +- Prevent shop creation in wilderness if desired. +- Allow dominion owners to manage shop permissions. +- Review Dominion permission settings to align with shop behavior. + +This ensures protected territories remain secure and organized. + +--- + +## Common Questions + +### Can players create shops in someone else's dominion? + +Only if Dominion permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You may allow or restrict shops outside dominions. + +### What happens if Dominion is removed? + +QuickShop returns to normal behavior and stops checking Dominion territories. + +--- + +## Summary + +The Dominion compat module: + +- Enforces territory-based permissions +- Prevents unauthorized shop creation +- Protects claimed land from misuse +- Integrates seamlessly with Dominion + +It is recommended for servers running Dominion. \ No newline at end of file diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md index 743d3ae666..2ac9b10488 100644 --- a/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md new file mode 100644 index 0000000000..07ba4ada66 --- /dev/null +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md @@ -0,0 +1,133 @@ +# FabledSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and FabledSkyblock. + +It ensures that shop creation and trading properly respect island boundaries and island permissions. + +--- + +## What Does It Do? + +On Skyblock servers, players build and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Players might trade in areas they should not. +- Island protection rules might not apply to shops. + +The FabledSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members behave correctly with shops. +- Island visitors are restricted appropriately. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a FabledSkyblock island. +- Whether the player has permission on that island. +- Whether island settings allow the action. + +If the action is not permitted by island rules, QuickShop will deny it. + +--- + +## Island Ownership Rules + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow island permission settings. +- Visitors can only trade if island permissions allow it. +- Outside of islands, default QuickShop behavior applies. + +--- + +## Installation + +1. Install FabledSkyblock. +2. Install the QuickShop FabledSkyblock compat module. +3. Restart your server. + +The module activates automatically if FabledSkyblock is detected. + +No manual linking is required. + +--- + +## Configuration + +If the module provides configuration options, they will appear in its `config.yml`. + +Typical options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If FabledSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most Skyblock servers: + +- Allow shop creation only inside islands. +- Prevent trading in the void or wilderness. +- Let island owners control shop permissions. +- Use island rank systems to manage shop access. + +This helps maintain economic balance between islands. + +--- + +## Common Questions + +### Can players create shops in the void? + +Only if your configuration allows it. +Most servers disable shop creation outside islands. + +### Does this affect island war or PvP modes? + +No. +The module only checks island ownership and permissions for shop interactions. + +### What happens if FabledSkyblock is removed? + +QuickShop returns to normal behavior. + +--- + +## Summary + +The FabledSkyblock compat module: + +- Protects island economies +- Enforces island permission rules +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is strongly recommended for any server running FabledSkyblock. \ No newline at end of file diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md index 81b13d2c6b..32614d3019 100644 --- a/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md @@ -2,17 +2,17 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -GreifPrevention compatibility module added compaitibility with GF. +GreifPrevention compatibility module added compatibility with GF. ## How does it work This module allow QuickShop-Hikari check if player have permission to create or use QuickShop in specific region. -And delete shops when claim removed, untrusted, unclimed, expired, resized or subclaim created. +And delete shops when claim removed, untrusted, unclaimed, expired, resized or subclaim created. ## Configuration diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md new file mode 100644 index 0000000000..e71b34d462 --- /dev/null +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md @@ -0,0 +1,139 @@ +# HuskTowns + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and HuskTowns. + +It ensures that shop creation and trading respect town and claim permissions defined by HuskTowns. + +--- + +## What Does It Do? + +HuskTowns allows players to create towns and claim land. + +Without compatibility: + +- Players could create shops inside towns they do not belong to. +- Visitors might trade inside protected towns. +- Town permission rules might not apply to shop interactions. + +The HuskTowns compat module ensures that: + +- Shop creation respects town ownership. +- Trading follows town permission settings. +- Town members and visitors are handled correctly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a HuskTowns claim. +- Whether the player is a town member, trusted player, or outsider. +- Whether the town's permission settings allow the action. + +If the action is not permitted by town rules, QuickShop blocks it. + +Outside of town claims, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Town Owner Control + +With this module enabled: + +- Town owners can create and manage shops inside their town. +- Town members follow town-based permission settings. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect town claim protection. + +This prevents unauthorized shop placement and trading inside protected towns. + +--- + +## Installation + +1. Install HuskTowns. +2. Install the QuickShop HuskTowns compat module. +3. Restart your server. + +The module activates automatically if HuskTowns is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside towns +whitelist-mode: false + +# Allow town owners to override shop permissions +allow-owner-override: true +``` + +If HuskTowns is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For town-based survival servers: + +- Restrict shop creation to town members. +- Allow trading only where town permissions permit. +- Prevent shop creation in wilderness if desired. +- Enable owner override for better administrative control. + +This helps maintain town-based economic balance. + +--- + +## Common Questions + +### Can players create shops in another town? + +Only if that town's permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You can allow or restrict shops outside towns. + +### What happens if HuskTowns is removed? + +QuickShop returns to normal behavior and stops checking town permissions. + +--- + +## Summary + +The HuskTowns compat module: + +- Enforces town-based land permissions +- Protects towns from unauthorized shop usage +- Integrates smoothly with HuskTowns +- Requires minimal setup + +It is recommended for any server running HuskTowns. \ No newline at end of file diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md new file mode 100644 index 0000000000..3fa2995eb0 --- /dev/null +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md @@ -0,0 +1,139 @@ +# IridiumSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and IridiumSkyblock. + +It ensures that shop creation and trading respect island boundaries and island permission settings defined by IridiumSkyblock. + +--- + +## What Does It Do? + +IridiumSkyblock allows players to create and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Visitors might trade inside protected islands. +- Island protection rules might not apply correctly to shops. + +The IridiumSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members and visitors are handled properly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside an IridiumSkyblock island. +- Whether the player is the island owner, member, or visitor. +- Whether island permissions allow shop interaction. + +If the action is not permitted, QuickShop blocks it. + +Outside of islands, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Island Owner Permissions + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow the island's permission configuration. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect island protection rules. + +This prevents unauthorized shop usage inside protected islands. + +--- + +## Installation + +1. Install IridiumSkyblock. +2. Install the QuickShop IridiumSkyblock compat module. +3. Restart your server. + +The module activates automatically if IridiumSkyblock is detected. + +No additional setup is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If IridiumSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most IridiumSkyblock servers: + +- Restrict shop creation to island owners. +- Allow island members to trade if trusted. +- Prevent shop creation in the void or wilderness. +- Enable owner override for better management. + +This helps maintain balanced island economies. + +--- + +## Common Questions + +### Can players create shops outside their island? + +Only if your configuration allows it. + +Most Skyblock servers restrict shops to island areas. + +### Do island ranks affect shop permissions? + +Yes, if your island permissions are configured to control interaction rights. + +QuickShop follows island rules. + +### What happens if IridiumSkyblock is removed? + +QuickShop returns to normal behavior and stops checking island permissions. + +--- + +## Summary + +The IridiumSkyblock compat module: + +- Protects island economies +- Enforces island-based permissions +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is recommended for any server running IridiumSkyblock. diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md new file mode 100644 index 0000000000..3b4726cb9d --- /dev/null +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md @@ -0,0 +1,151 @@ +# ItemMatcherPlus + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +The ItemMatcherPlus module improves how QuickShop matches custom and plugin-modified items. + +It allows QuickShop to properly recognize and stack items created by other plugins that normally would not match using standard Bukkit item comparisons. + +This module is especially useful for servers that use: + +- Custom items +- Modified metadata +- NBT-based systems +- Advanced crate rewards +- Custom brewing systems +- Custom fishing rewards + +--- + +## What Does It Do? + +By default, Minecraft item matching checks: + +- Material type +- Basic metadata + +However, many plugins modify items with: + +- Custom NBT data +- Hidden tags +- Custom lore formats +- Unique identifiers + +Without enhanced matching: + +- Items may not stack +- Shops may refuse valid items +- Transactions may fail +- Buying/selling may not behave correctly + +ItemMatcherPlus improves compatibility and matching accuracy. + +--- + +## Supported Plugins + +ItemMatcherPlus includes built-in support for: + +- AdvancedItems +- BreweryX +- CrazyCrates +- ExcellentCrates +- PyroFishing +- SilkSpawners + +If any of these plugins are installed, QuickShop will automatically use enhanced matching logic. + +No additional configuration is required. + +--- + +## How It Works + +When a player trades with a shop: + +1. QuickShop checks the item. +2. If ItemMatcherPlus is enabled, it performs advanced matching. +3. Plugin-specific metadata is validated. +4. The item is confirmed as a match (or rejected safely). + +This allows: + +- Proper stacking of custom items +- Correct shop transactions +- Accurate buy/sell detection +- Reduced false mismatches + +--- + +## Installation + +1. Download the ItemMatcherPlus module. +2. Place the JAR into your `plugins` folder. +3. Restart your server. + +If supported plugins are detected, compatibility activates automatically. + +--- + +## Configuration + +ItemMatcherPlus does not require configuration. + +It activates automatically when: + +- The module is installed +- A supported plugin is detected + +If a supported plugin is not installed, no extra logic runs. + +--- + +## Why You Should Use It + +You should install ItemMatcherPlus if your server uses: + +- Custom fishing plugins +- Custom brewing systems +- Crate plugins with modified items +- Custom spawners +- Any plugin that modifies NBT data + +Without it, shops may not properly recognize custom items. + +--- + +## Common Questions + +### Do I need this if I don't use custom item plugins? + +No. +If you only use vanilla items, this module is not necessary. + +### Does this affect performance? + +The module only activates enhanced matching when needed. + +Normal item matching remains fast and efficient. + +### Will it break existing shops? + +No. +It improves compatibility and matching accuracy without modifying existing shop data. + +--- + +## Summary + +ItemMatcherPlus: + +- Improves item matching accuracy +- Adds support for major custom item plugins +- Prevents stacking and trade issues +- Requires no configuration +- Activates automatically + +If you run a heavily customized economy server, this module is highly recommended. \ No newline at end of file diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md index ba87606698..d4ae7d129a 100644 --- a/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/lands.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/lands.md index 06296f5779..7671fcdfe0 100644 --- a/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/lands.md +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/lands.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/openinv.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/openinv.md index c51f628615..4807d57873 100644 --- a/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/openinv.md +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/openinv.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md new file mode 100644 index 0000000000..c2136320b0 --- /dev/null +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md @@ -0,0 +1,138 @@ +# SimpleClaimSystem + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and SimpleClaimSystem. + +It ensures that shop creation and trading respect land ownership and claim permissions defined by SimpleClaimSystem. + +--- + +## What Does It Do? + +SimpleClaimSystem allows players to claim land and protect it from unauthorized interaction. + +Without compatibility: + +- Players could create shops inside claims they do not own. +- Visitors might trade inside protected areas. +- Claim protection might not apply correctly to shops. + +The SimpleClaimSystem compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops within their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a SimpleClaimSystem claim. +- Whether the player has permission within that claim. +- Whether claim rules allow shop interaction. + +If the action is not permitted by the claim, QuickShop blocks it. + +If the location is outside any claim, default QuickShop behavior applies. + +--- + +## Claim Owner Control + +With this module enabled: + +- Claim owners can create and manage shops inside their claim. +- Trusted players follow claim-based permissions. +- Visitors are restricted unless explicitly allowed. +- Claim protection rules apply automatically to shop interactions. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install SimpleClaimSystem. +2. Install the QuickShop SimpleClaimSystem compat module. +3. Restart your server. + +The module activates automatically if SimpleClaimSystem is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If SimpleClaimSystem is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Enable owner override for easier management. + +This ensures players maintain control over their protected land. + +--- + +## Common Questions + +### Can players create shops in someone else's claim? + +Only if claim permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can allow shops outside claims or restrict them. + +### What happens if SimpleClaimSystem is removed? + +QuickShop will revert to default behavior and stop checking claim permissions. + +--- + +## Summary + +The SimpleClaimSystem compat module: + +- Enforces claim-based permissions +- Prevents unauthorized shop creation +- Protects land from unwanted trading +- Requires minimal setup + +It is recommended for servers running SimpleClaimSystem. \ No newline at end of file diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md index a84dbf057b..4dfa8ae97c 100644 --- a/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/towny.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/towny.md index 52ab4818f4..b26c19d335 100644 --- a/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/towny.md +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/towny.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -26,7 +26,7 @@ Town sub-command allow you switch a quickshop between regular shop and town shop For a nation shop, the shop owner will changed to nation fake player created by Towny, and use Nation's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from nation Towny account.\ +All purchases will deposit or withdraw money from nation Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Nation Shop. @@ -35,7 +35,7 @@ If Plot type restriction is enabled, only a specific Plot type can create a Nati For a town shop, the shop owner will changed to town fake player created by Towny, and use Town's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from town Towny account.\ +All purchases will deposit or withdraw money from town Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Town Shop. @@ -88,7 +88,7 @@ bank-mode: ## Permission Override -By adjust configuration, you're allow mayor or king automaticlly grant administrator permission on all shops in their management range. +By adjust configuration, you're allow mayor or king automatically grant administrator permission on all shops in their management range. ```yaml #Should allow Mayor grant the shop administrator permission on they town. @@ -168,7 +168,7 @@ This causes Towny and QuickShop Hikari to use accounts with the same name but di You can adjust the option in configuration to enable workaround. -NOTE: It will force turned on if detected EssentialsX installed on your server.\ +NOTE: It will force turned on if detected EssentialsX installed on your server. At present, we do not provide a method for disable it. ```yaml diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md new file mode 100644 index 0000000000..0189958495 --- /dev/null +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md @@ -0,0 +1,138 @@ +# UltimateClaims + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and UltimateClaims. + +It ensures that shop creation and trading respect land claim permissions managed by UltimateClaims. + +--- + +## What Does It Do? + +On servers using land-claim plugins, players protect areas of the world from unauthorized interaction. + +Without compatibility: + +- Players may create shops inside claims they do not own. +- Visitors might trade in areas where they should not. +- Claim protection rules might not apply correctly to shops. + +The UltimateClaims compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops inside their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a claim. +- Whether the player has permission in that claim. +- Whether claim rules allow shop interaction. + +If the action violates claim settings, QuickShop blocks it. + +Outside of claims, normal QuickShop behavior applies. + +--- + +## Claim Owner Permissions + +With this module enabled: + +- Claim owners can create and manage shops within their claim. +- Trusted players follow claim permission settings. +- Visitors are restricted based on claim configuration. +- Shop actions outside of claims behave normally. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install UltimateClaims. +2. Install the QuickShop UltimateClaims compat module. +3. Restart your server. + +If UltimateClaims is detected on startup, compatibility activates automatically. + +No additional linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Common options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If UltimateClaims is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Keep owner override enabled for better control. + +This ensures players maintain full control over their protected land. + +--- + +## Common Questions + +### Can players create shops inside someone else's claim? + +Only if the claim permissions allow it. + +Otherwise, QuickShop will block the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can choose to restrict shops to claimed land only. + +### What happens if UltimateClaims is removed? + +QuickShop returns to normal behavior without claim checks. + +--- + +## Summary + +The UltimateClaims compat module: + +- Protects claimed land from unauthorized shop usage +- Enforces claim-based permissions +- Integrates smoothly with land-claim servers +- Requires minimal setup + +It is recommended for any server running UltimateClaims. \ No newline at end of file diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md index 87a71a205c..6437754503 100644 --- a/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md @@ -2,8 +2,10 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. Find out more [here](../modules/shops/worldedit.md). + +Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. \ No newline at end of file diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/development/01-getting-start.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/development/01-getting-start.md index 92b773451e..0e78e52367 100644 --- a/i18n/es-ES/docusaurus-plugin-content-docs/current/development/01-getting-start.md +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/development/01-getting-start.md @@ -6,8 +6,8 @@ This series of articles will help you build extensions for QuickShop-Hikari or i ## License -QuickShop-Hikari is open source using the [GPLv3](https://www.gnu.org/licenses/quick-guide-gplv3.en.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari).\ -You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the GPLv3 agreement. +QuickShop-Hikari is open source using the [AGPLv3](https://www.gnu.org/licenses/agpl-3.0.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari). +You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the AGPLv3 agreement. ## 🚧Don't trust Javadoc too much @@ -48,7 +48,7 @@ QuickShop-Hikari divides operation sources into three types: - Server Main Thread - Async Thread (any other threads but not server main thread) -- Hybird +- Hybrid If you access the API through the wrong thread, QuickShop-Hikari will force a runtime error to be thrown. @@ -58,4 +58,4 @@ For APIs that may trigger network IO or long-time disk IO, you are required not You can see [Util.ensureThread()](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/3d1d271e1106ea1c83cc6068f8232ab7c7860918/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/util/Util.java#L351) and find out the requirements of the different APIs by looking up their use. APIs that do not use Util.ensureThread() are allowed to be called from any thread by default. -You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. +You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. \ No newline at end of file diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md index aa2404c594..7828d414ad 100644 --- a/i18n/es-ES/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md @@ -10,7 +10,7 @@ ShopManager manager = api.getShopManager(); ## Getting a shop -Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates.\ +Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates. QuickShop-Hikari's store is only bound to one half of "Large Chest", so to get the store, you need to query both the cube itself and its associated cube. The good thing is that there is an API in the plugin that allows you to handle this situation very easily. @@ -71,7 +71,7 @@ manager.deleteShop(shop) // Permanently delete this store, both memory and datab ## Identify a store -Please note that store locations are technically variable and you should not use coordinates to identify a store.\ +Please note that store locations are technically variable and you should not use coordinates to identify a store. Also RuntimeRandomUniqueId should not be used to identify the store, as the name suggests, the value changes every time the server restarts, it should only be used to handle scenarios where the player interacts with the server. ```java diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md index 543f1851da..4f839ed652 100644 --- a/i18n/es-ES/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md @@ -1,6 +1,6 @@ # 0x05 Per shop permission -QuickShop-Hikari has a per shop permission management system.\ +QuickShop-Hikari has a per shop permission management system. Therefore, for a normal permission node check is not enough, you need to attach an additional check. ## Check with shop diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/development/06-protocol-system.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/development/06-protocol-system.md index 5d37a15536..0380b789f9 100644 --- a/i18n/es-ES/docusaurus-plugin-content-docs/current/development/06-protocol-system.md +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/development/06-protocol-system.md @@ -15,30 +15,30 @@ This documentation will guide developers through the components, implementation - **Purpose**: Manages packet handling and initialization logic. - **Interface**: `PacketHandler` - **Key Methods**: - - `Map> factories()` - - Retrieves a map of supported `PacketFactory` instances keyed by game versions. - - `void initialize()` - - Initializes the packet handler. - - `Optional> factory(String version)` - - Retrieves a `PacketFactory` for a specific game version. + - `Map> factories()` + - Retrieves a map of supported `PacketFactory` instances keyed by game versions. + - `void initialize()` + - Initializes the packet handler. + - `Optional> factory(String version)` + - Retrieves a `PacketFactory` for a specific game version. ### 2. **PacketFactory** - **Purpose**: Creates and sends specific packet types. - **Interface**: `PacketFactory` - **Supported Packets**: - - **Spawn Packet**: - - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. - - Example Use: Representing shop items visually. - - **Metadata Packet**: - - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. - - Example Use: Updating item display name or properties. - - **Velocity Packet**: - - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. - - Example Use: Custom animations for virtual items. - - **Destroy Packet**: - - Removes the entity from the client view. Created using `createDestroyPacket()`. - - Example Use: Unloading or removing a virtual display item. + - **Spawn Packet**: + - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. + - Example Use: Representing shop items visually. + - **Metadata Packet**: + - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. + - Example Use: Updating item display name or properties. + - **Velocity Packet**: + - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. + - Example Use: Custom animations for virtual items. + - **Destroy Packet**: + - Removes the entity from the client view. Created using `createDestroyPacket()`. + - Example Use: Unloading or removing a virtual display item. Developers implementing custom `PacketFactory` should ensure these packets are correctly handled and optimized for performance. @@ -46,24 +46,24 @@ Developers implementing custom `PacketFactory` should ensure these packets are c - **Purpose**: Oversees the lifecycle of virtual display items and integrates with packet handlers. - **Key Features**: - - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). - - Manages virtual display items mapped to chunks. - - Provides thread-safe operations for adding and removing display items. + - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). + - Manages virtual display items mapped to chunks. + - Provides thread-safe operations for adding and removing display items. ### 4. **VirtualDisplayItem** - **Purpose**: Represents a virtual item displayed to players. - **Key Features**: - - Generates and caches packets for spawning, metadata, velocity, and destruction. - - Manages packet senders for each player. - - Handles spawn and removal operations dynamically. + - Generates and caches packets for spawning, metadata, velocity, and destruction. + - Manages packet senders for each player. + - Handles spawn and removal operations dynamically. ### 5. **ProtocolLibHandler and PacketEventsHandler** - **Purpose**: Provide implementations of `PacketHandler` using ProtocolLib and PacketEvents, respectively. - **Differences**: - - `ProtocolLibHandler` leverages ProtocolLib API. - - `PacketEventsHandler` uses the PacketEvents library. + - `ProtocolLibHandler` leverages ProtocolLib API. + - `PacketEventsHandler` uses the PacketEvents library. --- @@ -140,11 +140,11 @@ public class CustomPacketFactory implements PacketFactory { Packet factories are provided for specific game versions through two primary implementations: - **ProtocolLib**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` - **PacketEvents**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` --- diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md new file mode 100644 index 0000000000..aebc035f87 --- /dev/null +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md @@ -0,0 +1,297 @@ +# Interaction System (Developer Guide) + +The Interaction System allows developers to fully customize how players interact with shops. + +As of 6.2.0.11, the system has been redesigned to be: + +- Modular +- Extensible +- Thread-safe +- Fully customizable by third-party addons + +This guide will walk you through: + +1. What the Interaction System is +2. Getting the `InteractionManager` +3. Understanding `InteractionType` +4. Understanding `InteractionBehavior` +5. Registering custom interactions +6. Best practices + +--- + +# Overview + +The Interaction System is composed of three main components: + +| Component | Purpose | +| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| `InteractionType` | Describes **what kind of click happened** (standing, sneaking, left-click, sign, shopblock, etc.) | +| `InteractionBehavior` | Describes **what action should happen** when that type is triggered | +| `InteractionManager` | Central registry that manages interactions and behaviors | + +This separation allows developers to: + +- Add new click types +- Add new behaviors +- Override existing ones +- Extend QuickShop without modifying core code + +--- + +# Getting the InteractionManager + +To begin registering custom interactions, you must retrieve the `InteractionManager` instance. + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +If you are working directly with the plugin instance: + +```java +InteractionManager manager = QuickShop.getInstance().getInteractionManager(); +``` + +Once obtained, you can: + +- Register new interaction types +- Register new behaviors +- Override existing behaviors + +--- + +# Understanding InteractionType + +`InteractionType` represents **how** a player interacted with a shop. + +Examples include: + +- `STANDING_LEFT_CLICK_SIGN` +- `STANDING_RIGHT_CLICK_SHOPBLOCK` +- `SNEAKING_LEFT_CLICK_CONTAINER` +- etc. + +Each `InteractionType` defines: + +- Player stance (standing/sneaking) +- Click type (left/right) +- Target (sign/shopblock/container) + +InteractionTypes do NOT define behavior — they only define the trigger. + +--- + +# Understanding InteractionBehavior + +`InteractionBehavior` defines **what happens** when an interaction is triggered. + +Examples of built-in behaviors: + +- `TRADE_INTERACTION` +- `TRADE_UI` +- `CONTROL_PANEL` +- `CONTROL_PANEL_UI` +- `NONE` + +A behavior: + +- Executes logic +- May open GUIs +- May send chat panels +- May directly trade items +- Can cancel or modify flow + +This separation makes it easy to reuse behaviors across multiple interaction types. + +--- + +# Registering Custom Interactions + +There are two things you can register: + +- A custom `InteractionType` +- A custom `InteractionBehavior` + +--- + +## Creating a Custom InteractionBehavior + +Create a class implementing `InteractionBehavior`. + +Example: + +```java +public class MyTradeBehavior implements InteractionBehavior { + + @Override + public String getKey() { + return "MY_CUSTOM_TRADE"; + } + + @Override + public void execute(InteractionClick click) { + Player player = click.getPlayer(); + Shop shop = click.getShop(); + + player.sendMessage("You triggered my custom interaction!"); + + // Add your custom logic here + } +} +``` + +Then register it: + +```java +InteractionManager manager = api.getInteractionManager(); +manager.behavior(new MyTradeBehavior()); +``` + +Now your behavior is available for use. + +--- + +## Creating a Custom InteractionType + +You may also register custom interaction types if you want to introduce new trigger definitions. + +Example: + +```java +public class MyCustomInteraction implements InteractionType { + + @Override + public String getKey() { + return "STANDING_DOUBLE_CLICK_SIGN"; + } + + @Override + public boolean matches(InteractionClick click) { + // Define custom logic to detect this interaction + return click.isStanding() + && click.isSign() + && click.isDoubleClick(); + } +} +``` + +Register it: + +```java +manager.interaction(new MyCustomInteraction()); +``` + +--- + +# Binding Types to Behaviors + +The InteractionManager internally maps interaction types to behaviors based on configuration and registration order. + +Once your behavior is registered: + +- It can be referenced in `interaction.yml` +- Or attached programmatically + +Example interaction.yml usage: + +```yaml +STANDING_LEFT_CLICK_SIGN: MY_CUSTOM_TRADE +``` + +--- + +# The InteractionClick Object + +When your behavior executes, you receive an `InteractionClick` object. + +It provides: + +- `getPlayer()` +- `getShop()` +- `getLocation()` +- `isSneaking()` +- `isSign()` +- `isShopBlock()` +- etc. + +This gives full context for safe execution. + +--- + +# Advanced: Overriding Built-in Behavior + +If you register a behavior using the same key as an existing one, your behavior can override the default. + +⚠️ Be careful when doing this — you are replacing core functionality. + +--- + +# Best Practices + +### Always Use Unique Keys + +Avoid naming collisions: + +``` +MYPLUGIN_CUSTOM_BEHAVIOR +``` + +### Keep Behavior Lightweight + +Do not block the main thread with: + +- Heavy database calls +- File IO +- Network calls + +Use async tasks if needed. + +### Respect Permissions + +Always validate: + +```java +if (!player.hasPermission("myplugin.use")) { + return; +} +``` + +### Avoid Hard Overrides Unless Necessary + +Instead of replacing built-in behaviors, consider extending them. + +--- + +# Example: Full Minimal Implementation + +```java +public class ExampleAddon { + + public void register(QuickShopAPI api) { + + InteractionManager manager = api.getInteractionManager(); + + manager.behavior(new MyTradeBehavior()); + manager.interaction(new MyCustomInteraction()); + } +} +``` + +--- + +# Conclusion + +The Interaction System is designed to allow: + +- Full extensibility +- Clean separation of triggers and actions +- Easy integration for third-party developers + +By retrieving the `InteractionManager`: + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +You gain full control over how shops respond to player actions. \ No newline at end of file diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/development/08-tax-manager.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/development/08-tax-manager.md new file mode 100644 index 0000000000..72a56f9e88 --- /dev/null +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/development/08-tax-manager.md @@ -0,0 +1,266 @@ +# Tax System (Developer Guide) + +The QuickShop tax system allows server owners and developers to define how transaction taxes are calculated, distributed, and extended. + +As of 6.2.0.11, the tax system has been fully rewritten to provide: + +- A flexible TaxManager +- Pluggable TaxProvider support +- Progressive taxation +- Tax targeting (shop owner, interacting player, or both) +- Custom extension capability for third-party addons + +This guide explains how to work with the tax system programmatically. + +--- + +# Overview + +The tax system is composed of three core components: + +TaxManager +Responsible for coordinating tax calculation and execution. + +TaxProvider +Defines how tax values are calculated. + +TaxRates +Represents calculated tax results for a transaction. + +The system is designed to allow custom providers to be registered and used without modifying core logic. + +--- + +# Getting the TaxManager + +To work with the tax system, retrieve the TaxManager from the ShopManager. + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +Once obtained, you can: + +- Access current tax configuration +- Register custom tax providers +- Calculate tax values +- Hook into tax events + +--- + +# How the Tax System Works + +During a shop transaction: + +1. A base price is determined. +2. The TaxManager selects the active TaxProvider. +3. The TaxProvider calculates applicable tax. +4. A TaxRates object is produced. +5. The system applies the tax to: + + - Shop owner + - Interacting player + - Or both (depending on configuration) + +This architecture allows tax behavior to be modified without altering transaction logic. + +--- + +# TaxProvider + +A TaxProvider defines how tax values are calculated. + +You may create your own provider to implement: + +- Progressive tax brackets +- Flat percentage tax +- Conditional tax rules +- Region-based tax +- Rank-based tax +- Time-based tax + +Example minimal provider: + +```java +public class MyCustomTaxProvider implements TaxProvider { + + @Override + public TaxRates calculateTax(TaxContext context) { + + double basePrice = context.getPrice(); + + double taxAmount = basePrice * 0.05; // 5% flat tax + + return new TaxRates() + .ownerTax(taxAmount) + .buyerTax(0.0); + } +} +``` + +Then register it: + +```java +taxManager.provider(new MyCustomTaxProvider()); +``` + +Once registered, your provider will be used for tax calculations. + +--- + +# TaxRates + +TaxRates represents the result of a tax calculation. + +It typically contains: + +- Owner tax amount +- Buyer tax amount +- Total tax impact +- Metadata (if applicable) + +The transaction system will read from TaxRates and apply deductions accordingly. + +--- + +# Progressive Taxation + +The built-in system supports progressive tax structures. + +This allows server administrators to tax based on: + +- Player balance +- Shop owner balance +- Configured tax brackets + +Example configuration concept: + +- 0–10,000 balance → 1% tax +- 10,000–100,000 → 2% tax +- 100,000+ → 3% tax + +Developers can extend or override this logic inside a custom TaxProvider. + +--- + +# Targeting Tax + +The new tax system allows taxes to be applied to: + +- Shop owner +- Interacting player +- Both + +This is controlled via configuration, but custom providers can override distribution logic by adjusting TaxRates output. + +Example: + +```java +return new TaxRates() + .ownerTax(basePrice * 0.02) + .buyerTax(basePrice * 0.01); +``` + +--- + +# Registering a Custom TaxProvider + +To replace or extend tax logic: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); + +taxManager.provider(new MyCustomTaxProvider()); +``` + +You may register only one primary provider at a time. If multiple providers are needed, implement internal delegation within your custom provider. + +--- + +# Tax Events + +The tax system integrates with the event system. + +The modern event used is: + +ShopEnhancedTaxEvent + +This replaces legacy tax events and provides improved context, including: + +- Transaction builder reference +- TaxRates object +- Modification capability before final execution + +You can listen for the event and modify tax behavior dynamically: + +```java +@EventHandler +public void onTax(ShopEnhancedTaxEvent event) { + + TaxRates rates = event.getTaxRates(); + + // Example: Give VIP players reduced owner tax + if (event.getOwner().hasPermission("vip.tax.discount")) { + rates.ownerTax(rates.getOwnerTax() * 0.5); + } +} +``` + +--- + +# Best Practices + +Always keep tax calculations lightweight. + +Avoid: + +- Heavy database queries inside calculateTax +- Blocking network calls +- Long-running computations + +If complex logic is required, pre-cache required data outside the tax execution path. + +Ensure negative tax values are not returned unless intentional. + +Always validate final amounts before applying modifications. + +Respect configuration hierarchy unless intentionally overriding it. + +--- + +# Example Full Implementation + +```java +public class ExampleTaxAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + TaxManager taxManager = manager.taxManager(); + + taxManager.provider(new MyCustomTaxProvider()); + } +} +``` + +--- + +# Conclusion + +The new tax system is designed for: + +- Flexibility +- Extensibility +- Clean separation of concerns +- Future expansion + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +You gain full control over how QuickShop calculates and applies tax during transactions. \ No newline at end of file diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/development/09-layout-provider.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/development/09-layout-provider.md new file mode 100644 index 0000000000..55e3cd3e91 --- /dev/null +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/development/09-layout-provider.md @@ -0,0 +1,275 @@ +# Shop Layout Provider (Developer Guide) + +The Shop Layout Provider system allows developers to customize how shop signs are structured and rendered. + +As of 6.2.0.11, shop layouts are no longer hardcoded. Instead, they are controlled through the `IShopLayoutProvider` interface, which allows: + +- Custom sign line ordering +- Per-shop-type layouts (BUYING, SELLING, FROZEN, or custom types) +- Dynamic layout resolution +- Complete replacement of the default layout system + +This guide explains how to access, override, and implement a custom layout provider. + +--- + +# Overview + +The layout provider controls how shop sign lines are arranged. + +Instead of hardcoding: + +Line 1 → Header +Line 2 → Trading info +Line 3 → Item +Line 4 → Price + +The system now allows full customization through: + +- Config-based layout definitions +- Custom `IShopLayoutProvider` implementations +- Runtime overrides + +The default implementation is `SimpleShopLayoutProvider`. + +--- + +# Accessing the Layout Provider + +To retrieve the current layout provider: + +```java +ShopManager manager = api.getShopManager(); +IShopLayoutProvider provider = manager.shopLayoutProvider(); +``` + +To replace the layout provider with a custom one: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Once replaced, your implementation will control how shop layouts are generated. + +--- + +# Understanding IShopLayoutProvider + +`IShopLayoutProvider` defines how layout data is retrieved and resolved. + +It is responsible for: + +- Providing layout configuration per shop type +- Determining which layout to use +- Supplying formatted line keys +- Allowing future extensibility + +The default implementation reads layout definitions from configuration and applies them based on shop type. + +--- + +# Default Layout Example + +The default configuration-based layout looks like this: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +Each line maps to a layout component key. + +An empty string (`""`) leaves that line blank. + +The layout provider resolves these keys into actual sign content. + +--- + +# Creating a Custom Layout Provider + +To override the default behavior, implement `IShopLayoutProvider`. + +Example minimal implementation: + +```java +public class MyCustomLayoutProvider implements IShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + + ShopLayout layout = new ShopLayout(); + + layout.setLine(1, "Custom Header"); + layout.setLine(2, "Owner: " + shop.getOwnerName()); + layout.setLine(3, shop.getItem().getType().name()); + layout.setLine(4, "$" + shop.getPrice()); + + return layout; + } +} +``` + +Then register it: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Your layout will now control all shop sign formatting. + +--- + +# Per-Type Layout Control + +Because the system no longer depends on the legacy ShopType enum, layouts can support: + +- Built-in types (BUYING, SELLING, FROZEN) +- Custom shop types +- Addon-defined shop types + +Your provider can determine layout logic dynamically: + +```java +@Override +public ShopLayout provideLayout(Shop shop) { + + if (shop.getShopType().key().equals("FROZEN")) { + return frozenLayout(shop); + } + + return defaultLayout(shop); +} +``` + +This allows conditional formatting, localization adjustments, or special event styling. + +--- + +# Advanced Customization + +A custom layout provider can: + +- Pull data from external plugins +- Inject dynamic placeholders +- Modify layout per player +- Apply formatting logic +- Override color schemes +- Apply region-based formatting +- Implement animated sign systems + +Because the layout provider is resolved at runtime, you can compute layouts dynamically instead of reading static config. + +--- + +# Replacing vs Extending the Default Provider + +You have two options: + +Replace entirely: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Or extend the default implementation: + +```java +public class ExtendedLayoutProvider extends SimpleShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + ShopLayout base = super.provideLayout(shop); + + base.setLine(1, "[Extended] " + base.getLine(1)); + + return base; + } +} +``` + +Extending is safer if you only want to modify small portions. + +--- + +# Best Practices + +Keep layout generation lightweight. + +Avoid: + +- Heavy database queries +- Blocking IO +- Complex network calls + +Layout generation runs during shop updates and sign refresh events. + +Always handle null values safely. + +Ensure layout line count does not exceed sign limits. + +Avoid hardcoding shop type names unless necessary. + +If your layout supports custom shop types, validate their keys properly. + +--- + +# Example Full Registration + +```java +public class LayoutAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + + manager.shopLayoutProvider(new MyCustomLayoutProvider()); + } +} +``` + +--- + +# Conclusion + +The Shop Layout Provider system allows complete control over shop sign structure. + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +``` + +And setting: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +You can redefine how every shop is displayed on the server. + +This system was designed to support: + +- Extensibility +- Custom shop types +- Localization +- Dynamic formatting +- Future expansion \ No newline at end of file diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/faq/compare-reremake.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/faq/compare-reremake.md index aaa1a9e507..6b39f02520 100644 --- a/i18n/es-ES/docusaurus-plugin-content-docs/current/faq/compare-reremake.md +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/faq/compare-reremake.md @@ -64,7 +64,7 @@ If you are a Reremake user, you may be confused about the differences between Hi ## Which one should I use? Well, it depends on what your needs are.\ -If you have an old server (<1.20) instance, Reremake is your only choice.\ +If you have an old server ({'<'}1.20) instance, Reremake is your only choice.\ ~~If you are in China which has GFW interfere, you also should consider Reremake because it doesn't need to load libraries from Global Internet.~~ Solved in 6.0.0.0. If none of these applies, give Hikari a try! diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md index 551f579e7c..172be3a69b 100644 --- a/i18n/es-ES/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md @@ -1,8 +1,8 @@ # Where Addons/Compacts is -Addons and Compatilibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. +Addons and Compatibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. -- Open Modrinth versions page, locate the version your're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) +- Open Modrinth versions page, locate the version you're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) - Frantically slide your mouse wheel down until the lowest end of the page. - You get it! diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/internal/database-schema.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/internal/database-schema.md index fea685e4fc..45e04adb56 100644 --- a/i18n/es-ES/docusaurus-plugin-content-docs/current/internal/database-schema.md +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/internal/database-schema.md @@ -4,17 +4,17 @@ This chapter will explain the implementation details of QuickShop Hikari's datab ## Tables -This section explains the database tables created by QuickShop-Hikari.\ -Unless otherwise specified, the initial `qs_` in table name is the table prefix.\ +This section explains the database tables created by QuickShop-Hikari. +Unless otherwise specified, the initial `qs_` in table name is the table prefix. For the latest code definition for each table, see: [DataTables.java](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/hikari/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/database/DataTables.java) ### `data` -This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information.\ -No matter what, a data record should not be modified after it is created, until it got deleted.\ +This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information. +No matter what, a data record should not be modified after it is created, until it got deleted. Any new changes to the shop should create a new copy, apply the changes to the copy, and insert it as a new record. -Basiclly, Copy-on-write. +Basically, Copy-on-write. A data record only be deleted from the database when no any table references their `data_id`. @@ -29,7 +29,7 @@ A data record only be deleted from the database when no any table references the | unlimited | BIT NOT NULL | 0 | Indicates whether this store is an unlimited store, 0=Limited, 1=Unlimited | | hologram | BIT NOT NULL | 0 | Indicates the suspension status of this store's display item, 0=Follow global settings, 1=Disabled | | tax_account | VARCHAR(36) | NULL | The uuid for tax account, If it is not NULL, tax will be paid to the specified account | -| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serilized to JSON string | +| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serialized to JSON string | | extra | LONGTEXT | Empty Yaml | Used to store experimental settings of QuickShop Hikari or persistent data of other plugins | | inv_wrapper | VARCHAR(255) NOT NULL | N/A | Unique identifier for InventoryWrapper for this shop data entry | | inv_symbol_link | TEXT NOT NULL | N/A | Unique Inventory symbol used to pass to InventoryWrapper, for locating inventory | @@ -38,7 +38,7 @@ A data record only be deleted from the database when no any table references the ### `shops` -This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes.\ +This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes. Multiple `shop_id` can correspond to the same `data_id`. | Column Name | DataType | Default | Description | diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/cmd-alias.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/cmd-alias.md index 53f1577685..e6ed381c0d 100644 --- a/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/cmd-alias.md +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/cmd-alias.md @@ -23,7 +23,7 @@ custom-commands: - cshop ``` -Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect.\ +Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect. The effect should be like this: ![command-alias](./img/command-alias.png) diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/datasource.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/datasource.md index 6fc1bd8931..3fd3a8bdee 100644 --- a/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/datasource.md +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/datasource.md @@ -48,7 +48,7 @@ Execute the `/quickshop export` command in console, quickshop will export a zip ![exported data](img/database-export.png) -Stop your database, switch the datasource, and start the server.\ +Stop your database, switch the datasource, and start the server. You may noticed all shops are gone, because new datasources had no data inside, we will restore them from export. Rename that exported ZIP file to `recovery.zip`, execute `/quickshop recovery` and restart your server, all shops should back. diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/itemmatcher.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/itemmatcher.md index 56be243019..922907be27 100644 --- a/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/itemmatcher.md +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/itemmatcher.md @@ -4,7 +4,7 @@ ItemMatcher is a utility used by QuickShop-Hikari to compare the items, it is th :::caution -If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse.\ +If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse. **TL;DR: Keep default unless you know what you're doing.** ::: @@ -26,10 +26,10 @@ matcher: work-type: 1 ``` -By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility.\ +By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility. But still, you can toggle to QuickShop Item Matcher if you need to customize the comparing or running QuickShop on the server jar which have bug affect the Bukkit comparing system. -## Customize the metadata compareing +## Customize the metadata comparing Customize only works under QuickShop Item Matcher. diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md index fc2af69d2b..d04e8f2783 100644 --- a/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md @@ -4,7 +4,7 @@ ItemStack Loader is a workaround for loading the Bukkit ItemStack. :::caution -Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossble. +Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossible. ::: diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/localization.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/localization.md index e9121e1a36..d47589ab9a 100644 --- a/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/localization.md +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/localization.md @@ -10,7 +10,7 @@ To help translate QuickShop-Hikari, please visit our [Crowdin Homepage](https:// ## Crowdin OTA -QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will overrided when you reload QuickShop-Hikari or restart your server. +QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will override when you reload QuickShop-Hikari or restart your server. Your installation will keep translations up-to-date without any touch. @@ -110,6 +110,16 @@ To disable the CrowdinOTA, please add it in the startup flag: -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager.enableCrowdinOTA=false ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +use-crowdin-ota: false +``` + ### Self-Hosted OTA Server If you self-hosted our translation server by using [CrowdinCopyDeploy](https://github.com/Ghost-chu/CrowdinCopyDeploy) tool, you're able to change the OTA server to yourself server. @@ -118,4 +128,12 @@ If you self-hosted our translation server by using [CrowdinCopyDeploy](https://g -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager= ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml +Use + +```yaml +crowdin-host: +``` \ No newline at end of file diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/shops/benefit.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/shops/benefit.md index 4d7a9c8f42..c59d92e6d1 100644 --- a/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/shops/benefit.md +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/shops/benefit.md @@ -37,3 +37,13 @@ By default, for security, QuickShop-Hikari disallow add offline players into sho ```bash -Dcom.ghostchu.quickshop.command.subcommand.SubCommand_Benefit.allowOffline=true ``` + +### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +shop.allow-offline-benefit: true +``` \ No newline at end of file diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/shops/control-panel b/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/shops/control-panel new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/shops/control-panel @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/shops/history.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/shops/history.md index fa891adeab..195b64a042 100644 --- a/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/shops/history.md +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/shops/history.md @@ -24,7 +24,7 @@ The History GUI displays the details of each recorded transaction and other usef ### Transaction details -When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed.\ +When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed. If you are checking the history of more than one store, the player head will be replaced with an item from the corresponding store. ![history-gui](./img/history-gui.png) diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md new file mode 100644 index 0000000000..c5ed3b3fe4 --- /dev/null +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md @@ -0,0 +1,90 @@ +# Shop Types + +QuickShop supports multiple shop types, allowing shops to behave differently depending on their mode. + +The built-in shop types are: + +- Selling +- Buying +- Frozen + +Each type changes how the shop interacts with players. + +--- + +## Selling Shop + +A Selling shop allows players to: + +- Buy items from the shop owner +- Pay money to receive items + +This is the most common shop type. + +--- + +## Buying Shop + +A Buying shop allows players to: + +- Sell items to the shop owner +- Receive money in exchange + +This is commonly used for: + +- Resource collection +- Server buy-back shops +- Automated material sinks + +--- + +## Frozen Shop + +A Frozen shop temporarily disables trading. + +While frozen: + +- No buying is allowed +- No selling is allowed +- The shop remains intact +- Staff or admins can manage it + +This is useful for: + +- Temporary suspensions +- Investigation +- Event locking +- Maintenance + +--- + +## Switching Shop Types + +Shop types can be changed through: + +- Control panel +- GUI control panel +- Admin commands + +Frozen mode is also available via: + +/qs freeze + +--- + +## Custom Shop Types + +As of 6.2.x, the system supports extensible shop types internally. + +While server owners use the built-in types, the system now allows future expansion through addons. + +--- + +## Summary + +Shop types allow you to: + +- Control how money flows +- Enable buy-back mechanics +- Temporarily disable shops +- Build advanced economic systems \ No newline at end of file diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md new file mode 100644 index 0000000000..18e0a47407 --- /dev/null +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md @@ -0,0 +1,217 @@ +# Sign Layout + +QuickShop allows you to fully customize how shop signs are structured. + +You can change: + +- What appears on each line +- The order of information +- Layout per shop type +- Whether certain lines are blank + +This gives you complete control over how shops look on your server. + +--- + +## How Sign Layout Works + +Shop signs have four lines. + +Instead of being hardcoded, QuickShop uses a configurable layout system. + +Each shop type can have its own layout: + +- SELLING +- BUYING +- FROZEN + +You define what each line displays using layout keys. + +--- + +## Configuration Location + +Sign layout is configured in `config.yml` under: + +```yaml +layout: +``` + +Example default configuration: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## Available Layout Keys + +Each line value refers to a built-in layout component. + +Common layout keys include: + +- `header` – The shop header line +- `trading` – Buy/Sell direction information +- `item` – Item name +- `price` – Shop price + +These keys are automatically formatted using your language file and formatting settings. + +--- + +## Leaving a Line Blank + +To leave a line empty, use: + +```yaml +line2: "" +``` + +This is useful if you want: + +- Minimalist signs +- Cleaner layouts +- Custom spacing +- Decorative formatting + +--- + +## Customizing Per Shop Type + +Each shop type can have a different layout. + +For example: + +```yaml +layout: + + SELLING: + line1: "header" + line2: "item" + line3: "price" + line4: "" + + BUYING: + line1: "header" + line2: "price" + line3: "item" + line4: "" + + FROZEN: + line1: "header" + line2: "" + line3: "item" + line4: "Frozen" +``` + +This allows you to visually differentiate: + +- Selling shops +- Buying shops +- Frozen shops + +--- + +## Practical Examples + +### Minimal Style + +```yaml +layout: + SELLING: + line1: "item" + line2: "price" + line3: "" + line4: "" +``` + +### Compact Economy Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "price" + line3: "item" + line4: "" +``` + +### Large Clear Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## How Updates Affect Layout + +When you change the layout: + +- Existing shop signs will update automatically when refreshed. +- New shops will use the updated format immediately. + +If needed, you can reload QuickShop to apply changes. + +--- + +## Best Practices + +- Keep important information visible (price and item). +- Avoid overly complex formatting. +- Test layout changes before deploying on large servers. +- Use different layouts for BUYING and SELLING to reduce confusion. + +--- + +## Common Questions + +### Can I add more than four lines? + +No. +Minecraft signs are limited to four lines. + +### Can I add colors? + +Colors are controlled by your language file and formatting settings. + +### Can I change layout without restarting? + +Yes, but reloading or refreshing shops is recommended to ensure full update. + +--- + +## Summary + +The Sign Layout system allows you to: + +- Fully customize shop sign appearance +- Create per-type layouts +- Simplify or expand shop information +- Improve clarity for players + +All layout customization is handled inside `config.yml`. diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md index abcc288db7..2a0d52d788 100644 --- a/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md @@ -8,19 +8,6 @@ This feature added in 6.0.0.0. By default, QuickShop-Hikari uses the default brand material from the configuration file, but you can modify it to other brands for your store with the command. -## Configuration - -```yaml - #The wall sign material. - #ACACIA_WALL_SIGN - #BIRCH_WALL_SIGN - #DARK_OAK_WALL_SIGN - #JUNGLE_WALL_SIGN - #OAK_WALL_SIGN - #SPRUCE_WALL_SIGN - sign-material: OAK_WALL_SIGN -``` - ## Change the material Use command `/quickshop sign ` to change your shop sign material. diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md new file mode 100644 index 0000000000..980bad10f2 --- /dev/null +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md @@ -0,0 +1,130 @@ +# Shop Sign Waxing + +QuickShop can automatically wax shop signs to prevent players from editing them manually. + +Waxing protects the integrity of your shop signs and helps prevent tampering, spoofing, and accidental modification. + +As of modern Minecraft versions, waxed signs cannot be edited unless they are unwaxed first. + +--- + +## What Is Sign Waxing? + +In Minecraft, waxing a sign locks it so that: + +- Players cannot edit the text +- Players cannot modify lines +- Accidental changes are prevented +- Malicious edits are blocked + +When enabled in QuickShop, shop signs are automatically waxed when created. + +--- + +## Why Use It? + +Sign waxing protects against: + +- Players editing price lines +- Changing item names on signs +- Spoofing shop information +- Accidental formatting issues +- Sign hijacking attempts + +On public servers, this feature is strongly recommended. + +--- + +## How It Works + +When a shop is created: + +1. QuickShop generates the shop sign. +2. The sign text is written. +3. The sign is automatically waxed (if enabled). + +If a shop is updated: + +- The sign will be safely updated by QuickShop. +- The wax state is maintained. + +Players cannot manually edit shop signs while waxing is enabled. + +--- + +## Configuration + +To enable or disable sign waxing, edit `config.yml`: + +```yaml +shop: + sign-wax: true +``` + +### true + +- Shop signs are automatically waxed. +- Players cannot edit the sign manually. + +### false + +- Shop signs behave like normal Minecraft signs. +- Players may edit them if permitted by the game. + +--- + +## Recommended Setting + +For most servers: + +```yaml +shop: + sign-wax: true +``` + +This ensures shop data stays accurate and secure. + +--- + +## Common Questions + +### Can admins still modify shop signs? + +QuickShop controls shop sign formatting. +Manual edits are not recommended. + +Admins should use: + +- Control panel +- Shop commands +- Direct configuration changes + +### Does waxing affect shop functionality? + +No. +Waxing only prevents manual text edits. +The shop continues to function normally. + +### Can players un-wax shop signs? + +No. +QuickShop manages the sign state automatically. + +--- + +## Best Practices + +- Keep sign-wax enabled on survival servers. +- Combine sign-wax with proper permissions. +- Avoid manually editing shop signs through other plugins. + +--- + +## Summary + +Sign Waxing: + +- Prevents tampering +- Requires no additional setup + +Enable it once and QuickShop handles the rest. \ No newline at end of file diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/shops/taxes.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/shops/taxes.md new file mode 100644 index 0000000000..1a273fd978 --- /dev/null +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/shops/taxes.md @@ -0,0 +1,92 @@ +# Taxation System + +QuickShop includes a taxation system designed to give server owners more flexibility and control over shop-based income. + +This system was revamped as of 6.2.0.11+ + +The new system allows you to: + +- Apply tax to shop owners +- Apply tax to buyers +- Apply tax to both +- Use progressive tax brackets +- Customize tax behavior in configuration + +This system replaces the legacy tax configuration. + +--- + +## How It Works + +During a transaction: + +1. The shop price is calculated. +2. Tax is calculated based on your configuration. +3. Tax is deducted from the configured target(s). +4. Remaining funds are distributed normally. + +You can configure: + +- Flat percentage tax +- Progressive tax based on player balance +- Tax accounts +- Distribution rules + +--- + +## Progressive Tax + +The new system allows you to tax based on balance brackets. + +Example concept: + +- 0 – 10,000 balance → 1% tax +- 10,000 – 100,000 → 2% tax +- 100,000+ → 3% tax + +This helps prevent extremely wealthy players from dominating the economy. + +--- + +## Who Pays the Tax? + +You can configure whether tax applies to: + +- The shop owner +- The buyer +- Both + +This gives you flexibility depending on your economy design. + +--- + +## Configuration + +All tax-related settings are located under the `shop-tax` section in `config.yml`. + +After updating to 6.2.0.11+, review your tax configuration carefully, as the old tax system has been replaced. + +--- + +## Why Use Tax? + +The taxation system can help: + +- Remove currency from circulation +- Fund server banks or towns +- Create sink mechanics +- Balance inflation +- Reward active players + +--- + +## Summary + +The new taxation system is: + +- Flexible +- Configurable +- Balance-aware +- Designed for modern economy servers + +Make sure to review your configuration after upgrading. \ No newline at end of file diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md new file mode 100644 index 0000000000..247c24712d --- /dev/null +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md @@ -0,0 +1,161 @@ +# WorldEdit & FAWE Support + +QuickShop includes built-in protection and integration for WorldEdit and FastAsyncWorldEdit (FAWE). + +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. + +You do not need to download or install any additional compatibility plugins. + +--- + +## What This Does + +WorldEdit and FAWE allow administrators and builders to: + +- Copy and paste regions +- Replace large areas of blocks +- Mass-delete regions +- Roll back areas +- Regenerate terrain + +Without protection, these operations could: + +- Create ghost shops +- Leave orphaned shop data in the database +- Duplicate shops unintentionally +- Delete containers without cleaning up shop data +- Cause inconsistencies between world and database + +QuickShop now automatically detects and safely processes WorldEdit and FAWE operations. + +--- + +## Built-In Behavior + +When WorldEdit or FAWE modifies blocks: + +- Shops removed via WorldEdit are properly deleted from the database. +- Shop data stays synchronized with world changes. +- Ghost shops are prevented. +- Mass block replacements will not leave broken shop entries behind. + +This applies to: + +- //set +- //replace +- //cut +- //paste +- //regen +- Region deletion +- Mass container removal + +No configuration is required. + +--- + +## FAWE Support + +FastAsyncWorldEdit (FAWE) is fully supported. + +Because FAWE processes edits asynchronously, QuickShop handles: + +- Region-thread safe processing +- Async block updates +- Safe shop deletion during batch edits + +You do not need to enable anything manually. + +--- + +## Removing Shops with WorldEdit + +If you delete containers (chests, barrels, etc.) using WorldEdit: + +QuickShop will automatically: + +- Detect the block removal +- Unregister the shop +- Clean the database entry +- Prevent ghost shops + +You do not need to run `/qs cleanghost` after WorldEdit usage in normal circumstances. + +--- + +## Copying and Pasting Shops + +If you copy and paste regions that contain shops: + +- Shop data will not duplicate incorrectly. +- Shop IDs remain consistent. +- Invalid pasted shops will not auto-register unless properly created. + +This prevents accidental duplication exploits. + +--- + +## Performance + +WorldEdit and FAWE operations can modify thousands of blocks at once. + +QuickShop processes these safely and efficiently: + +- Batch-aware cleanup +- Thread-safe region access (especially on Folia) +- Minimal performance impact during mass edits + +--- + +## Configuration + +There are no specific WorldEdit configuration options in QuickShop. + +Support is automatic and always enabled if WorldEdit or FAWE is detected. + +If WorldEdit is not installed, no extra code is executed. + +--- + +## Common Questions + +### Do I need the old WorldEdit compatibility jar? + +No. + +As of 6.2.0.11, WorldEdit support is built-in and the separate compatibility module has been removed. + +### Does this work with FAWE? + +Yes. FAWE is fully supported. + +### Will shops break if I use //set air? + +No. Shops will be safely removed and cleaned up. + +### Do I need to restart after installing WorldEdit? + +No. QuickShop detects WorldEdit automatically on startup. + +--- + +## Best Practices + +Even though QuickShop safely handles WorldEdit operations, it is recommended to: + +- Avoid copying shops intentionally unless required +- Use backups before large region edits +- Test large FAWE operations on staging servers when possible + +--- + +## Summary + +QuickShop’s built-in WorldEdit and FAWE integration ensures: + +- Safe mass edits +- No ghost shops +- Automatic database cleanup +- Thread-safe processing +- No extra modules required + +WorldEdit support is now a core feature of QuickShop. \ No newline at end of file diff --git a/i18n/es-ES/docusaurus-plugin-content-docs/current/setup/install.md b/i18n/es-ES/docusaurus-plugin-content-docs/current/setup/install.md index fd02cfa1cc..2fc7851f3b 100644 --- a/i18n/es-ES/docusaurus-plugin-content-docs/current/setup/install.md +++ b/i18n/es-ES/docusaurus-plugin-content-docs/current/setup/install.md @@ -1,13 +1,14 @@ # Installation -This page will walk you through the process of installing QuickShop-Hikari on your Spigot server. +This page will walk you through the process of installing QuickShop-Hikari on your PaperMC server. ## Requirements -- A [Spigot][spigot]-based Minecraft server (1.20 or higher, Java 21) - - You can also use [Paper][paper], which is a fork of Spigot for better compatibility, more features and higher performance. +- A [Paper][paper]-based Minecraft server (1.20 or higher, Java 21) - [Vault][vault] for bridging the economy system between QuickShop and your economy plugins. -- [ProtocolLib][plib] for virtual display item, Per-player localization. +- For virtual item displays, and per-player localization you need a supported protocol library: + - [ProtocolLib][plib] + - [PacketEvents][https://www.spigotmc.org/resources/packetevents-api.80279/] - Any Vault compatible economy plugin, such as [XConomy][xconomy], If you have [EssentialsX][essx], it will also works well. - A permission management plugin like [LuckPerms][luckperm]. @@ -15,13 +16,17 @@ In this document, we assume that you are using the latest version of QuickShop-H ## Installing dependencies -Before installing QuickShop-Hikari, you should make sure that you have all dependencies installed, including [Vault][vault], [ProtocolLib][plib], [XConomy][xconomy] (or [EssentialsX][essx] if you want) and [LuckPerms][luckperm]! +Before installing QuickShop-Hikari, you should make sure that you have all dependencies installed, including [Vault][vault], [ProtocolLib][plib] or \[PacketEvents]\[https\://www\.spigotmc.org/resources/packetevents-api.80279/], [XConomy][xconomy] (or [EssentialsX][essx] if you want) and [LuckPerms][luckperm]! Download the plugins and drop them into `plugins` folder and you're all set! +## Configuring the Display Protocol + +If you have both ProtocolLib and PacketEvents, and you want to utilize PacketEvents for your display items, you'll need to set it as such in config.yml: `shop. display-protocol: 'packetevents'` + ## Installing QuickShop-Hikari -Download the latest version of QuickShop-Hikari from [Modrinth][qs-modrinth], if you find multiple files that have `Compat-` prefix in file name, ignore them in this step.\ +Download the latest version of QuickShop-Hikari from [Modrinth][qs-modrinth], if you find multiple files that have `Compat-` prefix in file name, ignore them in this step. The only file you need to download should have a **Primary** tag like this in the image below: ![download primary file](./img/download-primary.png) @@ -52,12 +57,11 @@ For advanced permission setup, you can check [here](./permissions.md). Now QuickShop-Hikari is running on your server, for more settings, check the navigation panel on the left and see different sections. -[spigot]: https://www.spigotmc.org/wiki/buildtools/ [paper]: https://papermc.io/ -[vault]: https://www.spigotmc.org/resources/34315/ -[xconomy]: https://www.spigotmc.org/resources/75669/ +[vault]: https://www.spigotmc.org/resources/vaultunlocked.117277/ +[xconomy]: https://www.spigotmc.org/resources/xconomy.75669/ [essx]: https://modrinth.com/plugin/essentialsx -[plib]: https://www.spigotmc.org/resources/1997 +[plib]: https://www.spigotmc.org/resources/protocollib.1997/ [luckperm]: https://luckperms.net/ [qs-modrinth]: https://modrinth.com/plugin/quickshop-hikari [dc]: https://discord.gg/Bu3dVtmsD3 diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/addon/limited.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/addon/limited.md index 70af27e240..fae55a8c95 100644 --- a/i18n/fa-IR/docusaurus-plugin-content-docs/current/addon/limited.md +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/addon/limited.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -41,8 +35,8 @@ Limit players to purchase up to 16 items per month. /quickshop limit period MONTH ``` -The system is based on the QuickShop-Hikari calendar system.\ -The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year.\ +The system is based on the QuickShop-Hikari calendar system. +The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year. Same for days, months and hours. Available time units: diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/addon/list.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/addon/list.md index 93d182f083..f20b91fd7b 100644 --- a/i18n/fa-IR/docusaurus-plugin-content-docs/current/addon/list.md +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/addon/list.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/addon/plan.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/addon/plan.md index 52a6e79cb4..c10ef4df42 100644 --- a/i18n/fa-IR/docusaurus-plugin-content-docs/current/addon/plan.md +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/addon/plan.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -18,7 +18,7 @@ Recorded data can be displayed from Hikari v2.0.0.0 onwards, but only after vers - All shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 1000 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `5` in server scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `5` in server scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Player Scope @@ -27,7 +27,7 @@ And still is Plan limitations, the list sorting is disturbed, so the display ord - All owned shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 50 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `4` in player scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `4` in player scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Showcase diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/addon/reforges.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/addon/reforges.md index 2a14509eb7..25fff1752a 100644 --- a/i18n/fa-IR/docusaurus-plugin-content-docs/current/addon/reforges.md +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/addon/reforges.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.0.0.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md index 304d39bc05..6f9f51d250 100644 --- a/i18n/fa-IR/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.1.1.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -44,7 +38,7 @@ _This is not necessary if you are using an H2 database._ ### Prepare for convert -To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console.\ +To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console. If a player is in the server, the conversion cannot be started. Once the conversion has begun, the server will be locked during the conversion process and no players will be able to join the server during the conversion. diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/addon/shopitemonly.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/addon/shopitemonly.md index c45062f8c2..1ccfe977b3 100644 --- a/i18n/fa-IR/docusaurus-plugin-content-docs/current/addon/shopitemonly.md +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/addon/shopitemonly.md @@ -2,17 +2,11 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT - -::: - -This addon prevents players from putting non-store items into store containers.\ +This addon prevents players from putting non-store items into store containers. Does not apply to stores that use the item inventory redirection API (aka. InventoryWrapper API). This Addon will check for container (or transferring) items on events such as the player closing the container or hopper access. diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md new file mode 100644 index 0000000000..9c8b4f7407 --- /dev/null +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md @@ -0,0 +1,55 @@ +# 6.2.0.10 + +## Major Changes + +- Added support for 1.21.6 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.7 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.8 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Some internal updates for packetevents(2.9.0 is now required.) +- Updated Lands support + +## Addon Changes + +- Added MatcherPlus Addon + - Allows support for BreweryX and AdvancedItems stacks in shops with improved matching abilities +- Added FabledSkyblock Compat +- Added Dominion Compat +- Added HuskTowns Compat +- Added IridiumSkyblock Compat +- Added member-create for member creation in ARM compat +- Added admin-override and quickshop.arm.admin permission for admin overrides in ARM + +## Minor Changes + +- Added configurations for the coordinates of the display item. +- Added /qs toggledisplayall on/off server/owned + - Players need to have permission node quickshop.toggledisplayall.admin to toggle all on the server. +- Added ability to use abbreviations in /qs price and /qs create commands such as 2.5k for 2500 +- Added ability to set default display status using shop.default-display in config.yml + +## Fixes + +- Fixed issue with display item being sent to the moon on 1.21.5 +- Fixed issue where TRADE_UI interactions interfered with quick create. +- Fixed issue with displays on protocollib falling through the chest +- Fixed issue with signs on .9 and previous .10 snapshots on early versions +- Implemented some performance improvements for paper servers +- Fixed all outstanding issues with Folia usage.(thanks to RootB33R/SleazLee for contributions) + +## Possible 6.2.0.11 Features + +Here's an outline for some features that may arrive in 6.2.0.11: + +- Additional compats/addons that have been piling up. + - see: https://github.com/QuickShop-Community/QuickShop-Hikari/issues/1756 +- gradle?(interested to see compilation time uplifts) +- Update documentation +- Update configuration comments +- Update configuration system? + - auto updating? + - Allows removal of the update code +- Remove waste spigot modules? + - Any versions of 1.20 that can be discarded due to low use? +- Bug fixing, of course +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... \ No newline at end of file diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md new file mode 100644 index 0000000000..b41c88662a --- /dev/null +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md @@ -0,0 +1,173 @@ +## Outline + +- Update documentation +- Update configuration comments +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... + +# 6.2.0.11 + +## Major Changes + +- Removed Spigot Platform Modules, and stopped loading QS if Spigot is detected. This will mean that unless the protocol changes that we use for display items, QS won't need updated for each version. +- Revamped Economy Code Completely + - New classes for all economy-related systems + - Any economy-related or benefits-related events are incompatible with previous versions. +- Added sign layout customizations per-type allowing you to change how lines are configured, an empty string('') will leave an empty line for that line of the sign. + +``` + #The layout of signs for shops. + layout: + + #The layout of BUYING shops. + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of FROZEN shops. + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of SELLING shops. + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +- Add wildcard support for item blacklist patterns(thanks to bennycallanan) + - Added support for wildcard patterns in the item blacklist configuration, allowing users to block entire categories of items with simple patterns. + + - Features + - Wildcard patterns like \*_AXE and \*_SPAWN_EGG now work in blacklist configuration + - Supports \* for any characters and ? for single character matching + - Case-insensitive pattern matching +- Overhauled GUI system(thanks to Yusakidev) + - Implemented gui.yml configuration file for customizing the GUI. + - Implemented better filtering for qs browse + - Implement GUI system to be more stable, and less error prone. + - Added gui.yml for fully configurable GUI layouts and text + - Browse menu: search, sort (price/name/stock), and filter (all/buying/selling/in-stock) + - Staff menu: search functionality for player/staff selection + - Grouped item pages for better shop browsing + - Refactored all menu pages to use configurable display/lore +- Added worldedit compat to QS internally as it's widely used. +- Revamped the taxation system to be more flexible and easier to configure. + - introduced a new progressive tax system that allows you to tax based on the balance of players.(suggested by YuanYuanOwO) + - introduced the ability to tax the player interacting with the shop, the owner, or both + - all tax-related configurations have been moved under the shop-tax section of the config. this may require reconfiguration of your tax settings. + - added a new ShopEnhancedTaxEvent, deprecated the old ShopTaxEvent. + - Added a new TaxManager, and TaxProvider interfaces, this allows for custom tax providers to be added by addons/third-party developers. + +## Addons/Compats Changes + +- Added UltimateClaims compat +- Added SimpleClaimSystem compat +- Added Quests by Pika addon +- Added BetonQuest addon +- Added Pl3xMap addon +- MatcherPlus Compat Improvements + - Added support for CrazyCrates + - Added support for ExcellentCrates + - Added support for SilkSpawners. +- WorldGuard Compat Improvements(Thanks to golovin12) + - Added clear permission handling: + - Region owners and members automatically have permission to create and trade in their own regions. + - Other players must have the appropriate WorldGuard flags enabled (quickshophikari-create, quickshophikari-trade) to interact with shops. + - If a shop is located outside any region, default QuickShop behavior applies (no extra restrictions) +- Added colored markers based on shop state for bluemap(thanks to YusakiDev) +- Updated dynmap/towny addons to use the new ShopTypeEnhancedEvent instead of ShopTypeEvent. +- Removed worldedit compat, it's now included in the main plugin. +- Added support for global flags to the worldguard compat. + +## Internals/Developer APIs + +- Removed several deprecated methods and classes. +- Revamped the interaction manager. It is now more flexible and allows external additions + - This involves two classes InteractionBehavior and InteractionType. + - InteractionType details the type of interaction such as: STANDING_LEFT_CLICK_SIGN, STANDING_LEFT_CLICK_SHOP + - InteractionBehavior outlines a behavior for an InteractionType such as CONTROL_PANEL and TRADE_UI +- Added UserLimitCalculationEvent, which allows for custom limits to be applied to users. + - This is useful for limiting the number of shops a user can have, or adding on to the existing limits provided by the ranks system without needing to implement a new RankLimiter. +- Added a new ShopLayoutProvider interface, and default implementation. + - This allows for custom layouts to be used for shops, allowing for more customization. + - This also allows for developers to override the default layout provider and create their own implementation. +- How to make your own? + - Implement the classes you would like to then register with the InteractionManager: + - ```java + InteractionManager manager = QuickShop.getInstance().getInteractionManager(); + + manager.interaction(new MyTradeInteraction()); + manager.behavior(new MyTradeBehavior()); + ``` +- Replaced some Apache Commons calls that could be easily replaced with built-in java methods, reduces some calls by ~ 1100ms/method call +- Deprecated the ShopType enum, and the ShopTypeEvent. These are replaced with the new IShopType interface and implementing classes. + - The new event is ShopTypeEnhancedEvent. + - This allows for third-party addons to add their own shop types, and simplifies code checks for translations. +- Updated config system to use Boosted-yaml + - this allows for auto-updating of config files without complex update scripts + - this also allows for the config system to not be minecraft-dependent. +- Replaced logical PaperLib calls with native PaperAPI calls. + +## Minor Changes + +- Bump Java version up to 21 +- Added shop.display-allow-enchants to enable/disable enchantments for display items on shops. +- Added workaround for packetevents not supporting custom enchants on itemstacks for virtual display items. +- Using locale translations for shop-type in mode toggle icon(thanks to ExyiN) +- Bumped Residence version for the compat(thanks to YuanYuanOwO) +- add world whitelist support(thanks to wling-art) +- added /qs database save command, which saves all currently dirty-marked shops to the database. +- Split up interactions _SHOPBLOCK into _SHOPBLOCK and _CONTAINER. + - _SHOPBLOCK relates to shops, where _CONTAINER relates to shop-valid containers that are not currently shops. +- Added inventory as an option for command panel, this is useful for adding a secondary option for players to open a shop's inventory. +- Moved crowdin arguments from system properties to config.yml + - crowdin-host + - use-crowdin-ota + +## Fixes + +- Fixes issue with item price restrictions(thanks to maxcom1) +- Fixes issue with 1.20.x protocol lib displays(thanks to YuanYuanOwO) +- Fixes issue when no item is in hand for itemdebug(thanks to YuanYuanOwO) +- Fixes issue with dominion addon(thanks to YuanYuanOwO) +- Add a simple check to avoid this. If it is not own shop, reject limit request directly.(Thanks to YuanYuanOwO) +- Fix NPE by not setting tax for price in TransactionBuilder(thanks to maxcom1) +- Fixes /quickshop suggestprice to differentiate between buy/sell shops. (Thanks to MidSpike) +- PacketEvents ClassNotFoundException with ProtocolLib(thanks to wling-art) +- Reallocate block state access to region thread for shop creation(thanks to r00tbeerman) +- resolve SLF4J StaticLoggerBinder loading error(thanks to wling-art) +- sign hijacking issue by validating sign facing direction(thanks to wling-art) +- Performance improvements for QuickShop disabling to prevent potential freezes. +- Fixed issue with 1.20.4 packetevents virtual displays not staying put. +- Fixes critical issue in GriefPrevention compatibility plugin. +- Fixes issue with shop owner not getting money when benefits active. +- Fixes for lands addon on folia, Use regionThread for Folia compatibility(thanks to YusakiDev) +- Fixes for TRADE_DIRECT on stacking shops +- Fixes issue for protocollib 5.4.0 with undocumented packet changes. +- Fixes issue where item stacks could be used on creation above the max stack size. +- Fixes issue with BukkitAudiences-related crashes on 1.21.11. +- Fix issue with shop deletion when getting too impatient. +- Fix the permission check issue when a shop owned by a non-owner is transferred to someone else. (thanks to YuanYuanOwO) +- Fix ui with supertool (thanks to YuanYuanOwO) +- Fix issue with logs generating outside debug mode. +- Fix issue with /qs find. +- Fix configuration loading timing. +- Fix configuration loading/creation warning message language. +- Fix command description language key mismatch(thanks to wling-art) +- Fix qs clean command on folia(thanks to wling-art) +- Fix per-player-shop-sign on folia(thanks to wling-art) +- Fix potential recursive deadlock in virtual display packet sending(thanks to wling-art) +- Fix configuration loading/creation warning message language. +- Fix issue with /qs browse and ShopItemOnly addon not behaving properly together on folia. +- Fix issue with PLAN using outdated APIs. +- Fix issue with /qs clean on folia.(thanks to wling-art) +- Fix issue with /qs cleanghost on folia(thanks to wling-art) +- More thread safety fixes for shops on folia.(thanks to wling-art) +- Fix owner payment calculations with benefits(thanks to wling-art) \ No newline at end of file diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md index 8172f9b410..dcc3edc67d 100644 --- a/i18n/fa-IR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md @@ -20,20 +20,20 @@ the ControlComponent object with a custom one that will replace the original dur ### Introduction of the Revamped Packet System 1. **About**: - - A modular and scalable system for managing packets related to virtual display items in Minecraft. - - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. + - A modular and scalable system for managing packets related to virtual display items in Minecraft. + - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. 2. **Custom Packet Factories**: - - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. - - Packet types: - - **Spawn Packet**: Spawns a virtual item entity at a specific location. - - **Metadata Packet**: Updates the visual properties of virtual items. - - **Velocity Packet**: Adds motion/velocity to entities (currently optional). - - **Destroy Packet**: Removes the entity from the client view. + - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. + - Packet types: + - **Spawn Packet**: Spawns a virtual item entity at a specific location. + - **Metadata Packet**: Updates the visual properties of virtual items. + - **Velocity Packet**: Adds motion/velocity to entities (currently optional). + - **Destroy Packet**: Removes the entity from the client view. 3. **Error Handling and Logging**: - - Enhanced debug logs to trace packet-related issues. - - Detailed error messages for missing factories or unregistered listeners. + - Enhanced debug logs to trace packet-related issues. + - Detailed error messages for missing factories or unregistered listeners. #### Improvements: diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md index 7775308722..c6e0948d19 100644 --- a/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md index f420997a9c..38587e3784 100644 --- a/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md index 5ed8182c9a..259c55f342 100644 --- a/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md index 924a37ac49..7fd4596a6a 100644 --- a/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,6 +10,6 @@ This is a BungeeCord plugin, you need install it within your BungeeCord's plugin ## How does it work? -BungeeCord Bridge plugins will register a `quickshop:bungee` channel for fowarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. +BungeeCord Bridge plugins will register a `quickshop:bungee` channel for forwarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. All forwarding is indicated by QuickShop-Hikari on the Spigot server and ends when it is not needed. diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md index 27d68956a8..20fbaf7a0c 100644 --- a/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,5 +10,5 @@ This compatibility module added [Chest Protect](https://www.spigotmc.org/resourc ## How does it work? -This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident.\ +This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident. It also prevents players from creating shops on ChestProtect protected containers. diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md index 220e26d8bb..e1757e7be9 100644 --- a/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/dominion.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/dominion.md new file mode 100644 index 0000000000..e1195278a8 --- /dev/null +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/dominion.md @@ -0,0 +1,138 @@ +# Dominion + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and Dominion. + +It ensures that shop creation and trading respect Dominion’s land and territory protection system. + +--- + +## What Does It Do? + +Dominion allows players or groups to claim land and define territory-based permissions. + +Without compatibility: + +- Players could create shops inside territories they do not control. +- Visitors might trade inside protected dominions. +- Dominion permission rules might not apply to shop interactions. + +The Dominion compat module ensures that: + +- Shop creation respects territory ownership. +- Shop trading follows Dominion permission settings. +- Protected land remains secure from unauthorized shop usage. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a Dominion-controlled area. +- Whether the player has permission within that territory. +- Whether Dominion rules allow shop interaction. + +If the action is not permitted by Dominion settings, QuickShop blocks it. + +If the location is outside any Dominion territory, default QuickShop behavior applies. + +--- + +## Territory Owner Control + +With this module enabled: + +- Territory owners can create and manage shops inside their dominion. +- Trusted members follow territory-based permissions. +- Outsiders are restricted unless explicitly allowed. +- Shop actions respect Dominion’s land rules automatically. + +This prevents unauthorized shop placement inside protected territories. + +--- + +## Installation + +1. Install Dominion. +2. Install the QuickShop Dominion compat module. +3. Restart your server. + +The module activates automatically if Dominion is detected. + +No manual configuration linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside dominions +whitelist-mode: false + +# Allow territory owners to override shop permissions +allow-owner-override: true +``` + +If Dominion is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For servers using Dominion: + +- Restrict shop creation to territory owners or trusted members. +- Prevent shop creation in wilderness if desired. +- Allow dominion owners to manage shop permissions. +- Review Dominion permission settings to align with shop behavior. + +This ensures protected territories remain secure and organized. + +--- + +## Common Questions + +### Can players create shops in someone else's dominion? + +Only if Dominion permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You may allow or restrict shops outside dominions. + +### What happens if Dominion is removed? + +QuickShop returns to normal behavior and stops checking Dominion territories. + +--- + +## Summary + +The Dominion compat module: + +- Enforces territory-based permissions +- Prevents unauthorized shop creation +- Protects claimed land from misuse +- Integrates seamlessly with Dominion + +It is recommended for servers running Dominion. \ No newline at end of file diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md index 743d3ae666..2ac9b10488 100644 --- a/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md new file mode 100644 index 0000000000..07ba4ada66 --- /dev/null +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md @@ -0,0 +1,133 @@ +# FabledSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and FabledSkyblock. + +It ensures that shop creation and trading properly respect island boundaries and island permissions. + +--- + +## What Does It Do? + +On Skyblock servers, players build and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Players might trade in areas they should not. +- Island protection rules might not apply to shops. + +The FabledSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members behave correctly with shops. +- Island visitors are restricted appropriately. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a FabledSkyblock island. +- Whether the player has permission on that island. +- Whether island settings allow the action. + +If the action is not permitted by island rules, QuickShop will deny it. + +--- + +## Island Ownership Rules + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow island permission settings. +- Visitors can only trade if island permissions allow it. +- Outside of islands, default QuickShop behavior applies. + +--- + +## Installation + +1. Install FabledSkyblock. +2. Install the QuickShop FabledSkyblock compat module. +3. Restart your server. + +The module activates automatically if FabledSkyblock is detected. + +No manual linking is required. + +--- + +## Configuration + +If the module provides configuration options, they will appear in its `config.yml`. + +Typical options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If FabledSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most Skyblock servers: + +- Allow shop creation only inside islands. +- Prevent trading in the void or wilderness. +- Let island owners control shop permissions. +- Use island rank systems to manage shop access. + +This helps maintain economic balance between islands. + +--- + +## Common Questions + +### Can players create shops in the void? + +Only if your configuration allows it. +Most servers disable shop creation outside islands. + +### Does this affect island war or PvP modes? + +No. +The module only checks island ownership and permissions for shop interactions. + +### What happens if FabledSkyblock is removed? + +QuickShop returns to normal behavior. + +--- + +## Summary + +The FabledSkyblock compat module: + +- Protects island economies +- Enforces island permission rules +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is strongly recommended for any server running FabledSkyblock. \ No newline at end of file diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md index 81b13d2c6b..32614d3019 100644 --- a/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md @@ -2,17 +2,17 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -GreifPrevention compatibility module added compaitibility with GF. +GreifPrevention compatibility module added compatibility with GF. ## How does it work This module allow QuickShop-Hikari check if player have permission to create or use QuickShop in specific region. -And delete shops when claim removed, untrusted, unclimed, expired, resized or subclaim created. +And delete shops when claim removed, untrusted, unclaimed, expired, resized or subclaim created. ## Configuration diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md new file mode 100644 index 0000000000..e71b34d462 --- /dev/null +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md @@ -0,0 +1,139 @@ +# HuskTowns + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and HuskTowns. + +It ensures that shop creation and trading respect town and claim permissions defined by HuskTowns. + +--- + +## What Does It Do? + +HuskTowns allows players to create towns and claim land. + +Without compatibility: + +- Players could create shops inside towns they do not belong to. +- Visitors might trade inside protected towns. +- Town permission rules might not apply to shop interactions. + +The HuskTowns compat module ensures that: + +- Shop creation respects town ownership. +- Trading follows town permission settings. +- Town members and visitors are handled correctly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a HuskTowns claim. +- Whether the player is a town member, trusted player, or outsider. +- Whether the town's permission settings allow the action. + +If the action is not permitted by town rules, QuickShop blocks it. + +Outside of town claims, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Town Owner Control + +With this module enabled: + +- Town owners can create and manage shops inside their town. +- Town members follow town-based permission settings. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect town claim protection. + +This prevents unauthorized shop placement and trading inside protected towns. + +--- + +## Installation + +1. Install HuskTowns. +2. Install the QuickShop HuskTowns compat module. +3. Restart your server. + +The module activates automatically if HuskTowns is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside towns +whitelist-mode: false + +# Allow town owners to override shop permissions +allow-owner-override: true +``` + +If HuskTowns is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For town-based survival servers: + +- Restrict shop creation to town members. +- Allow trading only where town permissions permit. +- Prevent shop creation in wilderness if desired. +- Enable owner override for better administrative control. + +This helps maintain town-based economic balance. + +--- + +## Common Questions + +### Can players create shops in another town? + +Only if that town's permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You can allow or restrict shops outside towns. + +### What happens if HuskTowns is removed? + +QuickShop returns to normal behavior and stops checking town permissions. + +--- + +## Summary + +The HuskTowns compat module: + +- Enforces town-based land permissions +- Protects towns from unauthorized shop usage +- Integrates smoothly with HuskTowns +- Requires minimal setup + +It is recommended for any server running HuskTowns. \ No newline at end of file diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md new file mode 100644 index 0000000000..3fa2995eb0 --- /dev/null +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md @@ -0,0 +1,139 @@ +# IridiumSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and IridiumSkyblock. + +It ensures that shop creation and trading respect island boundaries and island permission settings defined by IridiumSkyblock. + +--- + +## What Does It Do? + +IridiumSkyblock allows players to create and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Visitors might trade inside protected islands. +- Island protection rules might not apply correctly to shops. + +The IridiumSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members and visitors are handled properly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside an IridiumSkyblock island. +- Whether the player is the island owner, member, or visitor. +- Whether island permissions allow shop interaction. + +If the action is not permitted, QuickShop blocks it. + +Outside of islands, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Island Owner Permissions + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow the island's permission configuration. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect island protection rules. + +This prevents unauthorized shop usage inside protected islands. + +--- + +## Installation + +1. Install IridiumSkyblock. +2. Install the QuickShop IridiumSkyblock compat module. +3. Restart your server. + +The module activates automatically if IridiumSkyblock is detected. + +No additional setup is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If IridiumSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most IridiumSkyblock servers: + +- Restrict shop creation to island owners. +- Allow island members to trade if trusted. +- Prevent shop creation in the void or wilderness. +- Enable owner override for better management. + +This helps maintain balanced island economies. + +--- + +## Common Questions + +### Can players create shops outside their island? + +Only if your configuration allows it. + +Most Skyblock servers restrict shops to island areas. + +### Do island ranks affect shop permissions? + +Yes, if your island permissions are configured to control interaction rights. + +QuickShop follows island rules. + +### What happens if IridiumSkyblock is removed? + +QuickShop returns to normal behavior and stops checking island permissions. + +--- + +## Summary + +The IridiumSkyblock compat module: + +- Protects island economies +- Enforces island-based permissions +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is recommended for any server running IridiumSkyblock. diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md new file mode 100644 index 0000000000..3b4726cb9d --- /dev/null +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md @@ -0,0 +1,151 @@ +# ItemMatcherPlus + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +The ItemMatcherPlus module improves how QuickShop matches custom and plugin-modified items. + +It allows QuickShop to properly recognize and stack items created by other plugins that normally would not match using standard Bukkit item comparisons. + +This module is especially useful for servers that use: + +- Custom items +- Modified metadata +- NBT-based systems +- Advanced crate rewards +- Custom brewing systems +- Custom fishing rewards + +--- + +## What Does It Do? + +By default, Minecraft item matching checks: + +- Material type +- Basic metadata + +However, many plugins modify items with: + +- Custom NBT data +- Hidden tags +- Custom lore formats +- Unique identifiers + +Without enhanced matching: + +- Items may not stack +- Shops may refuse valid items +- Transactions may fail +- Buying/selling may not behave correctly + +ItemMatcherPlus improves compatibility and matching accuracy. + +--- + +## Supported Plugins + +ItemMatcherPlus includes built-in support for: + +- AdvancedItems +- BreweryX +- CrazyCrates +- ExcellentCrates +- PyroFishing +- SilkSpawners + +If any of these plugins are installed, QuickShop will automatically use enhanced matching logic. + +No additional configuration is required. + +--- + +## How It Works + +When a player trades with a shop: + +1. QuickShop checks the item. +2. If ItemMatcherPlus is enabled, it performs advanced matching. +3. Plugin-specific metadata is validated. +4. The item is confirmed as a match (or rejected safely). + +This allows: + +- Proper stacking of custom items +- Correct shop transactions +- Accurate buy/sell detection +- Reduced false mismatches + +--- + +## Installation + +1. Download the ItemMatcherPlus module. +2. Place the JAR into your `plugins` folder. +3. Restart your server. + +If supported plugins are detected, compatibility activates automatically. + +--- + +## Configuration + +ItemMatcherPlus does not require configuration. + +It activates automatically when: + +- The module is installed +- A supported plugin is detected + +If a supported plugin is not installed, no extra logic runs. + +--- + +## Why You Should Use It + +You should install ItemMatcherPlus if your server uses: + +- Custom fishing plugins +- Custom brewing systems +- Crate plugins with modified items +- Custom spawners +- Any plugin that modifies NBT data + +Without it, shops may not properly recognize custom items. + +--- + +## Common Questions + +### Do I need this if I don't use custom item plugins? + +No. +If you only use vanilla items, this module is not necessary. + +### Does this affect performance? + +The module only activates enhanced matching when needed. + +Normal item matching remains fast and efficient. + +### Will it break existing shops? + +No. +It improves compatibility and matching accuracy without modifying existing shop data. + +--- + +## Summary + +ItemMatcherPlus: + +- Improves item matching accuracy +- Adds support for major custom item plugins +- Prevents stacking and trade issues +- Requires no configuration +- Activates automatically + +If you run a heavily customized economy server, this module is highly recommended. \ No newline at end of file diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md index ba87606698..d4ae7d129a 100644 --- a/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/lands.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/lands.md index 06296f5779..7671fcdfe0 100644 --- a/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/lands.md +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/lands.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/openinv.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/openinv.md index c51f628615..4807d57873 100644 --- a/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/openinv.md +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/openinv.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md new file mode 100644 index 0000000000..c2136320b0 --- /dev/null +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md @@ -0,0 +1,138 @@ +# SimpleClaimSystem + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and SimpleClaimSystem. + +It ensures that shop creation and trading respect land ownership and claim permissions defined by SimpleClaimSystem. + +--- + +## What Does It Do? + +SimpleClaimSystem allows players to claim land and protect it from unauthorized interaction. + +Without compatibility: + +- Players could create shops inside claims they do not own. +- Visitors might trade inside protected areas. +- Claim protection might not apply correctly to shops. + +The SimpleClaimSystem compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops within their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a SimpleClaimSystem claim. +- Whether the player has permission within that claim. +- Whether claim rules allow shop interaction. + +If the action is not permitted by the claim, QuickShop blocks it. + +If the location is outside any claim, default QuickShop behavior applies. + +--- + +## Claim Owner Control + +With this module enabled: + +- Claim owners can create and manage shops inside their claim. +- Trusted players follow claim-based permissions. +- Visitors are restricted unless explicitly allowed. +- Claim protection rules apply automatically to shop interactions. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install SimpleClaimSystem. +2. Install the QuickShop SimpleClaimSystem compat module. +3. Restart your server. + +The module activates automatically if SimpleClaimSystem is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If SimpleClaimSystem is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Enable owner override for easier management. + +This ensures players maintain control over their protected land. + +--- + +## Common Questions + +### Can players create shops in someone else's claim? + +Only if claim permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can allow shops outside claims or restrict them. + +### What happens if SimpleClaimSystem is removed? + +QuickShop will revert to default behavior and stop checking claim permissions. + +--- + +## Summary + +The SimpleClaimSystem compat module: + +- Enforces claim-based permissions +- Prevents unauthorized shop creation +- Protects land from unwanted trading +- Requires minimal setup + +It is recommended for servers running SimpleClaimSystem. \ No newline at end of file diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md index a84dbf057b..4dfa8ae97c 100644 --- a/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/towny.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/towny.md index 52ab4818f4..b26c19d335 100644 --- a/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/towny.md +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/towny.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -26,7 +26,7 @@ Town sub-command allow you switch a quickshop between regular shop and town shop For a nation shop, the shop owner will changed to nation fake player created by Towny, and use Nation's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from nation Towny account.\ +All purchases will deposit or withdraw money from nation Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Nation Shop. @@ -35,7 +35,7 @@ If Plot type restriction is enabled, only a specific Plot type can create a Nati For a town shop, the shop owner will changed to town fake player created by Towny, and use Town's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from town Towny account.\ +All purchases will deposit or withdraw money from town Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Town Shop. @@ -88,7 +88,7 @@ bank-mode: ## Permission Override -By adjust configuration, you're allow mayor or king automaticlly grant administrator permission on all shops in their management range. +By adjust configuration, you're allow mayor or king automatically grant administrator permission on all shops in their management range. ```yaml #Should allow Mayor grant the shop administrator permission on they town. @@ -168,7 +168,7 @@ This causes Towny and QuickShop Hikari to use accounts with the same name but di You can adjust the option in configuration to enable workaround. -NOTE: It will force turned on if detected EssentialsX installed on your server.\ +NOTE: It will force turned on if detected EssentialsX installed on your server. At present, we do not provide a method for disable it. ```yaml diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md new file mode 100644 index 0000000000..0189958495 --- /dev/null +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md @@ -0,0 +1,138 @@ +# UltimateClaims + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and UltimateClaims. + +It ensures that shop creation and trading respect land claim permissions managed by UltimateClaims. + +--- + +## What Does It Do? + +On servers using land-claim plugins, players protect areas of the world from unauthorized interaction. + +Without compatibility: + +- Players may create shops inside claims they do not own. +- Visitors might trade in areas where they should not. +- Claim protection rules might not apply correctly to shops. + +The UltimateClaims compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops inside their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a claim. +- Whether the player has permission in that claim. +- Whether claim rules allow shop interaction. + +If the action violates claim settings, QuickShop blocks it. + +Outside of claims, normal QuickShop behavior applies. + +--- + +## Claim Owner Permissions + +With this module enabled: + +- Claim owners can create and manage shops within their claim. +- Trusted players follow claim permission settings. +- Visitors are restricted based on claim configuration. +- Shop actions outside of claims behave normally. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install UltimateClaims. +2. Install the QuickShop UltimateClaims compat module. +3. Restart your server. + +If UltimateClaims is detected on startup, compatibility activates automatically. + +No additional linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Common options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If UltimateClaims is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Keep owner override enabled for better control. + +This ensures players maintain full control over their protected land. + +--- + +## Common Questions + +### Can players create shops inside someone else's claim? + +Only if the claim permissions allow it. + +Otherwise, QuickShop will block the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can choose to restrict shops to claimed land only. + +### What happens if UltimateClaims is removed? + +QuickShop returns to normal behavior without claim checks. + +--- + +## Summary + +The UltimateClaims compat module: + +- Protects claimed land from unauthorized shop usage +- Enforces claim-based permissions +- Integrates smoothly with land-claim servers +- Requires minimal setup + +It is recommended for any server running UltimateClaims. \ No newline at end of file diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md index 87a71a205c..6437754503 100644 --- a/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md @@ -2,8 +2,10 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. Find out more [here](../modules/shops/worldedit.md). + +Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. \ No newline at end of file diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/development/01-getting-start.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/development/01-getting-start.md index 92b773451e..0e78e52367 100644 --- a/i18n/fa-IR/docusaurus-plugin-content-docs/current/development/01-getting-start.md +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/development/01-getting-start.md @@ -6,8 +6,8 @@ This series of articles will help you build extensions for QuickShop-Hikari or i ## License -QuickShop-Hikari is open source using the [GPLv3](https://www.gnu.org/licenses/quick-guide-gplv3.en.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari).\ -You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the GPLv3 agreement. +QuickShop-Hikari is open source using the [AGPLv3](https://www.gnu.org/licenses/agpl-3.0.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari). +You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the AGPLv3 agreement. ## 🚧Don't trust Javadoc too much @@ -48,7 +48,7 @@ QuickShop-Hikari divides operation sources into three types: - Server Main Thread - Async Thread (any other threads but not server main thread) -- Hybird +- Hybrid If you access the API through the wrong thread, QuickShop-Hikari will force a runtime error to be thrown. @@ -58,4 +58,4 @@ For APIs that may trigger network IO or long-time disk IO, you are required not You can see [Util.ensureThread()](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/3d1d271e1106ea1c83cc6068f8232ab7c7860918/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/util/Util.java#L351) and find out the requirements of the different APIs by looking up their use. APIs that do not use Util.ensureThread() are allowed to be called from any thread by default. -You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. +You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. \ No newline at end of file diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md index aa2404c594..7828d414ad 100644 --- a/i18n/fa-IR/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md @@ -10,7 +10,7 @@ ShopManager manager = api.getShopManager(); ## Getting a shop -Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates.\ +Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates. QuickShop-Hikari's store is only bound to one half of "Large Chest", so to get the store, you need to query both the cube itself and its associated cube. The good thing is that there is an API in the plugin that allows you to handle this situation very easily. @@ -71,7 +71,7 @@ manager.deleteShop(shop) // Permanently delete this store, both memory and datab ## Identify a store -Please note that store locations are technically variable and you should not use coordinates to identify a store.\ +Please note that store locations are technically variable and you should not use coordinates to identify a store. Also RuntimeRandomUniqueId should not be used to identify the store, as the name suggests, the value changes every time the server restarts, it should only be used to handle scenarios where the player interacts with the server. ```java diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md index 543f1851da..4f839ed652 100644 --- a/i18n/fa-IR/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md @@ -1,6 +1,6 @@ # 0x05 Per shop permission -QuickShop-Hikari has a per shop permission management system.\ +QuickShop-Hikari has a per shop permission management system. Therefore, for a normal permission node check is not enough, you need to attach an additional check. ## Check with shop diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/development/06-protocol-system.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/development/06-protocol-system.md index 5d37a15536..0380b789f9 100644 --- a/i18n/fa-IR/docusaurus-plugin-content-docs/current/development/06-protocol-system.md +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/development/06-protocol-system.md @@ -15,30 +15,30 @@ This documentation will guide developers through the components, implementation - **Purpose**: Manages packet handling and initialization logic. - **Interface**: `PacketHandler` - **Key Methods**: - - `Map> factories()` - - Retrieves a map of supported `PacketFactory` instances keyed by game versions. - - `void initialize()` - - Initializes the packet handler. - - `Optional> factory(String version)` - - Retrieves a `PacketFactory` for a specific game version. + - `Map> factories()` + - Retrieves a map of supported `PacketFactory` instances keyed by game versions. + - `void initialize()` + - Initializes the packet handler. + - `Optional> factory(String version)` + - Retrieves a `PacketFactory` for a specific game version. ### 2. **PacketFactory** - **Purpose**: Creates and sends specific packet types. - **Interface**: `PacketFactory` - **Supported Packets**: - - **Spawn Packet**: - - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. - - Example Use: Representing shop items visually. - - **Metadata Packet**: - - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. - - Example Use: Updating item display name or properties. - - **Velocity Packet**: - - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. - - Example Use: Custom animations for virtual items. - - **Destroy Packet**: - - Removes the entity from the client view. Created using `createDestroyPacket()`. - - Example Use: Unloading or removing a virtual display item. + - **Spawn Packet**: + - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. + - Example Use: Representing shop items visually. + - **Metadata Packet**: + - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. + - Example Use: Updating item display name or properties. + - **Velocity Packet**: + - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. + - Example Use: Custom animations for virtual items. + - **Destroy Packet**: + - Removes the entity from the client view. Created using `createDestroyPacket()`. + - Example Use: Unloading or removing a virtual display item. Developers implementing custom `PacketFactory` should ensure these packets are correctly handled and optimized for performance. @@ -46,24 +46,24 @@ Developers implementing custom `PacketFactory` should ensure these packets are c - **Purpose**: Oversees the lifecycle of virtual display items and integrates with packet handlers. - **Key Features**: - - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). - - Manages virtual display items mapped to chunks. - - Provides thread-safe operations for adding and removing display items. + - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). + - Manages virtual display items mapped to chunks. + - Provides thread-safe operations for adding and removing display items. ### 4. **VirtualDisplayItem** - **Purpose**: Represents a virtual item displayed to players. - **Key Features**: - - Generates and caches packets for spawning, metadata, velocity, and destruction. - - Manages packet senders for each player. - - Handles spawn and removal operations dynamically. + - Generates and caches packets for spawning, metadata, velocity, and destruction. + - Manages packet senders for each player. + - Handles spawn and removal operations dynamically. ### 5. **ProtocolLibHandler and PacketEventsHandler** - **Purpose**: Provide implementations of `PacketHandler` using ProtocolLib and PacketEvents, respectively. - **Differences**: - - `ProtocolLibHandler` leverages ProtocolLib API. - - `PacketEventsHandler` uses the PacketEvents library. + - `ProtocolLibHandler` leverages ProtocolLib API. + - `PacketEventsHandler` uses the PacketEvents library. --- @@ -140,11 +140,11 @@ public class CustomPacketFactory implements PacketFactory { Packet factories are provided for specific game versions through two primary implementations: - **ProtocolLib**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` - **PacketEvents**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` --- diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md new file mode 100644 index 0000000000..aebc035f87 --- /dev/null +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md @@ -0,0 +1,297 @@ +# Interaction System (Developer Guide) + +The Interaction System allows developers to fully customize how players interact with shops. + +As of 6.2.0.11, the system has been redesigned to be: + +- Modular +- Extensible +- Thread-safe +- Fully customizable by third-party addons + +This guide will walk you through: + +1. What the Interaction System is +2. Getting the `InteractionManager` +3. Understanding `InteractionType` +4. Understanding `InteractionBehavior` +5. Registering custom interactions +6. Best practices + +--- + +# Overview + +The Interaction System is composed of three main components: + +| Component | Purpose | +| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| `InteractionType` | Describes **what kind of click happened** (standing, sneaking, left-click, sign, shopblock, etc.) | +| `InteractionBehavior` | Describes **what action should happen** when that type is triggered | +| `InteractionManager` | Central registry that manages interactions and behaviors | + +This separation allows developers to: + +- Add new click types +- Add new behaviors +- Override existing ones +- Extend QuickShop without modifying core code + +--- + +# Getting the InteractionManager + +To begin registering custom interactions, you must retrieve the `InteractionManager` instance. + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +If you are working directly with the plugin instance: + +```java +InteractionManager manager = QuickShop.getInstance().getInteractionManager(); +``` + +Once obtained, you can: + +- Register new interaction types +- Register new behaviors +- Override existing behaviors + +--- + +# Understanding InteractionType + +`InteractionType` represents **how** a player interacted with a shop. + +Examples include: + +- `STANDING_LEFT_CLICK_SIGN` +- `STANDING_RIGHT_CLICK_SHOPBLOCK` +- `SNEAKING_LEFT_CLICK_CONTAINER` +- etc. + +Each `InteractionType` defines: + +- Player stance (standing/sneaking) +- Click type (left/right) +- Target (sign/shopblock/container) + +InteractionTypes do NOT define behavior — they only define the trigger. + +--- + +# Understanding InteractionBehavior + +`InteractionBehavior` defines **what happens** when an interaction is triggered. + +Examples of built-in behaviors: + +- `TRADE_INTERACTION` +- `TRADE_UI` +- `CONTROL_PANEL` +- `CONTROL_PANEL_UI` +- `NONE` + +A behavior: + +- Executes logic +- May open GUIs +- May send chat panels +- May directly trade items +- Can cancel or modify flow + +This separation makes it easy to reuse behaviors across multiple interaction types. + +--- + +# Registering Custom Interactions + +There are two things you can register: + +- A custom `InteractionType` +- A custom `InteractionBehavior` + +--- + +## Creating a Custom InteractionBehavior + +Create a class implementing `InteractionBehavior`. + +Example: + +```java +public class MyTradeBehavior implements InteractionBehavior { + + @Override + public String getKey() { + return "MY_CUSTOM_TRADE"; + } + + @Override + public void execute(InteractionClick click) { + Player player = click.getPlayer(); + Shop shop = click.getShop(); + + player.sendMessage("You triggered my custom interaction!"); + + // Add your custom logic here + } +} +``` + +Then register it: + +```java +InteractionManager manager = api.getInteractionManager(); +manager.behavior(new MyTradeBehavior()); +``` + +Now your behavior is available for use. + +--- + +## Creating a Custom InteractionType + +You may also register custom interaction types if you want to introduce new trigger definitions. + +Example: + +```java +public class MyCustomInteraction implements InteractionType { + + @Override + public String getKey() { + return "STANDING_DOUBLE_CLICK_SIGN"; + } + + @Override + public boolean matches(InteractionClick click) { + // Define custom logic to detect this interaction + return click.isStanding() + && click.isSign() + && click.isDoubleClick(); + } +} +``` + +Register it: + +```java +manager.interaction(new MyCustomInteraction()); +``` + +--- + +# Binding Types to Behaviors + +The InteractionManager internally maps interaction types to behaviors based on configuration and registration order. + +Once your behavior is registered: + +- It can be referenced in `interaction.yml` +- Or attached programmatically + +Example interaction.yml usage: + +```yaml +STANDING_LEFT_CLICK_SIGN: MY_CUSTOM_TRADE +``` + +--- + +# The InteractionClick Object + +When your behavior executes, you receive an `InteractionClick` object. + +It provides: + +- `getPlayer()` +- `getShop()` +- `getLocation()` +- `isSneaking()` +- `isSign()` +- `isShopBlock()` +- etc. + +This gives full context for safe execution. + +--- + +# Advanced: Overriding Built-in Behavior + +If you register a behavior using the same key as an existing one, your behavior can override the default. + +⚠️ Be careful when doing this — you are replacing core functionality. + +--- + +# Best Practices + +### Always Use Unique Keys + +Avoid naming collisions: + +``` +MYPLUGIN_CUSTOM_BEHAVIOR +``` + +### Keep Behavior Lightweight + +Do not block the main thread with: + +- Heavy database calls +- File IO +- Network calls + +Use async tasks if needed. + +### Respect Permissions + +Always validate: + +```java +if (!player.hasPermission("myplugin.use")) { + return; +} +``` + +### Avoid Hard Overrides Unless Necessary + +Instead of replacing built-in behaviors, consider extending them. + +--- + +# Example: Full Minimal Implementation + +```java +public class ExampleAddon { + + public void register(QuickShopAPI api) { + + InteractionManager manager = api.getInteractionManager(); + + manager.behavior(new MyTradeBehavior()); + manager.interaction(new MyCustomInteraction()); + } +} +``` + +--- + +# Conclusion + +The Interaction System is designed to allow: + +- Full extensibility +- Clean separation of triggers and actions +- Easy integration for third-party developers + +By retrieving the `InteractionManager`: + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +You gain full control over how shops respond to player actions. \ No newline at end of file diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/development/08-tax-manager.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/development/08-tax-manager.md new file mode 100644 index 0000000000..72a56f9e88 --- /dev/null +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/development/08-tax-manager.md @@ -0,0 +1,266 @@ +# Tax System (Developer Guide) + +The QuickShop tax system allows server owners and developers to define how transaction taxes are calculated, distributed, and extended. + +As of 6.2.0.11, the tax system has been fully rewritten to provide: + +- A flexible TaxManager +- Pluggable TaxProvider support +- Progressive taxation +- Tax targeting (shop owner, interacting player, or both) +- Custom extension capability for third-party addons + +This guide explains how to work with the tax system programmatically. + +--- + +# Overview + +The tax system is composed of three core components: + +TaxManager +Responsible for coordinating tax calculation and execution. + +TaxProvider +Defines how tax values are calculated. + +TaxRates +Represents calculated tax results for a transaction. + +The system is designed to allow custom providers to be registered and used without modifying core logic. + +--- + +# Getting the TaxManager + +To work with the tax system, retrieve the TaxManager from the ShopManager. + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +Once obtained, you can: + +- Access current tax configuration +- Register custom tax providers +- Calculate tax values +- Hook into tax events + +--- + +# How the Tax System Works + +During a shop transaction: + +1. A base price is determined. +2. The TaxManager selects the active TaxProvider. +3. The TaxProvider calculates applicable tax. +4. A TaxRates object is produced. +5. The system applies the tax to: + + - Shop owner + - Interacting player + - Or both (depending on configuration) + +This architecture allows tax behavior to be modified without altering transaction logic. + +--- + +# TaxProvider + +A TaxProvider defines how tax values are calculated. + +You may create your own provider to implement: + +- Progressive tax brackets +- Flat percentage tax +- Conditional tax rules +- Region-based tax +- Rank-based tax +- Time-based tax + +Example minimal provider: + +```java +public class MyCustomTaxProvider implements TaxProvider { + + @Override + public TaxRates calculateTax(TaxContext context) { + + double basePrice = context.getPrice(); + + double taxAmount = basePrice * 0.05; // 5% flat tax + + return new TaxRates() + .ownerTax(taxAmount) + .buyerTax(0.0); + } +} +``` + +Then register it: + +```java +taxManager.provider(new MyCustomTaxProvider()); +``` + +Once registered, your provider will be used for tax calculations. + +--- + +# TaxRates + +TaxRates represents the result of a tax calculation. + +It typically contains: + +- Owner tax amount +- Buyer tax amount +- Total tax impact +- Metadata (if applicable) + +The transaction system will read from TaxRates and apply deductions accordingly. + +--- + +# Progressive Taxation + +The built-in system supports progressive tax structures. + +This allows server administrators to tax based on: + +- Player balance +- Shop owner balance +- Configured tax brackets + +Example configuration concept: + +- 0–10,000 balance → 1% tax +- 10,000–100,000 → 2% tax +- 100,000+ → 3% tax + +Developers can extend or override this logic inside a custom TaxProvider. + +--- + +# Targeting Tax + +The new tax system allows taxes to be applied to: + +- Shop owner +- Interacting player +- Both + +This is controlled via configuration, but custom providers can override distribution logic by adjusting TaxRates output. + +Example: + +```java +return new TaxRates() + .ownerTax(basePrice * 0.02) + .buyerTax(basePrice * 0.01); +``` + +--- + +# Registering a Custom TaxProvider + +To replace or extend tax logic: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); + +taxManager.provider(new MyCustomTaxProvider()); +``` + +You may register only one primary provider at a time. If multiple providers are needed, implement internal delegation within your custom provider. + +--- + +# Tax Events + +The tax system integrates with the event system. + +The modern event used is: + +ShopEnhancedTaxEvent + +This replaces legacy tax events and provides improved context, including: + +- Transaction builder reference +- TaxRates object +- Modification capability before final execution + +You can listen for the event and modify tax behavior dynamically: + +```java +@EventHandler +public void onTax(ShopEnhancedTaxEvent event) { + + TaxRates rates = event.getTaxRates(); + + // Example: Give VIP players reduced owner tax + if (event.getOwner().hasPermission("vip.tax.discount")) { + rates.ownerTax(rates.getOwnerTax() * 0.5); + } +} +``` + +--- + +# Best Practices + +Always keep tax calculations lightweight. + +Avoid: + +- Heavy database queries inside calculateTax +- Blocking network calls +- Long-running computations + +If complex logic is required, pre-cache required data outside the tax execution path. + +Ensure negative tax values are not returned unless intentional. + +Always validate final amounts before applying modifications. + +Respect configuration hierarchy unless intentionally overriding it. + +--- + +# Example Full Implementation + +```java +public class ExampleTaxAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + TaxManager taxManager = manager.taxManager(); + + taxManager.provider(new MyCustomTaxProvider()); + } +} +``` + +--- + +# Conclusion + +The new tax system is designed for: + +- Flexibility +- Extensibility +- Clean separation of concerns +- Future expansion + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +You gain full control over how QuickShop calculates and applies tax during transactions. \ No newline at end of file diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/development/09-layout-provider.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/development/09-layout-provider.md new file mode 100644 index 0000000000..55e3cd3e91 --- /dev/null +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/development/09-layout-provider.md @@ -0,0 +1,275 @@ +# Shop Layout Provider (Developer Guide) + +The Shop Layout Provider system allows developers to customize how shop signs are structured and rendered. + +As of 6.2.0.11, shop layouts are no longer hardcoded. Instead, they are controlled through the `IShopLayoutProvider` interface, which allows: + +- Custom sign line ordering +- Per-shop-type layouts (BUYING, SELLING, FROZEN, or custom types) +- Dynamic layout resolution +- Complete replacement of the default layout system + +This guide explains how to access, override, and implement a custom layout provider. + +--- + +# Overview + +The layout provider controls how shop sign lines are arranged. + +Instead of hardcoding: + +Line 1 → Header +Line 2 → Trading info +Line 3 → Item +Line 4 → Price + +The system now allows full customization through: + +- Config-based layout definitions +- Custom `IShopLayoutProvider` implementations +- Runtime overrides + +The default implementation is `SimpleShopLayoutProvider`. + +--- + +# Accessing the Layout Provider + +To retrieve the current layout provider: + +```java +ShopManager manager = api.getShopManager(); +IShopLayoutProvider provider = manager.shopLayoutProvider(); +``` + +To replace the layout provider with a custom one: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Once replaced, your implementation will control how shop layouts are generated. + +--- + +# Understanding IShopLayoutProvider + +`IShopLayoutProvider` defines how layout data is retrieved and resolved. + +It is responsible for: + +- Providing layout configuration per shop type +- Determining which layout to use +- Supplying formatted line keys +- Allowing future extensibility + +The default implementation reads layout definitions from configuration and applies them based on shop type. + +--- + +# Default Layout Example + +The default configuration-based layout looks like this: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +Each line maps to a layout component key. + +An empty string (`""`) leaves that line blank. + +The layout provider resolves these keys into actual sign content. + +--- + +# Creating a Custom Layout Provider + +To override the default behavior, implement `IShopLayoutProvider`. + +Example minimal implementation: + +```java +public class MyCustomLayoutProvider implements IShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + + ShopLayout layout = new ShopLayout(); + + layout.setLine(1, "Custom Header"); + layout.setLine(2, "Owner: " + shop.getOwnerName()); + layout.setLine(3, shop.getItem().getType().name()); + layout.setLine(4, "$" + shop.getPrice()); + + return layout; + } +} +``` + +Then register it: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Your layout will now control all shop sign formatting. + +--- + +# Per-Type Layout Control + +Because the system no longer depends on the legacy ShopType enum, layouts can support: + +- Built-in types (BUYING, SELLING, FROZEN) +- Custom shop types +- Addon-defined shop types + +Your provider can determine layout logic dynamically: + +```java +@Override +public ShopLayout provideLayout(Shop shop) { + + if (shop.getShopType().key().equals("FROZEN")) { + return frozenLayout(shop); + } + + return defaultLayout(shop); +} +``` + +This allows conditional formatting, localization adjustments, or special event styling. + +--- + +# Advanced Customization + +A custom layout provider can: + +- Pull data from external plugins +- Inject dynamic placeholders +- Modify layout per player +- Apply formatting logic +- Override color schemes +- Apply region-based formatting +- Implement animated sign systems + +Because the layout provider is resolved at runtime, you can compute layouts dynamically instead of reading static config. + +--- + +# Replacing vs Extending the Default Provider + +You have two options: + +Replace entirely: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Or extend the default implementation: + +```java +public class ExtendedLayoutProvider extends SimpleShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + ShopLayout base = super.provideLayout(shop); + + base.setLine(1, "[Extended] " + base.getLine(1)); + + return base; + } +} +``` + +Extending is safer if you only want to modify small portions. + +--- + +# Best Practices + +Keep layout generation lightweight. + +Avoid: + +- Heavy database queries +- Blocking IO +- Complex network calls + +Layout generation runs during shop updates and sign refresh events. + +Always handle null values safely. + +Ensure layout line count does not exceed sign limits. + +Avoid hardcoding shop type names unless necessary. + +If your layout supports custom shop types, validate their keys properly. + +--- + +# Example Full Registration + +```java +public class LayoutAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + + manager.shopLayoutProvider(new MyCustomLayoutProvider()); + } +} +``` + +--- + +# Conclusion + +The Shop Layout Provider system allows complete control over shop sign structure. + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +``` + +And setting: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +You can redefine how every shop is displayed on the server. + +This system was designed to support: + +- Extensibility +- Custom shop types +- Localization +- Dynamic formatting +- Future expansion \ No newline at end of file diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/faq/compare-reremake.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/faq/compare-reremake.md index aaa1a9e507..6b39f02520 100644 --- a/i18n/fa-IR/docusaurus-plugin-content-docs/current/faq/compare-reremake.md +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/faq/compare-reremake.md @@ -64,7 +64,7 @@ If you are a Reremake user, you may be confused about the differences between Hi ## Which one should I use? Well, it depends on what your needs are.\ -If you have an old server (<1.20) instance, Reremake is your only choice.\ +If you have an old server ({'<'}1.20) instance, Reremake is your only choice.\ ~~If you are in China which has GFW interfere, you also should consider Reremake because it doesn't need to load libraries from Global Internet.~~ Solved in 6.0.0.0. If none of these applies, give Hikari a try! diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md index 551f579e7c..172be3a69b 100644 --- a/i18n/fa-IR/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md @@ -1,8 +1,8 @@ # Where Addons/Compacts is -Addons and Compatilibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. +Addons and Compatibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. -- Open Modrinth versions page, locate the version your're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) +- Open Modrinth versions page, locate the version you're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) - Frantically slide your mouse wheel down until the lowest end of the page. - You get it! diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/internal/database-schema.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/internal/database-schema.md index fea685e4fc..45e04adb56 100644 --- a/i18n/fa-IR/docusaurus-plugin-content-docs/current/internal/database-schema.md +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/internal/database-schema.md @@ -4,17 +4,17 @@ This chapter will explain the implementation details of QuickShop Hikari's datab ## Tables -This section explains the database tables created by QuickShop-Hikari.\ -Unless otherwise specified, the initial `qs_` in table name is the table prefix.\ +This section explains the database tables created by QuickShop-Hikari. +Unless otherwise specified, the initial `qs_` in table name is the table prefix. For the latest code definition for each table, see: [DataTables.java](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/hikari/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/database/DataTables.java) ### `data` -This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information.\ -No matter what, a data record should not be modified after it is created, until it got deleted.\ +This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information. +No matter what, a data record should not be modified after it is created, until it got deleted. Any new changes to the shop should create a new copy, apply the changes to the copy, and insert it as a new record. -Basiclly, Copy-on-write. +Basically, Copy-on-write. A data record only be deleted from the database when no any table references their `data_id`. @@ -29,7 +29,7 @@ A data record only be deleted from the database when no any table references the | unlimited | BIT NOT NULL | 0 | Indicates whether this store is an unlimited store, 0=Limited, 1=Unlimited | | hologram | BIT NOT NULL | 0 | Indicates the suspension status of this store's display item, 0=Follow global settings, 1=Disabled | | tax_account | VARCHAR(36) | NULL | The uuid for tax account, If it is not NULL, tax will be paid to the specified account | -| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serilized to JSON string | +| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serialized to JSON string | | extra | LONGTEXT | Empty Yaml | Used to store experimental settings of QuickShop Hikari or persistent data of other plugins | | inv_wrapper | VARCHAR(255) NOT NULL | N/A | Unique identifier for InventoryWrapper for this shop data entry | | inv_symbol_link | TEXT NOT NULL | N/A | Unique Inventory symbol used to pass to InventoryWrapper, for locating inventory | @@ -38,7 +38,7 @@ A data record only be deleted from the database when no any table references the ### `shops` -This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes.\ +This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes. Multiple `shop_id` can correspond to the same `data_id`. | Column Name | DataType | Default | Description | diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/modules/cmd-alias.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/modules/cmd-alias.md index 53f1577685..e6ed381c0d 100644 --- a/i18n/fa-IR/docusaurus-plugin-content-docs/current/modules/cmd-alias.md +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/modules/cmd-alias.md @@ -23,7 +23,7 @@ custom-commands: - cshop ``` -Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect.\ +Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect. The effect should be like this: ![command-alias](./img/command-alias.png) diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/modules/datasource.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/modules/datasource.md index 6fc1bd8931..3fd3a8bdee 100644 --- a/i18n/fa-IR/docusaurus-plugin-content-docs/current/modules/datasource.md +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/modules/datasource.md @@ -48,7 +48,7 @@ Execute the `/quickshop export` command in console, quickshop will export a zip ![exported data](img/database-export.png) -Stop your database, switch the datasource, and start the server.\ +Stop your database, switch the datasource, and start the server. You may noticed all shops are gone, because new datasources had no data inside, we will restore them from export. Rename that exported ZIP file to `recovery.zip`, execute `/quickshop recovery` and restart your server, all shops should back. diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/modules/itemmatcher.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/modules/itemmatcher.md index 56be243019..922907be27 100644 --- a/i18n/fa-IR/docusaurus-plugin-content-docs/current/modules/itemmatcher.md +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/modules/itemmatcher.md @@ -4,7 +4,7 @@ ItemMatcher is a utility used by QuickShop-Hikari to compare the items, it is th :::caution -If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse.\ +If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse. **TL;DR: Keep default unless you know what you're doing.** ::: @@ -26,10 +26,10 @@ matcher: work-type: 1 ``` -By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility.\ +By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility. But still, you can toggle to QuickShop Item Matcher if you need to customize the comparing or running QuickShop on the server jar which have bug affect the Bukkit comparing system. -## Customize the metadata compareing +## Customize the metadata comparing Customize only works under QuickShop Item Matcher. diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md index fc2af69d2b..d04e8f2783 100644 --- a/i18n/fa-IR/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md @@ -4,7 +4,7 @@ ItemStack Loader is a workaround for loading the Bukkit ItemStack. :::caution -Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossble. +Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossible. ::: diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/modules/localization.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/modules/localization.md index e9121e1a36..d47589ab9a 100644 --- a/i18n/fa-IR/docusaurus-plugin-content-docs/current/modules/localization.md +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/modules/localization.md @@ -10,7 +10,7 @@ To help translate QuickShop-Hikari, please visit our [Crowdin Homepage](https:// ## Crowdin OTA -QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will overrided when you reload QuickShop-Hikari or restart your server. +QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will override when you reload QuickShop-Hikari or restart your server. Your installation will keep translations up-to-date without any touch. @@ -110,6 +110,16 @@ To disable the CrowdinOTA, please add it in the startup flag: -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager.enableCrowdinOTA=false ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +use-crowdin-ota: false +``` + ### Self-Hosted OTA Server If you self-hosted our translation server by using [CrowdinCopyDeploy](https://github.com/Ghost-chu/CrowdinCopyDeploy) tool, you're able to change the OTA server to yourself server. @@ -118,4 +128,12 @@ If you self-hosted our translation server by using [CrowdinCopyDeploy](https://g -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager= ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml +Use + +```yaml +crowdin-host: +``` \ No newline at end of file diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/modules/shops/benefit.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/modules/shops/benefit.md index 4d7a9c8f42..c59d92e6d1 100644 --- a/i18n/fa-IR/docusaurus-plugin-content-docs/current/modules/shops/benefit.md +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/modules/shops/benefit.md @@ -37,3 +37,13 @@ By default, for security, QuickShop-Hikari disallow add offline players into sho ```bash -Dcom.ghostchu.quickshop.command.subcommand.SubCommand_Benefit.allowOffline=true ``` + +### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +shop.allow-offline-benefit: true +``` \ No newline at end of file diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/modules/shops/control-panel b/i18n/fa-IR/docusaurus-plugin-content-docs/current/modules/shops/control-panel new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/modules/shops/control-panel @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/modules/shops/history.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/modules/shops/history.md index fa891adeab..195b64a042 100644 --- a/i18n/fa-IR/docusaurus-plugin-content-docs/current/modules/shops/history.md +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/modules/shops/history.md @@ -24,7 +24,7 @@ The History GUI displays the details of each recorded transaction and other usef ### Transaction details -When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed.\ +When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed. If you are checking the history of more than one store, the player head will be replaced with an item from the corresponding store. ![history-gui](./img/history-gui.png) diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md new file mode 100644 index 0000000000..c5ed3b3fe4 --- /dev/null +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md @@ -0,0 +1,90 @@ +# Shop Types + +QuickShop supports multiple shop types, allowing shops to behave differently depending on their mode. + +The built-in shop types are: + +- Selling +- Buying +- Frozen + +Each type changes how the shop interacts with players. + +--- + +## Selling Shop + +A Selling shop allows players to: + +- Buy items from the shop owner +- Pay money to receive items + +This is the most common shop type. + +--- + +## Buying Shop + +A Buying shop allows players to: + +- Sell items to the shop owner +- Receive money in exchange + +This is commonly used for: + +- Resource collection +- Server buy-back shops +- Automated material sinks + +--- + +## Frozen Shop + +A Frozen shop temporarily disables trading. + +While frozen: + +- No buying is allowed +- No selling is allowed +- The shop remains intact +- Staff or admins can manage it + +This is useful for: + +- Temporary suspensions +- Investigation +- Event locking +- Maintenance + +--- + +## Switching Shop Types + +Shop types can be changed through: + +- Control panel +- GUI control panel +- Admin commands + +Frozen mode is also available via: + +/qs freeze + +--- + +## Custom Shop Types + +As of 6.2.x, the system supports extensible shop types internally. + +While server owners use the built-in types, the system now allows future expansion through addons. + +--- + +## Summary + +Shop types allow you to: + +- Control how money flows +- Enable buy-back mechanics +- Temporarily disable shops +- Build advanced economic systems \ No newline at end of file diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md new file mode 100644 index 0000000000..18e0a47407 --- /dev/null +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md @@ -0,0 +1,217 @@ +# Sign Layout + +QuickShop allows you to fully customize how shop signs are structured. + +You can change: + +- What appears on each line +- The order of information +- Layout per shop type +- Whether certain lines are blank + +This gives you complete control over how shops look on your server. + +--- + +## How Sign Layout Works + +Shop signs have four lines. + +Instead of being hardcoded, QuickShop uses a configurable layout system. + +Each shop type can have its own layout: + +- SELLING +- BUYING +- FROZEN + +You define what each line displays using layout keys. + +--- + +## Configuration Location + +Sign layout is configured in `config.yml` under: + +```yaml +layout: +``` + +Example default configuration: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## Available Layout Keys + +Each line value refers to a built-in layout component. + +Common layout keys include: + +- `header` – The shop header line +- `trading` – Buy/Sell direction information +- `item` – Item name +- `price` – Shop price + +These keys are automatically formatted using your language file and formatting settings. + +--- + +## Leaving a Line Blank + +To leave a line empty, use: + +```yaml +line2: "" +``` + +This is useful if you want: + +- Minimalist signs +- Cleaner layouts +- Custom spacing +- Decorative formatting + +--- + +## Customizing Per Shop Type + +Each shop type can have a different layout. + +For example: + +```yaml +layout: + + SELLING: + line1: "header" + line2: "item" + line3: "price" + line4: "" + + BUYING: + line1: "header" + line2: "price" + line3: "item" + line4: "" + + FROZEN: + line1: "header" + line2: "" + line3: "item" + line4: "Frozen" +``` + +This allows you to visually differentiate: + +- Selling shops +- Buying shops +- Frozen shops + +--- + +## Practical Examples + +### Minimal Style + +```yaml +layout: + SELLING: + line1: "item" + line2: "price" + line3: "" + line4: "" +``` + +### Compact Economy Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "price" + line3: "item" + line4: "" +``` + +### Large Clear Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## How Updates Affect Layout + +When you change the layout: + +- Existing shop signs will update automatically when refreshed. +- New shops will use the updated format immediately. + +If needed, you can reload QuickShop to apply changes. + +--- + +## Best Practices + +- Keep important information visible (price and item). +- Avoid overly complex formatting. +- Test layout changes before deploying on large servers. +- Use different layouts for BUYING and SELLING to reduce confusion. + +--- + +## Common Questions + +### Can I add more than four lines? + +No. +Minecraft signs are limited to four lines. + +### Can I add colors? + +Colors are controlled by your language file and formatting settings. + +### Can I change layout without restarting? + +Yes, but reloading or refreshing shops is recommended to ensure full update. + +--- + +## Summary + +The Sign Layout system allows you to: + +- Fully customize shop sign appearance +- Create per-type layouts +- Simplify or expand shop information +- Improve clarity for players + +All layout customization is handled inside `config.yml`. diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md new file mode 100644 index 0000000000..980bad10f2 --- /dev/null +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md @@ -0,0 +1,130 @@ +# Shop Sign Waxing + +QuickShop can automatically wax shop signs to prevent players from editing them manually. + +Waxing protects the integrity of your shop signs and helps prevent tampering, spoofing, and accidental modification. + +As of modern Minecraft versions, waxed signs cannot be edited unless they are unwaxed first. + +--- + +## What Is Sign Waxing? + +In Minecraft, waxing a sign locks it so that: + +- Players cannot edit the text +- Players cannot modify lines +- Accidental changes are prevented +- Malicious edits are blocked + +When enabled in QuickShop, shop signs are automatically waxed when created. + +--- + +## Why Use It? + +Sign waxing protects against: + +- Players editing price lines +- Changing item names on signs +- Spoofing shop information +- Accidental formatting issues +- Sign hijacking attempts + +On public servers, this feature is strongly recommended. + +--- + +## How It Works + +When a shop is created: + +1. QuickShop generates the shop sign. +2. The sign text is written. +3. The sign is automatically waxed (if enabled). + +If a shop is updated: + +- The sign will be safely updated by QuickShop. +- The wax state is maintained. + +Players cannot manually edit shop signs while waxing is enabled. + +--- + +## Configuration + +To enable or disable sign waxing, edit `config.yml`: + +```yaml +shop: + sign-wax: true +``` + +### true + +- Shop signs are automatically waxed. +- Players cannot edit the sign manually. + +### false + +- Shop signs behave like normal Minecraft signs. +- Players may edit them if permitted by the game. + +--- + +## Recommended Setting + +For most servers: + +```yaml +shop: + sign-wax: true +``` + +This ensures shop data stays accurate and secure. + +--- + +## Common Questions + +### Can admins still modify shop signs? + +QuickShop controls shop sign formatting. +Manual edits are not recommended. + +Admins should use: + +- Control panel +- Shop commands +- Direct configuration changes + +### Does waxing affect shop functionality? + +No. +Waxing only prevents manual text edits. +The shop continues to function normally. + +### Can players un-wax shop signs? + +No. +QuickShop manages the sign state automatically. + +--- + +## Best Practices + +- Keep sign-wax enabled on survival servers. +- Combine sign-wax with proper permissions. +- Avoid manually editing shop signs through other plugins. + +--- + +## Summary + +Sign Waxing: + +- Prevents tampering +- Requires no additional setup + +Enable it once and QuickShop handles the rest. \ No newline at end of file diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/modules/shops/taxes.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/modules/shops/taxes.md new file mode 100644 index 0000000000..1a273fd978 --- /dev/null +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/modules/shops/taxes.md @@ -0,0 +1,92 @@ +# Taxation System + +QuickShop includes a taxation system designed to give server owners more flexibility and control over shop-based income. + +This system was revamped as of 6.2.0.11+ + +The new system allows you to: + +- Apply tax to shop owners +- Apply tax to buyers +- Apply tax to both +- Use progressive tax brackets +- Customize tax behavior in configuration + +This system replaces the legacy tax configuration. + +--- + +## How It Works + +During a transaction: + +1. The shop price is calculated. +2. Tax is calculated based on your configuration. +3. Tax is deducted from the configured target(s). +4. Remaining funds are distributed normally. + +You can configure: + +- Flat percentage tax +- Progressive tax based on player balance +- Tax accounts +- Distribution rules + +--- + +## Progressive Tax + +The new system allows you to tax based on balance brackets. + +Example concept: + +- 0 – 10,000 balance → 1% tax +- 10,000 – 100,000 → 2% tax +- 100,000+ → 3% tax + +This helps prevent extremely wealthy players from dominating the economy. + +--- + +## Who Pays the Tax? + +You can configure whether tax applies to: + +- The shop owner +- The buyer +- Both + +This gives you flexibility depending on your economy design. + +--- + +## Configuration + +All tax-related settings are located under the `shop-tax` section in `config.yml`. + +After updating to 6.2.0.11+, review your tax configuration carefully, as the old tax system has been replaced. + +--- + +## Why Use Tax? + +The taxation system can help: + +- Remove currency from circulation +- Fund server banks or towns +- Create sink mechanics +- Balance inflation +- Reward active players + +--- + +## Summary + +The new taxation system is: + +- Flexible +- Configurable +- Balance-aware +- Designed for modern economy servers + +Make sure to review your configuration after upgrading. \ No newline at end of file diff --git a/i18n/fa-IR/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md b/i18n/fa-IR/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md new file mode 100644 index 0000000000..247c24712d --- /dev/null +++ b/i18n/fa-IR/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md @@ -0,0 +1,161 @@ +# WorldEdit & FAWE Support + +QuickShop includes built-in protection and integration for WorldEdit and FastAsyncWorldEdit (FAWE). + +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. + +You do not need to download or install any additional compatibility plugins. + +--- + +## What This Does + +WorldEdit and FAWE allow administrators and builders to: + +- Copy and paste regions +- Replace large areas of blocks +- Mass-delete regions +- Roll back areas +- Regenerate terrain + +Without protection, these operations could: + +- Create ghost shops +- Leave orphaned shop data in the database +- Duplicate shops unintentionally +- Delete containers without cleaning up shop data +- Cause inconsistencies between world and database + +QuickShop now automatically detects and safely processes WorldEdit and FAWE operations. + +--- + +## Built-In Behavior + +When WorldEdit or FAWE modifies blocks: + +- Shops removed via WorldEdit are properly deleted from the database. +- Shop data stays synchronized with world changes. +- Ghost shops are prevented. +- Mass block replacements will not leave broken shop entries behind. + +This applies to: + +- //set +- //replace +- //cut +- //paste +- //regen +- Region deletion +- Mass container removal + +No configuration is required. + +--- + +## FAWE Support + +FastAsyncWorldEdit (FAWE) is fully supported. + +Because FAWE processes edits asynchronously, QuickShop handles: + +- Region-thread safe processing +- Async block updates +- Safe shop deletion during batch edits + +You do not need to enable anything manually. + +--- + +## Removing Shops with WorldEdit + +If you delete containers (chests, barrels, etc.) using WorldEdit: + +QuickShop will automatically: + +- Detect the block removal +- Unregister the shop +- Clean the database entry +- Prevent ghost shops + +You do not need to run `/qs cleanghost` after WorldEdit usage in normal circumstances. + +--- + +## Copying and Pasting Shops + +If you copy and paste regions that contain shops: + +- Shop data will not duplicate incorrectly. +- Shop IDs remain consistent. +- Invalid pasted shops will not auto-register unless properly created. + +This prevents accidental duplication exploits. + +--- + +## Performance + +WorldEdit and FAWE operations can modify thousands of blocks at once. + +QuickShop processes these safely and efficiently: + +- Batch-aware cleanup +- Thread-safe region access (especially on Folia) +- Minimal performance impact during mass edits + +--- + +## Configuration + +There are no specific WorldEdit configuration options in QuickShop. + +Support is automatic and always enabled if WorldEdit or FAWE is detected. + +If WorldEdit is not installed, no extra code is executed. + +--- + +## Common Questions + +### Do I need the old WorldEdit compatibility jar? + +No. + +As of 6.2.0.11, WorldEdit support is built-in and the separate compatibility module has been removed. + +### Does this work with FAWE? + +Yes. FAWE is fully supported. + +### Will shops break if I use //set air? + +No. Shops will be safely removed and cleaned up. + +### Do I need to restart after installing WorldEdit? + +No. QuickShop detects WorldEdit automatically on startup. + +--- + +## Best Practices + +Even though QuickShop safely handles WorldEdit operations, it is recommended to: + +- Avoid copying shops intentionally unless required +- Use backups before large region edits +- Test large FAWE operations on staging servers when possible + +--- + +## Summary + +QuickShop’s built-in WorldEdit and FAWE integration ensures: + +- Safe mass edits +- No ghost shops +- Automatic database cleanup +- Thread-safe processing +- No extra modules required + +WorldEdit support is now a core feature of QuickShop. \ No newline at end of file diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/addon/limited.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/addon/limited.md index 70af27e240..fae55a8c95 100644 --- a/i18n/fi-FI/docusaurus-plugin-content-docs/current/addon/limited.md +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/addon/limited.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -41,8 +35,8 @@ Limit players to purchase up to 16 items per month. /quickshop limit period MONTH ``` -The system is based on the QuickShop-Hikari calendar system.\ -The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year.\ +The system is based on the QuickShop-Hikari calendar system. +The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year. Same for days, months and hours. Available time units: diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/addon/list.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/addon/list.md index 93d182f083..f20b91fd7b 100644 --- a/i18n/fi-FI/docusaurus-plugin-content-docs/current/addon/list.md +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/addon/list.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/addon/plan.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/addon/plan.md index 52a6e79cb4..c10ef4df42 100644 --- a/i18n/fi-FI/docusaurus-plugin-content-docs/current/addon/plan.md +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/addon/plan.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -18,7 +18,7 @@ Recorded data can be displayed from Hikari v2.0.0.0 onwards, but only after vers - All shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 1000 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `5` in server scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `5` in server scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Player Scope @@ -27,7 +27,7 @@ And still is Plan limitations, the list sorting is disturbed, so the display ord - All owned shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 50 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `4` in player scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `4` in player scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Showcase diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/addon/reforges.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/addon/reforges.md index 2a14509eb7..25fff1752a 100644 --- a/i18n/fi-FI/docusaurus-plugin-content-docs/current/addon/reforges.md +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/addon/reforges.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.0.0.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md index 304d39bc05..6f9f51d250 100644 --- a/i18n/fi-FI/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.1.1.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -44,7 +38,7 @@ _This is not necessary if you are using an H2 database._ ### Prepare for convert -To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console.\ +To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console. If a player is in the server, the conversion cannot be started. Once the conversion has begun, the server will be locked during the conversion process and no players will be able to join the server during the conversion. diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/addon/shopitemonly.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/addon/shopitemonly.md index c45062f8c2..1ccfe977b3 100644 --- a/i18n/fi-FI/docusaurus-plugin-content-docs/current/addon/shopitemonly.md +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/addon/shopitemonly.md @@ -2,17 +2,11 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT - -::: - -This addon prevents players from putting non-store items into store containers.\ +This addon prevents players from putting non-store items into store containers. Does not apply to stores that use the item inventory redirection API (aka. InventoryWrapper API). This Addon will check for container (or transferring) items on events such as the player closing the container or hopper access. diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md new file mode 100644 index 0000000000..9c8b4f7407 --- /dev/null +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md @@ -0,0 +1,55 @@ +# 6.2.0.10 + +## Major Changes + +- Added support for 1.21.6 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.7 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.8 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Some internal updates for packetevents(2.9.0 is now required.) +- Updated Lands support + +## Addon Changes + +- Added MatcherPlus Addon + - Allows support for BreweryX and AdvancedItems stacks in shops with improved matching abilities +- Added FabledSkyblock Compat +- Added Dominion Compat +- Added HuskTowns Compat +- Added IridiumSkyblock Compat +- Added member-create for member creation in ARM compat +- Added admin-override and quickshop.arm.admin permission for admin overrides in ARM + +## Minor Changes + +- Added configurations for the coordinates of the display item. +- Added /qs toggledisplayall on/off server/owned + - Players need to have permission node quickshop.toggledisplayall.admin to toggle all on the server. +- Added ability to use abbreviations in /qs price and /qs create commands such as 2.5k for 2500 +- Added ability to set default display status using shop.default-display in config.yml + +## Fixes + +- Fixed issue with display item being sent to the moon on 1.21.5 +- Fixed issue where TRADE_UI interactions interfered with quick create. +- Fixed issue with displays on protocollib falling through the chest +- Fixed issue with signs on .9 and previous .10 snapshots on early versions +- Implemented some performance improvements for paper servers +- Fixed all outstanding issues with Folia usage.(thanks to RootB33R/SleazLee for contributions) + +## Possible 6.2.0.11 Features + +Here's an outline for some features that may arrive in 6.2.0.11: + +- Additional compats/addons that have been piling up. + - see: https://github.com/QuickShop-Community/QuickShop-Hikari/issues/1756 +- gradle?(interested to see compilation time uplifts) +- Update documentation +- Update configuration comments +- Update configuration system? + - auto updating? + - Allows removal of the update code +- Remove waste spigot modules? + - Any versions of 1.20 that can be discarded due to low use? +- Bug fixing, of course +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... \ No newline at end of file diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md new file mode 100644 index 0000000000..b41c88662a --- /dev/null +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md @@ -0,0 +1,173 @@ +## Outline + +- Update documentation +- Update configuration comments +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... + +# 6.2.0.11 + +## Major Changes + +- Removed Spigot Platform Modules, and stopped loading QS if Spigot is detected. This will mean that unless the protocol changes that we use for display items, QS won't need updated for each version. +- Revamped Economy Code Completely + - New classes for all economy-related systems + - Any economy-related or benefits-related events are incompatible with previous versions. +- Added sign layout customizations per-type allowing you to change how lines are configured, an empty string('') will leave an empty line for that line of the sign. + +``` + #The layout of signs for shops. + layout: + + #The layout of BUYING shops. + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of FROZEN shops. + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of SELLING shops. + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +- Add wildcard support for item blacklist patterns(thanks to bennycallanan) + - Added support for wildcard patterns in the item blacklist configuration, allowing users to block entire categories of items with simple patterns. + + - Features + - Wildcard patterns like \*_AXE and \*_SPAWN_EGG now work in blacklist configuration + - Supports \* for any characters and ? for single character matching + - Case-insensitive pattern matching +- Overhauled GUI system(thanks to Yusakidev) + - Implemented gui.yml configuration file for customizing the GUI. + - Implemented better filtering for qs browse + - Implement GUI system to be more stable, and less error prone. + - Added gui.yml for fully configurable GUI layouts and text + - Browse menu: search, sort (price/name/stock), and filter (all/buying/selling/in-stock) + - Staff menu: search functionality for player/staff selection + - Grouped item pages for better shop browsing + - Refactored all menu pages to use configurable display/lore +- Added worldedit compat to QS internally as it's widely used. +- Revamped the taxation system to be more flexible and easier to configure. + - introduced a new progressive tax system that allows you to tax based on the balance of players.(suggested by YuanYuanOwO) + - introduced the ability to tax the player interacting with the shop, the owner, or both + - all tax-related configurations have been moved under the shop-tax section of the config. this may require reconfiguration of your tax settings. + - added a new ShopEnhancedTaxEvent, deprecated the old ShopTaxEvent. + - Added a new TaxManager, and TaxProvider interfaces, this allows for custom tax providers to be added by addons/third-party developers. + +## Addons/Compats Changes + +- Added UltimateClaims compat +- Added SimpleClaimSystem compat +- Added Quests by Pika addon +- Added BetonQuest addon +- Added Pl3xMap addon +- MatcherPlus Compat Improvements + - Added support for CrazyCrates + - Added support for ExcellentCrates + - Added support for SilkSpawners. +- WorldGuard Compat Improvements(Thanks to golovin12) + - Added clear permission handling: + - Region owners and members automatically have permission to create and trade in their own regions. + - Other players must have the appropriate WorldGuard flags enabled (quickshophikari-create, quickshophikari-trade) to interact with shops. + - If a shop is located outside any region, default QuickShop behavior applies (no extra restrictions) +- Added colored markers based on shop state for bluemap(thanks to YusakiDev) +- Updated dynmap/towny addons to use the new ShopTypeEnhancedEvent instead of ShopTypeEvent. +- Removed worldedit compat, it's now included in the main plugin. +- Added support for global flags to the worldguard compat. + +## Internals/Developer APIs + +- Removed several deprecated methods and classes. +- Revamped the interaction manager. It is now more flexible and allows external additions + - This involves two classes InteractionBehavior and InteractionType. + - InteractionType details the type of interaction such as: STANDING_LEFT_CLICK_SIGN, STANDING_LEFT_CLICK_SHOP + - InteractionBehavior outlines a behavior for an InteractionType such as CONTROL_PANEL and TRADE_UI +- Added UserLimitCalculationEvent, which allows for custom limits to be applied to users. + - This is useful for limiting the number of shops a user can have, or adding on to the existing limits provided by the ranks system without needing to implement a new RankLimiter. +- Added a new ShopLayoutProvider interface, and default implementation. + - This allows for custom layouts to be used for shops, allowing for more customization. + - This also allows for developers to override the default layout provider and create their own implementation. +- How to make your own? + - Implement the classes you would like to then register with the InteractionManager: + - ```java + InteractionManager manager = QuickShop.getInstance().getInteractionManager(); + + manager.interaction(new MyTradeInteraction()); + manager.behavior(new MyTradeBehavior()); + ``` +- Replaced some Apache Commons calls that could be easily replaced with built-in java methods, reduces some calls by ~ 1100ms/method call +- Deprecated the ShopType enum, and the ShopTypeEvent. These are replaced with the new IShopType interface and implementing classes. + - The new event is ShopTypeEnhancedEvent. + - This allows for third-party addons to add their own shop types, and simplifies code checks for translations. +- Updated config system to use Boosted-yaml + - this allows for auto-updating of config files without complex update scripts + - this also allows for the config system to not be minecraft-dependent. +- Replaced logical PaperLib calls with native PaperAPI calls. + +## Minor Changes + +- Bump Java version up to 21 +- Added shop.display-allow-enchants to enable/disable enchantments for display items on shops. +- Added workaround for packetevents not supporting custom enchants on itemstacks for virtual display items. +- Using locale translations for shop-type in mode toggle icon(thanks to ExyiN) +- Bumped Residence version for the compat(thanks to YuanYuanOwO) +- add world whitelist support(thanks to wling-art) +- added /qs database save command, which saves all currently dirty-marked shops to the database. +- Split up interactions _SHOPBLOCK into _SHOPBLOCK and _CONTAINER. + - _SHOPBLOCK relates to shops, where _CONTAINER relates to shop-valid containers that are not currently shops. +- Added inventory as an option for command panel, this is useful for adding a secondary option for players to open a shop's inventory. +- Moved crowdin arguments from system properties to config.yml + - crowdin-host + - use-crowdin-ota + +## Fixes + +- Fixes issue with item price restrictions(thanks to maxcom1) +- Fixes issue with 1.20.x protocol lib displays(thanks to YuanYuanOwO) +- Fixes issue when no item is in hand for itemdebug(thanks to YuanYuanOwO) +- Fixes issue with dominion addon(thanks to YuanYuanOwO) +- Add a simple check to avoid this. If it is not own shop, reject limit request directly.(Thanks to YuanYuanOwO) +- Fix NPE by not setting tax for price in TransactionBuilder(thanks to maxcom1) +- Fixes /quickshop suggestprice to differentiate between buy/sell shops. (Thanks to MidSpike) +- PacketEvents ClassNotFoundException with ProtocolLib(thanks to wling-art) +- Reallocate block state access to region thread for shop creation(thanks to r00tbeerman) +- resolve SLF4J StaticLoggerBinder loading error(thanks to wling-art) +- sign hijacking issue by validating sign facing direction(thanks to wling-art) +- Performance improvements for QuickShop disabling to prevent potential freezes. +- Fixed issue with 1.20.4 packetevents virtual displays not staying put. +- Fixes critical issue in GriefPrevention compatibility plugin. +- Fixes issue with shop owner not getting money when benefits active. +- Fixes for lands addon on folia, Use regionThread for Folia compatibility(thanks to YusakiDev) +- Fixes for TRADE_DIRECT on stacking shops +- Fixes issue for protocollib 5.4.0 with undocumented packet changes. +- Fixes issue where item stacks could be used on creation above the max stack size. +- Fixes issue with BukkitAudiences-related crashes on 1.21.11. +- Fix issue with shop deletion when getting too impatient. +- Fix the permission check issue when a shop owned by a non-owner is transferred to someone else. (thanks to YuanYuanOwO) +- Fix ui with supertool (thanks to YuanYuanOwO) +- Fix issue with logs generating outside debug mode. +- Fix issue with /qs find. +- Fix configuration loading timing. +- Fix configuration loading/creation warning message language. +- Fix command description language key mismatch(thanks to wling-art) +- Fix qs clean command on folia(thanks to wling-art) +- Fix per-player-shop-sign on folia(thanks to wling-art) +- Fix potential recursive deadlock in virtual display packet sending(thanks to wling-art) +- Fix configuration loading/creation warning message language. +- Fix issue with /qs browse and ShopItemOnly addon not behaving properly together on folia. +- Fix issue with PLAN using outdated APIs. +- Fix issue with /qs clean on folia.(thanks to wling-art) +- Fix issue with /qs cleanghost on folia(thanks to wling-art) +- More thread safety fixes for shops on folia.(thanks to wling-art) +- Fix owner payment calculations with benefits(thanks to wling-art) \ No newline at end of file diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md index 8172f9b410..dcc3edc67d 100644 --- a/i18n/fi-FI/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md @@ -20,20 +20,20 @@ the ControlComponent object with a custom one that will replace the original dur ### Introduction of the Revamped Packet System 1. **About**: - - A modular and scalable system for managing packets related to virtual display items in Minecraft. - - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. + - A modular and scalable system for managing packets related to virtual display items in Minecraft. + - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. 2. **Custom Packet Factories**: - - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. - - Packet types: - - **Spawn Packet**: Spawns a virtual item entity at a specific location. - - **Metadata Packet**: Updates the visual properties of virtual items. - - **Velocity Packet**: Adds motion/velocity to entities (currently optional). - - **Destroy Packet**: Removes the entity from the client view. + - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. + - Packet types: + - **Spawn Packet**: Spawns a virtual item entity at a specific location. + - **Metadata Packet**: Updates the visual properties of virtual items. + - **Velocity Packet**: Adds motion/velocity to entities (currently optional). + - **Destroy Packet**: Removes the entity from the client view. 3. **Error Handling and Logging**: - - Enhanced debug logs to trace packet-related issues. - - Detailed error messages for missing factories or unregistered listeners. + - Enhanced debug logs to trace packet-related issues. + - Detailed error messages for missing factories or unregistered listeners. #### Improvements: diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md index 7775308722..c6e0948d19 100644 --- a/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md index f420997a9c..38587e3784 100644 --- a/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md index 5ed8182c9a..259c55f342 100644 --- a/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md index 924a37ac49..7fd4596a6a 100644 --- a/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,6 +10,6 @@ This is a BungeeCord plugin, you need install it within your BungeeCord's plugin ## How does it work? -BungeeCord Bridge plugins will register a `quickshop:bungee` channel for fowarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. +BungeeCord Bridge plugins will register a `quickshop:bungee` channel for forwarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. All forwarding is indicated by QuickShop-Hikari on the Spigot server and ends when it is not needed. diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md index 27d68956a8..20fbaf7a0c 100644 --- a/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,5 +10,5 @@ This compatibility module added [Chest Protect](https://www.spigotmc.org/resourc ## How does it work? -This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident.\ +This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident. It also prevents players from creating shops on ChestProtect protected containers. diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md index 220e26d8bb..e1757e7be9 100644 --- a/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/dominion.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/dominion.md new file mode 100644 index 0000000000..e1195278a8 --- /dev/null +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/dominion.md @@ -0,0 +1,138 @@ +# Dominion + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and Dominion. + +It ensures that shop creation and trading respect Dominion’s land and territory protection system. + +--- + +## What Does It Do? + +Dominion allows players or groups to claim land and define territory-based permissions. + +Without compatibility: + +- Players could create shops inside territories they do not control. +- Visitors might trade inside protected dominions. +- Dominion permission rules might not apply to shop interactions. + +The Dominion compat module ensures that: + +- Shop creation respects territory ownership. +- Shop trading follows Dominion permission settings. +- Protected land remains secure from unauthorized shop usage. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a Dominion-controlled area. +- Whether the player has permission within that territory. +- Whether Dominion rules allow shop interaction. + +If the action is not permitted by Dominion settings, QuickShop blocks it. + +If the location is outside any Dominion territory, default QuickShop behavior applies. + +--- + +## Territory Owner Control + +With this module enabled: + +- Territory owners can create and manage shops inside their dominion. +- Trusted members follow territory-based permissions. +- Outsiders are restricted unless explicitly allowed. +- Shop actions respect Dominion’s land rules automatically. + +This prevents unauthorized shop placement inside protected territories. + +--- + +## Installation + +1. Install Dominion. +2. Install the QuickShop Dominion compat module. +3. Restart your server. + +The module activates automatically if Dominion is detected. + +No manual configuration linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside dominions +whitelist-mode: false + +# Allow territory owners to override shop permissions +allow-owner-override: true +``` + +If Dominion is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For servers using Dominion: + +- Restrict shop creation to territory owners or trusted members. +- Prevent shop creation in wilderness if desired. +- Allow dominion owners to manage shop permissions. +- Review Dominion permission settings to align with shop behavior. + +This ensures protected territories remain secure and organized. + +--- + +## Common Questions + +### Can players create shops in someone else's dominion? + +Only if Dominion permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You may allow or restrict shops outside dominions. + +### What happens if Dominion is removed? + +QuickShop returns to normal behavior and stops checking Dominion territories. + +--- + +## Summary + +The Dominion compat module: + +- Enforces territory-based permissions +- Prevents unauthorized shop creation +- Protects claimed land from misuse +- Integrates seamlessly with Dominion + +It is recommended for servers running Dominion. \ No newline at end of file diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md index 743d3ae666..2ac9b10488 100644 --- a/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md new file mode 100644 index 0000000000..07ba4ada66 --- /dev/null +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md @@ -0,0 +1,133 @@ +# FabledSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and FabledSkyblock. + +It ensures that shop creation and trading properly respect island boundaries and island permissions. + +--- + +## What Does It Do? + +On Skyblock servers, players build and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Players might trade in areas they should not. +- Island protection rules might not apply to shops. + +The FabledSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members behave correctly with shops. +- Island visitors are restricted appropriately. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a FabledSkyblock island. +- Whether the player has permission on that island. +- Whether island settings allow the action. + +If the action is not permitted by island rules, QuickShop will deny it. + +--- + +## Island Ownership Rules + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow island permission settings. +- Visitors can only trade if island permissions allow it. +- Outside of islands, default QuickShop behavior applies. + +--- + +## Installation + +1. Install FabledSkyblock. +2. Install the QuickShop FabledSkyblock compat module. +3. Restart your server. + +The module activates automatically if FabledSkyblock is detected. + +No manual linking is required. + +--- + +## Configuration + +If the module provides configuration options, they will appear in its `config.yml`. + +Typical options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If FabledSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most Skyblock servers: + +- Allow shop creation only inside islands. +- Prevent trading in the void or wilderness. +- Let island owners control shop permissions. +- Use island rank systems to manage shop access. + +This helps maintain economic balance between islands. + +--- + +## Common Questions + +### Can players create shops in the void? + +Only if your configuration allows it. +Most servers disable shop creation outside islands. + +### Does this affect island war or PvP modes? + +No. +The module only checks island ownership and permissions for shop interactions. + +### What happens if FabledSkyblock is removed? + +QuickShop returns to normal behavior. + +--- + +## Summary + +The FabledSkyblock compat module: + +- Protects island economies +- Enforces island permission rules +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is strongly recommended for any server running FabledSkyblock. \ No newline at end of file diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md index 81b13d2c6b..32614d3019 100644 --- a/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md @@ -2,17 +2,17 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -GreifPrevention compatibility module added compaitibility with GF. +GreifPrevention compatibility module added compatibility with GF. ## How does it work This module allow QuickShop-Hikari check if player have permission to create or use QuickShop in specific region. -And delete shops when claim removed, untrusted, unclimed, expired, resized or subclaim created. +And delete shops when claim removed, untrusted, unclaimed, expired, resized or subclaim created. ## Configuration diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md new file mode 100644 index 0000000000..e71b34d462 --- /dev/null +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md @@ -0,0 +1,139 @@ +# HuskTowns + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and HuskTowns. + +It ensures that shop creation and trading respect town and claim permissions defined by HuskTowns. + +--- + +## What Does It Do? + +HuskTowns allows players to create towns and claim land. + +Without compatibility: + +- Players could create shops inside towns they do not belong to. +- Visitors might trade inside protected towns. +- Town permission rules might not apply to shop interactions. + +The HuskTowns compat module ensures that: + +- Shop creation respects town ownership. +- Trading follows town permission settings. +- Town members and visitors are handled correctly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a HuskTowns claim. +- Whether the player is a town member, trusted player, or outsider. +- Whether the town's permission settings allow the action. + +If the action is not permitted by town rules, QuickShop blocks it. + +Outside of town claims, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Town Owner Control + +With this module enabled: + +- Town owners can create and manage shops inside their town. +- Town members follow town-based permission settings. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect town claim protection. + +This prevents unauthorized shop placement and trading inside protected towns. + +--- + +## Installation + +1. Install HuskTowns. +2. Install the QuickShop HuskTowns compat module. +3. Restart your server. + +The module activates automatically if HuskTowns is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside towns +whitelist-mode: false + +# Allow town owners to override shop permissions +allow-owner-override: true +``` + +If HuskTowns is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For town-based survival servers: + +- Restrict shop creation to town members. +- Allow trading only where town permissions permit. +- Prevent shop creation in wilderness if desired. +- Enable owner override for better administrative control. + +This helps maintain town-based economic balance. + +--- + +## Common Questions + +### Can players create shops in another town? + +Only if that town's permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You can allow or restrict shops outside towns. + +### What happens if HuskTowns is removed? + +QuickShop returns to normal behavior and stops checking town permissions. + +--- + +## Summary + +The HuskTowns compat module: + +- Enforces town-based land permissions +- Protects towns from unauthorized shop usage +- Integrates smoothly with HuskTowns +- Requires minimal setup + +It is recommended for any server running HuskTowns. \ No newline at end of file diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md new file mode 100644 index 0000000000..3fa2995eb0 --- /dev/null +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md @@ -0,0 +1,139 @@ +# IridiumSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and IridiumSkyblock. + +It ensures that shop creation and trading respect island boundaries and island permission settings defined by IridiumSkyblock. + +--- + +## What Does It Do? + +IridiumSkyblock allows players to create and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Visitors might trade inside protected islands. +- Island protection rules might not apply correctly to shops. + +The IridiumSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members and visitors are handled properly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside an IridiumSkyblock island. +- Whether the player is the island owner, member, or visitor. +- Whether island permissions allow shop interaction. + +If the action is not permitted, QuickShop blocks it. + +Outside of islands, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Island Owner Permissions + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow the island's permission configuration. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect island protection rules. + +This prevents unauthorized shop usage inside protected islands. + +--- + +## Installation + +1. Install IridiumSkyblock. +2. Install the QuickShop IridiumSkyblock compat module. +3. Restart your server. + +The module activates automatically if IridiumSkyblock is detected. + +No additional setup is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If IridiumSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most IridiumSkyblock servers: + +- Restrict shop creation to island owners. +- Allow island members to trade if trusted. +- Prevent shop creation in the void or wilderness. +- Enable owner override for better management. + +This helps maintain balanced island economies. + +--- + +## Common Questions + +### Can players create shops outside their island? + +Only if your configuration allows it. + +Most Skyblock servers restrict shops to island areas. + +### Do island ranks affect shop permissions? + +Yes, if your island permissions are configured to control interaction rights. + +QuickShop follows island rules. + +### What happens if IridiumSkyblock is removed? + +QuickShop returns to normal behavior and stops checking island permissions. + +--- + +## Summary + +The IridiumSkyblock compat module: + +- Protects island economies +- Enforces island-based permissions +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is recommended for any server running IridiumSkyblock. diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md new file mode 100644 index 0000000000..3b4726cb9d --- /dev/null +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md @@ -0,0 +1,151 @@ +# ItemMatcherPlus + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +The ItemMatcherPlus module improves how QuickShop matches custom and plugin-modified items. + +It allows QuickShop to properly recognize and stack items created by other plugins that normally would not match using standard Bukkit item comparisons. + +This module is especially useful for servers that use: + +- Custom items +- Modified metadata +- NBT-based systems +- Advanced crate rewards +- Custom brewing systems +- Custom fishing rewards + +--- + +## What Does It Do? + +By default, Minecraft item matching checks: + +- Material type +- Basic metadata + +However, many plugins modify items with: + +- Custom NBT data +- Hidden tags +- Custom lore formats +- Unique identifiers + +Without enhanced matching: + +- Items may not stack +- Shops may refuse valid items +- Transactions may fail +- Buying/selling may not behave correctly + +ItemMatcherPlus improves compatibility and matching accuracy. + +--- + +## Supported Plugins + +ItemMatcherPlus includes built-in support for: + +- AdvancedItems +- BreweryX +- CrazyCrates +- ExcellentCrates +- PyroFishing +- SilkSpawners + +If any of these plugins are installed, QuickShop will automatically use enhanced matching logic. + +No additional configuration is required. + +--- + +## How It Works + +When a player trades with a shop: + +1. QuickShop checks the item. +2. If ItemMatcherPlus is enabled, it performs advanced matching. +3. Plugin-specific metadata is validated. +4. The item is confirmed as a match (or rejected safely). + +This allows: + +- Proper stacking of custom items +- Correct shop transactions +- Accurate buy/sell detection +- Reduced false mismatches + +--- + +## Installation + +1. Download the ItemMatcherPlus module. +2. Place the JAR into your `plugins` folder. +3. Restart your server. + +If supported plugins are detected, compatibility activates automatically. + +--- + +## Configuration + +ItemMatcherPlus does not require configuration. + +It activates automatically when: + +- The module is installed +- A supported plugin is detected + +If a supported plugin is not installed, no extra logic runs. + +--- + +## Why You Should Use It + +You should install ItemMatcherPlus if your server uses: + +- Custom fishing plugins +- Custom brewing systems +- Crate plugins with modified items +- Custom spawners +- Any plugin that modifies NBT data + +Without it, shops may not properly recognize custom items. + +--- + +## Common Questions + +### Do I need this if I don't use custom item plugins? + +No. +If you only use vanilla items, this module is not necessary. + +### Does this affect performance? + +The module only activates enhanced matching when needed. + +Normal item matching remains fast and efficient. + +### Will it break existing shops? + +No. +It improves compatibility and matching accuracy without modifying existing shop data. + +--- + +## Summary + +ItemMatcherPlus: + +- Improves item matching accuracy +- Adds support for major custom item plugins +- Prevents stacking and trade issues +- Requires no configuration +- Activates automatically + +If you run a heavily customized economy server, this module is highly recommended. \ No newline at end of file diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md index ba87606698..d4ae7d129a 100644 --- a/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/lands.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/lands.md index 06296f5779..7671fcdfe0 100644 --- a/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/lands.md +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/lands.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/openinv.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/openinv.md index c51f628615..4807d57873 100644 --- a/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/openinv.md +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/openinv.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md new file mode 100644 index 0000000000..c2136320b0 --- /dev/null +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md @@ -0,0 +1,138 @@ +# SimpleClaimSystem + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and SimpleClaimSystem. + +It ensures that shop creation and trading respect land ownership and claim permissions defined by SimpleClaimSystem. + +--- + +## What Does It Do? + +SimpleClaimSystem allows players to claim land and protect it from unauthorized interaction. + +Without compatibility: + +- Players could create shops inside claims they do not own. +- Visitors might trade inside protected areas. +- Claim protection might not apply correctly to shops. + +The SimpleClaimSystem compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops within their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a SimpleClaimSystem claim. +- Whether the player has permission within that claim. +- Whether claim rules allow shop interaction. + +If the action is not permitted by the claim, QuickShop blocks it. + +If the location is outside any claim, default QuickShop behavior applies. + +--- + +## Claim Owner Control + +With this module enabled: + +- Claim owners can create and manage shops inside their claim. +- Trusted players follow claim-based permissions. +- Visitors are restricted unless explicitly allowed. +- Claim protection rules apply automatically to shop interactions. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install SimpleClaimSystem. +2. Install the QuickShop SimpleClaimSystem compat module. +3. Restart your server. + +The module activates automatically if SimpleClaimSystem is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If SimpleClaimSystem is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Enable owner override for easier management. + +This ensures players maintain control over their protected land. + +--- + +## Common Questions + +### Can players create shops in someone else's claim? + +Only if claim permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can allow shops outside claims or restrict them. + +### What happens if SimpleClaimSystem is removed? + +QuickShop will revert to default behavior and stop checking claim permissions. + +--- + +## Summary + +The SimpleClaimSystem compat module: + +- Enforces claim-based permissions +- Prevents unauthorized shop creation +- Protects land from unwanted trading +- Requires minimal setup + +It is recommended for servers running SimpleClaimSystem. \ No newline at end of file diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md index a84dbf057b..4dfa8ae97c 100644 --- a/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/towny.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/towny.md index 52ab4818f4..b26c19d335 100644 --- a/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/towny.md +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/towny.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -26,7 +26,7 @@ Town sub-command allow you switch a quickshop between regular shop and town shop For a nation shop, the shop owner will changed to nation fake player created by Towny, and use Nation's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from nation Towny account.\ +All purchases will deposit or withdraw money from nation Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Nation Shop. @@ -35,7 +35,7 @@ If Plot type restriction is enabled, only a specific Plot type can create a Nati For a town shop, the shop owner will changed to town fake player created by Towny, and use Town's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from town Towny account.\ +All purchases will deposit or withdraw money from town Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Town Shop. @@ -88,7 +88,7 @@ bank-mode: ## Permission Override -By adjust configuration, you're allow mayor or king automaticlly grant administrator permission on all shops in their management range. +By adjust configuration, you're allow mayor or king automatically grant administrator permission on all shops in their management range. ```yaml #Should allow Mayor grant the shop administrator permission on they town. @@ -168,7 +168,7 @@ This causes Towny and QuickShop Hikari to use accounts with the same name but di You can adjust the option in configuration to enable workaround. -NOTE: It will force turned on if detected EssentialsX installed on your server.\ +NOTE: It will force turned on if detected EssentialsX installed on your server. At present, we do not provide a method for disable it. ```yaml diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md new file mode 100644 index 0000000000..0189958495 --- /dev/null +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md @@ -0,0 +1,138 @@ +# UltimateClaims + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and UltimateClaims. + +It ensures that shop creation and trading respect land claim permissions managed by UltimateClaims. + +--- + +## What Does It Do? + +On servers using land-claim plugins, players protect areas of the world from unauthorized interaction. + +Without compatibility: + +- Players may create shops inside claims they do not own. +- Visitors might trade in areas where they should not. +- Claim protection rules might not apply correctly to shops. + +The UltimateClaims compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops inside their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a claim. +- Whether the player has permission in that claim. +- Whether claim rules allow shop interaction. + +If the action violates claim settings, QuickShop blocks it. + +Outside of claims, normal QuickShop behavior applies. + +--- + +## Claim Owner Permissions + +With this module enabled: + +- Claim owners can create and manage shops within their claim. +- Trusted players follow claim permission settings. +- Visitors are restricted based on claim configuration. +- Shop actions outside of claims behave normally. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install UltimateClaims. +2. Install the QuickShop UltimateClaims compat module. +3. Restart your server. + +If UltimateClaims is detected on startup, compatibility activates automatically. + +No additional linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Common options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If UltimateClaims is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Keep owner override enabled for better control. + +This ensures players maintain full control over their protected land. + +--- + +## Common Questions + +### Can players create shops inside someone else's claim? + +Only if the claim permissions allow it. + +Otherwise, QuickShop will block the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can choose to restrict shops to claimed land only. + +### What happens if UltimateClaims is removed? + +QuickShop returns to normal behavior without claim checks. + +--- + +## Summary + +The UltimateClaims compat module: + +- Protects claimed land from unauthorized shop usage +- Enforces claim-based permissions +- Integrates smoothly with land-claim servers +- Requires minimal setup + +It is recommended for any server running UltimateClaims. \ No newline at end of file diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md index 87a71a205c..6437754503 100644 --- a/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md @@ -2,8 +2,10 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. Find out more [here](../modules/shops/worldedit.md). + +Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. \ No newline at end of file diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/development/01-getting-start.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/development/01-getting-start.md index 92b773451e..0e78e52367 100644 --- a/i18n/fi-FI/docusaurus-plugin-content-docs/current/development/01-getting-start.md +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/development/01-getting-start.md @@ -6,8 +6,8 @@ This series of articles will help you build extensions for QuickShop-Hikari or i ## License -QuickShop-Hikari is open source using the [GPLv3](https://www.gnu.org/licenses/quick-guide-gplv3.en.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari).\ -You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the GPLv3 agreement. +QuickShop-Hikari is open source using the [AGPLv3](https://www.gnu.org/licenses/agpl-3.0.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari). +You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the AGPLv3 agreement. ## 🚧Don't trust Javadoc too much @@ -48,7 +48,7 @@ QuickShop-Hikari divides operation sources into three types: - Server Main Thread - Async Thread (any other threads but not server main thread) -- Hybird +- Hybrid If you access the API through the wrong thread, QuickShop-Hikari will force a runtime error to be thrown. @@ -58,4 +58,4 @@ For APIs that may trigger network IO or long-time disk IO, you are required not You can see [Util.ensureThread()](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/3d1d271e1106ea1c83cc6068f8232ab7c7860918/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/util/Util.java#L351) and find out the requirements of the different APIs by looking up their use. APIs that do not use Util.ensureThread() are allowed to be called from any thread by default. -You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. +You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. \ No newline at end of file diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md index aa2404c594..7828d414ad 100644 --- a/i18n/fi-FI/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md @@ -10,7 +10,7 @@ ShopManager manager = api.getShopManager(); ## Getting a shop -Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates.\ +Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates. QuickShop-Hikari's store is only bound to one half of "Large Chest", so to get the store, you need to query both the cube itself and its associated cube. The good thing is that there is an API in the plugin that allows you to handle this situation very easily. @@ -71,7 +71,7 @@ manager.deleteShop(shop) // Permanently delete this store, both memory and datab ## Identify a store -Please note that store locations are technically variable and you should not use coordinates to identify a store.\ +Please note that store locations are technically variable and you should not use coordinates to identify a store. Also RuntimeRandomUniqueId should not be used to identify the store, as the name suggests, the value changes every time the server restarts, it should only be used to handle scenarios where the player interacts with the server. ```java diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md index 543f1851da..4f839ed652 100644 --- a/i18n/fi-FI/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md @@ -1,6 +1,6 @@ # 0x05 Per shop permission -QuickShop-Hikari has a per shop permission management system.\ +QuickShop-Hikari has a per shop permission management system. Therefore, for a normal permission node check is not enough, you need to attach an additional check. ## Check with shop diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/development/06-protocol-system.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/development/06-protocol-system.md index 5d37a15536..0380b789f9 100644 --- a/i18n/fi-FI/docusaurus-plugin-content-docs/current/development/06-protocol-system.md +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/development/06-protocol-system.md @@ -15,30 +15,30 @@ This documentation will guide developers through the components, implementation - **Purpose**: Manages packet handling and initialization logic. - **Interface**: `PacketHandler` - **Key Methods**: - - `Map> factories()` - - Retrieves a map of supported `PacketFactory` instances keyed by game versions. - - `void initialize()` - - Initializes the packet handler. - - `Optional> factory(String version)` - - Retrieves a `PacketFactory` for a specific game version. + - `Map> factories()` + - Retrieves a map of supported `PacketFactory` instances keyed by game versions. + - `void initialize()` + - Initializes the packet handler. + - `Optional> factory(String version)` + - Retrieves a `PacketFactory` for a specific game version. ### 2. **PacketFactory** - **Purpose**: Creates and sends specific packet types. - **Interface**: `PacketFactory` - **Supported Packets**: - - **Spawn Packet**: - - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. - - Example Use: Representing shop items visually. - - **Metadata Packet**: - - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. - - Example Use: Updating item display name or properties. - - **Velocity Packet**: - - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. - - Example Use: Custom animations for virtual items. - - **Destroy Packet**: - - Removes the entity from the client view. Created using `createDestroyPacket()`. - - Example Use: Unloading or removing a virtual display item. + - **Spawn Packet**: + - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. + - Example Use: Representing shop items visually. + - **Metadata Packet**: + - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. + - Example Use: Updating item display name or properties. + - **Velocity Packet**: + - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. + - Example Use: Custom animations for virtual items. + - **Destroy Packet**: + - Removes the entity from the client view. Created using `createDestroyPacket()`. + - Example Use: Unloading or removing a virtual display item. Developers implementing custom `PacketFactory` should ensure these packets are correctly handled and optimized for performance. @@ -46,24 +46,24 @@ Developers implementing custom `PacketFactory` should ensure these packets are c - **Purpose**: Oversees the lifecycle of virtual display items and integrates with packet handlers. - **Key Features**: - - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). - - Manages virtual display items mapped to chunks. - - Provides thread-safe operations for adding and removing display items. + - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). + - Manages virtual display items mapped to chunks. + - Provides thread-safe operations for adding and removing display items. ### 4. **VirtualDisplayItem** - **Purpose**: Represents a virtual item displayed to players. - **Key Features**: - - Generates and caches packets for spawning, metadata, velocity, and destruction. - - Manages packet senders for each player. - - Handles spawn and removal operations dynamically. + - Generates and caches packets for spawning, metadata, velocity, and destruction. + - Manages packet senders for each player. + - Handles spawn and removal operations dynamically. ### 5. **ProtocolLibHandler and PacketEventsHandler** - **Purpose**: Provide implementations of `PacketHandler` using ProtocolLib and PacketEvents, respectively. - **Differences**: - - `ProtocolLibHandler` leverages ProtocolLib API. - - `PacketEventsHandler` uses the PacketEvents library. + - `ProtocolLibHandler` leverages ProtocolLib API. + - `PacketEventsHandler` uses the PacketEvents library. --- @@ -140,11 +140,11 @@ public class CustomPacketFactory implements PacketFactory { Packet factories are provided for specific game versions through two primary implementations: - **ProtocolLib**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` - **PacketEvents**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` --- diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md new file mode 100644 index 0000000000..aebc035f87 --- /dev/null +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md @@ -0,0 +1,297 @@ +# Interaction System (Developer Guide) + +The Interaction System allows developers to fully customize how players interact with shops. + +As of 6.2.0.11, the system has been redesigned to be: + +- Modular +- Extensible +- Thread-safe +- Fully customizable by third-party addons + +This guide will walk you through: + +1. What the Interaction System is +2. Getting the `InteractionManager` +3. Understanding `InteractionType` +4. Understanding `InteractionBehavior` +5. Registering custom interactions +6. Best practices + +--- + +# Overview + +The Interaction System is composed of three main components: + +| Component | Purpose | +| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| `InteractionType` | Describes **what kind of click happened** (standing, sneaking, left-click, sign, shopblock, etc.) | +| `InteractionBehavior` | Describes **what action should happen** when that type is triggered | +| `InteractionManager` | Central registry that manages interactions and behaviors | + +This separation allows developers to: + +- Add new click types +- Add new behaviors +- Override existing ones +- Extend QuickShop without modifying core code + +--- + +# Getting the InteractionManager + +To begin registering custom interactions, you must retrieve the `InteractionManager` instance. + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +If you are working directly with the plugin instance: + +```java +InteractionManager manager = QuickShop.getInstance().getInteractionManager(); +``` + +Once obtained, you can: + +- Register new interaction types +- Register new behaviors +- Override existing behaviors + +--- + +# Understanding InteractionType + +`InteractionType` represents **how** a player interacted with a shop. + +Examples include: + +- `STANDING_LEFT_CLICK_SIGN` +- `STANDING_RIGHT_CLICK_SHOPBLOCK` +- `SNEAKING_LEFT_CLICK_CONTAINER` +- etc. + +Each `InteractionType` defines: + +- Player stance (standing/sneaking) +- Click type (left/right) +- Target (sign/shopblock/container) + +InteractionTypes do NOT define behavior — they only define the trigger. + +--- + +# Understanding InteractionBehavior + +`InteractionBehavior` defines **what happens** when an interaction is triggered. + +Examples of built-in behaviors: + +- `TRADE_INTERACTION` +- `TRADE_UI` +- `CONTROL_PANEL` +- `CONTROL_PANEL_UI` +- `NONE` + +A behavior: + +- Executes logic +- May open GUIs +- May send chat panels +- May directly trade items +- Can cancel or modify flow + +This separation makes it easy to reuse behaviors across multiple interaction types. + +--- + +# Registering Custom Interactions + +There are two things you can register: + +- A custom `InteractionType` +- A custom `InteractionBehavior` + +--- + +## Creating a Custom InteractionBehavior + +Create a class implementing `InteractionBehavior`. + +Example: + +```java +public class MyTradeBehavior implements InteractionBehavior { + + @Override + public String getKey() { + return "MY_CUSTOM_TRADE"; + } + + @Override + public void execute(InteractionClick click) { + Player player = click.getPlayer(); + Shop shop = click.getShop(); + + player.sendMessage("You triggered my custom interaction!"); + + // Add your custom logic here + } +} +``` + +Then register it: + +```java +InteractionManager manager = api.getInteractionManager(); +manager.behavior(new MyTradeBehavior()); +``` + +Now your behavior is available for use. + +--- + +## Creating a Custom InteractionType + +You may also register custom interaction types if you want to introduce new trigger definitions. + +Example: + +```java +public class MyCustomInteraction implements InteractionType { + + @Override + public String getKey() { + return "STANDING_DOUBLE_CLICK_SIGN"; + } + + @Override + public boolean matches(InteractionClick click) { + // Define custom logic to detect this interaction + return click.isStanding() + && click.isSign() + && click.isDoubleClick(); + } +} +``` + +Register it: + +```java +manager.interaction(new MyCustomInteraction()); +``` + +--- + +# Binding Types to Behaviors + +The InteractionManager internally maps interaction types to behaviors based on configuration and registration order. + +Once your behavior is registered: + +- It can be referenced in `interaction.yml` +- Or attached programmatically + +Example interaction.yml usage: + +```yaml +STANDING_LEFT_CLICK_SIGN: MY_CUSTOM_TRADE +``` + +--- + +# The InteractionClick Object + +When your behavior executes, you receive an `InteractionClick` object. + +It provides: + +- `getPlayer()` +- `getShop()` +- `getLocation()` +- `isSneaking()` +- `isSign()` +- `isShopBlock()` +- etc. + +This gives full context for safe execution. + +--- + +# Advanced: Overriding Built-in Behavior + +If you register a behavior using the same key as an existing one, your behavior can override the default. + +⚠️ Be careful when doing this — you are replacing core functionality. + +--- + +# Best Practices + +### Always Use Unique Keys + +Avoid naming collisions: + +``` +MYPLUGIN_CUSTOM_BEHAVIOR +``` + +### Keep Behavior Lightweight + +Do not block the main thread with: + +- Heavy database calls +- File IO +- Network calls + +Use async tasks if needed. + +### Respect Permissions + +Always validate: + +```java +if (!player.hasPermission("myplugin.use")) { + return; +} +``` + +### Avoid Hard Overrides Unless Necessary + +Instead of replacing built-in behaviors, consider extending them. + +--- + +# Example: Full Minimal Implementation + +```java +public class ExampleAddon { + + public void register(QuickShopAPI api) { + + InteractionManager manager = api.getInteractionManager(); + + manager.behavior(new MyTradeBehavior()); + manager.interaction(new MyCustomInteraction()); + } +} +``` + +--- + +# Conclusion + +The Interaction System is designed to allow: + +- Full extensibility +- Clean separation of triggers and actions +- Easy integration for third-party developers + +By retrieving the `InteractionManager`: + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +You gain full control over how shops respond to player actions. \ No newline at end of file diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/development/08-tax-manager.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/development/08-tax-manager.md new file mode 100644 index 0000000000..72a56f9e88 --- /dev/null +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/development/08-tax-manager.md @@ -0,0 +1,266 @@ +# Tax System (Developer Guide) + +The QuickShop tax system allows server owners and developers to define how transaction taxes are calculated, distributed, and extended. + +As of 6.2.0.11, the tax system has been fully rewritten to provide: + +- A flexible TaxManager +- Pluggable TaxProvider support +- Progressive taxation +- Tax targeting (shop owner, interacting player, or both) +- Custom extension capability for third-party addons + +This guide explains how to work with the tax system programmatically. + +--- + +# Overview + +The tax system is composed of three core components: + +TaxManager +Responsible for coordinating tax calculation and execution. + +TaxProvider +Defines how tax values are calculated. + +TaxRates +Represents calculated tax results for a transaction. + +The system is designed to allow custom providers to be registered and used without modifying core logic. + +--- + +# Getting the TaxManager + +To work with the tax system, retrieve the TaxManager from the ShopManager. + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +Once obtained, you can: + +- Access current tax configuration +- Register custom tax providers +- Calculate tax values +- Hook into tax events + +--- + +# How the Tax System Works + +During a shop transaction: + +1. A base price is determined. +2. The TaxManager selects the active TaxProvider. +3. The TaxProvider calculates applicable tax. +4. A TaxRates object is produced. +5. The system applies the tax to: + + - Shop owner + - Interacting player + - Or both (depending on configuration) + +This architecture allows tax behavior to be modified without altering transaction logic. + +--- + +# TaxProvider + +A TaxProvider defines how tax values are calculated. + +You may create your own provider to implement: + +- Progressive tax brackets +- Flat percentage tax +- Conditional tax rules +- Region-based tax +- Rank-based tax +- Time-based tax + +Example minimal provider: + +```java +public class MyCustomTaxProvider implements TaxProvider { + + @Override + public TaxRates calculateTax(TaxContext context) { + + double basePrice = context.getPrice(); + + double taxAmount = basePrice * 0.05; // 5% flat tax + + return new TaxRates() + .ownerTax(taxAmount) + .buyerTax(0.0); + } +} +``` + +Then register it: + +```java +taxManager.provider(new MyCustomTaxProvider()); +``` + +Once registered, your provider will be used for tax calculations. + +--- + +# TaxRates + +TaxRates represents the result of a tax calculation. + +It typically contains: + +- Owner tax amount +- Buyer tax amount +- Total tax impact +- Metadata (if applicable) + +The transaction system will read from TaxRates and apply deductions accordingly. + +--- + +# Progressive Taxation + +The built-in system supports progressive tax structures. + +This allows server administrators to tax based on: + +- Player balance +- Shop owner balance +- Configured tax brackets + +Example configuration concept: + +- 0–10,000 balance → 1% tax +- 10,000–100,000 → 2% tax +- 100,000+ → 3% tax + +Developers can extend or override this logic inside a custom TaxProvider. + +--- + +# Targeting Tax + +The new tax system allows taxes to be applied to: + +- Shop owner +- Interacting player +- Both + +This is controlled via configuration, but custom providers can override distribution logic by adjusting TaxRates output. + +Example: + +```java +return new TaxRates() + .ownerTax(basePrice * 0.02) + .buyerTax(basePrice * 0.01); +``` + +--- + +# Registering a Custom TaxProvider + +To replace or extend tax logic: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); + +taxManager.provider(new MyCustomTaxProvider()); +``` + +You may register only one primary provider at a time. If multiple providers are needed, implement internal delegation within your custom provider. + +--- + +# Tax Events + +The tax system integrates with the event system. + +The modern event used is: + +ShopEnhancedTaxEvent + +This replaces legacy tax events and provides improved context, including: + +- Transaction builder reference +- TaxRates object +- Modification capability before final execution + +You can listen for the event and modify tax behavior dynamically: + +```java +@EventHandler +public void onTax(ShopEnhancedTaxEvent event) { + + TaxRates rates = event.getTaxRates(); + + // Example: Give VIP players reduced owner tax + if (event.getOwner().hasPermission("vip.tax.discount")) { + rates.ownerTax(rates.getOwnerTax() * 0.5); + } +} +``` + +--- + +# Best Practices + +Always keep tax calculations lightweight. + +Avoid: + +- Heavy database queries inside calculateTax +- Blocking network calls +- Long-running computations + +If complex logic is required, pre-cache required data outside the tax execution path. + +Ensure negative tax values are not returned unless intentional. + +Always validate final amounts before applying modifications. + +Respect configuration hierarchy unless intentionally overriding it. + +--- + +# Example Full Implementation + +```java +public class ExampleTaxAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + TaxManager taxManager = manager.taxManager(); + + taxManager.provider(new MyCustomTaxProvider()); + } +} +``` + +--- + +# Conclusion + +The new tax system is designed for: + +- Flexibility +- Extensibility +- Clean separation of concerns +- Future expansion + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +You gain full control over how QuickShop calculates and applies tax during transactions. \ No newline at end of file diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/development/09-layout-provider.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/development/09-layout-provider.md new file mode 100644 index 0000000000..55e3cd3e91 --- /dev/null +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/development/09-layout-provider.md @@ -0,0 +1,275 @@ +# Shop Layout Provider (Developer Guide) + +The Shop Layout Provider system allows developers to customize how shop signs are structured and rendered. + +As of 6.2.0.11, shop layouts are no longer hardcoded. Instead, they are controlled through the `IShopLayoutProvider` interface, which allows: + +- Custom sign line ordering +- Per-shop-type layouts (BUYING, SELLING, FROZEN, or custom types) +- Dynamic layout resolution +- Complete replacement of the default layout system + +This guide explains how to access, override, and implement a custom layout provider. + +--- + +# Overview + +The layout provider controls how shop sign lines are arranged. + +Instead of hardcoding: + +Line 1 → Header +Line 2 → Trading info +Line 3 → Item +Line 4 → Price + +The system now allows full customization through: + +- Config-based layout definitions +- Custom `IShopLayoutProvider` implementations +- Runtime overrides + +The default implementation is `SimpleShopLayoutProvider`. + +--- + +# Accessing the Layout Provider + +To retrieve the current layout provider: + +```java +ShopManager manager = api.getShopManager(); +IShopLayoutProvider provider = manager.shopLayoutProvider(); +``` + +To replace the layout provider with a custom one: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Once replaced, your implementation will control how shop layouts are generated. + +--- + +# Understanding IShopLayoutProvider + +`IShopLayoutProvider` defines how layout data is retrieved and resolved. + +It is responsible for: + +- Providing layout configuration per shop type +- Determining which layout to use +- Supplying formatted line keys +- Allowing future extensibility + +The default implementation reads layout definitions from configuration and applies them based on shop type. + +--- + +# Default Layout Example + +The default configuration-based layout looks like this: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +Each line maps to a layout component key. + +An empty string (`""`) leaves that line blank. + +The layout provider resolves these keys into actual sign content. + +--- + +# Creating a Custom Layout Provider + +To override the default behavior, implement `IShopLayoutProvider`. + +Example minimal implementation: + +```java +public class MyCustomLayoutProvider implements IShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + + ShopLayout layout = new ShopLayout(); + + layout.setLine(1, "Custom Header"); + layout.setLine(2, "Owner: " + shop.getOwnerName()); + layout.setLine(3, shop.getItem().getType().name()); + layout.setLine(4, "$" + shop.getPrice()); + + return layout; + } +} +``` + +Then register it: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Your layout will now control all shop sign formatting. + +--- + +# Per-Type Layout Control + +Because the system no longer depends on the legacy ShopType enum, layouts can support: + +- Built-in types (BUYING, SELLING, FROZEN) +- Custom shop types +- Addon-defined shop types + +Your provider can determine layout logic dynamically: + +```java +@Override +public ShopLayout provideLayout(Shop shop) { + + if (shop.getShopType().key().equals("FROZEN")) { + return frozenLayout(shop); + } + + return defaultLayout(shop); +} +``` + +This allows conditional formatting, localization adjustments, or special event styling. + +--- + +# Advanced Customization + +A custom layout provider can: + +- Pull data from external plugins +- Inject dynamic placeholders +- Modify layout per player +- Apply formatting logic +- Override color schemes +- Apply region-based formatting +- Implement animated sign systems + +Because the layout provider is resolved at runtime, you can compute layouts dynamically instead of reading static config. + +--- + +# Replacing vs Extending the Default Provider + +You have two options: + +Replace entirely: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Or extend the default implementation: + +```java +public class ExtendedLayoutProvider extends SimpleShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + ShopLayout base = super.provideLayout(shop); + + base.setLine(1, "[Extended] " + base.getLine(1)); + + return base; + } +} +``` + +Extending is safer if you only want to modify small portions. + +--- + +# Best Practices + +Keep layout generation lightweight. + +Avoid: + +- Heavy database queries +- Blocking IO +- Complex network calls + +Layout generation runs during shop updates and sign refresh events. + +Always handle null values safely. + +Ensure layout line count does not exceed sign limits. + +Avoid hardcoding shop type names unless necessary. + +If your layout supports custom shop types, validate their keys properly. + +--- + +# Example Full Registration + +```java +public class LayoutAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + + manager.shopLayoutProvider(new MyCustomLayoutProvider()); + } +} +``` + +--- + +# Conclusion + +The Shop Layout Provider system allows complete control over shop sign structure. + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +``` + +And setting: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +You can redefine how every shop is displayed on the server. + +This system was designed to support: + +- Extensibility +- Custom shop types +- Localization +- Dynamic formatting +- Future expansion \ No newline at end of file diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/faq/compare-reremake.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/faq/compare-reremake.md index aaa1a9e507..6b39f02520 100644 --- a/i18n/fi-FI/docusaurus-plugin-content-docs/current/faq/compare-reremake.md +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/faq/compare-reremake.md @@ -64,7 +64,7 @@ If you are a Reremake user, you may be confused about the differences between Hi ## Which one should I use? Well, it depends on what your needs are.\ -If you have an old server (<1.20) instance, Reremake is your only choice.\ +If you have an old server ({'<'}1.20) instance, Reremake is your only choice.\ ~~If you are in China which has GFW interfere, you also should consider Reremake because it doesn't need to load libraries from Global Internet.~~ Solved in 6.0.0.0. If none of these applies, give Hikari a try! diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md index 551f579e7c..172be3a69b 100644 --- a/i18n/fi-FI/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md @@ -1,8 +1,8 @@ # Where Addons/Compacts is -Addons and Compatilibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. +Addons and Compatibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. -- Open Modrinth versions page, locate the version your're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) +- Open Modrinth versions page, locate the version you're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) - Frantically slide your mouse wheel down until the lowest end of the page. - You get it! diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/internal/database-schema.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/internal/database-schema.md index fea685e4fc..45e04adb56 100644 --- a/i18n/fi-FI/docusaurus-plugin-content-docs/current/internal/database-schema.md +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/internal/database-schema.md @@ -4,17 +4,17 @@ This chapter will explain the implementation details of QuickShop Hikari's datab ## Tables -This section explains the database tables created by QuickShop-Hikari.\ -Unless otherwise specified, the initial `qs_` in table name is the table prefix.\ +This section explains the database tables created by QuickShop-Hikari. +Unless otherwise specified, the initial `qs_` in table name is the table prefix. For the latest code definition for each table, see: [DataTables.java](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/hikari/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/database/DataTables.java) ### `data` -This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information.\ -No matter what, a data record should not be modified after it is created, until it got deleted.\ +This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information. +No matter what, a data record should not be modified after it is created, until it got deleted. Any new changes to the shop should create a new copy, apply the changes to the copy, and insert it as a new record. -Basiclly, Copy-on-write. +Basically, Copy-on-write. A data record only be deleted from the database when no any table references their `data_id`. @@ -29,7 +29,7 @@ A data record only be deleted from the database when no any table references the | unlimited | BIT NOT NULL | 0 | Indicates whether this store is an unlimited store, 0=Limited, 1=Unlimited | | hologram | BIT NOT NULL | 0 | Indicates the suspension status of this store's display item, 0=Follow global settings, 1=Disabled | | tax_account | VARCHAR(36) | NULL | The uuid for tax account, If it is not NULL, tax will be paid to the specified account | -| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serilized to JSON string | +| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serialized to JSON string | | extra | LONGTEXT | Empty Yaml | Used to store experimental settings of QuickShop Hikari or persistent data of other plugins | | inv_wrapper | VARCHAR(255) NOT NULL | N/A | Unique identifier for InventoryWrapper for this shop data entry | | inv_symbol_link | TEXT NOT NULL | N/A | Unique Inventory symbol used to pass to InventoryWrapper, for locating inventory | @@ -38,7 +38,7 @@ A data record only be deleted from the database when no any table references the ### `shops` -This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes.\ +This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes. Multiple `shop_id` can correspond to the same `data_id`. | Column Name | DataType | Default | Description | diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/cmd-alias.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/cmd-alias.md index 53f1577685..e6ed381c0d 100644 --- a/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/cmd-alias.md +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/cmd-alias.md @@ -23,7 +23,7 @@ custom-commands: - cshop ``` -Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect.\ +Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect. The effect should be like this: ![command-alias](./img/command-alias.png) diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/datasource.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/datasource.md index 6fc1bd8931..3fd3a8bdee 100644 --- a/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/datasource.md +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/datasource.md @@ -48,7 +48,7 @@ Execute the `/quickshop export` command in console, quickshop will export a zip ![exported data](img/database-export.png) -Stop your database, switch the datasource, and start the server.\ +Stop your database, switch the datasource, and start the server. You may noticed all shops are gone, because new datasources had no data inside, we will restore them from export. Rename that exported ZIP file to `recovery.zip`, execute `/quickshop recovery` and restart your server, all shops should back. diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/itemmatcher.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/itemmatcher.md index 56be243019..922907be27 100644 --- a/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/itemmatcher.md +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/itemmatcher.md @@ -4,7 +4,7 @@ ItemMatcher is a utility used by QuickShop-Hikari to compare the items, it is th :::caution -If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse.\ +If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse. **TL;DR: Keep default unless you know what you're doing.** ::: @@ -26,10 +26,10 @@ matcher: work-type: 1 ``` -By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility.\ +By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility. But still, you can toggle to QuickShop Item Matcher if you need to customize the comparing or running QuickShop on the server jar which have bug affect the Bukkit comparing system. -## Customize the metadata compareing +## Customize the metadata comparing Customize only works under QuickShop Item Matcher. diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md index fc2af69d2b..d04e8f2783 100644 --- a/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md @@ -4,7 +4,7 @@ ItemStack Loader is a workaround for loading the Bukkit ItemStack. :::caution -Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossble. +Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossible. ::: diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/localization.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/localization.md index e9121e1a36..d47589ab9a 100644 --- a/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/localization.md +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/localization.md @@ -10,7 +10,7 @@ To help translate QuickShop-Hikari, please visit our [Crowdin Homepage](https:// ## Crowdin OTA -QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will overrided when you reload QuickShop-Hikari or restart your server. +QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will override when you reload QuickShop-Hikari or restart your server. Your installation will keep translations up-to-date without any touch. @@ -110,6 +110,16 @@ To disable the CrowdinOTA, please add it in the startup flag: -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager.enableCrowdinOTA=false ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +use-crowdin-ota: false +``` + ### Self-Hosted OTA Server If you self-hosted our translation server by using [CrowdinCopyDeploy](https://github.com/Ghost-chu/CrowdinCopyDeploy) tool, you're able to change the OTA server to yourself server. @@ -118,4 +128,12 @@ If you self-hosted our translation server by using [CrowdinCopyDeploy](https://g -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager= ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml +Use + +```yaml +crowdin-host: +``` \ No newline at end of file diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/shops/benefit.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/shops/benefit.md index 4d7a9c8f42..c59d92e6d1 100644 --- a/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/shops/benefit.md +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/shops/benefit.md @@ -37,3 +37,13 @@ By default, for security, QuickShop-Hikari disallow add offline players into sho ```bash -Dcom.ghostchu.quickshop.command.subcommand.SubCommand_Benefit.allowOffline=true ``` + +### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +shop.allow-offline-benefit: true +``` \ No newline at end of file diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/shops/control-panel b/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/shops/control-panel new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/shops/control-panel @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/shops/history.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/shops/history.md index fa891adeab..195b64a042 100644 --- a/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/shops/history.md +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/shops/history.md @@ -24,7 +24,7 @@ The History GUI displays the details of each recorded transaction and other usef ### Transaction details -When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed.\ +When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed. If you are checking the history of more than one store, the player head will be replaced with an item from the corresponding store. ![history-gui](./img/history-gui.png) diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md new file mode 100644 index 0000000000..c5ed3b3fe4 --- /dev/null +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md @@ -0,0 +1,90 @@ +# Shop Types + +QuickShop supports multiple shop types, allowing shops to behave differently depending on their mode. + +The built-in shop types are: + +- Selling +- Buying +- Frozen + +Each type changes how the shop interacts with players. + +--- + +## Selling Shop + +A Selling shop allows players to: + +- Buy items from the shop owner +- Pay money to receive items + +This is the most common shop type. + +--- + +## Buying Shop + +A Buying shop allows players to: + +- Sell items to the shop owner +- Receive money in exchange + +This is commonly used for: + +- Resource collection +- Server buy-back shops +- Automated material sinks + +--- + +## Frozen Shop + +A Frozen shop temporarily disables trading. + +While frozen: + +- No buying is allowed +- No selling is allowed +- The shop remains intact +- Staff or admins can manage it + +This is useful for: + +- Temporary suspensions +- Investigation +- Event locking +- Maintenance + +--- + +## Switching Shop Types + +Shop types can be changed through: + +- Control panel +- GUI control panel +- Admin commands + +Frozen mode is also available via: + +/qs freeze + +--- + +## Custom Shop Types + +As of 6.2.x, the system supports extensible shop types internally. + +While server owners use the built-in types, the system now allows future expansion through addons. + +--- + +## Summary + +Shop types allow you to: + +- Control how money flows +- Enable buy-back mechanics +- Temporarily disable shops +- Build advanced economic systems \ No newline at end of file diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md new file mode 100644 index 0000000000..18e0a47407 --- /dev/null +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md @@ -0,0 +1,217 @@ +# Sign Layout + +QuickShop allows you to fully customize how shop signs are structured. + +You can change: + +- What appears on each line +- The order of information +- Layout per shop type +- Whether certain lines are blank + +This gives you complete control over how shops look on your server. + +--- + +## How Sign Layout Works + +Shop signs have four lines. + +Instead of being hardcoded, QuickShop uses a configurable layout system. + +Each shop type can have its own layout: + +- SELLING +- BUYING +- FROZEN + +You define what each line displays using layout keys. + +--- + +## Configuration Location + +Sign layout is configured in `config.yml` under: + +```yaml +layout: +``` + +Example default configuration: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## Available Layout Keys + +Each line value refers to a built-in layout component. + +Common layout keys include: + +- `header` – The shop header line +- `trading` – Buy/Sell direction information +- `item` – Item name +- `price` – Shop price + +These keys are automatically formatted using your language file and formatting settings. + +--- + +## Leaving a Line Blank + +To leave a line empty, use: + +```yaml +line2: "" +``` + +This is useful if you want: + +- Minimalist signs +- Cleaner layouts +- Custom spacing +- Decorative formatting + +--- + +## Customizing Per Shop Type + +Each shop type can have a different layout. + +For example: + +```yaml +layout: + + SELLING: + line1: "header" + line2: "item" + line3: "price" + line4: "" + + BUYING: + line1: "header" + line2: "price" + line3: "item" + line4: "" + + FROZEN: + line1: "header" + line2: "" + line3: "item" + line4: "Frozen" +``` + +This allows you to visually differentiate: + +- Selling shops +- Buying shops +- Frozen shops + +--- + +## Practical Examples + +### Minimal Style + +```yaml +layout: + SELLING: + line1: "item" + line2: "price" + line3: "" + line4: "" +``` + +### Compact Economy Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "price" + line3: "item" + line4: "" +``` + +### Large Clear Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## How Updates Affect Layout + +When you change the layout: + +- Existing shop signs will update automatically when refreshed. +- New shops will use the updated format immediately. + +If needed, you can reload QuickShop to apply changes. + +--- + +## Best Practices + +- Keep important information visible (price and item). +- Avoid overly complex formatting. +- Test layout changes before deploying on large servers. +- Use different layouts for BUYING and SELLING to reduce confusion. + +--- + +## Common Questions + +### Can I add more than four lines? + +No. +Minecraft signs are limited to four lines. + +### Can I add colors? + +Colors are controlled by your language file and formatting settings. + +### Can I change layout without restarting? + +Yes, but reloading or refreshing shops is recommended to ensure full update. + +--- + +## Summary + +The Sign Layout system allows you to: + +- Fully customize shop sign appearance +- Create per-type layouts +- Simplify or expand shop information +- Improve clarity for players + +All layout customization is handled inside `config.yml`. diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md index abcc288db7..2a0d52d788 100644 --- a/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md @@ -8,19 +8,6 @@ This feature added in 6.0.0.0. By default, QuickShop-Hikari uses the default brand material from the configuration file, but you can modify it to other brands for your store with the command. -## Configuration - -```yaml - #The wall sign material. - #ACACIA_WALL_SIGN - #BIRCH_WALL_SIGN - #DARK_OAK_WALL_SIGN - #JUNGLE_WALL_SIGN - #OAK_WALL_SIGN - #SPRUCE_WALL_SIGN - sign-material: OAK_WALL_SIGN -``` - ## Change the material Use command `/quickshop sign ` to change your shop sign material. diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md new file mode 100644 index 0000000000..980bad10f2 --- /dev/null +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md @@ -0,0 +1,130 @@ +# Shop Sign Waxing + +QuickShop can automatically wax shop signs to prevent players from editing them manually. + +Waxing protects the integrity of your shop signs and helps prevent tampering, spoofing, and accidental modification. + +As of modern Minecraft versions, waxed signs cannot be edited unless they are unwaxed first. + +--- + +## What Is Sign Waxing? + +In Minecraft, waxing a sign locks it so that: + +- Players cannot edit the text +- Players cannot modify lines +- Accidental changes are prevented +- Malicious edits are blocked + +When enabled in QuickShop, shop signs are automatically waxed when created. + +--- + +## Why Use It? + +Sign waxing protects against: + +- Players editing price lines +- Changing item names on signs +- Spoofing shop information +- Accidental formatting issues +- Sign hijacking attempts + +On public servers, this feature is strongly recommended. + +--- + +## How It Works + +When a shop is created: + +1. QuickShop generates the shop sign. +2. The sign text is written. +3. The sign is automatically waxed (if enabled). + +If a shop is updated: + +- The sign will be safely updated by QuickShop. +- The wax state is maintained. + +Players cannot manually edit shop signs while waxing is enabled. + +--- + +## Configuration + +To enable or disable sign waxing, edit `config.yml`: + +```yaml +shop: + sign-wax: true +``` + +### true + +- Shop signs are automatically waxed. +- Players cannot edit the sign manually. + +### false + +- Shop signs behave like normal Minecraft signs. +- Players may edit them if permitted by the game. + +--- + +## Recommended Setting + +For most servers: + +```yaml +shop: + sign-wax: true +``` + +This ensures shop data stays accurate and secure. + +--- + +## Common Questions + +### Can admins still modify shop signs? + +QuickShop controls shop sign formatting. +Manual edits are not recommended. + +Admins should use: + +- Control panel +- Shop commands +- Direct configuration changes + +### Does waxing affect shop functionality? + +No. +Waxing only prevents manual text edits. +The shop continues to function normally. + +### Can players un-wax shop signs? + +No. +QuickShop manages the sign state automatically. + +--- + +## Best Practices + +- Keep sign-wax enabled on survival servers. +- Combine sign-wax with proper permissions. +- Avoid manually editing shop signs through other plugins. + +--- + +## Summary + +Sign Waxing: + +- Prevents tampering +- Requires no additional setup + +Enable it once and QuickShop handles the rest. \ No newline at end of file diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/shops/taxes.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/shops/taxes.md new file mode 100644 index 0000000000..1a273fd978 --- /dev/null +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/shops/taxes.md @@ -0,0 +1,92 @@ +# Taxation System + +QuickShop includes a taxation system designed to give server owners more flexibility and control over shop-based income. + +This system was revamped as of 6.2.0.11+ + +The new system allows you to: + +- Apply tax to shop owners +- Apply tax to buyers +- Apply tax to both +- Use progressive tax brackets +- Customize tax behavior in configuration + +This system replaces the legacy tax configuration. + +--- + +## How It Works + +During a transaction: + +1. The shop price is calculated. +2. Tax is calculated based on your configuration. +3. Tax is deducted from the configured target(s). +4. Remaining funds are distributed normally. + +You can configure: + +- Flat percentage tax +- Progressive tax based on player balance +- Tax accounts +- Distribution rules + +--- + +## Progressive Tax + +The new system allows you to tax based on balance brackets. + +Example concept: + +- 0 – 10,000 balance → 1% tax +- 10,000 – 100,000 → 2% tax +- 100,000+ → 3% tax + +This helps prevent extremely wealthy players from dominating the economy. + +--- + +## Who Pays the Tax? + +You can configure whether tax applies to: + +- The shop owner +- The buyer +- Both + +This gives you flexibility depending on your economy design. + +--- + +## Configuration + +All tax-related settings are located under the `shop-tax` section in `config.yml`. + +After updating to 6.2.0.11+, review your tax configuration carefully, as the old tax system has been replaced. + +--- + +## Why Use Tax? + +The taxation system can help: + +- Remove currency from circulation +- Fund server banks or towns +- Create sink mechanics +- Balance inflation +- Reward active players + +--- + +## Summary + +The new taxation system is: + +- Flexible +- Configurable +- Balance-aware +- Designed for modern economy servers + +Make sure to review your configuration after upgrading. \ No newline at end of file diff --git a/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md b/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md new file mode 100644 index 0000000000..247c24712d --- /dev/null +++ b/i18n/fi-FI/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md @@ -0,0 +1,161 @@ +# WorldEdit & FAWE Support + +QuickShop includes built-in protection and integration for WorldEdit and FastAsyncWorldEdit (FAWE). + +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. + +You do not need to download or install any additional compatibility plugins. + +--- + +## What This Does + +WorldEdit and FAWE allow administrators and builders to: + +- Copy and paste regions +- Replace large areas of blocks +- Mass-delete regions +- Roll back areas +- Regenerate terrain + +Without protection, these operations could: + +- Create ghost shops +- Leave orphaned shop data in the database +- Duplicate shops unintentionally +- Delete containers without cleaning up shop data +- Cause inconsistencies between world and database + +QuickShop now automatically detects and safely processes WorldEdit and FAWE operations. + +--- + +## Built-In Behavior + +When WorldEdit or FAWE modifies blocks: + +- Shops removed via WorldEdit are properly deleted from the database. +- Shop data stays synchronized with world changes. +- Ghost shops are prevented. +- Mass block replacements will not leave broken shop entries behind. + +This applies to: + +- //set +- //replace +- //cut +- //paste +- //regen +- Region deletion +- Mass container removal + +No configuration is required. + +--- + +## FAWE Support + +FastAsyncWorldEdit (FAWE) is fully supported. + +Because FAWE processes edits asynchronously, QuickShop handles: + +- Region-thread safe processing +- Async block updates +- Safe shop deletion during batch edits + +You do not need to enable anything manually. + +--- + +## Removing Shops with WorldEdit + +If you delete containers (chests, barrels, etc.) using WorldEdit: + +QuickShop will automatically: + +- Detect the block removal +- Unregister the shop +- Clean the database entry +- Prevent ghost shops + +You do not need to run `/qs cleanghost` after WorldEdit usage in normal circumstances. + +--- + +## Copying and Pasting Shops + +If you copy and paste regions that contain shops: + +- Shop data will not duplicate incorrectly. +- Shop IDs remain consistent. +- Invalid pasted shops will not auto-register unless properly created. + +This prevents accidental duplication exploits. + +--- + +## Performance + +WorldEdit and FAWE operations can modify thousands of blocks at once. + +QuickShop processes these safely and efficiently: + +- Batch-aware cleanup +- Thread-safe region access (especially on Folia) +- Minimal performance impact during mass edits + +--- + +## Configuration + +There are no specific WorldEdit configuration options in QuickShop. + +Support is automatic and always enabled if WorldEdit or FAWE is detected. + +If WorldEdit is not installed, no extra code is executed. + +--- + +## Common Questions + +### Do I need the old WorldEdit compatibility jar? + +No. + +As of 6.2.0.11, WorldEdit support is built-in and the separate compatibility module has been removed. + +### Does this work with FAWE? + +Yes. FAWE is fully supported. + +### Will shops break if I use //set air? + +No. Shops will be safely removed and cleaned up. + +### Do I need to restart after installing WorldEdit? + +No. QuickShop detects WorldEdit automatically on startup. + +--- + +## Best Practices + +Even though QuickShop safely handles WorldEdit operations, it is recommended to: + +- Avoid copying shops intentionally unless required +- Use backups before large region edits +- Test large FAWE operations on staging servers when possible + +--- + +## Summary + +QuickShop’s built-in WorldEdit and FAWE integration ensures: + +- Safe mass edits +- No ghost shops +- Automatic database cleanup +- Thread-safe processing +- No extra modules required + +WorldEdit support is now a core feature of QuickShop. \ No newline at end of file diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/addon/limited.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/addon/limited.md index 70af27e240..fae55a8c95 100644 --- a/i18n/fr-FR/docusaurus-plugin-content-docs/current/addon/limited.md +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/addon/limited.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -41,8 +35,8 @@ Limit players to purchase up to 16 items per month. /quickshop limit period MONTH ``` -The system is based on the QuickShop-Hikari calendar system.\ -The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year.\ +The system is based on the QuickShop-Hikari calendar system. +The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year. Same for days, months and hours. Available time units: diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/addon/list.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/addon/list.md index 93d182f083..f20b91fd7b 100644 --- a/i18n/fr-FR/docusaurus-plugin-content-docs/current/addon/list.md +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/addon/list.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/addon/plan.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/addon/plan.md index 52a6e79cb4..c10ef4df42 100644 --- a/i18n/fr-FR/docusaurus-plugin-content-docs/current/addon/plan.md +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/addon/plan.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -18,7 +18,7 @@ Recorded data can be displayed from Hikari v2.0.0.0 onwards, but only after vers - All shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 1000 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `5` in server scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `5` in server scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Player Scope @@ -27,7 +27,7 @@ And still is Plan limitations, the list sorting is disturbed, so the display ord - All owned shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 50 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `4` in player scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `4` in player scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Showcase diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/addon/reforges.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/addon/reforges.md index 2a14509eb7..25fff1752a 100644 --- a/i18n/fr-FR/docusaurus-plugin-content-docs/current/addon/reforges.md +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/addon/reforges.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.0.0.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md index 304d39bc05..6f9f51d250 100644 --- a/i18n/fr-FR/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.1.1.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -44,7 +38,7 @@ _This is not necessary if you are using an H2 database._ ### Prepare for convert -To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console.\ +To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console. If a player is in the server, the conversion cannot be started. Once the conversion has begun, the server will be locked during the conversion process and no players will be able to join the server during the conversion. diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/addon/shopitemonly.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/addon/shopitemonly.md index c45062f8c2..1ccfe977b3 100644 --- a/i18n/fr-FR/docusaurus-plugin-content-docs/current/addon/shopitemonly.md +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/addon/shopitemonly.md @@ -2,17 +2,11 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT - -::: - -This addon prevents players from putting non-store items into store containers.\ +This addon prevents players from putting non-store items into store containers. Does not apply to stores that use the item inventory redirection API (aka. InventoryWrapper API). This Addon will check for container (or transferring) items on events such as the player closing the container or hopper access. diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md new file mode 100644 index 0000000000..9c8b4f7407 --- /dev/null +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md @@ -0,0 +1,55 @@ +# 6.2.0.10 + +## Major Changes + +- Added support for 1.21.6 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.7 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.8 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Some internal updates for packetevents(2.9.0 is now required.) +- Updated Lands support + +## Addon Changes + +- Added MatcherPlus Addon + - Allows support for BreweryX and AdvancedItems stacks in shops with improved matching abilities +- Added FabledSkyblock Compat +- Added Dominion Compat +- Added HuskTowns Compat +- Added IridiumSkyblock Compat +- Added member-create for member creation in ARM compat +- Added admin-override and quickshop.arm.admin permission for admin overrides in ARM + +## Minor Changes + +- Added configurations for the coordinates of the display item. +- Added /qs toggledisplayall on/off server/owned + - Players need to have permission node quickshop.toggledisplayall.admin to toggle all on the server. +- Added ability to use abbreviations in /qs price and /qs create commands such as 2.5k for 2500 +- Added ability to set default display status using shop.default-display in config.yml + +## Fixes + +- Fixed issue with display item being sent to the moon on 1.21.5 +- Fixed issue where TRADE_UI interactions interfered with quick create. +- Fixed issue with displays on protocollib falling through the chest +- Fixed issue with signs on .9 and previous .10 snapshots on early versions +- Implemented some performance improvements for paper servers +- Fixed all outstanding issues with Folia usage.(thanks to RootB33R/SleazLee for contributions) + +## Possible 6.2.0.11 Features + +Here's an outline for some features that may arrive in 6.2.0.11: + +- Additional compats/addons that have been piling up. + - see: https://github.com/QuickShop-Community/QuickShop-Hikari/issues/1756 +- gradle?(interested to see compilation time uplifts) +- Update documentation +- Update configuration comments +- Update configuration system? + - auto updating? + - Allows removal of the update code +- Remove waste spigot modules? + - Any versions of 1.20 that can be discarded due to low use? +- Bug fixing, of course +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... \ No newline at end of file diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md new file mode 100644 index 0000000000..b41c88662a --- /dev/null +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md @@ -0,0 +1,173 @@ +## Outline + +- Update documentation +- Update configuration comments +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... + +# 6.2.0.11 + +## Major Changes + +- Removed Spigot Platform Modules, and stopped loading QS if Spigot is detected. This will mean that unless the protocol changes that we use for display items, QS won't need updated for each version. +- Revamped Economy Code Completely + - New classes for all economy-related systems + - Any economy-related or benefits-related events are incompatible with previous versions. +- Added sign layout customizations per-type allowing you to change how lines are configured, an empty string('') will leave an empty line for that line of the sign. + +``` + #The layout of signs for shops. + layout: + + #The layout of BUYING shops. + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of FROZEN shops. + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of SELLING shops. + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +- Add wildcard support for item blacklist patterns(thanks to bennycallanan) + - Added support for wildcard patterns in the item blacklist configuration, allowing users to block entire categories of items with simple patterns. + + - Features + - Wildcard patterns like \*_AXE and \*_SPAWN_EGG now work in blacklist configuration + - Supports \* for any characters and ? for single character matching + - Case-insensitive pattern matching +- Overhauled GUI system(thanks to Yusakidev) + - Implemented gui.yml configuration file for customizing the GUI. + - Implemented better filtering for qs browse + - Implement GUI system to be more stable, and less error prone. + - Added gui.yml for fully configurable GUI layouts and text + - Browse menu: search, sort (price/name/stock), and filter (all/buying/selling/in-stock) + - Staff menu: search functionality for player/staff selection + - Grouped item pages for better shop browsing + - Refactored all menu pages to use configurable display/lore +- Added worldedit compat to QS internally as it's widely used. +- Revamped the taxation system to be more flexible and easier to configure. + - introduced a new progressive tax system that allows you to tax based on the balance of players.(suggested by YuanYuanOwO) + - introduced the ability to tax the player interacting with the shop, the owner, or both + - all tax-related configurations have been moved under the shop-tax section of the config. this may require reconfiguration of your tax settings. + - added a new ShopEnhancedTaxEvent, deprecated the old ShopTaxEvent. + - Added a new TaxManager, and TaxProvider interfaces, this allows for custom tax providers to be added by addons/third-party developers. + +## Addons/Compats Changes + +- Added UltimateClaims compat +- Added SimpleClaimSystem compat +- Added Quests by Pika addon +- Added BetonQuest addon +- Added Pl3xMap addon +- MatcherPlus Compat Improvements + - Added support for CrazyCrates + - Added support for ExcellentCrates + - Added support for SilkSpawners. +- WorldGuard Compat Improvements(Thanks to golovin12) + - Added clear permission handling: + - Region owners and members automatically have permission to create and trade in their own regions. + - Other players must have the appropriate WorldGuard flags enabled (quickshophikari-create, quickshophikari-trade) to interact with shops. + - If a shop is located outside any region, default QuickShop behavior applies (no extra restrictions) +- Added colored markers based on shop state for bluemap(thanks to YusakiDev) +- Updated dynmap/towny addons to use the new ShopTypeEnhancedEvent instead of ShopTypeEvent. +- Removed worldedit compat, it's now included in the main plugin. +- Added support for global flags to the worldguard compat. + +## Internals/Developer APIs + +- Removed several deprecated methods and classes. +- Revamped the interaction manager. It is now more flexible and allows external additions + - This involves two classes InteractionBehavior and InteractionType. + - InteractionType details the type of interaction such as: STANDING_LEFT_CLICK_SIGN, STANDING_LEFT_CLICK_SHOP + - InteractionBehavior outlines a behavior for an InteractionType such as CONTROL_PANEL and TRADE_UI +- Added UserLimitCalculationEvent, which allows for custom limits to be applied to users. + - This is useful for limiting the number of shops a user can have, or adding on to the existing limits provided by the ranks system without needing to implement a new RankLimiter. +- Added a new ShopLayoutProvider interface, and default implementation. + - This allows for custom layouts to be used for shops, allowing for more customization. + - This also allows for developers to override the default layout provider and create their own implementation. +- How to make your own? + - Implement the classes you would like to then register with the InteractionManager: + - ```java + InteractionManager manager = QuickShop.getInstance().getInteractionManager(); + + manager.interaction(new MyTradeInteraction()); + manager.behavior(new MyTradeBehavior()); + ``` +- Replaced some Apache Commons calls that could be easily replaced with built-in java methods, reduces some calls by ~ 1100ms/method call +- Deprecated the ShopType enum, and the ShopTypeEvent. These are replaced with the new IShopType interface and implementing classes. + - The new event is ShopTypeEnhancedEvent. + - This allows for third-party addons to add their own shop types, and simplifies code checks for translations. +- Updated config system to use Boosted-yaml + - this allows for auto-updating of config files without complex update scripts + - this also allows for the config system to not be minecraft-dependent. +- Replaced logical PaperLib calls with native PaperAPI calls. + +## Minor Changes + +- Bump Java version up to 21 +- Added shop.display-allow-enchants to enable/disable enchantments for display items on shops. +- Added workaround for packetevents not supporting custom enchants on itemstacks for virtual display items. +- Using locale translations for shop-type in mode toggle icon(thanks to ExyiN) +- Bumped Residence version for the compat(thanks to YuanYuanOwO) +- add world whitelist support(thanks to wling-art) +- added /qs database save command, which saves all currently dirty-marked shops to the database. +- Split up interactions _SHOPBLOCK into _SHOPBLOCK and _CONTAINER. + - _SHOPBLOCK relates to shops, where _CONTAINER relates to shop-valid containers that are not currently shops. +- Added inventory as an option for command panel, this is useful for adding a secondary option for players to open a shop's inventory. +- Moved crowdin arguments from system properties to config.yml + - crowdin-host + - use-crowdin-ota + +## Fixes + +- Fixes issue with item price restrictions(thanks to maxcom1) +- Fixes issue with 1.20.x protocol lib displays(thanks to YuanYuanOwO) +- Fixes issue when no item is in hand for itemdebug(thanks to YuanYuanOwO) +- Fixes issue with dominion addon(thanks to YuanYuanOwO) +- Add a simple check to avoid this. If it is not own shop, reject limit request directly.(Thanks to YuanYuanOwO) +- Fix NPE by not setting tax for price in TransactionBuilder(thanks to maxcom1) +- Fixes /quickshop suggestprice to differentiate between buy/sell shops. (Thanks to MidSpike) +- PacketEvents ClassNotFoundException with ProtocolLib(thanks to wling-art) +- Reallocate block state access to region thread for shop creation(thanks to r00tbeerman) +- resolve SLF4J StaticLoggerBinder loading error(thanks to wling-art) +- sign hijacking issue by validating sign facing direction(thanks to wling-art) +- Performance improvements for QuickShop disabling to prevent potential freezes. +- Fixed issue with 1.20.4 packetevents virtual displays not staying put. +- Fixes critical issue in GriefPrevention compatibility plugin. +- Fixes issue with shop owner not getting money when benefits active. +- Fixes for lands addon on folia, Use regionThread for Folia compatibility(thanks to YusakiDev) +- Fixes for TRADE_DIRECT on stacking shops +- Fixes issue for protocollib 5.4.0 with undocumented packet changes. +- Fixes issue where item stacks could be used on creation above the max stack size. +- Fixes issue with BukkitAudiences-related crashes on 1.21.11. +- Fix issue with shop deletion when getting too impatient. +- Fix the permission check issue when a shop owned by a non-owner is transferred to someone else. (thanks to YuanYuanOwO) +- Fix ui with supertool (thanks to YuanYuanOwO) +- Fix issue with logs generating outside debug mode. +- Fix issue with /qs find. +- Fix configuration loading timing. +- Fix configuration loading/creation warning message language. +- Fix command description language key mismatch(thanks to wling-art) +- Fix qs clean command on folia(thanks to wling-art) +- Fix per-player-shop-sign on folia(thanks to wling-art) +- Fix potential recursive deadlock in virtual display packet sending(thanks to wling-art) +- Fix configuration loading/creation warning message language. +- Fix issue with /qs browse and ShopItemOnly addon not behaving properly together on folia. +- Fix issue with PLAN using outdated APIs. +- Fix issue with /qs clean on folia.(thanks to wling-art) +- Fix issue with /qs cleanghost on folia(thanks to wling-art) +- More thread safety fixes for shops on folia.(thanks to wling-art) +- Fix owner payment calculations with benefits(thanks to wling-art) \ No newline at end of file diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md index 8172f9b410..dcc3edc67d 100644 --- a/i18n/fr-FR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md @@ -20,20 +20,20 @@ the ControlComponent object with a custom one that will replace the original dur ### Introduction of the Revamped Packet System 1. **About**: - - A modular and scalable system for managing packets related to virtual display items in Minecraft. - - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. + - A modular and scalable system for managing packets related to virtual display items in Minecraft. + - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. 2. **Custom Packet Factories**: - - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. - - Packet types: - - **Spawn Packet**: Spawns a virtual item entity at a specific location. - - **Metadata Packet**: Updates the visual properties of virtual items. - - **Velocity Packet**: Adds motion/velocity to entities (currently optional). - - **Destroy Packet**: Removes the entity from the client view. + - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. + - Packet types: + - **Spawn Packet**: Spawns a virtual item entity at a specific location. + - **Metadata Packet**: Updates the visual properties of virtual items. + - **Velocity Packet**: Adds motion/velocity to entities (currently optional). + - **Destroy Packet**: Removes the entity from the client view. 3. **Error Handling and Logging**: - - Enhanced debug logs to trace packet-related issues. - - Detailed error messages for missing factories or unregistered listeners. + - Enhanced debug logs to trace packet-related issues. + - Detailed error messages for missing factories or unregistered listeners. #### Improvements: diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md index 7775308722..c6e0948d19 100644 --- a/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md index f420997a9c..38587e3784 100644 --- a/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md index 5ed8182c9a..259c55f342 100644 --- a/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md index 924a37ac49..7fd4596a6a 100644 --- a/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,6 +10,6 @@ This is a BungeeCord plugin, you need install it within your BungeeCord's plugin ## How does it work? -BungeeCord Bridge plugins will register a `quickshop:bungee` channel for fowarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. +BungeeCord Bridge plugins will register a `quickshop:bungee` channel for forwarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. All forwarding is indicated by QuickShop-Hikari on the Spigot server and ends when it is not needed. diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md index 27d68956a8..20fbaf7a0c 100644 --- a/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,5 +10,5 @@ This compatibility module added [Chest Protect](https://www.spigotmc.org/resourc ## How does it work? -This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident.\ +This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident. It also prevents players from creating shops on ChestProtect protected containers. diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md index 220e26d8bb..e1757e7be9 100644 --- a/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/dominion.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/dominion.md new file mode 100644 index 0000000000..e1195278a8 --- /dev/null +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/dominion.md @@ -0,0 +1,138 @@ +# Dominion + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and Dominion. + +It ensures that shop creation and trading respect Dominion’s land and territory protection system. + +--- + +## What Does It Do? + +Dominion allows players or groups to claim land and define territory-based permissions. + +Without compatibility: + +- Players could create shops inside territories they do not control. +- Visitors might trade inside protected dominions. +- Dominion permission rules might not apply to shop interactions. + +The Dominion compat module ensures that: + +- Shop creation respects territory ownership. +- Shop trading follows Dominion permission settings. +- Protected land remains secure from unauthorized shop usage. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a Dominion-controlled area. +- Whether the player has permission within that territory. +- Whether Dominion rules allow shop interaction. + +If the action is not permitted by Dominion settings, QuickShop blocks it. + +If the location is outside any Dominion territory, default QuickShop behavior applies. + +--- + +## Territory Owner Control + +With this module enabled: + +- Territory owners can create and manage shops inside their dominion. +- Trusted members follow territory-based permissions. +- Outsiders are restricted unless explicitly allowed. +- Shop actions respect Dominion’s land rules automatically. + +This prevents unauthorized shop placement inside protected territories. + +--- + +## Installation + +1. Install Dominion. +2. Install the QuickShop Dominion compat module. +3. Restart your server. + +The module activates automatically if Dominion is detected. + +No manual configuration linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside dominions +whitelist-mode: false + +# Allow territory owners to override shop permissions +allow-owner-override: true +``` + +If Dominion is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For servers using Dominion: + +- Restrict shop creation to territory owners or trusted members. +- Prevent shop creation in wilderness if desired. +- Allow dominion owners to manage shop permissions. +- Review Dominion permission settings to align with shop behavior. + +This ensures protected territories remain secure and organized. + +--- + +## Common Questions + +### Can players create shops in someone else's dominion? + +Only if Dominion permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You may allow or restrict shops outside dominions. + +### What happens if Dominion is removed? + +QuickShop returns to normal behavior and stops checking Dominion territories. + +--- + +## Summary + +The Dominion compat module: + +- Enforces territory-based permissions +- Prevents unauthorized shop creation +- Protects claimed land from misuse +- Integrates seamlessly with Dominion + +It is recommended for servers running Dominion. \ No newline at end of file diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md index 743d3ae666..2ac9b10488 100644 --- a/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md new file mode 100644 index 0000000000..07ba4ada66 --- /dev/null +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md @@ -0,0 +1,133 @@ +# FabledSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and FabledSkyblock. + +It ensures that shop creation and trading properly respect island boundaries and island permissions. + +--- + +## What Does It Do? + +On Skyblock servers, players build and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Players might trade in areas they should not. +- Island protection rules might not apply to shops. + +The FabledSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members behave correctly with shops. +- Island visitors are restricted appropriately. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a FabledSkyblock island. +- Whether the player has permission on that island. +- Whether island settings allow the action. + +If the action is not permitted by island rules, QuickShop will deny it. + +--- + +## Island Ownership Rules + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow island permission settings. +- Visitors can only trade if island permissions allow it. +- Outside of islands, default QuickShop behavior applies. + +--- + +## Installation + +1. Install FabledSkyblock. +2. Install the QuickShop FabledSkyblock compat module. +3. Restart your server. + +The module activates automatically if FabledSkyblock is detected. + +No manual linking is required. + +--- + +## Configuration + +If the module provides configuration options, they will appear in its `config.yml`. + +Typical options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If FabledSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most Skyblock servers: + +- Allow shop creation only inside islands. +- Prevent trading in the void or wilderness. +- Let island owners control shop permissions. +- Use island rank systems to manage shop access. + +This helps maintain economic balance between islands. + +--- + +## Common Questions + +### Can players create shops in the void? + +Only if your configuration allows it. +Most servers disable shop creation outside islands. + +### Does this affect island war or PvP modes? + +No. +The module only checks island ownership and permissions for shop interactions. + +### What happens if FabledSkyblock is removed? + +QuickShop returns to normal behavior. + +--- + +## Summary + +The FabledSkyblock compat module: + +- Protects island economies +- Enforces island permission rules +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is strongly recommended for any server running FabledSkyblock. \ No newline at end of file diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md index 81b13d2c6b..32614d3019 100644 --- a/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md @@ -2,17 +2,17 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -GreifPrevention compatibility module added compaitibility with GF. +GreifPrevention compatibility module added compatibility with GF. ## How does it work This module allow QuickShop-Hikari check if player have permission to create or use QuickShop in specific region. -And delete shops when claim removed, untrusted, unclimed, expired, resized or subclaim created. +And delete shops when claim removed, untrusted, unclaimed, expired, resized or subclaim created. ## Configuration diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md new file mode 100644 index 0000000000..e71b34d462 --- /dev/null +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md @@ -0,0 +1,139 @@ +# HuskTowns + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and HuskTowns. + +It ensures that shop creation and trading respect town and claim permissions defined by HuskTowns. + +--- + +## What Does It Do? + +HuskTowns allows players to create towns and claim land. + +Without compatibility: + +- Players could create shops inside towns they do not belong to. +- Visitors might trade inside protected towns. +- Town permission rules might not apply to shop interactions. + +The HuskTowns compat module ensures that: + +- Shop creation respects town ownership. +- Trading follows town permission settings. +- Town members and visitors are handled correctly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a HuskTowns claim. +- Whether the player is a town member, trusted player, or outsider. +- Whether the town's permission settings allow the action. + +If the action is not permitted by town rules, QuickShop blocks it. + +Outside of town claims, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Town Owner Control + +With this module enabled: + +- Town owners can create and manage shops inside their town. +- Town members follow town-based permission settings. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect town claim protection. + +This prevents unauthorized shop placement and trading inside protected towns. + +--- + +## Installation + +1. Install HuskTowns. +2. Install the QuickShop HuskTowns compat module. +3. Restart your server. + +The module activates automatically if HuskTowns is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside towns +whitelist-mode: false + +# Allow town owners to override shop permissions +allow-owner-override: true +``` + +If HuskTowns is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For town-based survival servers: + +- Restrict shop creation to town members. +- Allow trading only where town permissions permit. +- Prevent shop creation in wilderness if desired. +- Enable owner override for better administrative control. + +This helps maintain town-based economic balance. + +--- + +## Common Questions + +### Can players create shops in another town? + +Only if that town's permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You can allow or restrict shops outside towns. + +### What happens if HuskTowns is removed? + +QuickShop returns to normal behavior and stops checking town permissions. + +--- + +## Summary + +The HuskTowns compat module: + +- Enforces town-based land permissions +- Protects towns from unauthorized shop usage +- Integrates smoothly with HuskTowns +- Requires minimal setup + +It is recommended for any server running HuskTowns. \ No newline at end of file diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md new file mode 100644 index 0000000000..3fa2995eb0 --- /dev/null +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md @@ -0,0 +1,139 @@ +# IridiumSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and IridiumSkyblock. + +It ensures that shop creation and trading respect island boundaries and island permission settings defined by IridiumSkyblock. + +--- + +## What Does It Do? + +IridiumSkyblock allows players to create and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Visitors might trade inside protected islands. +- Island protection rules might not apply correctly to shops. + +The IridiumSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members and visitors are handled properly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside an IridiumSkyblock island. +- Whether the player is the island owner, member, or visitor. +- Whether island permissions allow shop interaction. + +If the action is not permitted, QuickShop blocks it. + +Outside of islands, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Island Owner Permissions + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow the island's permission configuration. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect island protection rules. + +This prevents unauthorized shop usage inside protected islands. + +--- + +## Installation + +1. Install IridiumSkyblock. +2. Install the QuickShop IridiumSkyblock compat module. +3. Restart your server. + +The module activates automatically if IridiumSkyblock is detected. + +No additional setup is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If IridiumSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most IridiumSkyblock servers: + +- Restrict shop creation to island owners. +- Allow island members to trade if trusted. +- Prevent shop creation in the void or wilderness. +- Enable owner override for better management. + +This helps maintain balanced island economies. + +--- + +## Common Questions + +### Can players create shops outside their island? + +Only if your configuration allows it. + +Most Skyblock servers restrict shops to island areas. + +### Do island ranks affect shop permissions? + +Yes, if your island permissions are configured to control interaction rights. + +QuickShop follows island rules. + +### What happens if IridiumSkyblock is removed? + +QuickShop returns to normal behavior and stops checking island permissions. + +--- + +## Summary + +The IridiumSkyblock compat module: + +- Protects island economies +- Enforces island-based permissions +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is recommended for any server running IridiumSkyblock. diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md new file mode 100644 index 0000000000..3b4726cb9d --- /dev/null +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md @@ -0,0 +1,151 @@ +# ItemMatcherPlus + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +The ItemMatcherPlus module improves how QuickShop matches custom and plugin-modified items. + +It allows QuickShop to properly recognize and stack items created by other plugins that normally would not match using standard Bukkit item comparisons. + +This module is especially useful for servers that use: + +- Custom items +- Modified metadata +- NBT-based systems +- Advanced crate rewards +- Custom brewing systems +- Custom fishing rewards + +--- + +## What Does It Do? + +By default, Minecraft item matching checks: + +- Material type +- Basic metadata + +However, many plugins modify items with: + +- Custom NBT data +- Hidden tags +- Custom lore formats +- Unique identifiers + +Without enhanced matching: + +- Items may not stack +- Shops may refuse valid items +- Transactions may fail +- Buying/selling may not behave correctly + +ItemMatcherPlus improves compatibility and matching accuracy. + +--- + +## Supported Plugins + +ItemMatcherPlus includes built-in support for: + +- AdvancedItems +- BreweryX +- CrazyCrates +- ExcellentCrates +- PyroFishing +- SilkSpawners + +If any of these plugins are installed, QuickShop will automatically use enhanced matching logic. + +No additional configuration is required. + +--- + +## How It Works + +When a player trades with a shop: + +1. QuickShop checks the item. +2. If ItemMatcherPlus is enabled, it performs advanced matching. +3. Plugin-specific metadata is validated. +4. The item is confirmed as a match (or rejected safely). + +This allows: + +- Proper stacking of custom items +- Correct shop transactions +- Accurate buy/sell detection +- Reduced false mismatches + +--- + +## Installation + +1. Download the ItemMatcherPlus module. +2. Place the JAR into your `plugins` folder. +3. Restart your server. + +If supported plugins are detected, compatibility activates automatically. + +--- + +## Configuration + +ItemMatcherPlus does not require configuration. + +It activates automatically when: + +- The module is installed +- A supported plugin is detected + +If a supported plugin is not installed, no extra logic runs. + +--- + +## Why You Should Use It + +You should install ItemMatcherPlus if your server uses: + +- Custom fishing plugins +- Custom brewing systems +- Crate plugins with modified items +- Custom spawners +- Any plugin that modifies NBT data + +Without it, shops may not properly recognize custom items. + +--- + +## Common Questions + +### Do I need this if I don't use custom item plugins? + +No. +If you only use vanilla items, this module is not necessary. + +### Does this affect performance? + +The module only activates enhanced matching when needed. + +Normal item matching remains fast and efficient. + +### Will it break existing shops? + +No. +It improves compatibility and matching accuracy without modifying existing shop data. + +--- + +## Summary + +ItemMatcherPlus: + +- Improves item matching accuracy +- Adds support for major custom item plugins +- Prevents stacking and trade issues +- Requires no configuration +- Activates automatically + +If you run a heavily customized economy server, this module is highly recommended. \ No newline at end of file diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md index ba87606698..d4ae7d129a 100644 --- a/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/lands.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/lands.md index 06296f5779..7671fcdfe0 100644 --- a/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/lands.md +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/lands.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/openinv.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/openinv.md index c51f628615..4807d57873 100644 --- a/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/openinv.md +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/openinv.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md new file mode 100644 index 0000000000..c2136320b0 --- /dev/null +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md @@ -0,0 +1,138 @@ +# SimpleClaimSystem + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and SimpleClaimSystem. + +It ensures that shop creation and trading respect land ownership and claim permissions defined by SimpleClaimSystem. + +--- + +## What Does It Do? + +SimpleClaimSystem allows players to claim land and protect it from unauthorized interaction. + +Without compatibility: + +- Players could create shops inside claims they do not own. +- Visitors might trade inside protected areas. +- Claim protection might not apply correctly to shops. + +The SimpleClaimSystem compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops within their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a SimpleClaimSystem claim. +- Whether the player has permission within that claim. +- Whether claim rules allow shop interaction. + +If the action is not permitted by the claim, QuickShop blocks it. + +If the location is outside any claim, default QuickShop behavior applies. + +--- + +## Claim Owner Control + +With this module enabled: + +- Claim owners can create and manage shops inside their claim. +- Trusted players follow claim-based permissions. +- Visitors are restricted unless explicitly allowed. +- Claim protection rules apply automatically to shop interactions. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install SimpleClaimSystem. +2. Install the QuickShop SimpleClaimSystem compat module. +3. Restart your server. + +The module activates automatically if SimpleClaimSystem is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If SimpleClaimSystem is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Enable owner override for easier management. + +This ensures players maintain control over their protected land. + +--- + +## Common Questions + +### Can players create shops in someone else's claim? + +Only if claim permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can allow shops outside claims or restrict them. + +### What happens if SimpleClaimSystem is removed? + +QuickShop will revert to default behavior and stop checking claim permissions. + +--- + +## Summary + +The SimpleClaimSystem compat module: + +- Enforces claim-based permissions +- Prevents unauthorized shop creation +- Protects land from unwanted trading +- Requires minimal setup + +It is recommended for servers running SimpleClaimSystem. \ No newline at end of file diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md index a84dbf057b..4dfa8ae97c 100644 --- a/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/towny.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/towny.md index 52ab4818f4..b26c19d335 100644 --- a/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/towny.md +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/towny.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -26,7 +26,7 @@ Town sub-command allow you switch a quickshop between regular shop and town shop For a nation shop, the shop owner will changed to nation fake player created by Towny, and use Nation's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from nation Towny account.\ +All purchases will deposit or withdraw money from nation Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Nation Shop. @@ -35,7 +35,7 @@ If Plot type restriction is enabled, only a specific Plot type can create a Nati For a town shop, the shop owner will changed to town fake player created by Towny, and use Town's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from town Towny account.\ +All purchases will deposit or withdraw money from town Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Town Shop. @@ -88,7 +88,7 @@ bank-mode: ## Permission Override -By adjust configuration, you're allow mayor or king automaticlly grant administrator permission on all shops in their management range. +By adjust configuration, you're allow mayor or king automatically grant administrator permission on all shops in their management range. ```yaml #Should allow Mayor grant the shop administrator permission on they town. @@ -168,7 +168,7 @@ This causes Towny and QuickShop Hikari to use accounts with the same name but di You can adjust the option in configuration to enable workaround. -NOTE: It will force turned on if detected EssentialsX installed on your server.\ +NOTE: It will force turned on if detected EssentialsX installed on your server. At present, we do not provide a method for disable it. ```yaml diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md new file mode 100644 index 0000000000..0189958495 --- /dev/null +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md @@ -0,0 +1,138 @@ +# UltimateClaims + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and UltimateClaims. + +It ensures that shop creation and trading respect land claim permissions managed by UltimateClaims. + +--- + +## What Does It Do? + +On servers using land-claim plugins, players protect areas of the world from unauthorized interaction. + +Without compatibility: + +- Players may create shops inside claims they do not own. +- Visitors might trade in areas where they should not. +- Claim protection rules might not apply correctly to shops. + +The UltimateClaims compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops inside their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a claim. +- Whether the player has permission in that claim. +- Whether claim rules allow shop interaction. + +If the action violates claim settings, QuickShop blocks it. + +Outside of claims, normal QuickShop behavior applies. + +--- + +## Claim Owner Permissions + +With this module enabled: + +- Claim owners can create and manage shops within their claim. +- Trusted players follow claim permission settings. +- Visitors are restricted based on claim configuration. +- Shop actions outside of claims behave normally. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install UltimateClaims. +2. Install the QuickShop UltimateClaims compat module. +3. Restart your server. + +If UltimateClaims is detected on startup, compatibility activates automatically. + +No additional linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Common options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If UltimateClaims is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Keep owner override enabled for better control. + +This ensures players maintain full control over their protected land. + +--- + +## Common Questions + +### Can players create shops inside someone else's claim? + +Only if the claim permissions allow it. + +Otherwise, QuickShop will block the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can choose to restrict shops to claimed land only. + +### What happens if UltimateClaims is removed? + +QuickShop returns to normal behavior without claim checks. + +--- + +## Summary + +The UltimateClaims compat module: + +- Protects claimed land from unauthorized shop usage +- Enforces claim-based permissions +- Integrates smoothly with land-claim servers +- Requires minimal setup + +It is recommended for any server running UltimateClaims. \ No newline at end of file diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md index 87a71a205c..6437754503 100644 --- a/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md @@ -2,8 +2,10 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. Find out more [here](../modules/shops/worldedit.md). + +Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. \ No newline at end of file diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/development/01-getting-start.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/development/01-getting-start.md index 92b773451e..0e78e52367 100644 --- a/i18n/fr-FR/docusaurus-plugin-content-docs/current/development/01-getting-start.md +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/development/01-getting-start.md @@ -6,8 +6,8 @@ This series of articles will help you build extensions for QuickShop-Hikari or i ## License -QuickShop-Hikari is open source using the [GPLv3](https://www.gnu.org/licenses/quick-guide-gplv3.en.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari).\ -You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the GPLv3 agreement. +QuickShop-Hikari is open source using the [AGPLv3](https://www.gnu.org/licenses/agpl-3.0.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari). +You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the AGPLv3 agreement. ## 🚧Don't trust Javadoc too much @@ -48,7 +48,7 @@ QuickShop-Hikari divides operation sources into three types: - Server Main Thread - Async Thread (any other threads but not server main thread) -- Hybird +- Hybrid If you access the API through the wrong thread, QuickShop-Hikari will force a runtime error to be thrown. @@ -58,4 +58,4 @@ For APIs that may trigger network IO or long-time disk IO, you are required not You can see [Util.ensureThread()](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/3d1d271e1106ea1c83cc6068f8232ab7c7860918/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/util/Util.java#L351) and find out the requirements of the different APIs by looking up their use. APIs that do not use Util.ensureThread() are allowed to be called from any thread by default. -You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. +You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. \ No newline at end of file diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md index aa2404c594..7828d414ad 100644 --- a/i18n/fr-FR/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md @@ -10,7 +10,7 @@ ShopManager manager = api.getShopManager(); ## Getting a shop -Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates.\ +Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates. QuickShop-Hikari's store is only bound to one half of "Large Chest", so to get the store, you need to query both the cube itself and its associated cube. The good thing is that there is an API in the plugin that allows you to handle this situation very easily. @@ -71,7 +71,7 @@ manager.deleteShop(shop) // Permanently delete this store, both memory and datab ## Identify a store -Please note that store locations are technically variable and you should not use coordinates to identify a store.\ +Please note that store locations are technically variable and you should not use coordinates to identify a store. Also RuntimeRandomUniqueId should not be used to identify the store, as the name suggests, the value changes every time the server restarts, it should only be used to handle scenarios where the player interacts with the server. ```java diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md index 543f1851da..4f839ed652 100644 --- a/i18n/fr-FR/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md @@ -1,6 +1,6 @@ # 0x05 Per shop permission -QuickShop-Hikari has a per shop permission management system.\ +QuickShop-Hikari has a per shop permission management system. Therefore, for a normal permission node check is not enough, you need to attach an additional check. ## Check with shop diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/development/06-protocol-system.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/development/06-protocol-system.md index 5d37a15536..0380b789f9 100644 --- a/i18n/fr-FR/docusaurus-plugin-content-docs/current/development/06-protocol-system.md +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/development/06-protocol-system.md @@ -15,30 +15,30 @@ This documentation will guide developers through the components, implementation - **Purpose**: Manages packet handling and initialization logic. - **Interface**: `PacketHandler` - **Key Methods**: - - `Map> factories()` - - Retrieves a map of supported `PacketFactory` instances keyed by game versions. - - `void initialize()` - - Initializes the packet handler. - - `Optional> factory(String version)` - - Retrieves a `PacketFactory` for a specific game version. + - `Map> factories()` + - Retrieves a map of supported `PacketFactory` instances keyed by game versions. + - `void initialize()` + - Initializes the packet handler. + - `Optional> factory(String version)` + - Retrieves a `PacketFactory` for a specific game version. ### 2. **PacketFactory** - **Purpose**: Creates and sends specific packet types. - **Interface**: `PacketFactory` - **Supported Packets**: - - **Spawn Packet**: - - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. - - Example Use: Representing shop items visually. - - **Metadata Packet**: - - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. - - Example Use: Updating item display name or properties. - - **Velocity Packet**: - - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. - - Example Use: Custom animations for virtual items. - - **Destroy Packet**: - - Removes the entity from the client view. Created using `createDestroyPacket()`. - - Example Use: Unloading or removing a virtual display item. + - **Spawn Packet**: + - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. + - Example Use: Representing shop items visually. + - **Metadata Packet**: + - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. + - Example Use: Updating item display name or properties. + - **Velocity Packet**: + - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. + - Example Use: Custom animations for virtual items. + - **Destroy Packet**: + - Removes the entity from the client view. Created using `createDestroyPacket()`. + - Example Use: Unloading or removing a virtual display item. Developers implementing custom `PacketFactory` should ensure these packets are correctly handled and optimized for performance. @@ -46,24 +46,24 @@ Developers implementing custom `PacketFactory` should ensure these packets are c - **Purpose**: Oversees the lifecycle of virtual display items and integrates with packet handlers. - **Key Features**: - - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). - - Manages virtual display items mapped to chunks. - - Provides thread-safe operations for adding and removing display items. + - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). + - Manages virtual display items mapped to chunks. + - Provides thread-safe operations for adding and removing display items. ### 4. **VirtualDisplayItem** - **Purpose**: Represents a virtual item displayed to players. - **Key Features**: - - Generates and caches packets for spawning, metadata, velocity, and destruction. - - Manages packet senders for each player. - - Handles spawn and removal operations dynamically. + - Generates and caches packets for spawning, metadata, velocity, and destruction. + - Manages packet senders for each player. + - Handles spawn and removal operations dynamically. ### 5. **ProtocolLibHandler and PacketEventsHandler** - **Purpose**: Provide implementations of `PacketHandler` using ProtocolLib and PacketEvents, respectively. - **Differences**: - - `ProtocolLibHandler` leverages ProtocolLib API. - - `PacketEventsHandler` uses the PacketEvents library. + - `ProtocolLibHandler` leverages ProtocolLib API. + - `PacketEventsHandler` uses the PacketEvents library. --- @@ -140,11 +140,11 @@ public class CustomPacketFactory implements PacketFactory { Packet factories are provided for specific game versions through two primary implementations: - **ProtocolLib**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` - **PacketEvents**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` --- diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md new file mode 100644 index 0000000000..aebc035f87 --- /dev/null +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md @@ -0,0 +1,297 @@ +# Interaction System (Developer Guide) + +The Interaction System allows developers to fully customize how players interact with shops. + +As of 6.2.0.11, the system has been redesigned to be: + +- Modular +- Extensible +- Thread-safe +- Fully customizable by third-party addons + +This guide will walk you through: + +1. What the Interaction System is +2. Getting the `InteractionManager` +3. Understanding `InteractionType` +4. Understanding `InteractionBehavior` +5. Registering custom interactions +6. Best practices + +--- + +# Overview + +The Interaction System is composed of three main components: + +| Component | Purpose | +| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| `InteractionType` | Describes **what kind of click happened** (standing, sneaking, left-click, sign, shopblock, etc.) | +| `InteractionBehavior` | Describes **what action should happen** when that type is triggered | +| `InteractionManager` | Central registry that manages interactions and behaviors | + +This separation allows developers to: + +- Add new click types +- Add new behaviors +- Override existing ones +- Extend QuickShop without modifying core code + +--- + +# Getting the InteractionManager + +To begin registering custom interactions, you must retrieve the `InteractionManager` instance. + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +If you are working directly with the plugin instance: + +```java +InteractionManager manager = QuickShop.getInstance().getInteractionManager(); +``` + +Once obtained, you can: + +- Register new interaction types +- Register new behaviors +- Override existing behaviors + +--- + +# Understanding InteractionType + +`InteractionType` represents **how** a player interacted with a shop. + +Examples include: + +- `STANDING_LEFT_CLICK_SIGN` +- `STANDING_RIGHT_CLICK_SHOPBLOCK` +- `SNEAKING_LEFT_CLICK_CONTAINER` +- etc. + +Each `InteractionType` defines: + +- Player stance (standing/sneaking) +- Click type (left/right) +- Target (sign/shopblock/container) + +InteractionTypes do NOT define behavior — they only define the trigger. + +--- + +# Understanding InteractionBehavior + +`InteractionBehavior` defines **what happens** when an interaction is triggered. + +Examples of built-in behaviors: + +- `TRADE_INTERACTION` +- `TRADE_UI` +- `CONTROL_PANEL` +- `CONTROL_PANEL_UI` +- `NONE` + +A behavior: + +- Executes logic +- May open GUIs +- May send chat panels +- May directly trade items +- Can cancel or modify flow + +This separation makes it easy to reuse behaviors across multiple interaction types. + +--- + +# Registering Custom Interactions + +There are two things you can register: + +- A custom `InteractionType` +- A custom `InteractionBehavior` + +--- + +## Creating a Custom InteractionBehavior + +Create a class implementing `InteractionBehavior`. + +Example: + +```java +public class MyTradeBehavior implements InteractionBehavior { + + @Override + public String getKey() { + return "MY_CUSTOM_TRADE"; + } + + @Override + public void execute(InteractionClick click) { + Player player = click.getPlayer(); + Shop shop = click.getShop(); + + player.sendMessage("You triggered my custom interaction!"); + + // Add your custom logic here + } +} +``` + +Then register it: + +```java +InteractionManager manager = api.getInteractionManager(); +manager.behavior(new MyTradeBehavior()); +``` + +Now your behavior is available for use. + +--- + +## Creating a Custom InteractionType + +You may also register custom interaction types if you want to introduce new trigger definitions. + +Example: + +```java +public class MyCustomInteraction implements InteractionType { + + @Override + public String getKey() { + return "STANDING_DOUBLE_CLICK_SIGN"; + } + + @Override + public boolean matches(InteractionClick click) { + // Define custom logic to detect this interaction + return click.isStanding() + && click.isSign() + && click.isDoubleClick(); + } +} +``` + +Register it: + +```java +manager.interaction(new MyCustomInteraction()); +``` + +--- + +# Binding Types to Behaviors + +The InteractionManager internally maps interaction types to behaviors based on configuration and registration order. + +Once your behavior is registered: + +- It can be referenced in `interaction.yml` +- Or attached programmatically + +Example interaction.yml usage: + +```yaml +STANDING_LEFT_CLICK_SIGN: MY_CUSTOM_TRADE +``` + +--- + +# The InteractionClick Object + +When your behavior executes, you receive an `InteractionClick` object. + +It provides: + +- `getPlayer()` +- `getShop()` +- `getLocation()` +- `isSneaking()` +- `isSign()` +- `isShopBlock()` +- etc. + +This gives full context for safe execution. + +--- + +# Advanced: Overriding Built-in Behavior + +If you register a behavior using the same key as an existing one, your behavior can override the default. + +⚠️ Be careful when doing this — you are replacing core functionality. + +--- + +# Best Practices + +### Always Use Unique Keys + +Avoid naming collisions: + +``` +MYPLUGIN_CUSTOM_BEHAVIOR +``` + +### Keep Behavior Lightweight + +Do not block the main thread with: + +- Heavy database calls +- File IO +- Network calls + +Use async tasks if needed. + +### Respect Permissions + +Always validate: + +```java +if (!player.hasPermission("myplugin.use")) { + return; +} +``` + +### Avoid Hard Overrides Unless Necessary + +Instead of replacing built-in behaviors, consider extending them. + +--- + +# Example: Full Minimal Implementation + +```java +public class ExampleAddon { + + public void register(QuickShopAPI api) { + + InteractionManager manager = api.getInteractionManager(); + + manager.behavior(new MyTradeBehavior()); + manager.interaction(new MyCustomInteraction()); + } +} +``` + +--- + +# Conclusion + +The Interaction System is designed to allow: + +- Full extensibility +- Clean separation of triggers and actions +- Easy integration for third-party developers + +By retrieving the `InteractionManager`: + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +You gain full control over how shops respond to player actions. \ No newline at end of file diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/development/08-tax-manager.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/development/08-tax-manager.md new file mode 100644 index 0000000000..72a56f9e88 --- /dev/null +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/development/08-tax-manager.md @@ -0,0 +1,266 @@ +# Tax System (Developer Guide) + +The QuickShop tax system allows server owners and developers to define how transaction taxes are calculated, distributed, and extended. + +As of 6.2.0.11, the tax system has been fully rewritten to provide: + +- A flexible TaxManager +- Pluggable TaxProvider support +- Progressive taxation +- Tax targeting (shop owner, interacting player, or both) +- Custom extension capability for third-party addons + +This guide explains how to work with the tax system programmatically. + +--- + +# Overview + +The tax system is composed of three core components: + +TaxManager +Responsible for coordinating tax calculation and execution. + +TaxProvider +Defines how tax values are calculated. + +TaxRates +Represents calculated tax results for a transaction. + +The system is designed to allow custom providers to be registered and used without modifying core logic. + +--- + +# Getting the TaxManager + +To work with the tax system, retrieve the TaxManager from the ShopManager. + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +Once obtained, you can: + +- Access current tax configuration +- Register custom tax providers +- Calculate tax values +- Hook into tax events + +--- + +# How the Tax System Works + +During a shop transaction: + +1. A base price is determined. +2. The TaxManager selects the active TaxProvider. +3. The TaxProvider calculates applicable tax. +4. A TaxRates object is produced. +5. The system applies the tax to: + + - Shop owner + - Interacting player + - Or both (depending on configuration) + +This architecture allows tax behavior to be modified without altering transaction logic. + +--- + +# TaxProvider + +A TaxProvider defines how tax values are calculated. + +You may create your own provider to implement: + +- Progressive tax brackets +- Flat percentage tax +- Conditional tax rules +- Region-based tax +- Rank-based tax +- Time-based tax + +Example minimal provider: + +```java +public class MyCustomTaxProvider implements TaxProvider { + + @Override + public TaxRates calculateTax(TaxContext context) { + + double basePrice = context.getPrice(); + + double taxAmount = basePrice * 0.05; // 5% flat tax + + return new TaxRates() + .ownerTax(taxAmount) + .buyerTax(0.0); + } +} +``` + +Then register it: + +```java +taxManager.provider(new MyCustomTaxProvider()); +``` + +Once registered, your provider will be used for tax calculations. + +--- + +# TaxRates + +TaxRates represents the result of a tax calculation. + +It typically contains: + +- Owner tax amount +- Buyer tax amount +- Total tax impact +- Metadata (if applicable) + +The transaction system will read from TaxRates and apply deductions accordingly. + +--- + +# Progressive Taxation + +The built-in system supports progressive tax structures. + +This allows server administrators to tax based on: + +- Player balance +- Shop owner balance +- Configured tax brackets + +Example configuration concept: + +- 0–10,000 balance → 1% tax +- 10,000–100,000 → 2% tax +- 100,000+ → 3% tax + +Developers can extend or override this logic inside a custom TaxProvider. + +--- + +# Targeting Tax + +The new tax system allows taxes to be applied to: + +- Shop owner +- Interacting player +- Both + +This is controlled via configuration, but custom providers can override distribution logic by adjusting TaxRates output. + +Example: + +```java +return new TaxRates() + .ownerTax(basePrice * 0.02) + .buyerTax(basePrice * 0.01); +``` + +--- + +# Registering a Custom TaxProvider + +To replace or extend tax logic: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); + +taxManager.provider(new MyCustomTaxProvider()); +``` + +You may register only one primary provider at a time. If multiple providers are needed, implement internal delegation within your custom provider. + +--- + +# Tax Events + +The tax system integrates with the event system. + +The modern event used is: + +ShopEnhancedTaxEvent + +This replaces legacy tax events and provides improved context, including: + +- Transaction builder reference +- TaxRates object +- Modification capability before final execution + +You can listen for the event and modify tax behavior dynamically: + +```java +@EventHandler +public void onTax(ShopEnhancedTaxEvent event) { + + TaxRates rates = event.getTaxRates(); + + // Example: Give VIP players reduced owner tax + if (event.getOwner().hasPermission("vip.tax.discount")) { + rates.ownerTax(rates.getOwnerTax() * 0.5); + } +} +``` + +--- + +# Best Practices + +Always keep tax calculations lightweight. + +Avoid: + +- Heavy database queries inside calculateTax +- Blocking network calls +- Long-running computations + +If complex logic is required, pre-cache required data outside the tax execution path. + +Ensure negative tax values are not returned unless intentional. + +Always validate final amounts before applying modifications. + +Respect configuration hierarchy unless intentionally overriding it. + +--- + +# Example Full Implementation + +```java +public class ExampleTaxAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + TaxManager taxManager = manager.taxManager(); + + taxManager.provider(new MyCustomTaxProvider()); + } +} +``` + +--- + +# Conclusion + +The new tax system is designed for: + +- Flexibility +- Extensibility +- Clean separation of concerns +- Future expansion + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +You gain full control over how QuickShop calculates and applies tax during transactions. \ No newline at end of file diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/development/09-layout-provider.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/development/09-layout-provider.md new file mode 100644 index 0000000000..55e3cd3e91 --- /dev/null +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/development/09-layout-provider.md @@ -0,0 +1,275 @@ +# Shop Layout Provider (Developer Guide) + +The Shop Layout Provider system allows developers to customize how shop signs are structured and rendered. + +As of 6.2.0.11, shop layouts are no longer hardcoded. Instead, they are controlled through the `IShopLayoutProvider` interface, which allows: + +- Custom sign line ordering +- Per-shop-type layouts (BUYING, SELLING, FROZEN, or custom types) +- Dynamic layout resolution +- Complete replacement of the default layout system + +This guide explains how to access, override, and implement a custom layout provider. + +--- + +# Overview + +The layout provider controls how shop sign lines are arranged. + +Instead of hardcoding: + +Line 1 → Header +Line 2 → Trading info +Line 3 → Item +Line 4 → Price + +The system now allows full customization through: + +- Config-based layout definitions +- Custom `IShopLayoutProvider` implementations +- Runtime overrides + +The default implementation is `SimpleShopLayoutProvider`. + +--- + +# Accessing the Layout Provider + +To retrieve the current layout provider: + +```java +ShopManager manager = api.getShopManager(); +IShopLayoutProvider provider = manager.shopLayoutProvider(); +``` + +To replace the layout provider with a custom one: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Once replaced, your implementation will control how shop layouts are generated. + +--- + +# Understanding IShopLayoutProvider + +`IShopLayoutProvider` defines how layout data is retrieved and resolved. + +It is responsible for: + +- Providing layout configuration per shop type +- Determining which layout to use +- Supplying formatted line keys +- Allowing future extensibility + +The default implementation reads layout definitions from configuration and applies them based on shop type. + +--- + +# Default Layout Example + +The default configuration-based layout looks like this: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +Each line maps to a layout component key. + +An empty string (`""`) leaves that line blank. + +The layout provider resolves these keys into actual sign content. + +--- + +# Creating a Custom Layout Provider + +To override the default behavior, implement `IShopLayoutProvider`. + +Example minimal implementation: + +```java +public class MyCustomLayoutProvider implements IShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + + ShopLayout layout = new ShopLayout(); + + layout.setLine(1, "Custom Header"); + layout.setLine(2, "Owner: " + shop.getOwnerName()); + layout.setLine(3, shop.getItem().getType().name()); + layout.setLine(4, "$" + shop.getPrice()); + + return layout; + } +} +``` + +Then register it: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Your layout will now control all shop sign formatting. + +--- + +# Per-Type Layout Control + +Because the system no longer depends on the legacy ShopType enum, layouts can support: + +- Built-in types (BUYING, SELLING, FROZEN) +- Custom shop types +- Addon-defined shop types + +Your provider can determine layout logic dynamically: + +```java +@Override +public ShopLayout provideLayout(Shop shop) { + + if (shop.getShopType().key().equals("FROZEN")) { + return frozenLayout(shop); + } + + return defaultLayout(shop); +} +``` + +This allows conditional formatting, localization adjustments, or special event styling. + +--- + +# Advanced Customization + +A custom layout provider can: + +- Pull data from external plugins +- Inject dynamic placeholders +- Modify layout per player +- Apply formatting logic +- Override color schemes +- Apply region-based formatting +- Implement animated sign systems + +Because the layout provider is resolved at runtime, you can compute layouts dynamically instead of reading static config. + +--- + +# Replacing vs Extending the Default Provider + +You have two options: + +Replace entirely: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Or extend the default implementation: + +```java +public class ExtendedLayoutProvider extends SimpleShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + ShopLayout base = super.provideLayout(shop); + + base.setLine(1, "[Extended] " + base.getLine(1)); + + return base; + } +} +``` + +Extending is safer if you only want to modify small portions. + +--- + +# Best Practices + +Keep layout generation lightweight. + +Avoid: + +- Heavy database queries +- Blocking IO +- Complex network calls + +Layout generation runs during shop updates and sign refresh events. + +Always handle null values safely. + +Ensure layout line count does not exceed sign limits. + +Avoid hardcoding shop type names unless necessary. + +If your layout supports custom shop types, validate their keys properly. + +--- + +# Example Full Registration + +```java +public class LayoutAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + + manager.shopLayoutProvider(new MyCustomLayoutProvider()); + } +} +``` + +--- + +# Conclusion + +The Shop Layout Provider system allows complete control over shop sign structure. + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +``` + +And setting: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +You can redefine how every shop is displayed on the server. + +This system was designed to support: + +- Extensibility +- Custom shop types +- Localization +- Dynamic formatting +- Future expansion \ No newline at end of file diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/faq/compare-reremake.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/faq/compare-reremake.md index aaa1a9e507..6b39f02520 100644 --- a/i18n/fr-FR/docusaurus-plugin-content-docs/current/faq/compare-reremake.md +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/faq/compare-reremake.md @@ -64,7 +64,7 @@ If you are a Reremake user, you may be confused about the differences between Hi ## Which one should I use? Well, it depends on what your needs are.\ -If you have an old server (<1.20) instance, Reremake is your only choice.\ +If you have an old server ({'<'}1.20) instance, Reremake is your only choice.\ ~~If you are in China which has GFW interfere, you also should consider Reremake because it doesn't need to load libraries from Global Internet.~~ Solved in 6.0.0.0. If none of these applies, give Hikari a try! diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md index 551f579e7c..172be3a69b 100644 --- a/i18n/fr-FR/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md @@ -1,8 +1,8 @@ # Where Addons/Compacts is -Addons and Compatilibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. +Addons and Compatibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. -- Open Modrinth versions page, locate the version your're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) +- Open Modrinth versions page, locate the version you're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) - Frantically slide your mouse wheel down until the lowest end of the page. - You get it! diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/internal/database-schema.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/internal/database-schema.md index fea685e4fc..45e04adb56 100644 --- a/i18n/fr-FR/docusaurus-plugin-content-docs/current/internal/database-schema.md +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/internal/database-schema.md @@ -4,17 +4,17 @@ This chapter will explain the implementation details of QuickShop Hikari's datab ## Tables -This section explains the database tables created by QuickShop-Hikari.\ -Unless otherwise specified, the initial `qs_` in table name is the table prefix.\ +This section explains the database tables created by QuickShop-Hikari. +Unless otherwise specified, the initial `qs_` in table name is the table prefix. For the latest code definition for each table, see: [DataTables.java](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/hikari/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/database/DataTables.java) ### `data` -This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information.\ -No matter what, a data record should not be modified after it is created, until it got deleted.\ +This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information. +No matter what, a data record should not be modified after it is created, until it got deleted. Any new changes to the shop should create a new copy, apply the changes to the copy, and insert it as a new record. -Basiclly, Copy-on-write. +Basically, Copy-on-write. A data record only be deleted from the database when no any table references their `data_id`. @@ -29,7 +29,7 @@ A data record only be deleted from the database when no any table references the | unlimited | BIT NOT NULL | 0 | Indicates whether this store is an unlimited store, 0=Limited, 1=Unlimited | | hologram | BIT NOT NULL | 0 | Indicates the suspension status of this store's display item, 0=Follow global settings, 1=Disabled | | tax_account | VARCHAR(36) | NULL | The uuid for tax account, If it is not NULL, tax will be paid to the specified account | -| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serilized to JSON string | +| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serialized to JSON string | | extra | LONGTEXT | Empty Yaml | Used to store experimental settings of QuickShop Hikari or persistent data of other plugins | | inv_wrapper | VARCHAR(255) NOT NULL | N/A | Unique identifier for InventoryWrapper for this shop data entry | | inv_symbol_link | TEXT NOT NULL | N/A | Unique Inventory symbol used to pass to InventoryWrapper, for locating inventory | @@ -38,7 +38,7 @@ A data record only be deleted from the database when no any table references the ### `shops` -This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes.\ +This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes. Multiple `shop_id` can correspond to the same `data_id`. | Column Name | DataType | Default | Description | diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/cmd-alias.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/cmd-alias.md index 53f1577685..e6ed381c0d 100644 --- a/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/cmd-alias.md +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/cmd-alias.md @@ -23,7 +23,7 @@ custom-commands: - cshop ``` -Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect.\ +Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect. The effect should be like this: ![command-alias](./img/command-alias.png) diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/datasource.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/datasource.md index 6fc1bd8931..3fd3a8bdee 100644 --- a/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/datasource.md +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/datasource.md @@ -48,7 +48,7 @@ Execute the `/quickshop export` command in console, quickshop will export a zip ![exported data](img/database-export.png) -Stop your database, switch the datasource, and start the server.\ +Stop your database, switch the datasource, and start the server. You may noticed all shops are gone, because new datasources had no data inside, we will restore them from export. Rename that exported ZIP file to `recovery.zip`, execute `/quickshop recovery` and restart your server, all shops should back. diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/itemmatcher.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/itemmatcher.md index 56be243019..922907be27 100644 --- a/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/itemmatcher.md +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/itemmatcher.md @@ -4,7 +4,7 @@ ItemMatcher is a utility used by QuickShop-Hikari to compare the items, it is th :::caution -If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse.\ +If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse. **TL;DR: Keep default unless you know what you're doing.** ::: @@ -26,10 +26,10 @@ matcher: work-type: 1 ``` -By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility.\ +By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility. But still, you can toggle to QuickShop Item Matcher if you need to customize the comparing or running QuickShop on the server jar which have bug affect the Bukkit comparing system. -## Customize the metadata compareing +## Customize the metadata comparing Customize only works under QuickShop Item Matcher. diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md index fc2af69d2b..d04e8f2783 100644 --- a/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md @@ -4,7 +4,7 @@ ItemStack Loader is a workaround for loading the Bukkit ItemStack. :::caution -Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossble. +Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossible. ::: diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/localization.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/localization.md index e9121e1a36..d47589ab9a 100644 --- a/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/localization.md +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/localization.md @@ -10,7 +10,7 @@ To help translate QuickShop-Hikari, please visit our [Crowdin Homepage](https:// ## Crowdin OTA -QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will overrided when you reload QuickShop-Hikari or restart your server. +QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will override when you reload QuickShop-Hikari or restart your server. Your installation will keep translations up-to-date without any touch. @@ -110,6 +110,16 @@ To disable the CrowdinOTA, please add it in the startup flag: -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager.enableCrowdinOTA=false ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +use-crowdin-ota: false +``` + ### Self-Hosted OTA Server If you self-hosted our translation server by using [CrowdinCopyDeploy](https://github.com/Ghost-chu/CrowdinCopyDeploy) tool, you're able to change the OTA server to yourself server. @@ -118,4 +128,12 @@ If you self-hosted our translation server by using [CrowdinCopyDeploy](https://g -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager= ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml +Use + +```yaml +crowdin-host: +``` \ No newline at end of file diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/shops/benefit.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/shops/benefit.md index 4d7a9c8f42..c59d92e6d1 100644 --- a/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/shops/benefit.md +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/shops/benefit.md @@ -37,3 +37,13 @@ By default, for security, QuickShop-Hikari disallow add offline players into sho ```bash -Dcom.ghostchu.quickshop.command.subcommand.SubCommand_Benefit.allowOffline=true ``` + +### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +shop.allow-offline-benefit: true +``` \ No newline at end of file diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/shops/control-panel b/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/shops/control-panel new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/shops/control-panel @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/shops/history.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/shops/history.md index fa891adeab..195b64a042 100644 --- a/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/shops/history.md +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/shops/history.md @@ -24,7 +24,7 @@ The History GUI displays the details of each recorded transaction and other usef ### Transaction details -When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed.\ +When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed. If you are checking the history of more than one store, the player head will be replaced with an item from the corresponding store. ![history-gui](./img/history-gui.png) diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md new file mode 100644 index 0000000000..c5ed3b3fe4 --- /dev/null +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md @@ -0,0 +1,90 @@ +# Shop Types + +QuickShop supports multiple shop types, allowing shops to behave differently depending on their mode. + +The built-in shop types are: + +- Selling +- Buying +- Frozen + +Each type changes how the shop interacts with players. + +--- + +## Selling Shop + +A Selling shop allows players to: + +- Buy items from the shop owner +- Pay money to receive items + +This is the most common shop type. + +--- + +## Buying Shop + +A Buying shop allows players to: + +- Sell items to the shop owner +- Receive money in exchange + +This is commonly used for: + +- Resource collection +- Server buy-back shops +- Automated material sinks + +--- + +## Frozen Shop + +A Frozen shop temporarily disables trading. + +While frozen: + +- No buying is allowed +- No selling is allowed +- The shop remains intact +- Staff or admins can manage it + +This is useful for: + +- Temporary suspensions +- Investigation +- Event locking +- Maintenance + +--- + +## Switching Shop Types + +Shop types can be changed through: + +- Control panel +- GUI control panel +- Admin commands + +Frozen mode is also available via: + +/qs freeze + +--- + +## Custom Shop Types + +As of 6.2.x, the system supports extensible shop types internally. + +While server owners use the built-in types, the system now allows future expansion through addons. + +--- + +## Summary + +Shop types allow you to: + +- Control how money flows +- Enable buy-back mechanics +- Temporarily disable shops +- Build advanced economic systems \ No newline at end of file diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md new file mode 100644 index 0000000000..18e0a47407 --- /dev/null +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md @@ -0,0 +1,217 @@ +# Sign Layout + +QuickShop allows you to fully customize how shop signs are structured. + +You can change: + +- What appears on each line +- The order of information +- Layout per shop type +- Whether certain lines are blank + +This gives you complete control over how shops look on your server. + +--- + +## How Sign Layout Works + +Shop signs have four lines. + +Instead of being hardcoded, QuickShop uses a configurable layout system. + +Each shop type can have its own layout: + +- SELLING +- BUYING +- FROZEN + +You define what each line displays using layout keys. + +--- + +## Configuration Location + +Sign layout is configured in `config.yml` under: + +```yaml +layout: +``` + +Example default configuration: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## Available Layout Keys + +Each line value refers to a built-in layout component. + +Common layout keys include: + +- `header` – The shop header line +- `trading` – Buy/Sell direction information +- `item` – Item name +- `price` – Shop price + +These keys are automatically formatted using your language file and formatting settings. + +--- + +## Leaving a Line Blank + +To leave a line empty, use: + +```yaml +line2: "" +``` + +This is useful if you want: + +- Minimalist signs +- Cleaner layouts +- Custom spacing +- Decorative formatting + +--- + +## Customizing Per Shop Type + +Each shop type can have a different layout. + +For example: + +```yaml +layout: + + SELLING: + line1: "header" + line2: "item" + line3: "price" + line4: "" + + BUYING: + line1: "header" + line2: "price" + line3: "item" + line4: "" + + FROZEN: + line1: "header" + line2: "" + line3: "item" + line4: "Frozen" +``` + +This allows you to visually differentiate: + +- Selling shops +- Buying shops +- Frozen shops + +--- + +## Practical Examples + +### Minimal Style + +```yaml +layout: + SELLING: + line1: "item" + line2: "price" + line3: "" + line4: "" +``` + +### Compact Economy Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "price" + line3: "item" + line4: "" +``` + +### Large Clear Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## How Updates Affect Layout + +When you change the layout: + +- Existing shop signs will update automatically when refreshed. +- New shops will use the updated format immediately. + +If needed, you can reload QuickShop to apply changes. + +--- + +## Best Practices + +- Keep important information visible (price and item). +- Avoid overly complex formatting. +- Test layout changes before deploying on large servers. +- Use different layouts for BUYING and SELLING to reduce confusion. + +--- + +## Common Questions + +### Can I add more than four lines? + +No. +Minecraft signs are limited to four lines. + +### Can I add colors? + +Colors are controlled by your language file and formatting settings. + +### Can I change layout without restarting? + +Yes, but reloading or refreshing shops is recommended to ensure full update. + +--- + +## Summary + +The Sign Layout system allows you to: + +- Fully customize shop sign appearance +- Create per-type layouts +- Simplify or expand shop information +- Improve clarity for players + +All layout customization is handled inside `config.yml`. diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md index abcc288db7..2a0d52d788 100644 --- a/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md @@ -8,19 +8,6 @@ This feature added in 6.0.0.0. By default, QuickShop-Hikari uses the default brand material from the configuration file, but you can modify it to other brands for your store with the command. -## Configuration - -```yaml - #The wall sign material. - #ACACIA_WALL_SIGN - #BIRCH_WALL_SIGN - #DARK_OAK_WALL_SIGN - #JUNGLE_WALL_SIGN - #OAK_WALL_SIGN - #SPRUCE_WALL_SIGN - sign-material: OAK_WALL_SIGN -``` - ## Change the material Use command `/quickshop sign ` to change your shop sign material. diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md new file mode 100644 index 0000000000..980bad10f2 --- /dev/null +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md @@ -0,0 +1,130 @@ +# Shop Sign Waxing + +QuickShop can automatically wax shop signs to prevent players from editing them manually. + +Waxing protects the integrity of your shop signs and helps prevent tampering, spoofing, and accidental modification. + +As of modern Minecraft versions, waxed signs cannot be edited unless they are unwaxed first. + +--- + +## What Is Sign Waxing? + +In Minecraft, waxing a sign locks it so that: + +- Players cannot edit the text +- Players cannot modify lines +- Accidental changes are prevented +- Malicious edits are blocked + +When enabled in QuickShop, shop signs are automatically waxed when created. + +--- + +## Why Use It? + +Sign waxing protects against: + +- Players editing price lines +- Changing item names on signs +- Spoofing shop information +- Accidental formatting issues +- Sign hijacking attempts + +On public servers, this feature is strongly recommended. + +--- + +## How It Works + +When a shop is created: + +1. QuickShop generates the shop sign. +2. The sign text is written. +3. The sign is automatically waxed (if enabled). + +If a shop is updated: + +- The sign will be safely updated by QuickShop. +- The wax state is maintained. + +Players cannot manually edit shop signs while waxing is enabled. + +--- + +## Configuration + +To enable or disable sign waxing, edit `config.yml`: + +```yaml +shop: + sign-wax: true +``` + +### true + +- Shop signs are automatically waxed. +- Players cannot edit the sign manually. + +### false + +- Shop signs behave like normal Minecraft signs. +- Players may edit them if permitted by the game. + +--- + +## Recommended Setting + +For most servers: + +```yaml +shop: + sign-wax: true +``` + +This ensures shop data stays accurate and secure. + +--- + +## Common Questions + +### Can admins still modify shop signs? + +QuickShop controls shop sign formatting. +Manual edits are not recommended. + +Admins should use: + +- Control panel +- Shop commands +- Direct configuration changes + +### Does waxing affect shop functionality? + +No. +Waxing only prevents manual text edits. +The shop continues to function normally. + +### Can players un-wax shop signs? + +No. +QuickShop manages the sign state automatically. + +--- + +## Best Practices + +- Keep sign-wax enabled on survival servers. +- Combine sign-wax with proper permissions. +- Avoid manually editing shop signs through other plugins. + +--- + +## Summary + +Sign Waxing: + +- Prevents tampering +- Requires no additional setup + +Enable it once and QuickShop handles the rest. \ No newline at end of file diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/shops/taxes.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/shops/taxes.md new file mode 100644 index 0000000000..1a273fd978 --- /dev/null +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/shops/taxes.md @@ -0,0 +1,92 @@ +# Taxation System + +QuickShop includes a taxation system designed to give server owners more flexibility and control over shop-based income. + +This system was revamped as of 6.2.0.11+ + +The new system allows you to: + +- Apply tax to shop owners +- Apply tax to buyers +- Apply tax to both +- Use progressive tax brackets +- Customize tax behavior in configuration + +This system replaces the legacy tax configuration. + +--- + +## How It Works + +During a transaction: + +1. The shop price is calculated. +2. Tax is calculated based on your configuration. +3. Tax is deducted from the configured target(s). +4. Remaining funds are distributed normally. + +You can configure: + +- Flat percentage tax +- Progressive tax based on player balance +- Tax accounts +- Distribution rules + +--- + +## Progressive Tax + +The new system allows you to tax based on balance brackets. + +Example concept: + +- 0 – 10,000 balance → 1% tax +- 10,000 – 100,000 → 2% tax +- 100,000+ → 3% tax + +This helps prevent extremely wealthy players from dominating the economy. + +--- + +## Who Pays the Tax? + +You can configure whether tax applies to: + +- The shop owner +- The buyer +- Both + +This gives you flexibility depending on your economy design. + +--- + +## Configuration + +All tax-related settings are located under the `shop-tax` section in `config.yml`. + +After updating to 6.2.0.11+, review your tax configuration carefully, as the old tax system has been replaced. + +--- + +## Why Use Tax? + +The taxation system can help: + +- Remove currency from circulation +- Fund server banks or towns +- Create sink mechanics +- Balance inflation +- Reward active players + +--- + +## Summary + +The new taxation system is: + +- Flexible +- Configurable +- Balance-aware +- Designed for modern economy servers + +Make sure to review your configuration after upgrading. \ No newline at end of file diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md new file mode 100644 index 0000000000..247c24712d --- /dev/null +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md @@ -0,0 +1,161 @@ +# WorldEdit & FAWE Support + +QuickShop includes built-in protection and integration for WorldEdit and FastAsyncWorldEdit (FAWE). + +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. + +You do not need to download or install any additional compatibility plugins. + +--- + +## What This Does + +WorldEdit and FAWE allow administrators and builders to: + +- Copy and paste regions +- Replace large areas of blocks +- Mass-delete regions +- Roll back areas +- Regenerate terrain + +Without protection, these operations could: + +- Create ghost shops +- Leave orphaned shop data in the database +- Duplicate shops unintentionally +- Delete containers without cleaning up shop data +- Cause inconsistencies between world and database + +QuickShop now automatically detects and safely processes WorldEdit and FAWE operations. + +--- + +## Built-In Behavior + +When WorldEdit or FAWE modifies blocks: + +- Shops removed via WorldEdit are properly deleted from the database. +- Shop data stays synchronized with world changes. +- Ghost shops are prevented. +- Mass block replacements will not leave broken shop entries behind. + +This applies to: + +- //set +- //replace +- //cut +- //paste +- //regen +- Region deletion +- Mass container removal + +No configuration is required. + +--- + +## FAWE Support + +FastAsyncWorldEdit (FAWE) is fully supported. + +Because FAWE processes edits asynchronously, QuickShop handles: + +- Region-thread safe processing +- Async block updates +- Safe shop deletion during batch edits + +You do not need to enable anything manually. + +--- + +## Removing Shops with WorldEdit + +If you delete containers (chests, barrels, etc.) using WorldEdit: + +QuickShop will automatically: + +- Detect the block removal +- Unregister the shop +- Clean the database entry +- Prevent ghost shops + +You do not need to run `/qs cleanghost` after WorldEdit usage in normal circumstances. + +--- + +## Copying and Pasting Shops + +If you copy and paste regions that contain shops: + +- Shop data will not duplicate incorrectly. +- Shop IDs remain consistent. +- Invalid pasted shops will not auto-register unless properly created. + +This prevents accidental duplication exploits. + +--- + +## Performance + +WorldEdit and FAWE operations can modify thousands of blocks at once. + +QuickShop processes these safely and efficiently: + +- Batch-aware cleanup +- Thread-safe region access (especially on Folia) +- Minimal performance impact during mass edits + +--- + +## Configuration + +There are no specific WorldEdit configuration options in QuickShop. + +Support is automatic and always enabled if WorldEdit or FAWE is detected. + +If WorldEdit is not installed, no extra code is executed. + +--- + +## Common Questions + +### Do I need the old WorldEdit compatibility jar? + +No. + +As of 6.2.0.11, WorldEdit support is built-in and the separate compatibility module has been removed. + +### Does this work with FAWE? + +Yes. FAWE is fully supported. + +### Will shops break if I use //set air? + +No. Shops will be safely removed and cleaned up. + +### Do I need to restart after installing WorldEdit? + +No. QuickShop detects WorldEdit automatically on startup. + +--- + +## Best Practices + +Even though QuickShop safely handles WorldEdit operations, it is recommended to: + +- Avoid copying shops intentionally unless required +- Use backups before large region edits +- Test large FAWE operations on staging servers when possible + +--- + +## Summary + +QuickShop’s built-in WorldEdit and FAWE integration ensures: + +- Safe mass edits +- No ghost shops +- Automatic database cleanup +- Thread-safe processing +- No extra modules required + +WorldEdit support is now a core feature of QuickShop. \ No newline at end of file diff --git a/i18n/fr-FR/docusaurus-plugin-content-docs/current/setup/install.md b/i18n/fr-FR/docusaurus-plugin-content-docs/current/setup/install.md index fd02cfa1cc..2fc7851f3b 100644 --- a/i18n/fr-FR/docusaurus-plugin-content-docs/current/setup/install.md +++ b/i18n/fr-FR/docusaurus-plugin-content-docs/current/setup/install.md @@ -1,13 +1,14 @@ # Installation -This page will walk you through the process of installing QuickShop-Hikari on your Spigot server. +This page will walk you through the process of installing QuickShop-Hikari on your PaperMC server. ## Requirements -- A [Spigot][spigot]-based Minecraft server (1.20 or higher, Java 21) - - You can also use [Paper][paper], which is a fork of Spigot for better compatibility, more features and higher performance. +- A [Paper][paper]-based Minecraft server (1.20 or higher, Java 21) - [Vault][vault] for bridging the economy system between QuickShop and your economy plugins. -- [ProtocolLib][plib] for virtual display item, Per-player localization. +- For virtual item displays, and per-player localization you need a supported protocol library: + - [ProtocolLib][plib] + - [PacketEvents][https://www.spigotmc.org/resources/packetevents-api.80279/] - Any Vault compatible economy plugin, such as [XConomy][xconomy], If you have [EssentialsX][essx], it will also works well. - A permission management plugin like [LuckPerms][luckperm]. @@ -15,13 +16,17 @@ In this document, we assume that you are using the latest version of QuickShop-H ## Installing dependencies -Before installing QuickShop-Hikari, you should make sure that you have all dependencies installed, including [Vault][vault], [ProtocolLib][plib], [XConomy][xconomy] (or [EssentialsX][essx] if you want) and [LuckPerms][luckperm]! +Before installing QuickShop-Hikari, you should make sure that you have all dependencies installed, including [Vault][vault], [ProtocolLib][plib] or \[PacketEvents]\[https\://www\.spigotmc.org/resources/packetevents-api.80279/], [XConomy][xconomy] (or [EssentialsX][essx] if you want) and [LuckPerms][luckperm]! Download the plugins and drop them into `plugins` folder and you're all set! +## Configuring the Display Protocol + +If you have both ProtocolLib and PacketEvents, and you want to utilize PacketEvents for your display items, you'll need to set it as such in config.yml: `shop. display-protocol: 'packetevents'` + ## Installing QuickShop-Hikari -Download the latest version of QuickShop-Hikari from [Modrinth][qs-modrinth], if you find multiple files that have `Compat-` prefix in file name, ignore them in this step.\ +Download the latest version of QuickShop-Hikari from [Modrinth][qs-modrinth], if you find multiple files that have `Compat-` prefix in file name, ignore them in this step. The only file you need to download should have a **Primary** tag like this in the image below: ![download primary file](./img/download-primary.png) @@ -52,12 +57,11 @@ For advanced permission setup, you can check [here](./permissions.md). Now QuickShop-Hikari is running on your server, for more settings, check the navigation panel on the left and see different sections. -[spigot]: https://www.spigotmc.org/wiki/buildtools/ [paper]: https://papermc.io/ -[vault]: https://www.spigotmc.org/resources/34315/ -[xconomy]: https://www.spigotmc.org/resources/75669/ +[vault]: https://www.spigotmc.org/resources/vaultunlocked.117277/ +[xconomy]: https://www.spigotmc.org/resources/xconomy.75669/ [essx]: https://modrinth.com/plugin/essentialsx -[plib]: https://www.spigotmc.org/resources/1997 +[plib]: https://www.spigotmc.org/resources/protocollib.1997/ [luckperm]: https://luckperms.net/ [qs-modrinth]: https://modrinth.com/plugin/quickshop-hikari [dc]: https://discord.gg/Bu3dVtmsD3 diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/addon/limited.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/addon/limited.md index 70af27e240..fae55a8c95 100644 --- a/i18n/he-IL/docusaurus-plugin-content-docs/current/addon/limited.md +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/addon/limited.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -41,8 +35,8 @@ Limit players to purchase up to 16 items per month. /quickshop limit period MONTH ``` -The system is based on the QuickShop-Hikari calendar system.\ -The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year.\ +The system is based on the QuickShop-Hikari calendar system. +The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year. Same for days, months and hours. Available time units: diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/addon/list.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/addon/list.md index 93d182f083..f20b91fd7b 100644 --- a/i18n/he-IL/docusaurus-plugin-content-docs/current/addon/list.md +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/addon/list.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/addon/plan.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/addon/plan.md index 52a6e79cb4..c10ef4df42 100644 --- a/i18n/he-IL/docusaurus-plugin-content-docs/current/addon/plan.md +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/addon/plan.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -18,7 +18,7 @@ Recorded data can be displayed from Hikari v2.0.0.0 onwards, but only after vers - All shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 1000 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `5` in server scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `5` in server scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Player Scope @@ -27,7 +27,7 @@ And still is Plan limitations, the list sorting is disturbed, so the display ord - All owned shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 50 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `4` in player scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `4` in player scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Showcase diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/addon/reforges.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/addon/reforges.md index 2a14509eb7..25fff1752a 100644 --- a/i18n/he-IL/docusaurus-plugin-content-docs/current/addon/reforges.md +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/addon/reforges.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.0.0.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md index 304d39bc05..6f9f51d250 100644 --- a/i18n/he-IL/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.1.1.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -44,7 +38,7 @@ _This is not necessary if you are using an H2 database._ ### Prepare for convert -To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console.\ +To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console. If a player is in the server, the conversion cannot be started. Once the conversion has begun, the server will be locked during the conversion process and no players will be able to join the server during the conversion. diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/addon/shopitemonly.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/addon/shopitemonly.md index c45062f8c2..1ccfe977b3 100644 --- a/i18n/he-IL/docusaurus-plugin-content-docs/current/addon/shopitemonly.md +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/addon/shopitemonly.md @@ -2,17 +2,11 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT - -::: - -This addon prevents players from putting non-store items into store containers.\ +This addon prevents players from putting non-store items into store containers. Does not apply to stores that use the item inventory redirection API (aka. InventoryWrapper API). This Addon will check for container (or transferring) items on events such as the player closing the container or hopper access. diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md new file mode 100644 index 0000000000..9c8b4f7407 --- /dev/null +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md @@ -0,0 +1,55 @@ +# 6.2.0.10 + +## Major Changes + +- Added support for 1.21.6 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.7 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.8 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Some internal updates for packetevents(2.9.0 is now required.) +- Updated Lands support + +## Addon Changes + +- Added MatcherPlus Addon + - Allows support for BreweryX and AdvancedItems stacks in shops with improved matching abilities +- Added FabledSkyblock Compat +- Added Dominion Compat +- Added HuskTowns Compat +- Added IridiumSkyblock Compat +- Added member-create for member creation in ARM compat +- Added admin-override and quickshop.arm.admin permission for admin overrides in ARM + +## Minor Changes + +- Added configurations for the coordinates of the display item. +- Added /qs toggledisplayall on/off server/owned + - Players need to have permission node quickshop.toggledisplayall.admin to toggle all on the server. +- Added ability to use abbreviations in /qs price and /qs create commands such as 2.5k for 2500 +- Added ability to set default display status using shop.default-display in config.yml + +## Fixes + +- Fixed issue with display item being sent to the moon on 1.21.5 +- Fixed issue where TRADE_UI interactions interfered with quick create. +- Fixed issue with displays on protocollib falling through the chest +- Fixed issue with signs on .9 and previous .10 snapshots on early versions +- Implemented some performance improvements for paper servers +- Fixed all outstanding issues with Folia usage.(thanks to RootB33R/SleazLee for contributions) + +## Possible 6.2.0.11 Features + +Here's an outline for some features that may arrive in 6.2.0.11: + +- Additional compats/addons that have been piling up. + - see: https://github.com/QuickShop-Community/QuickShop-Hikari/issues/1756 +- gradle?(interested to see compilation time uplifts) +- Update documentation +- Update configuration comments +- Update configuration system? + - auto updating? + - Allows removal of the update code +- Remove waste spigot modules? + - Any versions of 1.20 that can be discarded due to low use? +- Bug fixing, of course +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... \ No newline at end of file diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md new file mode 100644 index 0000000000..b41c88662a --- /dev/null +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md @@ -0,0 +1,173 @@ +## Outline + +- Update documentation +- Update configuration comments +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... + +# 6.2.0.11 + +## Major Changes + +- Removed Spigot Platform Modules, and stopped loading QS if Spigot is detected. This will mean that unless the protocol changes that we use for display items, QS won't need updated for each version. +- Revamped Economy Code Completely + - New classes for all economy-related systems + - Any economy-related or benefits-related events are incompatible with previous versions. +- Added sign layout customizations per-type allowing you to change how lines are configured, an empty string('') will leave an empty line for that line of the sign. + +``` + #The layout of signs for shops. + layout: + + #The layout of BUYING shops. + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of FROZEN shops. + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of SELLING shops. + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +- Add wildcard support for item blacklist patterns(thanks to bennycallanan) + - Added support for wildcard patterns in the item blacklist configuration, allowing users to block entire categories of items with simple patterns. + + - Features + - Wildcard patterns like \*_AXE and \*_SPAWN_EGG now work in blacklist configuration + - Supports \* for any characters and ? for single character matching + - Case-insensitive pattern matching +- Overhauled GUI system(thanks to Yusakidev) + - Implemented gui.yml configuration file for customizing the GUI. + - Implemented better filtering for qs browse + - Implement GUI system to be more stable, and less error prone. + - Added gui.yml for fully configurable GUI layouts and text + - Browse menu: search, sort (price/name/stock), and filter (all/buying/selling/in-stock) + - Staff menu: search functionality for player/staff selection + - Grouped item pages for better shop browsing + - Refactored all menu pages to use configurable display/lore +- Added worldedit compat to QS internally as it's widely used. +- Revamped the taxation system to be more flexible and easier to configure. + - introduced a new progressive tax system that allows you to tax based on the balance of players.(suggested by YuanYuanOwO) + - introduced the ability to tax the player interacting with the shop, the owner, or both + - all tax-related configurations have been moved under the shop-tax section of the config. this may require reconfiguration of your tax settings. + - added a new ShopEnhancedTaxEvent, deprecated the old ShopTaxEvent. + - Added a new TaxManager, and TaxProvider interfaces, this allows for custom tax providers to be added by addons/third-party developers. + +## Addons/Compats Changes + +- Added UltimateClaims compat +- Added SimpleClaimSystem compat +- Added Quests by Pika addon +- Added BetonQuest addon +- Added Pl3xMap addon +- MatcherPlus Compat Improvements + - Added support for CrazyCrates + - Added support for ExcellentCrates + - Added support for SilkSpawners. +- WorldGuard Compat Improvements(Thanks to golovin12) + - Added clear permission handling: + - Region owners and members automatically have permission to create and trade in their own regions. + - Other players must have the appropriate WorldGuard flags enabled (quickshophikari-create, quickshophikari-trade) to interact with shops. + - If a shop is located outside any region, default QuickShop behavior applies (no extra restrictions) +- Added colored markers based on shop state for bluemap(thanks to YusakiDev) +- Updated dynmap/towny addons to use the new ShopTypeEnhancedEvent instead of ShopTypeEvent. +- Removed worldedit compat, it's now included in the main plugin. +- Added support for global flags to the worldguard compat. + +## Internals/Developer APIs + +- Removed several deprecated methods and classes. +- Revamped the interaction manager. It is now more flexible and allows external additions + - This involves two classes InteractionBehavior and InteractionType. + - InteractionType details the type of interaction such as: STANDING_LEFT_CLICK_SIGN, STANDING_LEFT_CLICK_SHOP + - InteractionBehavior outlines a behavior for an InteractionType such as CONTROL_PANEL and TRADE_UI +- Added UserLimitCalculationEvent, which allows for custom limits to be applied to users. + - This is useful for limiting the number of shops a user can have, or adding on to the existing limits provided by the ranks system without needing to implement a new RankLimiter. +- Added a new ShopLayoutProvider interface, and default implementation. + - This allows for custom layouts to be used for shops, allowing for more customization. + - This also allows for developers to override the default layout provider and create their own implementation. +- How to make your own? + - Implement the classes you would like to then register with the InteractionManager: + - ```java + InteractionManager manager = QuickShop.getInstance().getInteractionManager(); + + manager.interaction(new MyTradeInteraction()); + manager.behavior(new MyTradeBehavior()); + ``` +- Replaced some Apache Commons calls that could be easily replaced with built-in java methods, reduces some calls by ~ 1100ms/method call +- Deprecated the ShopType enum, and the ShopTypeEvent. These are replaced with the new IShopType interface and implementing classes. + - The new event is ShopTypeEnhancedEvent. + - This allows for third-party addons to add their own shop types, and simplifies code checks for translations. +- Updated config system to use Boosted-yaml + - this allows for auto-updating of config files without complex update scripts + - this also allows for the config system to not be minecraft-dependent. +- Replaced logical PaperLib calls with native PaperAPI calls. + +## Minor Changes + +- Bump Java version up to 21 +- Added shop.display-allow-enchants to enable/disable enchantments for display items on shops. +- Added workaround for packetevents not supporting custom enchants on itemstacks for virtual display items. +- Using locale translations for shop-type in mode toggle icon(thanks to ExyiN) +- Bumped Residence version for the compat(thanks to YuanYuanOwO) +- add world whitelist support(thanks to wling-art) +- added /qs database save command, which saves all currently dirty-marked shops to the database. +- Split up interactions _SHOPBLOCK into _SHOPBLOCK and _CONTAINER. + - _SHOPBLOCK relates to shops, where _CONTAINER relates to shop-valid containers that are not currently shops. +- Added inventory as an option for command panel, this is useful for adding a secondary option for players to open a shop's inventory. +- Moved crowdin arguments from system properties to config.yml + - crowdin-host + - use-crowdin-ota + +## Fixes + +- Fixes issue with item price restrictions(thanks to maxcom1) +- Fixes issue with 1.20.x protocol lib displays(thanks to YuanYuanOwO) +- Fixes issue when no item is in hand for itemdebug(thanks to YuanYuanOwO) +- Fixes issue with dominion addon(thanks to YuanYuanOwO) +- Add a simple check to avoid this. If it is not own shop, reject limit request directly.(Thanks to YuanYuanOwO) +- Fix NPE by not setting tax for price in TransactionBuilder(thanks to maxcom1) +- Fixes /quickshop suggestprice to differentiate between buy/sell shops. (Thanks to MidSpike) +- PacketEvents ClassNotFoundException with ProtocolLib(thanks to wling-art) +- Reallocate block state access to region thread for shop creation(thanks to r00tbeerman) +- resolve SLF4J StaticLoggerBinder loading error(thanks to wling-art) +- sign hijacking issue by validating sign facing direction(thanks to wling-art) +- Performance improvements for QuickShop disabling to prevent potential freezes. +- Fixed issue with 1.20.4 packetevents virtual displays not staying put. +- Fixes critical issue in GriefPrevention compatibility plugin. +- Fixes issue with shop owner not getting money when benefits active. +- Fixes for lands addon on folia, Use regionThread for Folia compatibility(thanks to YusakiDev) +- Fixes for TRADE_DIRECT on stacking shops +- Fixes issue for protocollib 5.4.0 with undocumented packet changes. +- Fixes issue where item stacks could be used on creation above the max stack size. +- Fixes issue with BukkitAudiences-related crashes on 1.21.11. +- Fix issue with shop deletion when getting too impatient. +- Fix the permission check issue when a shop owned by a non-owner is transferred to someone else. (thanks to YuanYuanOwO) +- Fix ui with supertool (thanks to YuanYuanOwO) +- Fix issue with logs generating outside debug mode. +- Fix issue with /qs find. +- Fix configuration loading timing. +- Fix configuration loading/creation warning message language. +- Fix command description language key mismatch(thanks to wling-art) +- Fix qs clean command on folia(thanks to wling-art) +- Fix per-player-shop-sign on folia(thanks to wling-art) +- Fix potential recursive deadlock in virtual display packet sending(thanks to wling-art) +- Fix configuration loading/creation warning message language. +- Fix issue with /qs browse and ShopItemOnly addon not behaving properly together on folia. +- Fix issue with PLAN using outdated APIs. +- Fix issue with /qs clean on folia.(thanks to wling-art) +- Fix issue with /qs cleanghost on folia(thanks to wling-art) +- More thread safety fixes for shops on folia.(thanks to wling-art) +- Fix owner payment calculations with benefits(thanks to wling-art) \ No newline at end of file diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md index 8172f9b410..dcc3edc67d 100644 --- a/i18n/he-IL/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md @@ -20,20 +20,20 @@ the ControlComponent object with a custom one that will replace the original dur ### Introduction of the Revamped Packet System 1. **About**: - - A modular and scalable system for managing packets related to virtual display items in Minecraft. - - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. + - A modular and scalable system for managing packets related to virtual display items in Minecraft. + - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. 2. **Custom Packet Factories**: - - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. - - Packet types: - - **Spawn Packet**: Spawns a virtual item entity at a specific location. - - **Metadata Packet**: Updates the visual properties of virtual items. - - **Velocity Packet**: Adds motion/velocity to entities (currently optional). - - **Destroy Packet**: Removes the entity from the client view. + - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. + - Packet types: + - **Spawn Packet**: Spawns a virtual item entity at a specific location. + - **Metadata Packet**: Updates the visual properties of virtual items. + - **Velocity Packet**: Adds motion/velocity to entities (currently optional). + - **Destroy Packet**: Removes the entity from the client view. 3. **Error Handling and Logging**: - - Enhanced debug logs to trace packet-related issues. - - Detailed error messages for missing factories or unregistered listeners. + - Enhanced debug logs to trace packet-related issues. + - Detailed error messages for missing factories or unregistered listeners. #### Improvements: diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md index 7775308722..c6e0948d19 100644 --- a/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md index f420997a9c..38587e3784 100644 --- a/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md index 5ed8182c9a..259c55f342 100644 --- a/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md index 924a37ac49..7fd4596a6a 100644 --- a/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,6 +10,6 @@ This is a BungeeCord plugin, you need install it within your BungeeCord's plugin ## How does it work? -BungeeCord Bridge plugins will register a `quickshop:bungee` channel for fowarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. +BungeeCord Bridge plugins will register a `quickshop:bungee` channel for forwarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. All forwarding is indicated by QuickShop-Hikari on the Spigot server and ends when it is not needed. diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md index 27d68956a8..20fbaf7a0c 100644 --- a/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,5 +10,5 @@ This compatibility module added [Chest Protect](https://www.spigotmc.org/resourc ## How does it work? -This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident.\ +This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident. It also prevents players from creating shops on ChestProtect protected containers. diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md index 220e26d8bb..e1757e7be9 100644 --- a/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/dominion.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/dominion.md new file mode 100644 index 0000000000..e1195278a8 --- /dev/null +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/dominion.md @@ -0,0 +1,138 @@ +# Dominion + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and Dominion. + +It ensures that shop creation and trading respect Dominion’s land and territory protection system. + +--- + +## What Does It Do? + +Dominion allows players or groups to claim land and define territory-based permissions. + +Without compatibility: + +- Players could create shops inside territories they do not control. +- Visitors might trade inside protected dominions. +- Dominion permission rules might not apply to shop interactions. + +The Dominion compat module ensures that: + +- Shop creation respects territory ownership. +- Shop trading follows Dominion permission settings. +- Protected land remains secure from unauthorized shop usage. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a Dominion-controlled area. +- Whether the player has permission within that territory. +- Whether Dominion rules allow shop interaction. + +If the action is not permitted by Dominion settings, QuickShop blocks it. + +If the location is outside any Dominion territory, default QuickShop behavior applies. + +--- + +## Territory Owner Control + +With this module enabled: + +- Territory owners can create and manage shops inside their dominion. +- Trusted members follow territory-based permissions. +- Outsiders are restricted unless explicitly allowed. +- Shop actions respect Dominion’s land rules automatically. + +This prevents unauthorized shop placement inside protected territories. + +--- + +## Installation + +1. Install Dominion. +2. Install the QuickShop Dominion compat module. +3. Restart your server. + +The module activates automatically if Dominion is detected. + +No manual configuration linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside dominions +whitelist-mode: false + +# Allow territory owners to override shop permissions +allow-owner-override: true +``` + +If Dominion is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For servers using Dominion: + +- Restrict shop creation to territory owners or trusted members. +- Prevent shop creation in wilderness if desired. +- Allow dominion owners to manage shop permissions. +- Review Dominion permission settings to align with shop behavior. + +This ensures protected territories remain secure and organized. + +--- + +## Common Questions + +### Can players create shops in someone else's dominion? + +Only if Dominion permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You may allow or restrict shops outside dominions. + +### What happens if Dominion is removed? + +QuickShop returns to normal behavior and stops checking Dominion territories. + +--- + +## Summary + +The Dominion compat module: + +- Enforces territory-based permissions +- Prevents unauthorized shop creation +- Protects claimed land from misuse +- Integrates seamlessly with Dominion + +It is recommended for servers running Dominion. \ No newline at end of file diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md index 743d3ae666..2ac9b10488 100644 --- a/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md new file mode 100644 index 0000000000..07ba4ada66 --- /dev/null +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md @@ -0,0 +1,133 @@ +# FabledSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and FabledSkyblock. + +It ensures that shop creation and trading properly respect island boundaries and island permissions. + +--- + +## What Does It Do? + +On Skyblock servers, players build and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Players might trade in areas they should not. +- Island protection rules might not apply to shops. + +The FabledSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members behave correctly with shops. +- Island visitors are restricted appropriately. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a FabledSkyblock island. +- Whether the player has permission on that island. +- Whether island settings allow the action. + +If the action is not permitted by island rules, QuickShop will deny it. + +--- + +## Island Ownership Rules + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow island permission settings. +- Visitors can only trade if island permissions allow it. +- Outside of islands, default QuickShop behavior applies. + +--- + +## Installation + +1. Install FabledSkyblock. +2. Install the QuickShop FabledSkyblock compat module. +3. Restart your server. + +The module activates automatically if FabledSkyblock is detected. + +No manual linking is required. + +--- + +## Configuration + +If the module provides configuration options, they will appear in its `config.yml`. + +Typical options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If FabledSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most Skyblock servers: + +- Allow shop creation only inside islands. +- Prevent trading in the void or wilderness. +- Let island owners control shop permissions. +- Use island rank systems to manage shop access. + +This helps maintain economic balance between islands. + +--- + +## Common Questions + +### Can players create shops in the void? + +Only if your configuration allows it. +Most servers disable shop creation outside islands. + +### Does this affect island war or PvP modes? + +No. +The module only checks island ownership and permissions for shop interactions. + +### What happens if FabledSkyblock is removed? + +QuickShop returns to normal behavior. + +--- + +## Summary + +The FabledSkyblock compat module: + +- Protects island economies +- Enforces island permission rules +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is strongly recommended for any server running FabledSkyblock. \ No newline at end of file diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md index 81b13d2c6b..32614d3019 100644 --- a/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md @@ -2,17 +2,17 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -GreifPrevention compatibility module added compaitibility with GF. +GreifPrevention compatibility module added compatibility with GF. ## How does it work This module allow QuickShop-Hikari check if player have permission to create or use QuickShop in specific region. -And delete shops when claim removed, untrusted, unclimed, expired, resized or subclaim created. +And delete shops when claim removed, untrusted, unclaimed, expired, resized or subclaim created. ## Configuration diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md new file mode 100644 index 0000000000..e71b34d462 --- /dev/null +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md @@ -0,0 +1,139 @@ +# HuskTowns + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and HuskTowns. + +It ensures that shop creation and trading respect town and claim permissions defined by HuskTowns. + +--- + +## What Does It Do? + +HuskTowns allows players to create towns and claim land. + +Without compatibility: + +- Players could create shops inside towns they do not belong to. +- Visitors might trade inside protected towns. +- Town permission rules might not apply to shop interactions. + +The HuskTowns compat module ensures that: + +- Shop creation respects town ownership. +- Trading follows town permission settings. +- Town members and visitors are handled correctly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a HuskTowns claim. +- Whether the player is a town member, trusted player, or outsider. +- Whether the town's permission settings allow the action. + +If the action is not permitted by town rules, QuickShop blocks it. + +Outside of town claims, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Town Owner Control + +With this module enabled: + +- Town owners can create and manage shops inside their town. +- Town members follow town-based permission settings. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect town claim protection. + +This prevents unauthorized shop placement and trading inside protected towns. + +--- + +## Installation + +1. Install HuskTowns. +2. Install the QuickShop HuskTowns compat module. +3. Restart your server. + +The module activates automatically if HuskTowns is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside towns +whitelist-mode: false + +# Allow town owners to override shop permissions +allow-owner-override: true +``` + +If HuskTowns is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For town-based survival servers: + +- Restrict shop creation to town members. +- Allow trading only where town permissions permit. +- Prevent shop creation in wilderness if desired. +- Enable owner override for better administrative control. + +This helps maintain town-based economic balance. + +--- + +## Common Questions + +### Can players create shops in another town? + +Only if that town's permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You can allow or restrict shops outside towns. + +### What happens if HuskTowns is removed? + +QuickShop returns to normal behavior and stops checking town permissions. + +--- + +## Summary + +The HuskTowns compat module: + +- Enforces town-based land permissions +- Protects towns from unauthorized shop usage +- Integrates smoothly with HuskTowns +- Requires minimal setup + +It is recommended for any server running HuskTowns. \ No newline at end of file diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md new file mode 100644 index 0000000000..3fa2995eb0 --- /dev/null +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md @@ -0,0 +1,139 @@ +# IridiumSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and IridiumSkyblock. + +It ensures that shop creation and trading respect island boundaries and island permission settings defined by IridiumSkyblock. + +--- + +## What Does It Do? + +IridiumSkyblock allows players to create and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Visitors might trade inside protected islands. +- Island protection rules might not apply correctly to shops. + +The IridiumSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members and visitors are handled properly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside an IridiumSkyblock island. +- Whether the player is the island owner, member, or visitor. +- Whether island permissions allow shop interaction. + +If the action is not permitted, QuickShop blocks it. + +Outside of islands, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Island Owner Permissions + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow the island's permission configuration. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect island protection rules. + +This prevents unauthorized shop usage inside protected islands. + +--- + +## Installation + +1. Install IridiumSkyblock. +2. Install the QuickShop IridiumSkyblock compat module. +3. Restart your server. + +The module activates automatically if IridiumSkyblock is detected. + +No additional setup is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If IridiumSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most IridiumSkyblock servers: + +- Restrict shop creation to island owners. +- Allow island members to trade if trusted. +- Prevent shop creation in the void or wilderness. +- Enable owner override for better management. + +This helps maintain balanced island economies. + +--- + +## Common Questions + +### Can players create shops outside their island? + +Only if your configuration allows it. + +Most Skyblock servers restrict shops to island areas. + +### Do island ranks affect shop permissions? + +Yes, if your island permissions are configured to control interaction rights. + +QuickShop follows island rules. + +### What happens if IridiumSkyblock is removed? + +QuickShop returns to normal behavior and stops checking island permissions. + +--- + +## Summary + +The IridiumSkyblock compat module: + +- Protects island economies +- Enforces island-based permissions +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is recommended for any server running IridiumSkyblock. diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md new file mode 100644 index 0000000000..3b4726cb9d --- /dev/null +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md @@ -0,0 +1,151 @@ +# ItemMatcherPlus + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +The ItemMatcherPlus module improves how QuickShop matches custom and plugin-modified items. + +It allows QuickShop to properly recognize and stack items created by other plugins that normally would not match using standard Bukkit item comparisons. + +This module is especially useful for servers that use: + +- Custom items +- Modified metadata +- NBT-based systems +- Advanced crate rewards +- Custom brewing systems +- Custom fishing rewards + +--- + +## What Does It Do? + +By default, Minecraft item matching checks: + +- Material type +- Basic metadata + +However, many plugins modify items with: + +- Custom NBT data +- Hidden tags +- Custom lore formats +- Unique identifiers + +Without enhanced matching: + +- Items may not stack +- Shops may refuse valid items +- Transactions may fail +- Buying/selling may not behave correctly + +ItemMatcherPlus improves compatibility and matching accuracy. + +--- + +## Supported Plugins + +ItemMatcherPlus includes built-in support for: + +- AdvancedItems +- BreweryX +- CrazyCrates +- ExcellentCrates +- PyroFishing +- SilkSpawners + +If any of these plugins are installed, QuickShop will automatically use enhanced matching logic. + +No additional configuration is required. + +--- + +## How It Works + +When a player trades with a shop: + +1. QuickShop checks the item. +2. If ItemMatcherPlus is enabled, it performs advanced matching. +3. Plugin-specific metadata is validated. +4. The item is confirmed as a match (or rejected safely). + +This allows: + +- Proper stacking of custom items +- Correct shop transactions +- Accurate buy/sell detection +- Reduced false mismatches + +--- + +## Installation + +1. Download the ItemMatcherPlus module. +2. Place the JAR into your `plugins` folder. +3. Restart your server. + +If supported plugins are detected, compatibility activates automatically. + +--- + +## Configuration + +ItemMatcherPlus does not require configuration. + +It activates automatically when: + +- The module is installed +- A supported plugin is detected + +If a supported plugin is not installed, no extra logic runs. + +--- + +## Why You Should Use It + +You should install ItemMatcherPlus if your server uses: + +- Custom fishing plugins +- Custom brewing systems +- Crate plugins with modified items +- Custom spawners +- Any plugin that modifies NBT data + +Without it, shops may not properly recognize custom items. + +--- + +## Common Questions + +### Do I need this if I don't use custom item plugins? + +No. +If you only use vanilla items, this module is not necessary. + +### Does this affect performance? + +The module only activates enhanced matching when needed. + +Normal item matching remains fast and efficient. + +### Will it break existing shops? + +No. +It improves compatibility and matching accuracy without modifying existing shop data. + +--- + +## Summary + +ItemMatcherPlus: + +- Improves item matching accuracy +- Adds support for major custom item plugins +- Prevents stacking and trade issues +- Requires no configuration +- Activates automatically + +If you run a heavily customized economy server, this module is highly recommended. \ No newline at end of file diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md index ba87606698..d4ae7d129a 100644 --- a/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/lands.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/lands.md index 06296f5779..7671fcdfe0 100644 --- a/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/lands.md +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/lands.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/openinv.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/openinv.md index c51f628615..4807d57873 100644 --- a/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/openinv.md +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/openinv.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md new file mode 100644 index 0000000000..c2136320b0 --- /dev/null +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md @@ -0,0 +1,138 @@ +# SimpleClaimSystem + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and SimpleClaimSystem. + +It ensures that shop creation and trading respect land ownership and claim permissions defined by SimpleClaimSystem. + +--- + +## What Does It Do? + +SimpleClaimSystem allows players to claim land and protect it from unauthorized interaction. + +Without compatibility: + +- Players could create shops inside claims they do not own. +- Visitors might trade inside protected areas. +- Claim protection might not apply correctly to shops. + +The SimpleClaimSystem compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops within their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a SimpleClaimSystem claim. +- Whether the player has permission within that claim. +- Whether claim rules allow shop interaction. + +If the action is not permitted by the claim, QuickShop blocks it. + +If the location is outside any claim, default QuickShop behavior applies. + +--- + +## Claim Owner Control + +With this module enabled: + +- Claim owners can create and manage shops inside their claim. +- Trusted players follow claim-based permissions. +- Visitors are restricted unless explicitly allowed. +- Claim protection rules apply automatically to shop interactions. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install SimpleClaimSystem. +2. Install the QuickShop SimpleClaimSystem compat module. +3. Restart your server. + +The module activates automatically if SimpleClaimSystem is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If SimpleClaimSystem is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Enable owner override for easier management. + +This ensures players maintain control over their protected land. + +--- + +## Common Questions + +### Can players create shops in someone else's claim? + +Only if claim permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can allow shops outside claims or restrict them. + +### What happens if SimpleClaimSystem is removed? + +QuickShop will revert to default behavior and stop checking claim permissions. + +--- + +## Summary + +The SimpleClaimSystem compat module: + +- Enforces claim-based permissions +- Prevents unauthorized shop creation +- Protects land from unwanted trading +- Requires minimal setup + +It is recommended for servers running SimpleClaimSystem. \ No newline at end of file diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md index a84dbf057b..4dfa8ae97c 100644 --- a/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/towny.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/towny.md index 52ab4818f4..b26c19d335 100644 --- a/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/towny.md +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/towny.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -26,7 +26,7 @@ Town sub-command allow you switch a quickshop between regular shop and town shop For a nation shop, the shop owner will changed to nation fake player created by Towny, and use Nation's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from nation Towny account.\ +All purchases will deposit or withdraw money from nation Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Nation Shop. @@ -35,7 +35,7 @@ If Plot type restriction is enabled, only a specific Plot type can create a Nati For a town shop, the shop owner will changed to town fake player created by Towny, and use Town's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from town Towny account.\ +All purchases will deposit or withdraw money from town Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Town Shop. @@ -88,7 +88,7 @@ bank-mode: ## Permission Override -By adjust configuration, you're allow mayor or king automaticlly grant administrator permission on all shops in their management range. +By adjust configuration, you're allow mayor or king automatically grant administrator permission on all shops in their management range. ```yaml #Should allow Mayor grant the shop administrator permission on they town. @@ -168,7 +168,7 @@ This causes Towny and QuickShop Hikari to use accounts with the same name but di You can adjust the option in configuration to enable workaround. -NOTE: It will force turned on if detected EssentialsX installed on your server.\ +NOTE: It will force turned on if detected EssentialsX installed on your server. At present, we do not provide a method for disable it. ```yaml diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md new file mode 100644 index 0000000000..0189958495 --- /dev/null +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md @@ -0,0 +1,138 @@ +# UltimateClaims + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and UltimateClaims. + +It ensures that shop creation and trading respect land claim permissions managed by UltimateClaims. + +--- + +## What Does It Do? + +On servers using land-claim plugins, players protect areas of the world from unauthorized interaction. + +Without compatibility: + +- Players may create shops inside claims they do not own. +- Visitors might trade in areas where they should not. +- Claim protection rules might not apply correctly to shops. + +The UltimateClaims compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops inside their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a claim. +- Whether the player has permission in that claim. +- Whether claim rules allow shop interaction. + +If the action violates claim settings, QuickShop blocks it. + +Outside of claims, normal QuickShop behavior applies. + +--- + +## Claim Owner Permissions + +With this module enabled: + +- Claim owners can create and manage shops within their claim. +- Trusted players follow claim permission settings. +- Visitors are restricted based on claim configuration. +- Shop actions outside of claims behave normally. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install UltimateClaims. +2. Install the QuickShop UltimateClaims compat module. +3. Restart your server. + +If UltimateClaims is detected on startup, compatibility activates automatically. + +No additional linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Common options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If UltimateClaims is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Keep owner override enabled for better control. + +This ensures players maintain full control over their protected land. + +--- + +## Common Questions + +### Can players create shops inside someone else's claim? + +Only if the claim permissions allow it. + +Otherwise, QuickShop will block the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can choose to restrict shops to claimed land only. + +### What happens if UltimateClaims is removed? + +QuickShop returns to normal behavior without claim checks. + +--- + +## Summary + +The UltimateClaims compat module: + +- Protects claimed land from unauthorized shop usage +- Enforces claim-based permissions +- Integrates smoothly with land-claim servers +- Requires minimal setup + +It is recommended for any server running UltimateClaims. \ No newline at end of file diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md index 87a71a205c..6437754503 100644 --- a/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md @@ -2,8 +2,10 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. Find out more [here](../modules/shops/worldedit.md). + +Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. \ No newline at end of file diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/development/01-getting-start.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/development/01-getting-start.md index 92b773451e..0e78e52367 100644 --- a/i18n/he-IL/docusaurus-plugin-content-docs/current/development/01-getting-start.md +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/development/01-getting-start.md @@ -6,8 +6,8 @@ This series of articles will help you build extensions for QuickShop-Hikari or i ## License -QuickShop-Hikari is open source using the [GPLv3](https://www.gnu.org/licenses/quick-guide-gplv3.en.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari).\ -You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the GPLv3 agreement. +QuickShop-Hikari is open source using the [AGPLv3](https://www.gnu.org/licenses/agpl-3.0.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari). +You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the AGPLv3 agreement. ## 🚧Don't trust Javadoc too much @@ -48,7 +48,7 @@ QuickShop-Hikari divides operation sources into three types: - Server Main Thread - Async Thread (any other threads but not server main thread) -- Hybird +- Hybrid If you access the API through the wrong thread, QuickShop-Hikari will force a runtime error to be thrown. @@ -58,4 +58,4 @@ For APIs that may trigger network IO or long-time disk IO, you are required not You can see [Util.ensureThread()](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/3d1d271e1106ea1c83cc6068f8232ab7c7860918/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/util/Util.java#L351) and find out the requirements of the different APIs by looking up their use. APIs that do not use Util.ensureThread() are allowed to be called from any thread by default. -You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. +You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. \ No newline at end of file diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md index aa2404c594..7828d414ad 100644 --- a/i18n/he-IL/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md @@ -10,7 +10,7 @@ ShopManager manager = api.getShopManager(); ## Getting a shop -Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates.\ +Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates. QuickShop-Hikari's store is only bound to one half of "Large Chest", so to get the store, you need to query both the cube itself and its associated cube. The good thing is that there is an API in the plugin that allows you to handle this situation very easily. @@ -71,7 +71,7 @@ manager.deleteShop(shop) // Permanently delete this store, both memory and datab ## Identify a store -Please note that store locations are technically variable and you should not use coordinates to identify a store.\ +Please note that store locations are technically variable and you should not use coordinates to identify a store. Also RuntimeRandomUniqueId should not be used to identify the store, as the name suggests, the value changes every time the server restarts, it should only be used to handle scenarios where the player interacts with the server. ```java diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md index 543f1851da..4f839ed652 100644 --- a/i18n/he-IL/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md @@ -1,6 +1,6 @@ # 0x05 Per shop permission -QuickShop-Hikari has a per shop permission management system.\ +QuickShop-Hikari has a per shop permission management system. Therefore, for a normal permission node check is not enough, you need to attach an additional check. ## Check with shop diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/development/06-protocol-system.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/development/06-protocol-system.md index 5d37a15536..0380b789f9 100644 --- a/i18n/he-IL/docusaurus-plugin-content-docs/current/development/06-protocol-system.md +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/development/06-protocol-system.md @@ -15,30 +15,30 @@ This documentation will guide developers through the components, implementation - **Purpose**: Manages packet handling and initialization logic. - **Interface**: `PacketHandler` - **Key Methods**: - - `Map> factories()` - - Retrieves a map of supported `PacketFactory` instances keyed by game versions. - - `void initialize()` - - Initializes the packet handler. - - `Optional> factory(String version)` - - Retrieves a `PacketFactory` for a specific game version. + - `Map> factories()` + - Retrieves a map of supported `PacketFactory` instances keyed by game versions. + - `void initialize()` + - Initializes the packet handler. + - `Optional> factory(String version)` + - Retrieves a `PacketFactory` for a specific game version. ### 2. **PacketFactory** - **Purpose**: Creates and sends specific packet types. - **Interface**: `PacketFactory` - **Supported Packets**: - - **Spawn Packet**: - - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. - - Example Use: Representing shop items visually. - - **Metadata Packet**: - - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. - - Example Use: Updating item display name or properties. - - **Velocity Packet**: - - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. - - Example Use: Custom animations for virtual items. - - **Destroy Packet**: - - Removes the entity from the client view. Created using `createDestroyPacket()`. - - Example Use: Unloading or removing a virtual display item. + - **Spawn Packet**: + - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. + - Example Use: Representing shop items visually. + - **Metadata Packet**: + - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. + - Example Use: Updating item display name or properties. + - **Velocity Packet**: + - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. + - Example Use: Custom animations for virtual items. + - **Destroy Packet**: + - Removes the entity from the client view. Created using `createDestroyPacket()`. + - Example Use: Unloading or removing a virtual display item. Developers implementing custom `PacketFactory` should ensure these packets are correctly handled and optimized for performance. @@ -46,24 +46,24 @@ Developers implementing custom `PacketFactory` should ensure these packets are c - **Purpose**: Oversees the lifecycle of virtual display items and integrates with packet handlers. - **Key Features**: - - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). - - Manages virtual display items mapped to chunks. - - Provides thread-safe operations for adding and removing display items. + - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). + - Manages virtual display items mapped to chunks. + - Provides thread-safe operations for adding and removing display items. ### 4. **VirtualDisplayItem** - **Purpose**: Represents a virtual item displayed to players. - **Key Features**: - - Generates and caches packets for spawning, metadata, velocity, and destruction. - - Manages packet senders for each player. - - Handles spawn and removal operations dynamically. + - Generates and caches packets for spawning, metadata, velocity, and destruction. + - Manages packet senders for each player. + - Handles spawn and removal operations dynamically. ### 5. **ProtocolLibHandler and PacketEventsHandler** - **Purpose**: Provide implementations of `PacketHandler` using ProtocolLib and PacketEvents, respectively. - **Differences**: - - `ProtocolLibHandler` leverages ProtocolLib API. - - `PacketEventsHandler` uses the PacketEvents library. + - `ProtocolLibHandler` leverages ProtocolLib API. + - `PacketEventsHandler` uses the PacketEvents library. --- @@ -140,11 +140,11 @@ public class CustomPacketFactory implements PacketFactory { Packet factories are provided for specific game versions through two primary implementations: - **ProtocolLib**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` - **PacketEvents**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` --- diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md new file mode 100644 index 0000000000..aebc035f87 --- /dev/null +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md @@ -0,0 +1,297 @@ +# Interaction System (Developer Guide) + +The Interaction System allows developers to fully customize how players interact with shops. + +As of 6.2.0.11, the system has been redesigned to be: + +- Modular +- Extensible +- Thread-safe +- Fully customizable by third-party addons + +This guide will walk you through: + +1. What the Interaction System is +2. Getting the `InteractionManager` +3. Understanding `InteractionType` +4. Understanding `InteractionBehavior` +5. Registering custom interactions +6. Best practices + +--- + +# Overview + +The Interaction System is composed of three main components: + +| Component | Purpose | +| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| `InteractionType` | Describes **what kind of click happened** (standing, sneaking, left-click, sign, shopblock, etc.) | +| `InteractionBehavior` | Describes **what action should happen** when that type is triggered | +| `InteractionManager` | Central registry that manages interactions and behaviors | + +This separation allows developers to: + +- Add new click types +- Add new behaviors +- Override existing ones +- Extend QuickShop without modifying core code + +--- + +# Getting the InteractionManager + +To begin registering custom interactions, you must retrieve the `InteractionManager` instance. + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +If you are working directly with the plugin instance: + +```java +InteractionManager manager = QuickShop.getInstance().getInteractionManager(); +``` + +Once obtained, you can: + +- Register new interaction types +- Register new behaviors +- Override existing behaviors + +--- + +# Understanding InteractionType + +`InteractionType` represents **how** a player interacted with a shop. + +Examples include: + +- `STANDING_LEFT_CLICK_SIGN` +- `STANDING_RIGHT_CLICK_SHOPBLOCK` +- `SNEAKING_LEFT_CLICK_CONTAINER` +- etc. + +Each `InteractionType` defines: + +- Player stance (standing/sneaking) +- Click type (left/right) +- Target (sign/shopblock/container) + +InteractionTypes do NOT define behavior — they only define the trigger. + +--- + +# Understanding InteractionBehavior + +`InteractionBehavior` defines **what happens** when an interaction is triggered. + +Examples of built-in behaviors: + +- `TRADE_INTERACTION` +- `TRADE_UI` +- `CONTROL_PANEL` +- `CONTROL_PANEL_UI` +- `NONE` + +A behavior: + +- Executes logic +- May open GUIs +- May send chat panels +- May directly trade items +- Can cancel or modify flow + +This separation makes it easy to reuse behaviors across multiple interaction types. + +--- + +# Registering Custom Interactions + +There are two things you can register: + +- A custom `InteractionType` +- A custom `InteractionBehavior` + +--- + +## Creating a Custom InteractionBehavior + +Create a class implementing `InteractionBehavior`. + +Example: + +```java +public class MyTradeBehavior implements InteractionBehavior { + + @Override + public String getKey() { + return "MY_CUSTOM_TRADE"; + } + + @Override + public void execute(InteractionClick click) { + Player player = click.getPlayer(); + Shop shop = click.getShop(); + + player.sendMessage("You triggered my custom interaction!"); + + // Add your custom logic here + } +} +``` + +Then register it: + +```java +InteractionManager manager = api.getInteractionManager(); +manager.behavior(new MyTradeBehavior()); +``` + +Now your behavior is available for use. + +--- + +## Creating a Custom InteractionType + +You may also register custom interaction types if you want to introduce new trigger definitions. + +Example: + +```java +public class MyCustomInteraction implements InteractionType { + + @Override + public String getKey() { + return "STANDING_DOUBLE_CLICK_SIGN"; + } + + @Override + public boolean matches(InteractionClick click) { + // Define custom logic to detect this interaction + return click.isStanding() + && click.isSign() + && click.isDoubleClick(); + } +} +``` + +Register it: + +```java +manager.interaction(new MyCustomInteraction()); +``` + +--- + +# Binding Types to Behaviors + +The InteractionManager internally maps interaction types to behaviors based on configuration and registration order. + +Once your behavior is registered: + +- It can be referenced in `interaction.yml` +- Or attached programmatically + +Example interaction.yml usage: + +```yaml +STANDING_LEFT_CLICK_SIGN: MY_CUSTOM_TRADE +``` + +--- + +# The InteractionClick Object + +When your behavior executes, you receive an `InteractionClick` object. + +It provides: + +- `getPlayer()` +- `getShop()` +- `getLocation()` +- `isSneaking()` +- `isSign()` +- `isShopBlock()` +- etc. + +This gives full context for safe execution. + +--- + +# Advanced: Overriding Built-in Behavior + +If you register a behavior using the same key as an existing one, your behavior can override the default. + +⚠️ Be careful when doing this — you are replacing core functionality. + +--- + +# Best Practices + +### Always Use Unique Keys + +Avoid naming collisions: + +``` +MYPLUGIN_CUSTOM_BEHAVIOR +``` + +### Keep Behavior Lightweight + +Do not block the main thread with: + +- Heavy database calls +- File IO +- Network calls + +Use async tasks if needed. + +### Respect Permissions + +Always validate: + +```java +if (!player.hasPermission("myplugin.use")) { + return; +} +``` + +### Avoid Hard Overrides Unless Necessary + +Instead of replacing built-in behaviors, consider extending them. + +--- + +# Example: Full Minimal Implementation + +```java +public class ExampleAddon { + + public void register(QuickShopAPI api) { + + InteractionManager manager = api.getInteractionManager(); + + manager.behavior(new MyTradeBehavior()); + manager.interaction(new MyCustomInteraction()); + } +} +``` + +--- + +# Conclusion + +The Interaction System is designed to allow: + +- Full extensibility +- Clean separation of triggers and actions +- Easy integration for third-party developers + +By retrieving the `InteractionManager`: + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +You gain full control over how shops respond to player actions. \ No newline at end of file diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/development/08-tax-manager.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/development/08-tax-manager.md new file mode 100644 index 0000000000..72a56f9e88 --- /dev/null +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/development/08-tax-manager.md @@ -0,0 +1,266 @@ +# Tax System (Developer Guide) + +The QuickShop tax system allows server owners and developers to define how transaction taxes are calculated, distributed, and extended. + +As of 6.2.0.11, the tax system has been fully rewritten to provide: + +- A flexible TaxManager +- Pluggable TaxProvider support +- Progressive taxation +- Tax targeting (shop owner, interacting player, or both) +- Custom extension capability for third-party addons + +This guide explains how to work with the tax system programmatically. + +--- + +# Overview + +The tax system is composed of three core components: + +TaxManager +Responsible for coordinating tax calculation and execution. + +TaxProvider +Defines how tax values are calculated. + +TaxRates +Represents calculated tax results for a transaction. + +The system is designed to allow custom providers to be registered and used without modifying core logic. + +--- + +# Getting the TaxManager + +To work with the tax system, retrieve the TaxManager from the ShopManager. + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +Once obtained, you can: + +- Access current tax configuration +- Register custom tax providers +- Calculate tax values +- Hook into tax events + +--- + +# How the Tax System Works + +During a shop transaction: + +1. A base price is determined. +2. The TaxManager selects the active TaxProvider. +3. The TaxProvider calculates applicable tax. +4. A TaxRates object is produced. +5. The system applies the tax to: + + - Shop owner + - Interacting player + - Or both (depending on configuration) + +This architecture allows tax behavior to be modified without altering transaction logic. + +--- + +# TaxProvider + +A TaxProvider defines how tax values are calculated. + +You may create your own provider to implement: + +- Progressive tax brackets +- Flat percentage tax +- Conditional tax rules +- Region-based tax +- Rank-based tax +- Time-based tax + +Example minimal provider: + +```java +public class MyCustomTaxProvider implements TaxProvider { + + @Override + public TaxRates calculateTax(TaxContext context) { + + double basePrice = context.getPrice(); + + double taxAmount = basePrice * 0.05; // 5% flat tax + + return new TaxRates() + .ownerTax(taxAmount) + .buyerTax(0.0); + } +} +``` + +Then register it: + +```java +taxManager.provider(new MyCustomTaxProvider()); +``` + +Once registered, your provider will be used for tax calculations. + +--- + +# TaxRates + +TaxRates represents the result of a tax calculation. + +It typically contains: + +- Owner tax amount +- Buyer tax amount +- Total tax impact +- Metadata (if applicable) + +The transaction system will read from TaxRates and apply deductions accordingly. + +--- + +# Progressive Taxation + +The built-in system supports progressive tax structures. + +This allows server administrators to tax based on: + +- Player balance +- Shop owner balance +- Configured tax brackets + +Example configuration concept: + +- 0–10,000 balance → 1% tax +- 10,000–100,000 → 2% tax +- 100,000+ → 3% tax + +Developers can extend or override this logic inside a custom TaxProvider. + +--- + +# Targeting Tax + +The new tax system allows taxes to be applied to: + +- Shop owner +- Interacting player +- Both + +This is controlled via configuration, but custom providers can override distribution logic by adjusting TaxRates output. + +Example: + +```java +return new TaxRates() + .ownerTax(basePrice * 0.02) + .buyerTax(basePrice * 0.01); +``` + +--- + +# Registering a Custom TaxProvider + +To replace or extend tax logic: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); + +taxManager.provider(new MyCustomTaxProvider()); +``` + +You may register only one primary provider at a time. If multiple providers are needed, implement internal delegation within your custom provider. + +--- + +# Tax Events + +The tax system integrates with the event system. + +The modern event used is: + +ShopEnhancedTaxEvent + +This replaces legacy tax events and provides improved context, including: + +- Transaction builder reference +- TaxRates object +- Modification capability before final execution + +You can listen for the event and modify tax behavior dynamically: + +```java +@EventHandler +public void onTax(ShopEnhancedTaxEvent event) { + + TaxRates rates = event.getTaxRates(); + + // Example: Give VIP players reduced owner tax + if (event.getOwner().hasPermission("vip.tax.discount")) { + rates.ownerTax(rates.getOwnerTax() * 0.5); + } +} +``` + +--- + +# Best Practices + +Always keep tax calculations lightweight. + +Avoid: + +- Heavy database queries inside calculateTax +- Blocking network calls +- Long-running computations + +If complex logic is required, pre-cache required data outside the tax execution path. + +Ensure negative tax values are not returned unless intentional. + +Always validate final amounts before applying modifications. + +Respect configuration hierarchy unless intentionally overriding it. + +--- + +# Example Full Implementation + +```java +public class ExampleTaxAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + TaxManager taxManager = manager.taxManager(); + + taxManager.provider(new MyCustomTaxProvider()); + } +} +``` + +--- + +# Conclusion + +The new tax system is designed for: + +- Flexibility +- Extensibility +- Clean separation of concerns +- Future expansion + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +You gain full control over how QuickShop calculates and applies tax during transactions. \ No newline at end of file diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/development/09-layout-provider.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/development/09-layout-provider.md new file mode 100644 index 0000000000..55e3cd3e91 --- /dev/null +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/development/09-layout-provider.md @@ -0,0 +1,275 @@ +# Shop Layout Provider (Developer Guide) + +The Shop Layout Provider system allows developers to customize how shop signs are structured and rendered. + +As of 6.2.0.11, shop layouts are no longer hardcoded. Instead, they are controlled through the `IShopLayoutProvider` interface, which allows: + +- Custom sign line ordering +- Per-shop-type layouts (BUYING, SELLING, FROZEN, or custom types) +- Dynamic layout resolution +- Complete replacement of the default layout system + +This guide explains how to access, override, and implement a custom layout provider. + +--- + +# Overview + +The layout provider controls how shop sign lines are arranged. + +Instead of hardcoding: + +Line 1 → Header +Line 2 → Trading info +Line 3 → Item +Line 4 → Price + +The system now allows full customization through: + +- Config-based layout definitions +- Custom `IShopLayoutProvider` implementations +- Runtime overrides + +The default implementation is `SimpleShopLayoutProvider`. + +--- + +# Accessing the Layout Provider + +To retrieve the current layout provider: + +```java +ShopManager manager = api.getShopManager(); +IShopLayoutProvider provider = manager.shopLayoutProvider(); +``` + +To replace the layout provider with a custom one: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Once replaced, your implementation will control how shop layouts are generated. + +--- + +# Understanding IShopLayoutProvider + +`IShopLayoutProvider` defines how layout data is retrieved and resolved. + +It is responsible for: + +- Providing layout configuration per shop type +- Determining which layout to use +- Supplying formatted line keys +- Allowing future extensibility + +The default implementation reads layout definitions from configuration and applies them based on shop type. + +--- + +# Default Layout Example + +The default configuration-based layout looks like this: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +Each line maps to a layout component key. + +An empty string (`""`) leaves that line blank. + +The layout provider resolves these keys into actual sign content. + +--- + +# Creating a Custom Layout Provider + +To override the default behavior, implement `IShopLayoutProvider`. + +Example minimal implementation: + +```java +public class MyCustomLayoutProvider implements IShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + + ShopLayout layout = new ShopLayout(); + + layout.setLine(1, "Custom Header"); + layout.setLine(2, "Owner: " + shop.getOwnerName()); + layout.setLine(3, shop.getItem().getType().name()); + layout.setLine(4, "$" + shop.getPrice()); + + return layout; + } +} +``` + +Then register it: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Your layout will now control all shop sign formatting. + +--- + +# Per-Type Layout Control + +Because the system no longer depends on the legacy ShopType enum, layouts can support: + +- Built-in types (BUYING, SELLING, FROZEN) +- Custom shop types +- Addon-defined shop types + +Your provider can determine layout logic dynamically: + +```java +@Override +public ShopLayout provideLayout(Shop shop) { + + if (shop.getShopType().key().equals("FROZEN")) { + return frozenLayout(shop); + } + + return defaultLayout(shop); +} +``` + +This allows conditional formatting, localization adjustments, or special event styling. + +--- + +# Advanced Customization + +A custom layout provider can: + +- Pull data from external plugins +- Inject dynamic placeholders +- Modify layout per player +- Apply formatting logic +- Override color schemes +- Apply region-based formatting +- Implement animated sign systems + +Because the layout provider is resolved at runtime, you can compute layouts dynamically instead of reading static config. + +--- + +# Replacing vs Extending the Default Provider + +You have two options: + +Replace entirely: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Or extend the default implementation: + +```java +public class ExtendedLayoutProvider extends SimpleShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + ShopLayout base = super.provideLayout(shop); + + base.setLine(1, "[Extended] " + base.getLine(1)); + + return base; + } +} +``` + +Extending is safer if you only want to modify small portions. + +--- + +# Best Practices + +Keep layout generation lightweight. + +Avoid: + +- Heavy database queries +- Blocking IO +- Complex network calls + +Layout generation runs during shop updates and sign refresh events. + +Always handle null values safely. + +Ensure layout line count does not exceed sign limits. + +Avoid hardcoding shop type names unless necessary. + +If your layout supports custom shop types, validate their keys properly. + +--- + +# Example Full Registration + +```java +public class LayoutAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + + manager.shopLayoutProvider(new MyCustomLayoutProvider()); + } +} +``` + +--- + +# Conclusion + +The Shop Layout Provider system allows complete control over shop sign structure. + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +``` + +And setting: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +You can redefine how every shop is displayed on the server. + +This system was designed to support: + +- Extensibility +- Custom shop types +- Localization +- Dynamic formatting +- Future expansion \ No newline at end of file diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/faq/compare-reremake.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/faq/compare-reremake.md index aaa1a9e507..6b39f02520 100644 --- a/i18n/he-IL/docusaurus-plugin-content-docs/current/faq/compare-reremake.md +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/faq/compare-reremake.md @@ -64,7 +64,7 @@ If you are a Reremake user, you may be confused about the differences between Hi ## Which one should I use? Well, it depends on what your needs are.\ -If you have an old server (<1.20) instance, Reremake is your only choice.\ +If you have an old server ({'<'}1.20) instance, Reremake is your only choice.\ ~~If you are in China which has GFW interfere, you also should consider Reremake because it doesn't need to load libraries from Global Internet.~~ Solved in 6.0.0.0. If none of these applies, give Hikari a try! diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md index 551f579e7c..172be3a69b 100644 --- a/i18n/he-IL/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md @@ -1,8 +1,8 @@ # Where Addons/Compacts is -Addons and Compatilibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. +Addons and Compatibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. -- Open Modrinth versions page, locate the version your're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) +- Open Modrinth versions page, locate the version you're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) - Frantically slide your mouse wheel down until the lowest end of the page. - You get it! diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/internal/database-schema.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/internal/database-schema.md index fea685e4fc..45e04adb56 100644 --- a/i18n/he-IL/docusaurus-plugin-content-docs/current/internal/database-schema.md +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/internal/database-schema.md @@ -4,17 +4,17 @@ This chapter will explain the implementation details of QuickShop Hikari's datab ## Tables -This section explains the database tables created by QuickShop-Hikari.\ -Unless otherwise specified, the initial `qs_` in table name is the table prefix.\ +This section explains the database tables created by QuickShop-Hikari. +Unless otherwise specified, the initial `qs_` in table name is the table prefix. For the latest code definition for each table, see: [DataTables.java](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/hikari/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/database/DataTables.java) ### `data` -This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information.\ -No matter what, a data record should not be modified after it is created, until it got deleted.\ +This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information. +No matter what, a data record should not be modified after it is created, until it got deleted. Any new changes to the shop should create a new copy, apply the changes to the copy, and insert it as a new record. -Basiclly, Copy-on-write. +Basically, Copy-on-write. A data record only be deleted from the database when no any table references their `data_id`. @@ -29,7 +29,7 @@ A data record only be deleted from the database when no any table references the | unlimited | BIT NOT NULL | 0 | Indicates whether this store is an unlimited store, 0=Limited, 1=Unlimited | | hologram | BIT NOT NULL | 0 | Indicates the suspension status of this store's display item, 0=Follow global settings, 1=Disabled | | tax_account | VARCHAR(36) | NULL | The uuid for tax account, If it is not NULL, tax will be paid to the specified account | -| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serilized to JSON string | +| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serialized to JSON string | | extra | LONGTEXT | Empty Yaml | Used to store experimental settings of QuickShop Hikari or persistent data of other plugins | | inv_wrapper | VARCHAR(255) NOT NULL | N/A | Unique identifier for InventoryWrapper for this shop data entry | | inv_symbol_link | TEXT NOT NULL | N/A | Unique Inventory symbol used to pass to InventoryWrapper, for locating inventory | @@ -38,7 +38,7 @@ A data record only be deleted from the database when no any table references the ### `shops` -This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes.\ +This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes. Multiple `shop_id` can correspond to the same `data_id`. | Column Name | DataType | Default | Description | diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/cmd-alias.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/cmd-alias.md index 53f1577685..e6ed381c0d 100644 --- a/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/cmd-alias.md +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/cmd-alias.md @@ -23,7 +23,7 @@ custom-commands: - cshop ``` -Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect.\ +Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect. The effect should be like this: ![command-alias](./img/command-alias.png) diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/datasource.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/datasource.md index 6fc1bd8931..3fd3a8bdee 100644 --- a/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/datasource.md +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/datasource.md @@ -48,7 +48,7 @@ Execute the `/quickshop export` command in console, quickshop will export a zip ![exported data](img/database-export.png) -Stop your database, switch the datasource, and start the server.\ +Stop your database, switch the datasource, and start the server. You may noticed all shops are gone, because new datasources had no data inside, we will restore them from export. Rename that exported ZIP file to `recovery.zip`, execute `/quickshop recovery` and restart your server, all shops should back. diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/itemmatcher.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/itemmatcher.md index 56be243019..922907be27 100644 --- a/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/itemmatcher.md +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/itemmatcher.md @@ -4,7 +4,7 @@ ItemMatcher is a utility used by QuickShop-Hikari to compare the items, it is th :::caution -If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse.\ +If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse. **TL;DR: Keep default unless you know what you're doing.** ::: @@ -26,10 +26,10 @@ matcher: work-type: 1 ``` -By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility.\ +By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility. But still, you can toggle to QuickShop Item Matcher if you need to customize the comparing or running QuickShop on the server jar which have bug affect the Bukkit comparing system. -## Customize the metadata compareing +## Customize the metadata comparing Customize only works under QuickShop Item Matcher. diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md index fc2af69d2b..d04e8f2783 100644 --- a/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md @@ -4,7 +4,7 @@ ItemStack Loader is a workaround for loading the Bukkit ItemStack. :::caution -Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossble. +Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossible. ::: diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/localization.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/localization.md index e9121e1a36..d47589ab9a 100644 --- a/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/localization.md +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/localization.md @@ -10,7 +10,7 @@ To help translate QuickShop-Hikari, please visit our [Crowdin Homepage](https:// ## Crowdin OTA -QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will overrided when you reload QuickShop-Hikari or restart your server. +QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will override when you reload QuickShop-Hikari or restart your server. Your installation will keep translations up-to-date without any touch. @@ -110,6 +110,16 @@ To disable the CrowdinOTA, please add it in the startup flag: -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager.enableCrowdinOTA=false ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +use-crowdin-ota: false +``` + ### Self-Hosted OTA Server If you self-hosted our translation server by using [CrowdinCopyDeploy](https://github.com/Ghost-chu/CrowdinCopyDeploy) tool, you're able to change the OTA server to yourself server. @@ -118,4 +128,12 @@ If you self-hosted our translation server by using [CrowdinCopyDeploy](https://g -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager= ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml +Use + +```yaml +crowdin-host: +``` \ No newline at end of file diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/shops/benefit.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/shops/benefit.md index 4d7a9c8f42..c59d92e6d1 100644 --- a/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/shops/benefit.md +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/shops/benefit.md @@ -37,3 +37,13 @@ By default, for security, QuickShop-Hikari disallow add offline players into sho ```bash -Dcom.ghostchu.quickshop.command.subcommand.SubCommand_Benefit.allowOffline=true ``` + +### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +shop.allow-offline-benefit: true +``` \ No newline at end of file diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/shops/control-panel b/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/shops/control-panel new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/shops/control-panel @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/shops/history.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/shops/history.md index fa891adeab..195b64a042 100644 --- a/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/shops/history.md +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/shops/history.md @@ -24,7 +24,7 @@ The History GUI displays the details of each recorded transaction and other usef ### Transaction details -When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed.\ +When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed. If you are checking the history of more than one store, the player head will be replaced with an item from the corresponding store. ![history-gui](./img/history-gui.png) diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md new file mode 100644 index 0000000000..c5ed3b3fe4 --- /dev/null +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md @@ -0,0 +1,90 @@ +# Shop Types + +QuickShop supports multiple shop types, allowing shops to behave differently depending on their mode. + +The built-in shop types are: + +- Selling +- Buying +- Frozen + +Each type changes how the shop interacts with players. + +--- + +## Selling Shop + +A Selling shop allows players to: + +- Buy items from the shop owner +- Pay money to receive items + +This is the most common shop type. + +--- + +## Buying Shop + +A Buying shop allows players to: + +- Sell items to the shop owner +- Receive money in exchange + +This is commonly used for: + +- Resource collection +- Server buy-back shops +- Automated material sinks + +--- + +## Frozen Shop + +A Frozen shop temporarily disables trading. + +While frozen: + +- No buying is allowed +- No selling is allowed +- The shop remains intact +- Staff or admins can manage it + +This is useful for: + +- Temporary suspensions +- Investigation +- Event locking +- Maintenance + +--- + +## Switching Shop Types + +Shop types can be changed through: + +- Control panel +- GUI control panel +- Admin commands + +Frozen mode is also available via: + +/qs freeze + +--- + +## Custom Shop Types + +As of 6.2.x, the system supports extensible shop types internally. + +While server owners use the built-in types, the system now allows future expansion through addons. + +--- + +## Summary + +Shop types allow you to: + +- Control how money flows +- Enable buy-back mechanics +- Temporarily disable shops +- Build advanced economic systems \ No newline at end of file diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md new file mode 100644 index 0000000000..18e0a47407 --- /dev/null +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md @@ -0,0 +1,217 @@ +# Sign Layout + +QuickShop allows you to fully customize how shop signs are structured. + +You can change: + +- What appears on each line +- The order of information +- Layout per shop type +- Whether certain lines are blank + +This gives you complete control over how shops look on your server. + +--- + +## How Sign Layout Works + +Shop signs have four lines. + +Instead of being hardcoded, QuickShop uses a configurable layout system. + +Each shop type can have its own layout: + +- SELLING +- BUYING +- FROZEN + +You define what each line displays using layout keys. + +--- + +## Configuration Location + +Sign layout is configured in `config.yml` under: + +```yaml +layout: +``` + +Example default configuration: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## Available Layout Keys + +Each line value refers to a built-in layout component. + +Common layout keys include: + +- `header` – The shop header line +- `trading` – Buy/Sell direction information +- `item` – Item name +- `price` – Shop price + +These keys are automatically formatted using your language file and formatting settings. + +--- + +## Leaving a Line Blank + +To leave a line empty, use: + +```yaml +line2: "" +``` + +This is useful if you want: + +- Minimalist signs +- Cleaner layouts +- Custom spacing +- Decorative formatting + +--- + +## Customizing Per Shop Type + +Each shop type can have a different layout. + +For example: + +```yaml +layout: + + SELLING: + line1: "header" + line2: "item" + line3: "price" + line4: "" + + BUYING: + line1: "header" + line2: "price" + line3: "item" + line4: "" + + FROZEN: + line1: "header" + line2: "" + line3: "item" + line4: "Frozen" +``` + +This allows you to visually differentiate: + +- Selling shops +- Buying shops +- Frozen shops + +--- + +## Practical Examples + +### Minimal Style + +```yaml +layout: + SELLING: + line1: "item" + line2: "price" + line3: "" + line4: "" +``` + +### Compact Economy Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "price" + line3: "item" + line4: "" +``` + +### Large Clear Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## How Updates Affect Layout + +When you change the layout: + +- Existing shop signs will update automatically when refreshed. +- New shops will use the updated format immediately. + +If needed, you can reload QuickShop to apply changes. + +--- + +## Best Practices + +- Keep important information visible (price and item). +- Avoid overly complex formatting. +- Test layout changes before deploying on large servers. +- Use different layouts for BUYING and SELLING to reduce confusion. + +--- + +## Common Questions + +### Can I add more than four lines? + +No. +Minecraft signs are limited to four lines. + +### Can I add colors? + +Colors are controlled by your language file and formatting settings. + +### Can I change layout without restarting? + +Yes, but reloading or refreshing shops is recommended to ensure full update. + +--- + +## Summary + +The Sign Layout system allows you to: + +- Fully customize shop sign appearance +- Create per-type layouts +- Simplify or expand shop information +- Improve clarity for players + +All layout customization is handled inside `config.yml`. diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md index abcc288db7..2a0d52d788 100644 --- a/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md @@ -8,19 +8,6 @@ This feature added in 6.0.0.0. By default, QuickShop-Hikari uses the default brand material from the configuration file, but you can modify it to other brands for your store with the command. -## Configuration - -```yaml - #The wall sign material. - #ACACIA_WALL_SIGN - #BIRCH_WALL_SIGN - #DARK_OAK_WALL_SIGN - #JUNGLE_WALL_SIGN - #OAK_WALL_SIGN - #SPRUCE_WALL_SIGN - sign-material: OAK_WALL_SIGN -``` - ## Change the material Use command `/quickshop sign ` to change your shop sign material. diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md new file mode 100644 index 0000000000..980bad10f2 --- /dev/null +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md @@ -0,0 +1,130 @@ +# Shop Sign Waxing + +QuickShop can automatically wax shop signs to prevent players from editing them manually. + +Waxing protects the integrity of your shop signs and helps prevent tampering, spoofing, and accidental modification. + +As of modern Minecraft versions, waxed signs cannot be edited unless they are unwaxed first. + +--- + +## What Is Sign Waxing? + +In Minecraft, waxing a sign locks it so that: + +- Players cannot edit the text +- Players cannot modify lines +- Accidental changes are prevented +- Malicious edits are blocked + +When enabled in QuickShop, shop signs are automatically waxed when created. + +--- + +## Why Use It? + +Sign waxing protects against: + +- Players editing price lines +- Changing item names on signs +- Spoofing shop information +- Accidental formatting issues +- Sign hijacking attempts + +On public servers, this feature is strongly recommended. + +--- + +## How It Works + +When a shop is created: + +1. QuickShop generates the shop sign. +2. The sign text is written. +3. The sign is automatically waxed (if enabled). + +If a shop is updated: + +- The sign will be safely updated by QuickShop. +- The wax state is maintained. + +Players cannot manually edit shop signs while waxing is enabled. + +--- + +## Configuration + +To enable or disable sign waxing, edit `config.yml`: + +```yaml +shop: + sign-wax: true +``` + +### true + +- Shop signs are automatically waxed. +- Players cannot edit the sign manually. + +### false + +- Shop signs behave like normal Minecraft signs. +- Players may edit them if permitted by the game. + +--- + +## Recommended Setting + +For most servers: + +```yaml +shop: + sign-wax: true +``` + +This ensures shop data stays accurate and secure. + +--- + +## Common Questions + +### Can admins still modify shop signs? + +QuickShop controls shop sign formatting. +Manual edits are not recommended. + +Admins should use: + +- Control panel +- Shop commands +- Direct configuration changes + +### Does waxing affect shop functionality? + +No. +Waxing only prevents manual text edits. +The shop continues to function normally. + +### Can players un-wax shop signs? + +No. +QuickShop manages the sign state automatically. + +--- + +## Best Practices + +- Keep sign-wax enabled on survival servers. +- Combine sign-wax with proper permissions. +- Avoid manually editing shop signs through other plugins. + +--- + +## Summary + +Sign Waxing: + +- Prevents tampering +- Requires no additional setup + +Enable it once and QuickShop handles the rest. \ No newline at end of file diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/shops/taxes.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/shops/taxes.md new file mode 100644 index 0000000000..1a273fd978 --- /dev/null +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/shops/taxes.md @@ -0,0 +1,92 @@ +# Taxation System + +QuickShop includes a taxation system designed to give server owners more flexibility and control over shop-based income. + +This system was revamped as of 6.2.0.11+ + +The new system allows you to: + +- Apply tax to shop owners +- Apply tax to buyers +- Apply tax to both +- Use progressive tax brackets +- Customize tax behavior in configuration + +This system replaces the legacy tax configuration. + +--- + +## How It Works + +During a transaction: + +1. The shop price is calculated. +2. Tax is calculated based on your configuration. +3. Tax is deducted from the configured target(s). +4. Remaining funds are distributed normally. + +You can configure: + +- Flat percentage tax +- Progressive tax based on player balance +- Tax accounts +- Distribution rules + +--- + +## Progressive Tax + +The new system allows you to tax based on balance brackets. + +Example concept: + +- 0 – 10,000 balance → 1% tax +- 10,000 – 100,000 → 2% tax +- 100,000+ → 3% tax + +This helps prevent extremely wealthy players from dominating the economy. + +--- + +## Who Pays the Tax? + +You can configure whether tax applies to: + +- The shop owner +- The buyer +- Both + +This gives you flexibility depending on your economy design. + +--- + +## Configuration + +All tax-related settings are located under the `shop-tax` section in `config.yml`. + +After updating to 6.2.0.11+, review your tax configuration carefully, as the old tax system has been replaced. + +--- + +## Why Use Tax? + +The taxation system can help: + +- Remove currency from circulation +- Fund server banks or towns +- Create sink mechanics +- Balance inflation +- Reward active players + +--- + +## Summary + +The new taxation system is: + +- Flexible +- Configurable +- Balance-aware +- Designed for modern economy servers + +Make sure to review your configuration after upgrading. \ No newline at end of file diff --git a/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md b/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md new file mode 100644 index 0000000000..247c24712d --- /dev/null +++ b/i18n/he-IL/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md @@ -0,0 +1,161 @@ +# WorldEdit & FAWE Support + +QuickShop includes built-in protection and integration for WorldEdit and FastAsyncWorldEdit (FAWE). + +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. + +You do not need to download or install any additional compatibility plugins. + +--- + +## What This Does + +WorldEdit and FAWE allow administrators and builders to: + +- Copy and paste regions +- Replace large areas of blocks +- Mass-delete regions +- Roll back areas +- Regenerate terrain + +Without protection, these operations could: + +- Create ghost shops +- Leave orphaned shop data in the database +- Duplicate shops unintentionally +- Delete containers without cleaning up shop data +- Cause inconsistencies between world and database + +QuickShop now automatically detects and safely processes WorldEdit and FAWE operations. + +--- + +## Built-In Behavior + +When WorldEdit or FAWE modifies blocks: + +- Shops removed via WorldEdit are properly deleted from the database. +- Shop data stays synchronized with world changes. +- Ghost shops are prevented. +- Mass block replacements will not leave broken shop entries behind. + +This applies to: + +- //set +- //replace +- //cut +- //paste +- //regen +- Region deletion +- Mass container removal + +No configuration is required. + +--- + +## FAWE Support + +FastAsyncWorldEdit (FAWE) is fully supported. + +Because FAWE processes edits asynchronously, QuickShop handles: + +- Region-thread safe processing +- Async block updates +- Safe shop deletion during batch edits + +You do not need to enable anything manually. + +--- + +## Removing Shops with WorldEdit + +If you delete containers (chests, barrels, etc.) using WorldEdit: + +QuickShop will automatically: + +- Detect the block removal +- Unregister the shop +- Clean the database entry +- Prevent ghost shops + +You do not need to run `/qs cleanghost` after WorldEdit usage in normal circumstances. + +--- + +## Copying and Pasting Shops + +If you copy and paste regions that contain shops: + +- Shop data will not duplicate incorrectly. +- Shop IDs remain consistent. +- Invalid pasted shops will not auto-register unless properly created. + +This prevents accidental duplication exploits. + +--- + +## Performance + +WorldEdit and FAWE operations can modify thousands of blocks at once. + +QuickShop processes these safely and efficiently: + +- Batch-aware cleanup +- Thread-safe region access (especially on Folia) +- Minimal performance impact during mass edits + +--- + +## Configuration + +There are no specific WorldEdit configuration options in QuickShop. + +Support is automatic and always enabled if WorldEdit or FAWE is detected. + +If WorldEdit is not installed, no extra code is executed. + +--- + +## Common Questions + +### Do I need the old WorldEdit compatibility jar? + +No. + +As of 6.2.0.11, WorldEdit support is built-in and the separate compatibility module has been removed. + +### Does this work with FAWE? + +Yes. FAWE is fully supported. + +### Will shops break if I use //set air? + +No. Shops will be safely removed and cleaned up. + +### Do I need to restart after installing WorldEdit? + +No. QuickShop detects WorldEdit automatically on startup. + +--- + +## Best Practices + +Even though QuickShop safely handles WorldEdit operations, it is recommended to: + +- Avoid copying shops intentionally unless required +- Use backups before large region edits +- Test large FAWE operations on staging servers when possible + +--- + +## Summary + +QuickShop’s built-in WorldEdit and FAWE integration ensures: + +- Safe mass edits +- No ghost shops +- Automatic database cleanup +- Thread-safe processing +- No extra modules required + +WorldEdit support is now a core feature of QuickShop. \ No newline at end of file diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/addon/limited.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/addon/limited.md index 70af27e240..fae55a8c95 100644 --- a/i18n/hi-IN/docusaurus-plugin-content-docs/current/addon/limited.md +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/addon/limited.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -41,8 +35,8 @@ Limit players to purchase up to 16 items per month. /quickshop limit period MONTH ``` -The system is based on the QuickShop-Hikari calendar system.\ -The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year.\ +The system is based on the QuickShop-Hikari calendar system. +The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year. Same for days, months and hours. Available time units: diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/addon/list.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/addon/list.md index 93d182f083..f20b91fd7b 100644 --- a/i18n/hi-IN/docusaurus-plugin-content-docs/current/addon/list.md +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/addon/list.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/addon/plan.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/addon/plan.md index 52a6e79cb4..c10ef4df42 100644 --- a/i18n/hi-IN/docusaurus-plugin-content-docs/current/addon/plan.md +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/addon/plan.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -18,7 +18,7 @@ Recorded data can be displayed from Hikari v2.0.0.0 onwards, but only after vers - All shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 1000 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `5` in server scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `5` in server scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Player Scope @@ -27,7 +27,7 @@ And still is Plan limitations, the list sorting is disturbed, so the display ord - All owned shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 50 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `4` in player scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `4` in player scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Showcase diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/addon/reforges.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/addon/reforges.md index 2a14509eb7..25fff1752a 100644 --- a/i18n/hi-IN/docusaurus-plugin-content-docs/current/addon/reforges.md +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/addon/reforges.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.0.0.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md index 304d39bc05..6f9f51d250 100644 --- a/i18n/hi-IN/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.1.1.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -44,7 +38,7 @@ _This is not necessary if you are using an H2 database._ ### Prepare for convert -To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console.\ +To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console. If a player is in the server, the conversion cannot be started. Once the conversion has begun, the server will be locked during the conversion process and no players will be able to join the server during the conversion. diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/addon/shopitemonly.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/addon/shopitemonly.md index c45062f8c2..1ccfe977b3 100644 --- a/i18n/hi-IN/docusaurus-plugin-content-docs/current/addon/shopitemonly.md +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/addon/shopitemonly.md @@ -2,17 +2,11 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT - -::: - -This addon prevents players from putting non-store items into store containers.\ +This addon prevents players from putting non-store items into store containers. Does not apply to stores that use the item inventory redirection API (aka. InventoryWrapper API). This Addon will check for container (or transferring) items on events such as the player closing the container or hopper access. diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md new file mode 100644 index 0000000000..9c8b4f7407 --- /dev/null +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md @@ -0,0 +1,55 @@ +# 6.2.0.10 + +## Major Changes + +- Added support for 1.21.6 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.7 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.8 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Some internal updates for packetevents(2.9.0 is now required.) +- Updated Lands support + +## Addon Changes + +- Added MatcherPlus Addon + - Allows support for BreweryX and AdvancedItems stacks in shops with improved matching abilities +- Added FabledSkyblock Compat +- Added Dominion Compat +- Added HuskTowns Compat +- Added IridiumSkyblock Compat +- Added member-create for member creation in ARM compat +- Added admin-override and quickshop.arm.admin permission for admin overrides in ARM + +## Minor Changes + +- Added configurations for the coordinates of the display item. +- Added /qs toggledisplayall on/off server/owned + - Players need to have permission node quickshop.toggledisplayall.admin to toggle all on the server. +- Added ability to use abbreviations in /qs price and /qs create commands such as 2.5k for 2500 +- Added ability to set default display status using shop.default-display in config.yml + +## Fixes + +- Fixed issue with display item being sent to the moon on 1.21.5 +- Fixed issue where TRADE_UI interactions interfered with quick create. +- Fixed issue with displays on protocollib falling through the chest +- Fixed issue with signs on .9 and previous .10 snapshots on early versions +- Implemented some performance improvements for paper servers +- Fixed all outstanding issues with Folia usage.(thanks to RootB33R/SleazLee for contributions) + +## Possible 6.2.0.11 Features + +Here's an outline for some features that may arrive in 6.2.0.11: + +- Additional compats/addons that have been piling up. + - see: https://github.com/QuickShop-Community/QuickShop-Hikari/issues/1756 +- gradle?(interested to see compilation time uplifts) +- Update documentation +- Update configuration comments +- Update configuration system? + - auto updating? + - Allows removal of the update code +- Remove waste spigot modules? + - Any versions of 1.20 that can be discarded due to low use? +- Bug fixing, of course +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... \ No newline at end of file diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md new file mode 100644 index 0000000000..b41c88662a --- /dev/null +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md @@ -0,0 +1,173 @@ +## Outline + +- Update documentation +- Update configuration comments +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... + +# 6.2.0.11 + +## Major Changes + +- Removed Spigot Platform Modules, and stopped loading QS if Spigot is detected. This will mean that unless the protocol changes that we use for display items, QS won't need updated for each version. +- Revamped Economy Code Completely + - New classes for all economy-related systems + - Any economy-related or benefits-related events are incompatible with previous versions. +- Added sign layout customizations per-type allowing you to change how lines are configured, an empty string('') will leave an empty line for that line of the sign. + +``` + #The layout of signs for shops. + layout: + + #The layout of BUYING shops. + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of FROZEN shops. + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of SELLING shops. + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +- Add wildcard support for item blacklist patterns(thanks to bennycallanan) + - Added support for wildcard patterns in the item blacklist configuration, allowing users to block entire categories of items with simple patterns. + + - Features + - Wildcard patterns like \*_AXE and \*_SPAWN_EGG now work in blacklist configuration + - Supports \* for any characters and ? for single character matching + - Case-insensitive pattern matching +- Overhauled GUI system(thanks to Yusakidev) + - Implemented gui.yml configuration file for customizing the GUI. + - Implemented better filtering for qs browse + - Implement GUI system to be more stable, and less error prone. + - Added gui.yml for fully configurable GUI layouts and text + - Browse menu: search, sort (price/name/stock), and filter (all/buying/selling/in-stock) + - Staff menu: search functionality for player/staff selection + - Grouped item pages for better shop browsing + - Refactored all menu pages to use configurable display/lore +- Added worldedit compat to QS internally as it's widely used. +- Revamped the taxation system to be more flexible and easier to configure. + - introduced a new progressive tax system that allows you to tax based on the balance of players.(suggested by YuanYuanOwO) + - introduced the ability to tax the player interacting with the shop, the owner, or both + - all tax-related configurations have been moved under the shop-tax section of the config. this may require reconfiguration of your tax settings. + - added a new ShopEnhancedTaxEvent, deprecated the old ShopTaxEvent. + - Added a new TaxManager, and TaxProvider interfaces, this allows for custom tax providers to be added by addons/third-party developers. + +## Addons/Compats Changes + +- Added UltimateClaims compat +- Added SimpleClaimSystem compat +- Added Quests by Pika addon +- Added BetonQuest addon +- Added Pl3xMap addon +- MatcherPlus Compat Improvements + - Added support for CrazyCrates + - Added support for ExcellentCrates + - Added support for SilkSpawners. +- WorldGuard Compat Improvements(Thanks to golovin12) + - Added clear permission handling: + - Region owners and members automatically have permission to create and trade in their own regions. + - Other players must have the appropriate WorldGuard flags enabled (quickshophikari-create, quickshophikari-trade) to interact with shops. + - If a shop is located outside any region, default QuickShop behavior applies (no extra restrictions) +- Added colored markers based on shop state for bluemap(thanks to YusakiDev) +- Updated dynmap/towny addons to use the new ShopTypeEnhancedEvent instead of ShopTypeEvent. +- Removed worldedit compat, it's now included in the main plugin. +- Added support for global flags to the worldguard compat. + +## Internals/Developer APIs + +- Removed several deprecated methods and classes. +- Revamped the interaction manager. It is now more flexible and allows external additions + - This involves two classes InteractionBehavior and InteractionType. + - InteractionType details the type of interaction such as: STANDING_LEFT_CLICK_SIGN, STANDING_LEFT_CLICK_SHOP + - InteractionBehavior outlines a behavior for an InteractionType such as CONTROL_PANEL and TRADE_UI +- Added UserLimitCalculationEvent, which allows for custom limits to be applied to users. + - This is useful for limiting the number of shops a user can have, or adding on to the existing limits provided by the ranks system without needing to implement a new RankLimiter. +- Added a new ShopLayoutProvider interface, and default implementation. + - This allows for custom layouts to be used for shops, allowing for more customization. + - This also allows for developers to override the default layout provider and create their own implementation. +- How to make your own? + - Implement the classes you would like to then register with the InteractionManager: + - ```java + InteractionManager manager = QuickShop.getInstance().getInteractionManager(); + + manager.interaction(new MyTradeInteraction()); + manager.behavior(new MyTradeBehavior()); + ``` +- Replaced some Apache Commons calls that could be easily replaced with built-in java methods, reduces some calls by ~ 1100ms/method call +- Deprecated the ShopType enum, and the ShopTypeEvent. These are replaced with the new IShopType interface and implementing classes. + - The new event is ShopTypeEnhancedEvent. + - This allows for third-party addons to add their own shop types, and simplifies code checks for translations. +- Updated config system to use Boosted-yaml + - this allows for auto-updating of config files without complex update scripts + - this also allows for the config system to not be minecraft-dependent. +- Replaced logical PaperLib calls with native PaperAPI calls. + +## Minor Changes + +- Bump Java version up to 21 +- Added shop.display-allow-enchants to enable/disable enchantments for display items on shops. +- Added workaround for packetevents not supporting custom enchants on itemstacks for virtual display items. +- Using locale translations for shop-type in mode toggle icon(thanks to ExyiN) +- Bumped Residence version for the compat(thanks to YuanYuanOwO) +- add world whitelist support(thanks to wling-art) +- added /qs database save command, which saves all currently dirty-marked shops to the database. +- Split up interactions _SHOPBLOCK into _SHOPBLOCK and _CONTAINER. + - _SHOPBLOCK relates to shops, where _CONTAINER relates to shop-valid containers that are not currently shops. +- Added inventory as an option for command panel, this is useful for adding a secondary option for players to open a shop's inventory. +- Moved crowdin arguments from system properties to config.yml + - crowdin-host + - use-crowdin-ota + +## Fixes + +- Fixes issue with item price restrictions(thanks to maxcom1) +- Fixes issue with 1.20.x protocol lib displays(thanks to YuanYuanOwO) +- Fixes issue when no item is in hand for itemdebug(thanks to YuanYuanOwO) +- Fixes issue with dominion addon(thanks to YuanYuanOwO) +- Add a simple check to avoid this. If it is not own shop, reject limit request directly.(Thanks to YuanYuanOwO) +- Fix NPE by not setting tax for price in TransactionBuilder(thanks to maxcom1) +- Fixes /quickshop suggestprice to differentiate between buy/sell shops. (Thanks to MidSpike) +- PacketEvents ClassNotFoundException with ProtocolLib(thanks to wling-art) +- Reallocate block state access to region thread for shop creation(thanks to r00tbeerman) +- resolve SLF4J StaticLoggerBinder loading error(thanks to wling-art) +- sign hijacking issue by validating sign facing direction(thanks to wling-art) +- Performance improvements for QuickShop disabling to prevent potential freezes. +- Fixed issue with 1.20.4 packetevents virtual displays not staying put. +- Fixes critical issue in GriefPrevention compatibility plugin. +- Fixes issue with shop owner not getting money when benefits active. +- Fixes for lands addon on folia, Use regionThread for Folia compatibility(thanks to YusakiDev) +- Fixes for TRADE_DIRECT on stacking shops +- Fixes issue for protocollib 5.4.0 with undocumented packet changes. +- Fixes issue where item stacks could be used on creation above the max stack size. +- Fixes issue with BukkitAudiences-related crashes on 1.21.11. +- Fix issue with shop deletion when getting too impatient. +- Fix the permission check issue when a shop owned by a non-owner is transferred to someone else. (thanks to YuanYuanOwO) +- Fix ui with supertool (thanks to YuanYuanOwO) +- Fix issue with logs generating outside debug mode. +- Fix issue with /qs find. +- Fix configuration loading timing. +- Fix configuration loading/creation warning message language. +- Fix command description language key mismatch(thanks to wling-art) +- Fix qs clean command on folia(thanks to wling-art) +- Fix per-player-shop-sign on folia(thanks to wling-art) +- Fix potential recursive deadlock in virtual display packet sending(thanks to wling-art) +- Fix configuration loading/creation warning message language. +- Fix issue with /qs browse and ShopItemOnly addon not behaving properly together on folia. +- Fix issue with PLAN using outdated APIs. +- Fix issue with /qs clean on folia.(thanks to wling-art) +- Fix issue with /qs cleanghost on folia(thanks to wling-art) +- More thread safety fixes for shops on folia.(thanks to wling-art) +- Fix owner payment calculations with benefits(thanks to wling-art) \ No newline at end of file diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md index 8172f9b410..dcc3edc67d 100644 --- a/i18n/hi-IN/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md @@ -20,20 +20,20 @@ the ControlComponent object with a custom one that will replace the original dur ### Introduction of the Revamped Packet System 1. **About**: - - A modular and scalable system for managing packets related to virtual display items in Minecraft. - - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. + - A modular and scalable system for managing packets related to virtual display items in Minecraft. + - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. 2. **Custom Packet Factories**: - - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. - - Packet types: - - **Spawn Packet**: Spawns a virtual item entity at a specific location. - - **Metadata Packet**: Updates the visual properties of virtual items. - - **Velocity Packet**: Adds motion/velocity to entities (currently optional). - - **Destroy Packet**: Removes the entity from the client view. + - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. + - Packet types: + - **Spawn Packet**: Spawns a virtual item entity at a specific location. + - **Metadata Packet**: Updates the visual properties of virtual items. + - **Velocity Packet**: Adds motion/velocity to entities (currently optional). + - **Destroy Packet**: Removes the entity from the client view. 3. **Error Handling and Logging**: - - Enhanced debug logs to trace packet-related issues. - - Detailed error messages for missing factories or unregistered listeners. + - Enhanced debug logs to trace packet-related issues. + - Detailed error messages for missing factories or unregistered listeners. #### Improvements: diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md index 7775308722..c6e0948d19 100644 --- a/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md index f420997a9c..38587e3784 100644 --- a/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md index 5ed8182c9a..259c55f342 100644 --- a/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md index 924a37ac49..7fd4596a6a 100644 --- a/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,6 +10,6 @@ This is a BungeeCord plugin, you need install it within your BungeeCord's plugin ## How does it work? -BungeeCord Bridge plugins will register a `quickshop:bungee` channel for fowarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. +BungeeCord Bridge plugins will register a `quickshop:bungee` channel for forwarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. All forwarding is indicated by QuickShop-Hikari on the Spigot server and ends when it is not needed. diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md index 27d68956a8..20fbaf7a0c 100644 --- a/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,5 +10,5 @@ This compatibility module added [Chest Protect](https://www.spigotmc.org/resourc ## How does it work? -This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident.\ +This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident. It also prevents players from creating shops on ChestProtect protected containers. diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md index 220e26d8bb..e1757e7be9 100644 --- a/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/dominion.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/dominion.md new file mode 100644 index 0000000000..e1195278a8 --- /dev/null +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/dominion.md @@ -0,0 +1,138 @@ +# Dominion + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and Dominion. + +It ensures that shop creation and trading respect Dominion’s land and territory protection system. + +--- + +## What Does It Do? + +Dominion allows players or groups to claim land and define territory-based permissions. + +Without compatibility: + +- Players could create shops inside territories they do not control. +- Visitors might trade inside protected dominions. +- Dominion permission rules might not apply to shop interactions. + +The Dominion compat module ensures that: + +- Shop creation respects territory ownership. +- Shop trading follows Dominion permission settings. +- Protected land remains secure from unauthorized shop usage. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a Dominion-controlled area. +- Whether the player has permission within that territory. +- Whether Dominion rules allow shop interaction. + +If the action is not permitted by Dominion settings, QuickShop blocks it. + +If the location is outside any Dominion territory, default QuickShop behavior applies. + +--- + +## Territory Owner Control + +With this module enabled: + +- Territory owners can create and manage shops inside their dominion. +- Trusted members follow territory-based permissions. +- Outsiders are restricted unless explicitly allowed. +- Shop actions respect Dominion’s land rules automatically. + +This prevents unauthorized shop placement inside protected territories. + +--- + +## Installation + +1. Install Dominion. +2. Install the QuickShop Dominion compat module. +3. Restart your server. + +The module activates automatically if Dominion is detected. + +No manual configuration linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside dominions +whitelist-mode: false + +# Allow territory owners to override shop permissions +allow-owner-override: true +``` + +If Dominion is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For servers using Dominion: + +- Restrict shop creation to territory owners or trusted members. +- Prevent shop creation in wilderness if desired. +- Allow dominion owners to manage shop permissions. +- Review Dominion permission settings to align with shop behavior. + +This ensures protected territories remain secure and organized. + +--- + +## Common Questions + +### Can players create shops in someone else's dominion? + +Only if Dominion permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You may allow or restrict shops outside dominions. + +### What happens if Dominion is removed? + +QuickShop returns to normal behavior and stops checking Dominion territories. + +--- + +## Summary + +The Dominion compat module: + +- Enforces territory-based permissions +- Prevents unauthorized shop creation +- Protects claimed land from misuse +- Integrates seamlessly with Dominion + +It is recommended for servers running Dominion. \ No newline at end of file diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md index 743d3ae666..2ac9b10488 100644 --- a/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md new file mode 100644 index 0000000000..07ba4ada66 --- /dev/null +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md @@ -0,0 +1,133 @@ +# FabledSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and FabledSkyblock. + +It ensures that shop creation and trading properly respect island boundaries and island permissions. + +--- + +## What Does It Do? + +On Skyblock servers, players build and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Players might trade in areas they should not. +- Island protection rules might not apply to shops. + +The FabledSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members behave correctly with shops. +- Island visitors are restricted appropriately. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a FabledSkyblock island. +- Whether the player has permission on that island. +- Whether island settings allow the action. + +If the action is not permitted by island rules, QuickShop will deny it. + +--- + +## Island Ownership Rules + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow island permission settings. +- Visitors can only trade if island permissions allow it. +- Outside of islands, default QuickShop behavior applies. + +--- + +## Installation + +1. Install FabledSkyblock. +2. Install the QuickShop FabledSkyblock compat module. +3. Restart your server. + +The module activates automatically if FabledSkyblock is detected. + +No manual linking is required. + +--- + +## Configuration + +If the module provides configuration options, they will appear in its `config.yml`. + +Typical options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If FabledSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most Skyblock servers: + +- Allow shop creation only inside islands. +- Prevent trading in the void or wilderness. +- Let island owners control shop permissions. +- Use island rank systems to manage shop access. + +This helps maintain economic balance between islands. + +--- + +## Common Questions + +### Can players create shops in the void? + +Only if your configuration allows it. +Most servers disable shop creation outside islands. + +### Does this affect island war or PvP modes? + +No. +The module only checks island ownership and permissions for shop interactions. + +### What happens if FabledSkyblock is removed? + +QuickShop returns to normal behavior. + +--- + +## Summary + +The FabledSkyblock compat module: + +- Protects island economies +- Enforces island permission rules +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is strongly recommended for any server running FabledSkyblock. \ No newline at end of file diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md index 81b13d2c6b..32614d3019 100644 --- a/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md @@ -2,17 +2,17 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -GreifPrevention compatibility module added compaitibility with GF. +GreifPrevention compatibility module added compatibility with GF. ## How does it work This module allow QuickShop-Hikari check if player have permission to create or use QuickShop in specific region. -And delete shops when claim removed, untrusted, unclimed, expired, resized or subclaim created. +And delete shops when claim removed, untrusted, unclaimed, expired, resized or subclaim created. ## Configuration diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md new file mode 100644 index 0000000000..e71b34d462 --- /dev/null +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md @@ -0,0 +1,139 @@ +# HuskTowns + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and HuskTowns. + +It ensures that shop creation and trading respect town and claim permissions defined by HuskTowns. + +--- + +## What Does It Do? + +HuskTowns allows players to create towns and claim land. + +Without compatibility: + +- Players could create shops inside towns they do not belong to. +- Visitors might trade inside protected towns. +- Town permission rules might not apply to shop interactions. + +The HuskTowns compat module ensures that: + +- Shop creation respects town ownership. +- Trading follows town permission settings. +- Town members and visitors are handled correctly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a HuskTowns claim. +- Whether the player is a town member, trusted player, or outsider. +- Whether the town's permission settings allow the action. + +If the action is not permitted by town rules, QuickShop blocks it. + +Outside of town claims, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Town Owner Control + +With this module enabled: + +- Town owners can create and manage shops inside their town. +- Town members follow town-based permission settings. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect town claim protection. + +This prevents unauthorized shop placement and trading inside protected towns. + +--- + +## Installation + +1. Install HuskTowns. +2. Install the QuickShop HuskTowns compat module. +3. Restart your server. + +The module activates automatically if HuskTowns is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside towns +whitelist-mode: false + +# Allow town owners to override shop permissions +allow-owner-override: true +``` + +If HuskTowns is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For town-based survival servers: + +- Restrict shop creation to town members. +- Allow trading only where town permissions permit. +- Prevent shop creation in wilderness if desired. +- Enable owner override for better administrative control. + +This helps maintain town-based economic balance. + +--- + +## Common Questions + +### Can players create shops in another town? + +Only if that town's permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You can allow or restrict shops outside towns. + +### What happens if HuskTowns is removed? + +QuickShop returns to normal behavior and stops checking town permissions. + +--- + +## Summary + +The HuskTowns compat module: + +- Enforces town-based land permissions +- Protects towns from unauthorized shop usage +- Integrates smoothly with HuskTowns +- Requires minimal setup + +It is recommended for any server running HuskTowns. \ No newline at end of file diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md new file mode 100644 index 0000000000..3fa2995eb0 --- /dev/null +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md @@ -0,0 +1,139 @@ +# IridiumSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and IridiumSkyblock. + +It ensures that shop creation and trading respect island boundaries and island permission settings defined by IridiumSkyblock. + +--- + +## What Does It Do? + +IridiumSkyblock allows players to create and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Visitors might trade inside protected islands. +- Island protection rules might not apply correctly to shops. + +The IridiumSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members and visitors are handled properly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside an IridiumSkyblock island. +- Whether the player is the island owner, member, or visitor. +- Whether island permissions allow shop interaction. + +If the action is not permitted, QuickShop blocks it. + +Outside of islands, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Island Owner Permissions + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow the island's permission configuration. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect island protection rules. + +This prevents unauthorized shop usage inside protected islands. + +--- + +## Installation + +1. Install IridiumSkyblock. +2. Install the QuickShop IridiumSkyblock compat module. +3. Restart your server. + +The module activates automatically if IridiumSkyblock is detected. + +No additional setup is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If IridiumSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most IridiumSkyblock servers: + +- Restrict shop creation to island owners. +- Allow island members to trade if trusted. +- Prevent shop creation in the void or wilderness. +- Enable owner override for better management. + +This helps maintain balanced island economies. + +--- + +## Common Questions + +### Can players create shops outside their island? + +Only if your configuration allows it. + +Most Skyblock servers restrict shops to island areas. + +### Do island ranks affect shop permissions? + +Yes, if your island permissions are configured to control interaction rights. + +QuickShop follows island rules. + +### What happens if IridiumSkyblock is removed? + +QuickShop returns to normal behavior and stops checking island permissions. + +--- + +## Summary + +The IridiumSkyblock compat module: + +- Protects island economies +- Enforces island-based permissions +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is recommended for any server running IridiumSkyblock. diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md new file mode 100644 index 0000000000..3b4726cb9d --- /dev/null +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md @@ -0,0 +1,151 @@ +# ItemMatcherPlus + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +The ItemMatcherPlus module improves how QuickShop matches custom and plugin-modified items. + +It allows QuickShop to properly recognize and stack items created by other plugins that normally would not match using standard Bukkit item comparisons. + +This module is especially useful for servers that use: + +- Custom items +- Modified metadata +- NBT-based systems +- Advanced crate rewards +- Custom brewing systems +- Custom fishing rewards + +--- + +## What Does It Do? + +By default, Minecraft item matching checks: + +- Material type +- Basic metadata + +However, many plugins modify items with: + +- Custom NBT data +- Hidden tags +- Custom lore formats +- Unique identifiers + +Without enhanced matching: + +- Items may not stack +- Shops may refuse valid items +- Transactions may fail +- Buying/selling may not behave correctly + +ItemMatcherPlus improves compatibility and matching accuracy. + +--- + +## Supported Plugins + +ItemMatcherPlus includes built-in support for: + +- AdvancedItems +- BreweryX +- CrazyCrates +- ExcellentCrates +- PyroFishing +- SilkSpawners + +If any of these plugins are installed, QuickShop will automatically use enhanced matching logic. + +No additional configuration is required. + +--- + +## How It Works + +When a player trades with a shop: + +1. QuickShop checks the item. +2. If ItemMatcherPlus is enabled, it performs advanced matching. +3. Plugin-specific metadata is validated. +4. The item is confirmed as a match (or rejected safely). + +This allows: + +- Proper stacking of custom items +- Correct shop transactions +- Accurate buy/sell detection +- Reduced false mismatches + +--- + +## Installation + +1. Download the ItemMatcherPlus module. +2. Place the JAR into your `plugins` folder. +3. Restart your server. + +If supported plugins are detected, compatibility activates automatically. + +--- + +## Configuration + +ItemMatcherPlus does not require configuration. + +It activates automatically when: + +- The module is installed +- A supported plugin is detected + +If a supported plugin is not installed, no extra logic runs. + +--- + +## Why You Should Use It + +You should install ItemMatcherPlus if your server uses: + +- Custom fishing plugins +- Custom brewing systems +- Crate plugins with modified items +- Custom spawners +- Any plugin that modifies NBT data + +Without it, shops may not properly recognize custom items. + +--- + +## Common Questions + +### Do I need this if I don't use custom item plugins? + +No. +If you only use vanilla items, this module is not necessary. + +### Does this affect performance? + +The module only activates enhanced matching when needed. + +Normal item matching remains fast and efficient. + +### Will it break existing shops? + +No. +It improves compatibility and matching accuracy without modifying existing shop data. + +--- + +## Summary + +ItemMatcherPlus: + +- Improves item matching accuracy +- Adds support for major custom item plugins +- Prevents stacking and trade issues +- Requires no configuration +- Activates automatically + +If you run a heavily customized economy server, this module is highly recommended. \ No newline at end of file diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md index ba87606698..d4ae7d129a 100644 --- a/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/lands.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/lands.md index 06296f5779..7671fcdfe0 100644 --- a/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/lands.md +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/lands.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/openinv.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/openinv.md index c51f628615..4807d57873 100644 --- a/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/openinv.md +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/openinv.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md new file mode 100644 index 0000000000..c2136320b0 --- /dev/null +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md @@ -0,0 +1,138 @@ +# SimpleClaimSystem + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and SimpleClaimSystem. + +It ensures that shop creation and trading respect land ownership and claim permissions defined by SimpleClaimSystem. + +--- + +## What Does It Do? + +SimpleClaimSystem allows players to claim land and protect it from unauthorized interaction. + +Without compatibility: + +- Players could create shops inside claims they do not own. +- Visitors might trade inside protected areas. +- Claim protection might not apply correctly to shops. + +The SimpleClaimSystem compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops within their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a SimpleClaimSystem claim. +- Whether the player has permission within that claim. +- Whether claim rules allow shop interaction. + +If the action is not permitted by the claim, QuickShop blocks it. + +If the location is outside any claim, default QuickShop behavior applies. + +--- + +## Claim Owner Control + +With this module enabled: + +- Claim owners can create and manage shops inside their claim. +- Trusted players follow claim-based permissions. +- Visitors are restricted unless explicitly allowed. +- Claim protection rules apply automatically to shop interactions. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install SimpleClaimSystem. +2. Install the QuickShop SimpleClaimSystem compat module. +3. Restart your server. + +The module activates automatically if SimpleClaimSystem is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If SimpleClaimSystem is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Enable owner override for easier management. + +This ensures players maintain control over their protected land. + +--- + +## Common Questions + +### Can players create shops in someone else's claim? + +Only if claim permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can allow shops outside claims or restrict them. + +### What happens if SimpleClaimSystem is removed? + +QuickShop will revert to default behavior and stop checking claim permissions. + +--- + +## Summary + +The SimpleClaimSystem compat module: + +- Enforces claim-based permissions +- Prevents unauthorized shop creation +- Protects land from unwanted trading +- Requires minimal setup + +It is recommended for servers running SimpleClaimSystem. \ No newline at end of file diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md index a84dbf057b..4dfa8ae97c 100644 --- a/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/towny.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/towny.md index 52ab4818f4..b26c19d335 100644 --- a/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/towny.md +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/towny.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -26,7 +26,7 @@ Town sub-command allow you switch a quickshop between regular shop and town shop For a nation shop, the shop owner will changed to nation fake player created by Towny, and use Nation's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from nation Towny account.\ +All purchases will deposit or withdraw money from nation Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Nation Shop. @@ -35,7 +35,7 @@ If Plot type restriction is enabled, only a specific Plot type can create a Nati For a town shop, the shop owner will changed to town fake player created by Towny, and use Town's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from town Towny account.\ +All purchases will deposit or withdraw money from town Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Town Shop. @@ -88,7 +88,7 @@ bank-mode: ## Permission Override -By adjust configuration, you're allow mayor or king automaticlly grant administrator permission on all shops in their management range. +By adjust configuration, you're allow mayor or king automatically grant administrator permission on all shops in their management range. ```yaml #Should allow Mayor grant the shop administrator permission on they town. @@ -168,7 +168,7 @@ This causes Towny and QuickShop Hikari to use accounts with the same name but di You can adjust the option in configuration to enable workaround. -NOTE: It will force turned on if detected EssentialsX installed on your server.\ +NOTE: It will force turned on if detected EssentialsX installed on your server. At present, we do not provide a method for disable it. ```yaml diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md new file mode 100644 index 0000000000..0189958495 --- /dev/null +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md @@ -0,0 +1,138 @@ +# UltimateClaims + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and UltimateClaims. + +It ensures that shop creation and trading respect land claim permissions managed by UltimateClaims. + +--- + +## What Does It Do? + +On servers using land-claim plugins, players protect areas of the world from unauthorized interaction. + +Without compatibility: + +- Players may create shops inside claims they do not own. +- Visitors might trade in areas where they should not. +- Claim protection rules might not apply correctly to shops. + +The UltimateClaims compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops inside their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a claim. +- Whether the player has permission in that claim. +- Whether claim rules allow shop interaction. + +If the action violates claim settings, QuickShop blocks it. + +Outside of claims, normal QuickShop behavior applies. + +--- + +## Claim Owner Permissions + +With this module enabled: + +- Claim owners can create and manage shops within their claim. +- Trusted players follow claim permission settings. +- Visitors are restricted based on claim configuration. +- Shop actions outside of claims behave normally. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install UltimateClaims. +2. Install the QuickShop UltimateClaims compat module. +3. Restart your server. + +If UltimateClaims is detected on startup, compatibility activates automatically. + +No additional linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Common options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If UltimateClaims is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Keep owner override enabled for better control. + +This ensures players maintain full control over their protected land. + +--- + +## Common Questions + +### Can players create shops inside someone else's claim? + +Only if the claim permissions allow it. + +Otherwise, QuickShop will block the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can choose to restrict shops to claimed land only. + +### What happens if UltimateClaims is removed? + +QuickShop returns to normal behavior without claim checks. + +--- + +## Summary + +The UltimateClaims compat module: + +- Protects claimed land from unauthorized shop usage +- Enforces claim-based permissions +- Integrates smoothly with land-claim servers +- Requires minimal setup + +It is recommended for any server running UltimateClaims. \ No newline at end of file diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md index 87a71a205c..6437754503 100644 --- a/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md @@ -2,8 +2,10 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. Find out more [here](../modules/shops/worldedit.md). + +Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. \ No newline at end of file diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/development/01-getting-start.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/development/01-getting-start.md index 92b773451e..0e78e52367 100644 --- a/i18n/hi-IN/docusaurus-plugin-content-docs/current/development/01-getting-start.md +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/development/01-getting-start.md @@ -6,8 +6,8 @@ This series of articles will help you build extensions for QuickShop-Hikari or i ## License -QuickShop-Hikari is open source using the [GPLv3](https://www.gnu.org/licenses/quick-guide-gplv3.en.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari).\ -You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the GPLv3 agreement. +QuickShop-Hikari is open source using the [AGPLv3](https://www.gnu.org/licenses/agpl-3.0.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari). +You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the AGPLv3 agreement. ## 🚧Don't trust Javadoc too much @@ -48,7 +48,7 @@ QuickShop-Hikari divides operation sources into three types: - Server Main Thread - Async Thread (any other threads but not server main thread) -- Hybird +- Hybrid If you access the API through the wrong thread, QuickShop-Hikari will force a runtime error to be thrown. @@ -58,4 +58,4 @@ For APIs that may trigger network IO or long-time disk IO, you are required not You can see [Util.ensureThread()](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/3d1d271e1106ea1c83cc6068f8232ab7c7860918/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/util/Util.java#L351) and find out the requirements of the different APIs by looking up their use. APIs that do not use Util.ensureThread() are allowed to be called from any thread by default. -You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. +You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. \ No newline at end of file diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md index aa2404c594..7828d414ad 100644 --- a/i18n/hi-IN/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md @@ -10,7 +10,7 @@ ShopManager manager = api.getShopManager(); ## Getting a shop -Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates.\ +Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates. QuickShop-Hikari's store is only bound to one half of "Large Chest", so to get the store, you need to query both the cube itself and its associated cube. The good thing is that there is an API in the plugin that allows you to handle this situation very easily. @@ -71,7 +71,7 @@ manager.deleteShop(shop) // Permanently delete this store, both memory and datab ## Identify a store -Please note that store locations are technically variable and you should not use coordinates to identify a store.\ +Please note that store locations are technically variable and you should not use coordinates to identify a store. Also RuntimeRandomUniqueId should not be used to identify the store, as the name suggests, the value changes every time the server restarts, it should only be used to handle scenarios where the player interacts with the server. ```java diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md index 543f1851da..4f839ed652 100644 --- a/i18n/hi-IN/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md @@ -1,6 +1,6 @@ # 0x05 Per shop permission -QuickShop-Hikari has a per shop permission management system.\ +QuickShop-Hikari has a per shop permission management system. Therefore, for a normal permission node check is not enough, you need to attach an additional check. ## Check with shop diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/development/06-protocol-system.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/development/06-protocol-system.md index 5d37a15536..0380b789f9 100644 --- a/i18n/hi-IN/docusaurus-plugin-content-docs/current/development/06-protocol-system.md +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/development/06-protocol-system.md @@ -15,30 +15,30 @@ This documentation will guide developers through the components, implementation - **Purpose**: Manages packet handling and initialization logic. - **Interface**: `PacketHandler` - **Key Methods**: - - `Map> factories()` - - Retrieves a map of supported `PacketFactory` instances keyed by game versions. - - `void initialize()` - - Initializes the packet handler. - - `Optional> factory(String version)` - - Retrieves a `PacketFactory` for a specific game version. + - `Map> factories()` + - Retrieves a map of supported `PacketFactory` instances keyed by game versions. + - `void initialize()` + - Initializes the packet handler. + - `Optional> factory(String version)` + - Retrieves a `PacketFactory` for a specific game version. ### 2. **PacketFactory** - **Purpose**: Creates and sends specific packet types. - **Interface**: `PacketFactory` - **Supported Packets**: - - **Spawn Packet**: - - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. - - Example Use: Representing shop items visually. - - **Metadata Packet**: - - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. - - Example Use: Updating item display name or properties. - - **Velocity Packet**: - - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. - - Example Use: Custom animations for virtual items. - - **Destroy Packet**: - - Removes the entity from the client view. Created using `createDestroyPacket()`. - - Example Use: Unloading or removing a virtual display item. + - **Spawn Packet**: + - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. + - Example Use: Representing shop items visually. + - **Metadata Packet**: + - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. + - Example Use: Updating item display name or properties. + - **Velocity Packet**: + - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. + - Example Use: Custom animations for virtual items. + - **Destroy Packet**: + - Removes the entity from the client view. Created using `createDestroyPacket()`. + - Example Use: Unloading or removing a virtual display item. Developers implementing custom `PacketFactory` should ensure these packets are correctly handled and optimized for performance. @@ -46,24 +46,24 @@ Developers implementing custom `PacketFactory` should ensure these packets are c - **Purpose**: Oversees the lifecycle of virtual display items and integrates with packet handlers. - **Key Features**: - - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). - - Manages virtual display items mapped to chunks. - - Provides thread-safe operations for adding and removing display items. + - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). + - Manages virtual display items mapped to chunks. + - Provides thread-safe operations for adding and removing display items. ### 4. **VirtualDisplayItem** - **Purpose**: Represents a virtual item displayed to players. - **Key Features**: - - Generates and caches packets for spawning, metadata, velocity, and destruction. - - Manages packet senders for each player. - - Handles spawn and removal operations dynamically. + - Generates and caches packets for spawning, metadata, velocity, and destruction. + - Manages packet senders for each player. + - Handles spawn and removal operations dynamically. ### 5. **ProtocolLibHandler and PacketEventsHandler** - **Purpose**: Provide implementations of `PacketHandler` using ProtocolLib and PacketEvents, respectively. - **Differences**: - - `ProtocolLibHandler` leverages ProtocolLib API. - - `PacketEventsHandler` uses the PacketEvents library. + - `ProtocolLibHandler` leverages ProtocolLib API. + - `PacketEventsHandler` uses the PacketEvents library. --- @@ -140,11 +140,11 @@ public class CustomPacketFactory implements PacketFactory { Packet factories are provided for specific game versions through two primary implementations: - **ProtocolLib**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` - **PacketEvents**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` --- diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md new file mode 100644 index 0000000000..aebc035f87 --- /dev/null +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md @@ -0,0 +1,297 @@ +# Interaction System (Developer Guide) + +The Interaction System allows developers to fully customize how players interact with shops. + +As of 6.2.0.11, the system has been redesigned to be: + +- Modular +- Extensible +- Thread-safe +- Fully customizable by third-party addons + +This guide will walk you through: + +1. What the Interaction System is +2. Getting the `InteractionManager` +3. Understanding `InteractionType` +4. Understanding `InteractionBehavior` +5. Registering custom interactions +6. Best practices + +--- + +# Overview + +The Interaction System is composed of three main components: + +| Component | Purpose | +| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| `InteractionType` | Describes **what kind of click happened** (standing, sneaking, left-click, sign, shopblock, etc.) | +| `InteractionBehavior` | Describes **what action should happen** when that type is triggered | +| `InteractionManager` | Central registry that manages interactions and behaviors | + +This separation allows developers to: + +- Add new click types +- Add new behaviors +- Override existing ones +- Extend QuickShop without modifying core code + +--- + +# Getting the InteractionManager + +To begin registering custom interactions, you must retrieve the `InteractionManager` instance. + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +If you are working directly with the plugin instance: + +```java +InteractionManager manager = QuickShop.getInstance().getInteractionManager(); +``` + +Once obtained, you can: + +- Register new interaction types +- Register new behaviors +- Override existing behaviors + +--- + +# Understanding InteractionType + +`InteractionType` represents **how** a player interacted with a shop. + +Examples include: + +- `STANDING_LEFT_CLICK_SIGN` +- `STANDING_RIGHT_CLICK_SHOPBLOCK` +- `SNEAKING_LEFT_CLICK_CONTAINER` +- etc. + +Each `InteractionType` defines: + +- Player stance (standing/sneaking) +- Click type (left/right) +- Target (sign/shopblock/container) + +InteractionTypes do NOT define behavior — they only define the trigger. + +--- + +# Understanding InteractionBehavior + +`InteractionBehavior` defines **what happens** when an interaction is triggered. + +Examples of built-in behaviors: + +- `TRADE_INTERACTION` +- `TRADE_UI` +- `CONTROL_PANEL` +- `CONTROL_PANEL_UI` +- `NONE` + +A behavior: + +- Executes logic +- May open GUIs +- May send chat panels +- May directly trade items +- Can cancel or modify flow + +This separation makes it easy to reuse behaviors across multiple interaction types. + +--- + +# Registering Custom Interactions + +There are two things you can register: + +- A custom `InteractionType` +- A custom `InteractionBehavior` + +--- + +## Creating a Custom InteractionBehavior + +Create a class implementing `InteractionBehavior`. + +Example: + +```java +public class MyTradeBehavior implements InteractionBehavior { + + @Override + public String getKey() { + return "MY_CUSTOM_TRADE"; + } + + @Override + public void execute(InteractionClick click) { + Player player = click.getPlayer(); + Shop shop = click.getShop(); + + player.sendMessage("You triggered my custom interaction!"); + + // Add your custom logic here + } +} +``` + +Then register it: + +```java +InteractionManager manager = api.getInteractionManager(); +manager.behavior(new MyTradeBehavior()); +``` + +Now your behavior is available for use. + +--- + +## Creating a Custom InteractionType + +You may also register custom interaction types if you want to introduce new trigger definitions. + +Example: + +```java +public class MyCustomInteraction implements InteractionType { + + @Override + public String getKey() { + return "STANDING_DOUBLE_CLICK_SIGN"; + } + + @Override + public boolean matches(InteractionClick click) { + // Define custom logic to detect this interaction + return click.isStanding() + && click.isSign() + && click.isDoubleClick(); + } +} +``` + +Register it: + +```java +manager.interaction(new MyCustomInteraction()); +``` + +--- + +# Binding Types to Behaviors + +The InteractionManager internally maps interaction types to behaviors based on configuration and registration order. + +Once your behavior is registered: + +- It can be referenced in `interaction.yml` +- Or attached programmatically + +Example interaction.yml usage: + +```yaml +STANDING_LEFT_CLICK_SIGN: MY_CUSTOM_TRADE +``` + +--- + +# The InteractionClick Object + +When your behavior executes, you receive an `InteractionClick` object. + +It provides: + +- `getPlayer()` +- `getShop()` +- `getLocation()` +- `isSneaking()` +- `isSign()` +- `isShopBlock()` +- etc. + +This gives full context for safe execution. + +--- + +# Advanced: Overriding Built-in Behavior + +If you register a behavior using the same key as an existing one, your behavior can override the default. + +⚠️ Be careful when doing this — you are replacing core functionality. + +--- + +# Best Practices + +### Always Use Unique Keys + +Avoid naming collisions: + +``` +MYPLUGIN_CUSTOM_BEHAVIOR +``` + +### Keep Behavior Lightweight + +Do not block the main thread with: + +- Heavy database calls +- File IO +- Network calls + +Use async tasks if needed. + +### Respect Permissions + +Always validate: + +```java +if (!player.hasPermission("myplugin.use")) { + return; +} +``` + +### Avoid Hard Overrides Unless Necessary + +Instead of replacing built-in behaviors, consider extending them. + +--- + +# Example: Full Minimal Implementation + +```java +public class ExampleAddon { + + public void register(QuickShopAPI api) { + + InteractionManager manager = api.getInteractionManager(); + + manager.behavior(new MyTradeBehavior()); + manager.interaction(new MyCustomInteraction()); + } +} +``` + +--- + +# Conclusion + +The Interaction System is designed to allow: + +- Full extensibility +- Clean separation of triggers and actions +- Easy integration for third-party developers + +By retrieving the `InteractionManager`: + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +You gain full control over how shops respond to player actions. \ No newline at end of file diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/development/08-tax-manager.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/development/08-tax-manager.md new file mode 100644 index 0000000000..72a56f9e88 --- /dev/null +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/development/08-tax-manager.md @@ -0,0 +1,266 @@ +# Tax System (Developer Guide) + +The QuickShop tax system allows server owners and developers to define how transaction taxes are calculated, distributed, and extended. + +As of 6.2.0.11, the tax system has been fully rewritten to provide: + +- A flexible TaxManager +- Pluggable TaxProvider support +- Progressive taxation +- Tax targeting (shop owner, interacting player, or both) +- Custom extension capability for third-party addons + +This guide explains how to work with the tax system programmatically. + +--- + +# Overview + +The tax system is composed of three core components: + +TaxManager +Responsible for coordinating tax calculation and execution. + +TaxProvider +Defines how tax values are calculated. + +TaxRates +Represents calculated tax results for a transaction. + +The system is designed to allow custom providers to be registered and used without modifying core logic. + +--- + +# Getting the TaxManager + +To work with the tax system, retrieve the TaxManager from the ShopManager. + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +Once obtained, you can: + +- Access current tax configuration +- Register custom tax providers +- Calculate tax values +- Hook into tax events + +--- + +# How the Tax System Works + +During a shop transaction: + +1. A base price is determined. +2. The TaxManager selects the active TaxProvider. +3. The TaxProvider calculates applicable tax. +4. A TaxRates object is produced. +5. The system applies the tax to: + + - Shop owner + - Interacting player + - Or both (depending on configuration) + +This architecture allows tax behavior to be modified without altering transaction logic. + +--- + +# TaxProvider + +A TaxProvider defines how tax values are calculated. + +You may create your own provider to implement: + +- Progressive tax brackets +- Flat percentage tax +- Conditional tax rules +- Region-based tax +- Rank-based tax +- Time-based tax + +Example minimal provider: + +```java +public class MyCustomTaxProvider implements TaxProvider { + + @Override + public TaxRates calculateTax(TaxContext context) { + + double basePrice = context.getPrice(); + + double taxAmount = basePrice * 0.05; // 5% flat tax + + return new TaxRates() + .ownerTax(taxAmount) + .buyerTax(0.0); + } +} +``` + +Then register it: + +```java +taxManager.provider(new MyCustomTaxProvider()); +``` + +Once registered, your provider will be used for tax calculations. + +--- + +# TaxRates + +TaxRates represents the result of a tax calculation. + +It typically contains: + +- Owner tax amount +- Buyer tax amount +- Total tax impact +- Metadata (if applicable) + +The transaction system will read from TaxRates and apply deductions accordingly. + +--- + +# Progressive Taxation + +The built-in system supports progressive tax structures. + +This allows server administrators to tax based on: + +- Player balance +- Shop owner balance +- Configured tax brackets + +Example configuration concept: + +- 0–10,000 balance → 1% tax +- 10,000–100,000 → 2% tax +- 100,000+ → 3% tax + +Developers can extend or override this logic inside a custom TaxProvider. + +--- + +# Targeting Tax + +The new tax system allows taxes to be applied to: + +- Shop owner +- Interacting player +- Both + +This is controlled via configuration, but custom providers can override distribution logic by adjusting TaxRates output. + +Example: + +```java +return new TaxRates() + .ownerTax(basePrice * 0.02) + .buyerTax(basePrice * 0.01); +``` + +--- + +# Registering a Custom TaxProvider + +To replace or extend tax logic: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); + +taxManager.provider(new MyCustomTaxProvider()); +``` + +You may register only one primary provider at a time. If multiple providers are needed, implement internal delegation within your custom provider. + +--- + +# Tax Events + +The tax system integrates with the event system. + +The modern event used is: + +ShopEnhancedTaxEvent + +This replaces legacy tax events and provides improved context, including: + +- Transaction builder reference +- TaxRates object +- Modification capability before final execution + +You can listen for the event and modify tax behavior dynamically: + +```java +@EventHandler +public void onTax(ShopEnhancedTaxEvent event) { + + TaxRates rates = event.getTaxRates(); + + // Example: Give VIP players reduced owner tax + if (event.getOwner().hasPermission("vip.tax.discount")) { + rates.ownerTax(rates.getOwnerTax() * 0.5); + } +} +``` + +--- + +# Best Practices + +Always keep tax calculations lightweight. + +Avoid: + +- Heavy database queries inside calculateTax +- Blocking network calls +- Long-running computations + +If complex logic is required, pre-cache required data outside the tax execution path. + +Ensure negative tax values are not returned unless intentional. + +Always validate final amounts before applying modifications. + +Respect configuration hierarchy unless intentionally overriding it. + +--- + +# Example Full Implementation + +```java +public class ExampleTaxAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + TaxManager taxManager = manager.taxManager(); + + taxManager.provider(new MyCustomTaxProvider()); + } +} +``` + +--- + +# Conclusion + +The new tax system is designed for: + +- Flexibility +- Extensibility +- Clean separation of concerns +- Future expansion + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +You gain full control over how QuickShop calculates and applies tax during transactions. \ No newline at end of file diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/development/09-layout-provider.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/development/09-layout-provider.md new file mode 100644 index 0000000000..55e3cd3e91 --- /dev/null +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/development/09-layout-provider.md @@ -0,0 +1,275 @@ +# Shop Layout Provider (Developer Guide) + +The Shop Layout Provider system allows developers to customize how shop signs are structured and rendered. + +As of 6.2.0.11, shop layouts are no longer hardcoded. Instead, they are controlled through the `IShopLayoutProvider` interface, which allows: + +- Custom sign line ordering +- Per-shop-type layouts (BUYING, SELLING, FROZEN, or custom types) +- Dynamic layout resolution +- Complete replacement of the default layout system + +This guide explains how to access, override, and implement a custom layout provider. + +--- + +# Overview + +The layout provider controls how shop sign lines are arranged. + +Instead of hardcoding: + +Line 1 → Header +Line 2 → Trading info +Line 3 → Item +Line 4 → Price + +The system now allows full customization through: + +- Config-based layout definitions +- Custom `IShopLayoutProvider` implementations +- Runtime overrides + +The default implementation is `SimpleShopLayoutProvider`. + +--- + +# Accessing the Layout Provider + +To retrieve the current layout provider: + +```java +ShopManager manager = api.getShopManager(); +IShopLayoutProvider provider = manager.shopLayoutProvider(); +``` + +To replace the layout provider with a custom one: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Once replaced, your implementation will control how shop layouts are generated. + +--- + +# Understanding IShopLayoutProvider + +`IShopLayoutProvider` defines how layout data is retrieved and resolved. + +It is responsible for: + +- Providing layout configuration per shop type +- Determining which layout to use +- Supplying formatted line keys +- Allowing future extensibility + +The default implementation reads layout definitions from configuration and applies them based on shop type. + +--- + +# Default Layout Example + +The default configuration-based layout looks like this: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +Each line maps to a layout component key. + +An empty string (`""`) leaves that line blank. + +The layout provider resolves these keys into actual sign content. + +--- + +# Creating a Custom Layout Provider + +To override the default behavior, implement `IShopLayoutProvider`. + +Example minimal implementation: + +```java +public class MyCustomLayoutProvider implements IShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + + ShopLayout layout = new ShopLayout(); + + layout.setLine(1, "Custom Header"); + layout.setLine(2, "Owner: " + shop.getOwnerName()); + layout.setLine(3, shop.getItem().getType().name()); + layout.setLine(4, "$" + shop.getPrice()); + + return layout; + } +} +``` + +Then register it: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Your layout will now control all shop sign formatting. + +--- + +# Per-Type Layout Control + +Because the system no longer depends on the legacy ShopType enum, layouts can support: + +- Built-in types (BUYING, SELLING, FROZEN) +- Custom shop types +- Addon-defined shop types + +Your provider can determine layout logic dynamically: + +```java +@Override +public ShopLayout provideLayout(Shop shop) { + + if (shop.getShopType().key().equals("FROZEN")) { + return frozenLayout(shop); + } + + return defaultLayout(shop); +} +``` + +This allows conditional formatting, localization adjustments, or special event styling. + +--- + +# Advanced Customization + +A custom layout provider can: + +- Pull data from external plugins +- Inject dynamic placeholders +- Modify layout per player +- Apply formatting logic +- Override color schemes +- Apply region-based formatting +- Implement animated sign systems + +Because the layout provider is resolved at runtime, you can compute layouts dynamically instead of reading static config. + +--- + +# Replacing vs Extending the Default Provider + +You have two options: + +Replace entirely: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Or extend the default implementation: + +```java +public class ExtendedLayoutProvider extends SimpleShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + ShopLayout base = super.provideLayout(shop); + + base.setLine(1, "[Extended] " + base.getLine(1)); + + return base; + } +} +``` + +Extending is safer if you only want to modify small portions. + +--- + +# Best Practices + +Keep layout generation lightweight. + +Avoid: + +- Heavy database queries +- Blocking IO +- Complex network calls + +Layout generation runs during shop updates and sign refresh events. + +Always handle null values safely. + +Ensure layout line count does not exceed sign limits. + +Avoid hardcoding shop type names unless necessary. + +If your layout supports custom shop types, validate their keys properly. + +--- + +# Example Full Registration + +```java +public class LayoutAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + + manager.shopLayoutProvider(new MyCustomLayoutProvider()); + } +} +``` + +--- + +# Conclusion + +The Shop Layout Provider system allows complete control over shop sign structure. + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +``` + +And setting: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +You can redefine how every shop is displayed on the server. + +This system was designed to support: + +- Extensibility +- Custom shop types +- Localization +- Dynamic formatting +- Future expansion \ No newline at end of file diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/faq/compare-reremake.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/faq/compare-reremake.md index aaa1a9e507..6b39f02520 100644 --- a/i18n/hi-IN/docusaurus-plugin-content-docs/current/faq/compare-reremake.md +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/faq/compare-reremake.md @@ -64,7 +64,7 @@ If you are a Reremake user, you may be confused about the differences between Hi ## Which one should I use? Well, it depends on what your needs are.\ -If you have an old server (<1.20) instance, Reremake is your only choice.\ +If you have an old server ({'<'}1.20) instance, Reremake is your only choice.\ ~~If you are in China which has GFW interfere, you also should consider Reremake because it doesn't need to load libraries from Global Internet.~~ Solved in 6.0.0.0. If none of these applies, give Hikari a try! diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md index 551f579e7c..172be3a69b 100644 --- a/i18n/hi-IN/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md @@ -1,8 +1,8 @@ # Where Addons/Compacts is -Addons and Compatilibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. +Addons and Compatibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. -- Open Modrinth versions page, locate the version your're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) +- Open Modrinth versions page, locate the version you're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) - Frantically slide your mouse wheel down until the lowest end of the page. - You get it! diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/internal/database-schema.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/internal/database-schema.md index fea685e4fc..45e04adb56 100644 --- a/i18n/hi-IN/docusaurus-plugin-content-docs/current/internal/database-schema.md +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/internal/database-schema.md @@ -4,17 +4,17 @@ This chapter will explain the implementation details of QuickShop Hikari's datab ## Tables -This section explains the database tables created by QuickShop-Hikari.\ -Unless otherwise specified, the initial `qs_` in table name is the table prefix.\ +This section explains the database tables created by QuickShop-Hikari. +Unless otherwise specified, the initial `qs_` in table name is the table prefix. For the latest code definition for each table, see: [DataTables.java](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/hikari/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/database/DataTables.java) ### `data` -This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information.\ -No matter what, a data record should not be modified after it is created, until it got deleted.\ +This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information. +No matter what, a data record should not be modified after it is created, until it got deleted. Any new changes to the shop should create a new copy, apply the changes to the copy, and insert it as a new record. -Basiclly, Copy-on-write. +Basically, Copy-on-write. A data record only be deleted from the database when no any table references their `data_id`. @@ -29,7 +29,7 @@ A data record only be deleted from the database when no any table references the | unlimited | BIT NOT NULL | 0 | Indicates whether this store is an unlimited store, 0=Limited, 1=Unlimited | | hologram | BIT NOT NULL | 0 | Indicates the suspension status of this store's display item, 0=Follow global settings, 1=Disabled | | tax_account | VARCHAR(36) | NULL | The uuid for tax account, If it is not NULL, tax will be paid to the specified account | -| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serilized to JSON string | +| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serialized to JSON string | | extra | LONGTEXT | Empty Yaml | Used to store experimental settings of QuickShop Hikari or persistent data of other plugins | | inv_wrapper | VARCHAR(255) NOT NULL | N/A | Unique identifier for InventoryWrapper for this shop data entry | | inv_symbol_link | TEXT NOT NULL | N/A | Unique Inventory symbol used to pass to InventoryWrapper, for locating inventory | @@ -38,7 +38,7 @@ A data record only be deleted from the database when no any table references the ### `shops` -This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes.\ +This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes. Multiple `shop_id` can correspond to the same `data_id`. | Column Name | DataType | Default | Description | diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/modules/cmd-alias.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/modules/cmd-alias.md index 53f1577685..e6ed381c0d 100644 --- a/i18n/hi-IN/docusaurus-plugin-content-docs/current/modules/cmd-alias.md +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/modules/cmd-alias.md @@ -23,7 +23,7 @@ custom-commands: - cshop ``` -Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect.\ +Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect. The effect should be like this: ![command-alias](./img/command-alias.png) diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/modules/datasource.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/modules/datasource.md index 6fc1bd8931..3fd3a8bdee 100644 --- a/i18n/hi-IN/docusaurus-plugin-content-docs/current/modules/datasource.md +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/modules/datasource.md @@ -48,7 +48,7 @@ Execute the `/quickshop export` command in console, quickshop will export a zip ![exported data](img/database-export.png) -Stop your database, switch the datasource, and start the server.\ +Stop your database, switch the datasource, and start the server. You may noticed all shops are gone, because new datasources had no data inside, we will restore them from export. Rename that exported ZIP file to `recovery.zip`, execute `/quickshop recovery` and restart your server, all shops should back. diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/modules/itemmatcher.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/modules/itemmatcher.md index 56be243019..922907be27 100644 --- a/i18n/hi-IN/docusaurus-plugin-content-docs/current/modules/itemmatcher.md +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/modules/itemmatcher.md @@ -4,7 +4,7 @@ ItemMatcher is a utility used by QuickShop-Hikari to compare the items, it is th :::caution -If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse.\ +If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse. **TL;DR: Keep default unless you know what you're doing.** ::: @@ -26,10 +26,10 @@ matcher: work-type: 1 ``` -By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility.\ +By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility. But still, you can toggle to QuickShop Item Matcher if you need to customize the comparing or running QuickShop on the server jar which have bug affect the Bukkit comparing system. -## Customize the metadata compareing +## Customize the metadata comparing Customize only works under QuickShop Item Matcher. diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md index fc2af69d2b..d04e8f2783 100644 --- a/i18n/hi-IN/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md @@ -4,7 +4,7 @@ ItemStack Loader is a workaround for loading the Bukkit ItemStack. :::caution -Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossble. +Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossible. ::: diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/modules/localization.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/modules/localization.md index e9121e1a36..d47589ab9a 100644 --- a/i18n/hi-IN/docusaurus-plugin-content-docs/current/modules/localization.md +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/modules/localization.md @@ -10,7 +10,7 @@ To help translate QuickShop-Hikari, please visit our [Crowdin Homepage](https:// ## Crowdin OTA -QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will overrided when you reload QuickShop-Hikari or restart your server. +QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will override when you reload QuickShop-Hikari or restart your server. Your installation will keep translations up-to-date without any touch. @@ -110,6 +110,16 @@ To disable the CrowdinOTA, please add it in the startup flag: -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager.enableCrowdinOTA=false ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +use-crowdin-ota: false +``` + ### Self-Hosted OTA Server If you self-hosted our translation server by using [CrowdinCopyDeploy](https://github.com/Ghost-chu/CrowdinCopyDeploy) tool, you're able to change the OTA server to yourself server. @@ -118,4 +128,12 @@ If you self-hosted our translation server by using [CrowdinCopyDeploy](https://g -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager= ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml +Use + +```yaml +crowdin-host: +``` \ No newline at end of file diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/modules/shops/benefit.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/modules/shops/benefit.md index 4d7a9c8f42..c59d92e6d1 100644 --- a/i18n/hi-IN/docusaurus-plugin-content-docs/current/modules/shops/benefit.md +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/modules/shops/benefit.md @@ -37,3 +37,13 @@ By default, for security, QuickShop-Hikari disallow add offline players into sho ```bash -Dcom.ghostchu.quickshop.command.subcommand.SubCommand_Benefit.allowOffline=true ``` + +### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +shop.allow-offline-benefit: true +``` \ No newline at end of file diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/modules/shops/control-panel b/i18n/hi-IN/docusaurus-plugin-content-docs/current/modules/shops/control-panel new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/modules/shops/control-panel @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/modules/shops/history.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/modules/shops/history.md index fa891adeab..195b64a042 100644 --- a/i18n/hi-IN/docusaurus-plugin-content-docs/current/modules/shops/history.md +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/modules/shops/history.md @@ -24,7 +24,7 @@ The History GUI displays the details of each recorded transaction and other usef ### Transaction details -When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed.\ +When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed. If you are checking the history of more than one store, the player head will be replaced with an item from the corresponding store. ![history-gui](./img/history-gui.png) diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md new file mode 100644 index 0000000000..c5ed3b3fe4 --- /dev/null +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md @@ -0,0 +1,90 @@ +# Shop Types + +QuickShop supports multiple shop types, allowing shops to behave differently depending on their mode. + +The built-in shop types are: + +- Selling +- Buying +- Frozen + +Each type changes how the shop interacts with players. + +--- + +## Selling Shop + +A Selling shop allows players to: + +- Buy items from the shop owner +- Pay money to receive items + +This is the most common shop type. + +--- + +## Buying Shop + +A Buying shop allows players to: + +- Sell items to the shop owner +- Receive money in exchange + +This is commonly used for: + +- Resource collection +- Server buy-back shops +- Automated material sinks + +--- + +## Frozen Shop + +A Frozen shop temporarily disables trading. + +While frozen: + +- No buying is allowed +- No selling is allowed +- The shop remains intact +- Staff or admins can manage it + +This is useful for: + +- Temporary suspensions +- Investigation +- Event locking +- Maintenance + +--- + +## Switching Shop Types + +Shop types can be changed through: + +- Control panel +- GUI control panel +- Admin commands + +Frozen mode is also available via: + +/qs freeze + +--- + +## Custom Shop Types + +As of 6.2.x, the system supports extensible shop types internally. + +While server owners use the built-in types, the system now allows future expansion through addons. + +--- + +## Summary + +Shop types allow you to: + +- Control how money flows +- Enable buy-back mechanics +- Temporarily disable shops +- Build advanced economic systems \ No newline at end of file diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md new file mode 100644 index 0000000000..18e0a47407 --- /dev/null +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md @@ -0,0 +1,217 @@ +# Sign Layout + +QuickShop allows you to fully customize how shop signs are structured. + +You can change: + +- What appears on each line +- The order of information +- Layout per shop type +- Whether certain lines are blank + +This gives you complete control over how shops look on your server. + +--- + +## How Sign Layout Works + +Shop signs have four lines. + +Instead of being hardcoded, QuickShop uses a configurable layout system. + +Each shop type can have its own layout: + +- SELLING +- BUYING +- FROZEN + +You define what each line displays using layout keys. + +--- + +## Configuration Location + +Sign layout is configured in `config.yml` under: + +```yaml +layout: +``` + +Example default configuration: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## Available Layout Keys + +Each line value refers to a built-in layout component. + +Common layout keys include: + +- `header` – The shop header line +- `trading` – Buy/Sell direction information +- `item` – Item name +- `price` – Shop price + +These keys are automatically formatted using your language file and formatting settings. + +--- + +## Leaving a Line Blank + +To leave a line empty, use: + +```yaml +line2: "" +``` + +This is useful if you want: + +- Minimalist signs +- Cleaner layouts +- Custom spacing +- Decorative formatting + +--- + +## Customizing Per Shop Type + +Each shop type can have a different layout. + +For example: + +```yaml +layout: + + SELLING: + line1: "header" + line2: "item" + line3: "price" + line4: "" + + BUYING: + line1: "header" + line2: "price" + line3: "item" + line4: "" + + FROZEN: + line1: "header" + line2: "" + line3: "item" + line4: "Frozen" +``` + +This allows you to visually differentiate: + +- Selling shops +- Buying shops +- Frozen shops + +--- + +## Practical Examples + +### Minimal Style + +```yaml +layout: + SELLING: + line1: "item" + line2: "price" + line3: "" + line4: "" +``` + +### Compact Economy Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "price" + line3: "item" + line4: "" +``` + +### Large Clear Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## How Updates Affect Layout + +When you change the layout: + +- Existing shop signs will update automatically when refreshed. +- New shops will use the updated format immediately. + +If needed, you can reload QuickShop to apply changes. + +--- + +## Best Practices + +- Keep important information visible (price and item). +- Avoid overly complex formatting. +- Test layout changes before deploying on large servers. +- Use different layouts for BUYING and SELLING to reduce confusion. + +--- + +## Common Questions + +### Can I add more than four lines? + +No. +Minecraft signs are limited to four lines. + +### Can I add colors? + +Colors are controlled by your language file and formatting settings. + +### Can I change layout without restarting? + +Yes, but reloading or refreshing shops is recommended to ensure full update. + +--- + +## Summary + +The Sign Layout system allows you to: + +- Fully customize shop sign appearance +- Create per-type layouts +- Simplify or expand shop information +- Improve clarity for players + +All layout customization is handled inside `config.yml`. diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md new file mode 100644 index 0000000000..980bad10f2 --- /dev/null +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md @@ -0,0 +1,130 @@ +# Shop Sign Waxing + +QuickShop can automatically wax shop signs to prevent players from editing them manually. + +Waxing protects the integrity of your shop signs and helps prevent tampering, spoofing, and accidental modification. + +As of modern Minecraft versions, waxed signs cannot be edited unless they are unwaxed first. + +--- + +## What Is Sign Waxing? + +In Minecraft, waxing a sign locks it so that: + +- Players cannot edit the text +- Players cannot modify lines +- Accidental changes are prevented +- Malicious edits are blocked + +When enabled in QuickShop, shop signs are automatically waxed when created. + +--- + +## Why Use It? + +Sign waxing protects against: + +- Players editing price lines +- Changing item names on signs +- Spoofing shop information +- Accidental formatting issues +- Sign hijacking attempts + +On public servers, this feature is strongly recommended. + +--- + +## How It Works + +When a shop is created: + +1. QuickShop generates the shop sign. +2. The sign text is written. +3. The sign is automatically waxed (if enabled). + +If a shop is updated: + +- The sign will be safely updated by QuickShop. +- The wax state is maintained. + +Players cannot manually edit shop signs while waxing is enabled. + +--- + +## Configuration + +To enable or disable sign waxing, edit `config.yml`: + +```yaml +shop: + sign-wax: true +``` + +### true + +- Shop signs are automatically waxed. +- Players cannot edit the sign manually. + +### false + +- Shop signs behave like normal Minecraft signs. +- Players may edit them if permitted by the game. + +--- + +## Recommended Setting + +For most servers: + +```yaml +shop: + sign-wax: true +``` + +This ensures shop data stays accurate and secure. + +--- + +## Common Questions + +### Can admins still modify shop signs? + +QuickShop controls shop sign formatting. +Manual edits are not recommended. + +Admins should use: + +- Control panel +- Shop commands +- Direct configuration changes + +### Does waxing affect shop functionality? + +No. +Waxing only prevents manual text edits. +The shop continues to function normally. + +### Can players un-wax shop signs? + +No. +QuickShop manages the sign state automatically. + +--- + +## Best Practices + +- Keep sign-wax enabled on survival servers. +- Combine sign-wax with proper permissions. +- Avoid manually editing shop signs through other plugins. + +--- + +## Summary + +Sign Waxing: + +- Prevents tampering +- Requires no additional setup + +Enable it once and QuickShop handles the rest. \ No newline at end of file diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/modules/shops/taxes.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/modules/shops/taxes.md new file mode 100644 index 0000000000..1a273fd978 --- /dev/null +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/modules/shops/taxes.md @@ -0,0 +1,92 @@ +# Taxation System + +QuickShop includes a taxation system designed to give server owners more flexibility and control over shop-based income. + +This system was revamped as of 6.2.0.11+ + +The new system allows you to: + +- Apply tax to shop owners +- Apply tax to buyers +- Apply tax to both +- Use progressive tax brackets +- Customize tax behavior in configuration + +This system replaces the legacy tax configuration. + +--- + +## How It Works + +During a transaction: + +1. The shop price is calculated. +2. Tax is calculated based on your configuration. +3. Tax is deducted from the configured target(s). +4. Remaining funds are distributed normally. + +You can configure: + +- Flat percentage tax +- Progressive tax based on player balance +- Tax accounts +- Distribution rules + +--- + +## Progressive Tax + +The new system allows you to tax based on balance brackets. + +Example concept: + +- 0 – 10,000 balance → 1% tax +- 10,000 – 100,000 → 2% tax +- 100,000+ → 3% tax + +This helps prevent extremely wealthy players from dominating the economy. + +--- + +## Who Pays the Tax? + +You can configure whether tax applies to: + +- The shop owner +- The buyer +- Both + +This gives you flexibility depending on your economy design. + +--- + +## Configuration + +All tax-related settings are located under the `shop-tax` section in `config.yml`. + +After updating to 6.2.0.11+, review your tax configuration carefully, as the old tax system has been replaced. + +--- + +## Why Use Tax? + +The taxation system can help: + +- Remove currency from circulation +- Fund server banks or towns +- Create sink mechanics +- Balance inflation +- Reward active players + +--- + +## Summary + +The new taxation system is: + +- Flexible +- Configurable +- Balance-aware +- Designed for modern economy servers + +Make sure to review your configuration after upgrading. \ No newline at end of file diff --git a/i18n/hi-IN/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md b/i18n/hi-IN/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md new file mode 100644 index 0000000000..247c24712d --- /dev/null +++ b/i18n/hi-IN/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md @@ -0,0 +1,161 @@ +# WorldEdit & FAWE Support + +QuickShop includes built-in protection and integration for WorldEdit and FastAsyncWorldEdit (FAWE). + +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. + +You do not need to download or install any additional compatibility plugins. + +--- + +## What This Does + +WorldEdit and FAWE allow administrators and builders to: + +- Copy and paste regions +- Replace large areas of blocks +- Mass-delete regions +- Roll back areas +- Regenerate terrain + +Without protection, these operations could: + +- Create ghost shops +- Leave orphaned shop data in the database +- Duplicate shops unintentionally +- Delete containers without cleaning up shop data +- Cause inconsistencies between world and database + +QuickShop now automatically detects and safely processes WorldEdit and FAWE operations. + +--- + +## Built-In Behavior + +When WorldEdit or FAWE modifies blocks: + +- Shops removed via WorldEdit are properly deleted from the database. +- Shop data stays synchronized with world changes. +- Ghost shops are prevented. +- Mass block replacements will not leave broken shop entries behind. + +This applies to: + +- //set +- //replace +- //cut +- //paste +- //regen +- Region deletion +- Mass container removal + +No configuration is required. + +--- + +## FAWE Support + +FastAsyncWorldEdit (FAWE) is fully supported. + +Because FAWE processes edits asynchronously, QuickShop handles: + +- Region-thread safe processing +- Async block updates +- Safe shop deletion during batch edits + +You do not need to enable anything manually. + +--- + +## Removing Shops with WorldEdit + +If you delete containers (chests, barrels, etc.) using WorldEdit: + +QuickShop will automatically: + +- Detect the block removal +- Unregister the shop +- Clean the database entry +- Prevent ghost shops + +You do not need to run `/qs cleanghost` after WorldEdit usage in normal circumstances. + +--- + +## Copying and Pasting Shops + +If you copy and paste regions that contain shops: + +- Shop data will not duplicate incorrectly. +- Shop IDs remain consistent. +- Invalid pasted shops will not auto-register unless properly created. + +This prevents accidental duplication exploits. + +--- + +## Performance + +WorldEdit and FAWE operations can modify thousands of blocks at once. + +QuickShop processes these safely and efficiently: + +- Batch-aware cleanup +- Thread-safe region access (especially on Folia) +- Minimal performance impact during mass edits + +--- + +## Configuration + +There are no specific WorldEdit configuration options in QuickShop. + +Support is automatic and always enabled if WorldEdit or FAWE is detected. + +If WorldEdit is not installed, no extra code is executed. + +--- + +## Common Questions + +### Do I need the old WorldEdit compatibility jar? + +No. + +As of 6.2.0.11, WorldEdit support is built-in and the separate compatibility module has been removed. + +### Does this work with FAWE? + +Yes. FAWE is fully supported. + +### Will shops break if I use //set air? + +No. Shops will be safely removed and cleaned up. + +### Do I need to restart after installing WorldEdit? + +No. QuickShop detects WorldEdit automatically on startup. + +--- + +## Best Practices + +Even though QuickShop safely handles WorldEdit operations, it is recommended to: + +- Avoid copying shops intentionally unless required +- Use backups before large region edits +- Test large FAWE operations on staging servers when possible + +--- + +## Summary + +QuickShop’s built-in WorldEdit and FAWE integration ensures: + +- Safe mass edits +- No ghost shops +- Automatic database cleanup +- Thread-safe processing +- No extra modules required + +WorldEdit support is now a core feature of QuickShop. \ No newline at end of file diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/addon/limited.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/addon/limited.md index 70af27e240..fae55a8c95 100644 --- a/i18n/hu-HU/docusaurus-plugin-content-docs/current/addon/limited.md +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/addon/limited.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -41,8 +35,8 @@ Limit players to purchase up to 16 items per month. /quickshop limit period MONTH ``` -The system is based on the QuickShop-Hikari calendar system.\ -The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year.\ +The system is based on the QuickShop-Hikari calendar system. +The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year. Same for days, months and hours. Available time units: diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/addon/list.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/addon/list.md index 93d182f083..f20b91fd7b 100644 --- a/i18n/hu-HU/docusaurus-plugin-content-docs/current/addon/list.md +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/addon/list.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/addon/plan.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/addon/plan.md index 52a6e79cb4..c10ef4df42 100644 --- a/i18n/hu-HU/docusaurus-plugin-content-docs/current/addon/plan.md +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/addon/plan.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -18,7 +18,7 @@ Recorded data can be displayed from Hikari v2.0.0.0 onwards, but only after vers - All shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 1000 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `5` in server scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `5` in server scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Player Scope @@ -27,7 +27,7 @@ And still is Plan limitations, the list sorting is disturbed, so the display ord - All owned shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 50 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `4` in player scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `4` in player scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Showcase diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/addon/reforges.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/addon/reforges.md index 2a14509eb7..25fff1752a 100644 --- a/i18n/hu-HU/docusaurus-plugin-content-docs/current/addon/reforges.md +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/addon/reforges.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.0.0.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md index 304d39bc05..6f9f51d250 100644 --- a/i18n/hu-HU/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.1.1.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -44,7 +38,7 @@ _This is not necessary if you are using an H2 database._ ### Prepare for convert -To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console.\ +To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console. If a player is in the server, the conversion cannot be started. Once the conversion has begun, the server will be locked during the conversion process and no players will be able to join the server during the conversion. diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/addon/shopitemonly.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/addon/shopitemonly.md index c45062f8c2..1ccfe977b3 100644 --- a/i18n/hu-HU/docusaurus-plugin-content-docs/current/addon/shopitemonly.md +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/addon/shopitemonly.md @@ -2,17 +2,11 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT - -::: - -This addon prevents players from putting non-store items into store containers.\ +This addon prevents players from putting non-store items into store containers. Does not apply to stores that use the item inventory redirection API (aka. InventoryWrapper API). This Addon will check for container (or transferring) items on events such as the player closing the container or hopper access. diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md new file mode 100644 index 0000000000..9c8b4f7407 --- /dev/null +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md @@ -0,0 +1,55 @@ +# 6.2.0.10 + +## Major Changes + +- Added support for 1.21.6 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.7 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.8 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Some internal updates for packetevents(2.9.0 is now required.) +- Updated Lands support + +## Addon Changes + +- Added MatcherPlus Addon + - Allows support for BreweryX and AdvancedItems stacks in shops with improved matching abilities +- Added FabledSkyblock Compat +- Added Dominion Compat +- Added HuskTowns Compat +- Added IridiumSkyblock Compat +- Added member-create for member creation in ARM compat +- Added admin-override and quickshop.arm.admin permission for admin overrides in ARM + +## Minor Changes + +- Added configurations for the coordinates of the display item. +- Added /qs toggledisplayall on/off server/owned + - Players need to have permission node quickshop.toggledisplayall.admin to toggle all on the server. +- Added ability to use abbreviations in /qs price and /qs create commands such as 2.5k for 2500 +- Added ability to set default display status using shop.default-display in config.yml + +## Fixes + +- Fixed issue with display item being sent to the moon on 1.21.5 +- Fixed issue where TRADE_UI interactions interfered with quick create. +- Fixed issue with displays on protocollib falling through the chest +- Fixed issue with signs on .9 and previous .10 snapshots on early versions +- Implemented some performance improvements for paper servers +- Fixed all outstanding issues with Folia usage.(thanks to RootB33R/SleazLee for contributions) + +## Possible 6.2.0.11 Features + +Here's an outline for some features that may arrive in 6.2.0.11: + +- Additional compats/addons that have been piling up. + - see: https://github.com/QuickShop-Community/QuickShop-Hikari/issues/1756 +- gradle?(interested to see compilation time uplifts) +- Update documentation +- Update configuration comments +- Update configuration system? + - auto updating? + - Allows removal of the update code +- Remove waste spigot modules? + - Any versions of 1.20 that can be discarded due to low use? +- Bug fixing, of course +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... \ No newline at end of file diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md new file mode 100644 index 0000000000..b41c88662a --- /dev/null +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md @@ -0,0 +1,173 @@ +## Outline + +- Update documentation +- Update configuration comments +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... + +# 6.2.0.11 + +## Major Changes + +- Removed Spigot Platform Modules, and stopped loading QS if Spigot is detected. This will mean that unless the protocol changes that we use for display items, QS won't need updated for each version. +- Revamped Economy Code Completely + - New classes for all economy-related systems + - Any economy-related or benefits-related events are incompatible with previous versions. +- Added sign layout customizations per-type allowing you to change how lines are configured, an empty string('') will leave an empty line for that line of the sign. + +``` + #The layout of signs for shops. + layout: + + #The layout of BUYING shops. + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of FROZEN shops. + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of SELLING shops. + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +- Add wildcard support for item blacklist patterns(thanks to bennycallanan) + - Added support for wildcard patterns in the item blacklist configuration, allowing users to block entire categories of items with simple patterns. + + - Features + - Wildcard patterns like \*_AXE and \*_SPAWN_EGG now work in blacklist configuration + - Supports \* for any characters and ? for single character matching + - Case-insensitive pattern matching +- Overhauled GUI system(thanks to Yusakidev) + - Implemented gui.yml configuration file for customizing the GUI. + - Implemented better filtering for qs browse + - Implement GUI system to be more stable, and less error prone. + - Added gui.yml for fully configurable GUI layouts and text + - Browse menu: search, sort (price/name/stock), and filter (all/buying/selling/in-stock) + - Staff menu: search functionality for player/staff selection + - Grouped item pages for better shop browsing + - Refactored all menu pages to use configurable display/lore +- Added worldedit compat to QS internally as it's widely used. +- Revamped the taxation system to be more flexible and easier to configure. + - introduced a new progressive tax system that allows you to tax based on the balance of players.(suggested by YuanYuanOwO) + - introduced the ability to tax the player interacting with the shop, the owner, or both + - all tax-related configurations have been moved under the shop-tax section of the config. this may require reconfiguration of your tax settings. + - added a new ShopEnhancedTaxEvent, deprecated the old ShopTaxEvent. + - Added a new TaxManager, and TaxProvider interfaces, this allows for custom tax providers to be added by addons/third-party developers. + +## Addons/Compats Changes + +- Added UltimateClaims compat +- Added SimpleClaimSystem compat +- Added Quests by Pika addon +- Added BetonQuest addon +- Added Pl3xMap addon +- MatcherPlus Compat Improvements + - Added support for CrazyCrates + - Added support for ExcellentCrates + - Added support for SilkSpawners. +- WorldGuard Compat Improvements(Thanks to golovin12) + - Added clear permission handling: + - Region owners and members automatically have permission to create and trade in their own regions. + - Other players must have the appropriate WorldGuard flags enabled (quickshophikari-create, quickshophikari-trade) to interact with shops. + - If a shop is located outside any region, default QuickShop behavior applies (no extra restrictions) +- Added colored markers based on shop state for bluemap(thanks to YusakiDev) +- Updated dynmap/towny addons to use the new ShopTypeEnhancedEvent instead of ShopTypeEvent. +- Removed worldedit compat, it's now included in the main plugin. +- Added support for global flags to the worldguard compat. + +## Internals/Developer APIs + +- Removed several deprecated methods and classes. +- Revamped the interaction manager. It is now more flexible and allows external additions + - This involves two classes InteractionBehavior and InteractionType. + - InteractionType details the type of interaction such as: STANDING_LEFT_CLICK_SIGN, STANDING_LEFT_CLICK_SHOP + - InteractionBehavior outlines a behavior for an InteractionType such as CONTROL_PANEL and TRADE_UI +- Added UserLimitCalculationEvent, which allows for custom limits to be applied to users. + - This is useful for limiting the number of shops a user can have, or adding on to the existing limits provided by the ranks system without needing to implement a new RankLimiter. +- Added a new ShopLayoutProvider interface, and default implementation. + - This allows for custom layouts to be used for shops, allowing for more customization. + - This also allows for developers to override the default layout provider and create their own implementation. +- How to make your own? + - Implement the classes you would like to then register with the InteractionManager: + - ```java + InteractionManager manager = QuickShop.getInstance().getInteractionManager(); + + manager.interaction(new MyTradeInteraction()); + manager.behavior(new MyTradeBehavior()); + ``` +- Replaced some Apache Commons calls that could be easily replaced with built-in java methods, reduces some calls by ~ 1100ms/method call +- Deprecated the ShopType enum, and the ShopTypeEvent. These are replaced with the new IShopType interface and implementing classes. + - The new event is ShopTypeEnhancedEvent. + - This allows for third-party addons to add their own shop types, and simplifies code checks for translations. +- Updated config system to use Boosted-yaml + - this allows for auto-updating of config files without complex update scripts + - this also allows for the config system to not be minecraft-dependent. +- Replaced logical PaperLib calls with native PaperAPI calls. + +## Minor Changes + +- Bump Java version up to 21 +- Added shop.display-allow-enchants to enable/disable enchantments for display items on shops. +- Added workaround for packetevents not supporting custom enchants on itemstacks for virtual display items. +- Using locale translations for shop-type in mode toggle icon(thanks to ExyiN) +- Bumped Residence version for the compat(thanks to YuanYuanOwO) +- add world whitelist support(thanks to wling-art) +- added /qs database save command, which saves all currently dirty-marked shops to the database. +- Split up interactions _SHOPBLOCK into _SHOPBLOCK and _CONTAINER. + - _SHOPBLOCK relates to shops, where _CONTAINER relates to shop-valid containers that are not currently shops. +- Added inventory as an option for command panel, this is useful for adding a secondary option for players to open a shop's inventory. +- Moved crowdin arguments from system properties to config.yml + - crowdin-host + - use-crowdin-ota + +## Fixes + +- Fixes issue with item price restrictions(thanks to maxcom1) +- Fixes issue with 1.20.x protocol lib displays(thanks to YuanYuanOwO) +- Fixes issue when no item is in hand for itemdebug(thanks to YuanYuanOwO) +- Fixes issue with dominion addon(thanks to YuanYuanOwO) +- Add a simple check to avoid this. If it is not own shop, reject limit request directly.(Thanks to YuanYuanOwO) +- Fix NPE by not setting tax for price in TransactionBuilder(thanks to maxcom1) +- Fixes /quickshop suggestprice to differentiate between buy/sell shops. (Thanks to MidSpike) +- PacketEvents ClassNotFoundException with ProtocolLib(thanks to wling-art) +- Reallocate block state access to region thread for shop creation(thanks to r00tbeerman) +- resolve SLF4J StaticLoggerBinder loading error(thanks to wling-art) +- sign hijacking issue by validating sign facing direction(thanks to wling-art) +- Performance improvements for QuickShop disabling to prevent potential freezes. +- Fixed issue with 1.20.4 packetevents virtual displays not staying put. +- Fixes critical issue in GriefPrevention compatibility plugin. +- Fixes issue with shop owner not getting money when benefits active. +- Fixes for lands addon on folia, Use regionThread for Folia compatibility(thanks to YusakiDev) +- Fixes for TRADE_DIRECT on stacking shops +- Fixes issue for protocollib 5.4.0 with undocumented packet changes. +- Fixes issue where item stacks could be used on creation above the max stack size. +- Fixes issue with BukkitAudiences-related crashes on 1.21.11. +- Fix issue with shop deletion when getting too impatient. +- Fix the permission check issue when a shop owned by a non-owner is transferred to someone else. (thanks to YuanYuanOwO) +- Fix ui with supertool (thanks to YuanYuanOwO) +- Fix issue with logs generating outside debug mode. +- Fix issue with /qs find. +- Fix configuration loading timing. +- Fix configuration loading/creation warning message language. +- Fix command description language key mismatch(thanks to wling-art) +- Fix qs clean command on folia(thanks to wling-art) +- Fix per-player-shop-sign on folia(thanks to wling-art) +- Fix potential recursive deadlock in virtual display packet sending(thanks to wling-art) +- Fix configuration loading/creation warning message language. +- Fix issue with /qs browse and ShopItemOnly addon not behaving properly together on folia. +- Fix issue with PLAN using outdated APIs. +- Fix issue with /qs clean on folia.(thanks to wling-art) +- Fix issue with /qs cleanghost on folia(thanks to wling-art) +- More thread safety fixes for shops on folia.(thanks to wling-art) +- Fix owner payment calculations with benefits(thanks to wling-art) \ No newline at end of file diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md index 8172f9b410..dcc3edc67d 100644 --- a/i18n/hu-HU/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md @@ -20,20 +20,20 @@ the ControlComponent object with a custom one that will replace the original dur ### Introduction of the Revamped Packet System 1. **About**: - - A modular and scalable system for managing packets related to virtual display items in Minecraft. - - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. + - A modular and scalable system for managing packets related to virtual display items in Minecraft. + - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. 2. **Custom Packet Factories**: - - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. - - Packet types: - - **Spawn Packet**: Spawns a virtual item entity at a specific location. - - **Metadata Packet**: Updates the visual properties of virtual items. - - **Velocity Packet**: Adds motion/velocity to entities (currently optional). - - **Destroy Packet**: Removes the entity from the client view. + - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. + - Packet types: + - **Spawn Packet**: Spawns a virtual item entity at a specific location. + - **Metadata Packet**: Updates the visual properties of virtual items. + - **Velocity Packet**: Adds motion/velocity to entities (currently optional). + - **Destroy Packet**: Removes the entity from the client view. 3. **Error Handling and Logging**: - - Enhanced debug logs to trace packet-related issues. - - Detailed error messages for missing factories or unregistered listeners. + - Enhanced debug logs to trace packet-related issues. + - Detailed error messages for missing factories or unregistered listeners. #### Improvements: diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md index 7775308722..c6e0948d19 100644 --- a/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md index f420997a9c..38587e3784 100644 --- a/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md index 5ed8182c9a..259c55f342 100644 --- a/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md index 924a37ac49..7fd4596a6a 100644 --- a/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,6 +10,6 @@ This is a BungeeCord plugin, you need install it within your BungeeCord's plugin ## How does it work? -BungeeCord Bridge plugins will register a `quickshop:bungee` channel for fowarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. +BungeeCord Bridge plugins will register a `quickshop:bungee` channel for forwarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. All forwarding is indicated by QuickShop-Hikari on the Spigot server and ends when it is not needed. diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md index 27d68956a8..20fbaf7a0c 100644 --- a/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,5 +10,5 @@ This compatibility module added [Chest Protect](https://www.spigotmc.org/resourc ## How does it work? -This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident.\ +This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident. It also prevents players from creating shops on ChestProtect protected containers. diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md index 220e26d8bb..e1757e7be9 100644 --- a/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/dominion.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/dominion.md new file mode 100644 index 0000000000..e1195278a8 --- /dev/null +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/dominion.md @@ -0,0 +1,138 @@ +# Dominion + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and Dominion. + +It ensures that shop creation and trading respect Dominion’s land and territory protection system. + +--- + +## What Does It Do? + +Dominion allows players or groups to claim land and define territory-based permissions. + +Without compatibility: + +- Players could create shops inside territories they do not control. +- Visitors might trade inside protected dominions. +- Dominion permission rules might not apply to shop interactions. + +The Dominion compat module ensures that: + +- Shop creation respects territory ownership. +- Shop trading follows Dominion permission settings. +- Protected land remains secure from unauthorized shop usage. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a Dominion-controlled area. +- Whether the player has permission within that territory. +- Whether Dominion rules allow shop interaction. + +If the action is not permitted by Dominion settings, QuickShop blocks it. + +If the location is outside any Dominion territory, default QuickShop behavior applies. + +--- + +## Territory Owner Control + +With this module enabled: + +- Territory owners can create and manage shops inside their dominion. +- Trusted members follow territory-based permissions. +- Outsiders are restricted unless explicitly allowed. +- Shop actions respect Dominion’s land rules automatically. + +This prevents unauthorized shop placement inside protected territories. + +--- + +## Installation + +1. Install Dominion. +2. Install the QuickShop Dominion compat module. +3. Restart your server. + +The module activates automatically if Dominion is detected. + +No manual configuration linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside dominions +whitelist-mode: false + +# Allow territory owners to override shop permissions +allow-owner-override: true +``` + +If Dominion is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For servers using Dominion: + +- Restrict shop creation to territory owners or trusted members. +- Prevent shop creation in wilderness if desired. +- Allow dominion owners to manage shop permissions. +- Review Dominion permission settings to align with shop behavior. + +This ensures protected territories remain secure and organized. + +--- + +## Common Questions + +### Can players create shops in someone else's dominion? + +Only if Dominion permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You may allow or restrict shops outside dominions. + +### What happens if Dominion is removed? + +QuickShop returns to normal behavior and stops checking Dominion territories. + +--- + +## Summary + +The Dominion compat module: + +- Enforces territory-based permissions +- Prevents unauthorized shop creation +- Protects claimed land from misuse +- Integrates seamlessly with Dominion + +It is recommended for servers running Dominion. \ No newline at end of file diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md index 743d3ae666..2ac9b10488 100644 --- a/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md new file mode 100644 index 0000000000..07ba4ada66 --- /dev/null +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md @@ -0,0 +1,133 @@ +# FabledSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and FabledSkyblock. + +It ensures that shop creation and trading properly respect island boundaries and island permissions. + +--- + +## What Does It Do? + +On Skyblock servers, players build and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Players might trade in areas they should not. +- Island protection rules might not apply to shops. + +The FabledSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members behave correctly with shops. +- Island visitors are restricted appropriately. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a FabledSkyblock island. +- Whether the player has permission on that island. +- Whether island settings allow the action. + +If the action is not permitted by island rules, QuickShop will deny it. + +--- + +## Island Ownership Rules + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow island permission settings. +- Visitors can only trade if island permissions allow it. +- Outside of islands, default QuickShop behavior applies. + +--- + +## Installation + +1. Install FabledSkyblock. +2. Install the QuickShop FabledSkyblock compat module. +3. Restart your server. + +The module activates automatically if FabledSkyblock is detected. + +No manual linking is required. + +--- + +## Configuration + +If the module provides configuration options, they will appear in its `config.yml`. + +Typical options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If FabledSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most Skyblock servers: + +- Allow shop creation only inside islands. +- Prevent trading in the void or wilderness. +- Let island owners control shop permissions. +- Use island rank systems to manage shop access. + +This helps maintain economic balance between islands. + +--- + +## Common Questions + +### Can players create shops in the void? + +Only if your configuration allows it. +Most servers disable shop creation outside islands. + +### Does this affect island war or PvP modes? + +No. +The module only checks island ownership and permissions for shop interactions. + +### What happens if FabledSkyblock is removed? + +QuickShop returns to normal behavior. + +--- + +## Summary + +The FabledSkyblock compat module: + +- Protects island economies +- Enforces island permission rules +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is strongly recommended for any server running FabledSkyblock. \ No newline at end of file diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md index 81b13d2c6b..32614d3019 100644 --- a/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md @@ -2,17 +2,17 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -GreifPrevention compatibility module added compaitibility with GF. +GreifPrevention compatibility module added compatibility with GF. ## How does it work This module allow QuickShop-Hikari check if player have permission to create or use QuickShop in specific region. -And delete shops when claim removed, untrusted, unclimed, expired, resized or subclaim created. +And delete shops when claim removed, untrusted, unclaimed, expired, resized or subclaim created. ## Configuration diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md new file mode 100644 index 0000000000..e71b34d462 --- /dev/null +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md @@ -0,0 +1,139 @@ +# HuskTowns + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and HuskTowns. + +It ensures that shop creation and trading respect town and claim permissions defined by HuskTowns. + +--- + +## What Does It Do? + +HuskTowns allows players to create towns and claim land. + +Without compatibility: + +- Players could create shops inside towns they do not belong to. +- Visitors might trade inside protected towns. +- Town permission rules might not apply to shop interactions. + +The HuskTowns compat module ensures that: + +- Shop creation respects town ownership. +- Trading follows town permission settings. +- Town members and visitors are handled correctly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a HuskTowns claim. +- Whether the player is a town member, trusted player, or outsider. +- Whether the town's permission settings allow the action. + +If the action is not permitted by town rules, QuickShop blocks it. + +Outside of town claims, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Town Owner Control + +With this module enabled: + +- Town owners can create and manage shops inside their town. +- Town members follow town-based permission settings. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect town claim protection. + +This prevents unauthorized shop placement and trading inside protected towns. + +--- + +## Installation + +1. Install HuskTowns. +2. Install the QuickShop HuskTowns compat module. +3. Restart your server. + +The module activates automatically if HuskTowns is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside towns +whitelist-mode: false + +# Allow town owners to override shop permissions +allow-owner-override: true +``` + +If HuskTowns is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For town-based survival servers: + +- Restrict shop creation to town members. +- Allow trading only where town permissions permit. +- Prevent shop creation in wilderness if desired. +- Enable owner override for better administrative control. + +This helps maintain town-based economic balance. + +--- + +## Common Questions + +### Can players create shops in another town? + +Only if that town's permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You can allow or restrict shops outside towns. + +### What happens if HuskTowns is removed? + +QuickShop returns to normal behavior and stops checking town permissions. + +--- + +## Summary + +The HuskTowns compat module: + +- Enforces town-based land permissions +- Protects towns from unauthorized shop usage +- Integrates smoothly with HuskTowns +- Requires minimal setup + +It is recommended for any server running HuskTowns. \ No newline at end of file diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md new file mode 100644 index 0000000000..3fa2995eb0 --- /dev/null +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md @@ -0,0 +1,139 @@ +# IridiumSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and IridiumSkyblock. + +It ensures that shop creation and trading respect island boundaries and island permission settings defined by IridiumSkyblock. + +--- + +## What Does It Do? + +IridiumSkyblock allows players to create and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Visitors might trade inside protected islands. +- Island protection rules might not apply correctly to shops. + +The IridiumSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members and visitors are handled properly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside an IridiumSkyblock island. +- Whether the player is the island owner, member, or visitor. +- Whether island permissions allow shop interaction. + +If the action is not permitted, QuickShop blocks it. + +Outside of islands, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Island Owner Permissions + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow the island's permission configuration. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect island protection rules. + +This prevents unauthorized shop usage inside protected islands. + +--- + +## Installation + +1. Install IridiumSkyblock. +2. Install the QuickShop IridiumSkyblock compat module. +3. Restart your server. + +The module activates automatically if IridiumSkyblock is detected. + +No additional setup is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If IridiumSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most IridiumSkyblock servers: + +- Restrict shop creation to island owners. +- Allow island members to trade if trusted. +- Prevent shop creation in the void or wilderness. +- Enable owner override for better management. + +This helps maintain balanced island economies. + +--- + +## Common Questions + +### Can players create shops outside their island? + +Only if your configuration allows it. + +Most Skyblock servers restrict shops to island areas. + +### Do island ranks affect shop permissions? + +Yes, if your island permissions are configured to control interaction rights. + +QuickShop follows island rules. + +### What happens if IridiumSkyblock is removed? + +QuickShop returns to normal behavior and stops checking island permissions. + +--- + +## Summary + +The IridiumSkyblock compat module: + +- Protects island economies +- Enforces island-based permissions +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is recommended for any server running IridiumSkyblock. diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md new file mode 100644 index 0000000000..3b4726cb9d --- /dev/null +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md @@ -0,0 +1,151 @@ +# ItemMatcherPlus + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +The ItemMatcherPlus module improves how QuickShop matches custom and plugin-modified items. + +It allows QuickShop to properly recognize and stack items created by other plugins that normally would not match using standard Bukkit item comparisons. + +This module is especially useful for servers that use: + +- Custom items +- Modified metadata +- NBT-based systems +- Advanced crate rewards +- Custom brewing systems +- Custom fishing rewards + +--- + +## What Does It Do? + +By default, Minecraft item matching checks: + +- Material type +- Basic metadata + +However, many plugins modify items with: + +- Custom NBT data +- Hidden tags +- Custom lore formats +- Unique identifiers + +Without enhanced matching: + +- Items may not stack +- Shops may refuse valid items +- Transactions may fail +- Buying/selling may not behave correctly + +ItemMatcherPlus improves compatibility and matching accuracy. + +--- + +## Supported Plugins + +ItemMatcherPlus includes built-in support for: + +- AdvancedItems +- BreweryX +- CrazyCrates +- ExcellentCrates +- PyroFishing +- SilkSpawners + +If any of these plugins are installed, QuickShop will automatically use enhanced matching logic. + +No additional configuration is required. + +--- + +## How It Works + +When a player trades with a shop: + +1. QuickShop checks the item. +2. If ItemMatcherPlus is enabled, it performs advanced matching. +3. Plugin-specific metadata is validated. +4. The item is confirmed as a match (or rejected safely). + +This allows: + +- Proper stacking of custom items +- Correct shop transactions +- Accurate buy/sell detection +- Reduced false mismatches + +--- + +## Installation + +1. Download the ItemMatcherPlus module. +2. Place the JAR into your `plugins` folder. +3. Restart your server. + +If supported plugins are detected, compatibility activates automatically. + +--- + +## Configuration + +ItemMatcherPlus does not require configuration. + +It activates automatically when: + +- The module is installed +- A supported plugin is detected + +If a supported plugin is not installed, no extra logic runs. + +--- + +## Why You Should Use It + +You should install ItemMatcherPlus if your server uses: + +- Custom fishing plugins +- Custom brewing systems +- Crate plugins with modified items +- Custom spawners +- Any plugin that modifies NBT data + +Without it, shops may not properly recognize custom items. + +--- + +## Common Questions + +### Do I need this if I don't use custom item plugins? + +No. +If you only use vanilla items, this module is not necessary. + +### Does this affect performance? + +The module only activates enhanced matching when needed. + +Normal item matching remains fast and efficient. + +### Will it break existing shops? + +No. +It improves compatibility and matching accuracy without modifying existing shop data. + +--- + +## Summary + +ItemMatcherPlus: + +- Improves item matching accuracy +- Adds support for major custom item plugins +- Prevents stacking and trade issues +- Requires no configuration +- Activates automatically + +If you run a heavily customized economy server, this module is highly recommended. \ No newline at end of file diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md index ba87606698..d4ae7d129a 100644 --- a/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/lands.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/lands.md index 06296f5779..7671fcdfe0 100644 --- a/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/lands.md +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/lands.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/openinv.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/openinv.md index c51f628615..4807d57873 100644 --- a/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/openinv.md +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/openinv.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md new file mode 100644 index 0000000000..c2136320b0 --- /dev/null +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md @@ -0,0 +1,138 @@ +# SimpleClaimSystem + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and SimpleClaimSystem. + +It ensures that shop creation and trading respect land ownership and claim permissions defined by SimpleClaimSystem. + +--- + +## What Does It Do? + +SimpleClaimSystem allows players to claim land and protect it from unauthorized interaction. + +Without compatibility: + +- Players could create shops inside claims they do not own. +- Visitors might trade inside protected areas. +- Claim protection might not apply correctly to shops. + +The SimpleClaimSystem compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops within their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a SimpleClaimSystem claim. +- Whether the player has permission within that claim. +- Whether claim rules allow shop interaction. + +If the action is not permitted by the claim, QuickShop blocks it. + +If the location is outside any claim, default QuickShop behavior applies. + +--- + +## Claim Owner Control + +With this module enabled: + +- Claim owners can create and manage shops inside their claim. +- Trusted players follow claim-based permissions. +- Visitors are restricted unless explicitly allowed. +- Claim protection rules apply automatically to shop interactions. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install SimpleClaimSystem. +2. Install the QuickShop SimpleClaimSystem compat module. +3. Restart your server. + +The module activates automatically if SimpleClaimSystem is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If SimpleClaimSystem is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Enable owner override for easier management. + +This ensures players maintain control over their protected land. + +--- + +## Common Questions + +### Can players create shops in someone else's claim? + +Only if claim permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can allow shops outside claims or restrict them. + +### What happens if SimpleClaimSystem is removed? + +QuickShop will revert to default behavior and stop checking claim permissions. + +--- + +## Summary + +The SimpleClaimSystem compat module: + +- Enforces claim-based permissions +- Prevents unauthorized shop creation +- Protects land from unwanted trading +- Requires minimal setup + +It is recommended for servers running SimpleClaimSystem. \ No newline at end of file diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md index a84dbf057b..4dfa8ae97c 100644 --- a/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/towny.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/towny.md index 52ab4818f4..b26c19d335 100644 --- a/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/towny.md +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/towny.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -26,7 +26,7 @@ Town sub-command allow you switch a quickshop between regular shop and town shop For a nation shop, the shop owner will changed to nation fake player created by Towny, and use Nation's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from nation Towny account.\ +All purchases will deposit or withdraw money from nation Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Nation Shop. @@ -35,7 +35,7 @@ If Plot type restriction is enabled, only a specific Plot type can create a Nati For a town shop, the shop owner will changed to town fake player created by Towny, and use Town's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from town Towny account.\ +All purchases will deposit or withdraw money from town Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Town Shop. @@ -88,7 +88,7 @@ bank-mode: ## Permission Override -By adjust configuration, you're allow mayor or king automaticlly grant administrator permission on all shops in their management range. +By adjust configuration, you're allow mayor or king automatically grant administrator permission on all shops in their management range. ```yaml #Should allow Mayor grant the shop administrator permission on they town. @@ -168,7 +168,7 @@ This causes Towny and QuickShop Hikari to use accounts with the same name but di You can adjust the option in configuration to enable workaround. -NOTE: It will force turned on if detected EssentialsX installed on your server.\ +NOTE: It will force turned on if detected EssentialsX installed on your server. At present, we do not provide a method for disable it. ```yaml diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md new file mode 100644 index 0000000000..0189958495 --- /dev/null +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md @@ -0,0 +1,138 @@ +# UltimateClaims + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and UltimateClaims. + +It ensures that shop creation and trading respect land claim permissions managed by UltimateClaims. + +--- + +## What Does It Do? + +On servers using land-claim plugins, players protect areas of the world from unauthorized interaction. + +Without compatibility: + +- Players may create shops inside claims they do not own. +- Visitors might trade in areas where they should not. +- Claim protection rules might not apply correctly to shops. + +The UltimateClaims compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops inside their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a claim. +- Whether the player has permission in that claim. +- Whether claim rules allow shop interaction. + +If the action violates claim settings, QuickShop blocks it. + +Outside of claims, normal QuickShop behavior applies. + +--- + +## Claim Owner Permissions + +With this module enabled: + +- Claim owners can create and manage shops within their claim. +- Trusted players follow claim permission settings. +- Visitors are restricted based on claim configuration. +- Shop actions outside of claims behave normally. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install UltimateClaims. +2. Install the QuickShop UltimateClaims compat module. +3. Restart your server. + +If UltimateClaims is detected on startup, compatibility activates automatically. + +No additional linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Common options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If UltimateClaims is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Keep owner override enabled for better control. + +This ensures players maintain full control over their protected land. + +--- + +## Common Questions + +### Can players create shops inside someone else's claim? + +Only if the claim permissions allow it. + +Otherwise, QuickShop will block the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can choose to restrict shops to claimed land only. + +### What happens if UltimateClaims is removed? + +QuickShop returns to normal behavior without claim checks. + +--- + +## Summary + +The UltimateClaims compat module: + +- Protects claimed land from unauthorized shop usage +- Enforces claim-based permissions +- Integrates smoothly with land-claim servers +- Requires minimal setup + +It is recommended for any server running UltimateClaims. \ No newline at end of file diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md index 87a71a205c..6437754503 100644 --- a/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md @@ -2,8 +2,10 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. Find out more [here](../modules/shops/worldedit.md). + +Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. \ No newline at end of file diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/development/01-getting-start.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/development/01-getting-start.md index 92b773451e..0e78e52367 100644 --- a/i18n/hu-HU/docusaurus-plugin-content-docs/current/development/01-getting-start.md +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/development/01-getting-start.md @@ -6,8 +6,8 @@ This series of articles will help you build extensions for QuickShop-Hikari or i ## License -QuickShop-Hikari is open source using the [GPLv3](https://www.gnu.org/licenses/quick-guide-gplv3.en.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari).\ -You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the GPLv3 agreement. +QuickShop-Hikari is open source using the [AGPLv3](https://www.gnu.org/licenses/agpl-3.0.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari). +You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the AGPLv3 agreement. ## 🚧Don't trust Javadoc too much @@ -48,7 +48,7 @@ QuickShop-Hikari divides operation sources into three types: - Server Main Thread - Async Thread (any other threads but not server main thread) -- Hybird +- Hybrid If you access the API through the wrong thread, QuickShop-Hikari will force a runtime error to be thrown. @@ -58,4 +58,4 @@ For APIs that may trigger network IO or long-time disk IO, you are required not You can see [Util.ensureThread()](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/3d1d271e1106ea1c83cc6068f8232ab7c7860918/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/util/Util.java#L351) and find out the requirements of the different APIs by looking up their use. APIs that do not use Util.ensureThread() are allowed to be called from any thread by default. -You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. +You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. \ No newline at end of file diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md index aa2404c594..7828d414ad 100644 --- a/i18n/hu-HU/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md @@ -10,7 +10,7 @@ ShopManager manager = api.getShopManager(); ## Getting a shop -Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates.\ +Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates. QuickShop-Hikari's store is only bound to one half of "Large Chest", so to get the store, you need to query both the cube itself and its associated cube. The good thing is that there is an API in the plugin that allows you to handle this situation very easily. @@ -71,7 +71,7 @@ manager.deleteShop(shop) // Permanently delete this store, both memory and datab ## Identify a store -Please note that store locations are technically variable and you should not use coordinates to identify a store.\ +Please note that store locations are technically variable and you should not use coordinates to identify a store. Also RuntimeRandomUniqueId should not be used to identify the store, as the name suggests, the value changes every time the server restarts, it should only be used to handle scenarios where the player interacts with the server. ```java diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md index 543f1851da..4f839ed652 100644 --- a/i18n/hu-HU/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md @@ -1,6 +1,6 @@ # 0x05 Per shop permission -QuickShop-Hikari has a per shop permission management system.\ +QuickShop-Hikari has a per shop permission management system. Therefore, for a normal permission node check is not enough, you need to attach an additional check. ## Check with shop diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/development/06-protocol-system.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/development/06-protocol-system.md index 5d37a15536..0380b789f9 100644 --- a/i18n/hu-HU/docusaurus-plugin-content-docs/current/development/06-protocol-system.md +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/development/06-protocol-system.md @@ -15,30 +15,30 @@ This documentation will guide developers through the components, implementation - **Purpose**: Manages packet handling and initialization logic. - **Interface**: `PacketHandler` - **Key Methods**: - - `Map> factories()` - - Retrieves a map of supported `PacketFactory` instances keyed by game versions. - - `void initialize()` - - Initializes the packet handler. - - `Optional> factory(String version)` - - Retrieves a `PacketFactory` for a specific game version. + - `Map> factories()` + - Retrieves a map of supported `PacketFactory` instances keyed by game versions. + - `void initialize()` + - Initializes the packet handler. + - `Optional> factory(String version)` + - Retrieves a `PacketFactory` for a specific game version. ### 2. **PacketFactory** - **Purpose**: Creates and sends specific packet types. - **Interface**: `PacketFactory` - **Supported Packets**: - - **Spawn Packet**: - - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. - - Example Use: Representing shop items visually. - - **Metadata Packet**: - - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. - - Example Use: Updating item display name or properties. - - **Velocity Packet**: - - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. - - Example Use: Custom animations for virtual items. - - **Destroy Packet**: - - Removes the entity from the client view. Created using `createDestroyPacket()`. - - Example Use: Unloading or removing a virtual display item. + - **Spawn Packet**: + - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. + - Example Use: Representing shop items visually. + - **Metadata Packet**: + - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. + - Example Use: Updating item display name or properties. + - **Velocity Packet**: + - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. + - Example Use: Custom animations for virtual items. + - **Destroy Packet**: + - Removes the entity from the client view. Created using `createDestroyPacket()`. + - Example Use: Unloading or removing a virtual display item. Developers implementing custom `PacketFactory` should ensure these packets are correctly handled and optimized for performance. @@ -46,24 +46,24 @@ Developers implementing custom `PacketFactory` should ensure these packets are c - **Purpose**: Oversees the lifecycle of virtual display items and integrates with packet handlers. - **Key Features**: - - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). - - Manages virtual display items mapped to chunks. - - Provides thread-safe operations for adding and removing display items. + - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). + - Manages virtual display items mapped to chunks. + - Provides thread-safe operations for adding and removing display items. ### 4. **VirtualDisplayItem** - **Purpose**: Represents a virtual item displayed to players. - **Key Features**: - - Generates and caches packets for spawning, metadata, velocity, and destruction. - - Manages packet senders for each player. - - Handles spawn and removal operations dynamically. + - Generates and caches packets for spawning, metadata, velocity, and destruction. + - Manages packet senders for each player. + - Handles spawn and removal operations dynamically. ### 5. **ProtocolLibHandler and PacketEventsHandler** - **Purpose**: Provide implementations of `PacketHandler` using ProtocolLib and PacketEvents, respectively. - **Differences**: - - `ProtocolLibHandler` leverages ProtocolLib API. - - `PacketEventsHandler` uses the PacketEvents library. + - `ProtocolLibHandler` leverages ProtocolLib API. + - `PacketEventsHandler` uses the PacketEvents library. --- @@ -140,11 +140,11 @@ public class CustomPacketFactory implements PacketFactory { Packet factories are provided for specific game versions through two primary implementations: - **ProtocolLib**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` - **PacketEvents**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` --- diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md new file mode 100644 index 0000000000..aebc035f87 --- /dev/null +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md @@ -0,0 +1,297 @@ +# Interaction System (Developer Guide) + +The Interaction System allows developers to fully customize how players interact with shops. + +As of 6.2.0.11, the system has been redesigned to be: + +- Modular +- Extensible +- Thread-safe +- Fully customizable by third-party addons + +This guide will walk you through: + +1. What the Interaction System is +2. Getting the `InteractionManager` +3. Understanding `InteractionType` +4. Understanding `InteractionBehavior` +5. Registering custom interactions +6. Best practices + +--- + +# Overview + +The Interaction System is composed of three main components: + +| Component | Purpose | +| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| `InteractionType` | Describes **what kind of click happened** (standing, sneaking, left-click, sign, shopblock, etc.) | +| `InteractionBehavior` | Describes **what action should happen** when that type is triggered | +| `InteractionManager` | Central registry that manages interactions and behaviors | + +This separation allows developers to: + +- Add new click types +- Add new behaviors +- Override existing ones +- Extend QuickShop without modifying core code + +--- + +# Getting the InteractionManager + +To begin registering custom interactions, you must retrieve the `InteractionManager` instance. + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +If you are working directly with the plugin instance: + +```java +InteractionManager manager = QuickShop.getInstance().getInteractionManager(); +``` + +Once obtained, you can: + +- Register new interaction types +- Register new behaviors +- Override existing behaviors + +--- + +# Understanding InteractionType + +`InteractionType` represents **how** a player interacted with a shop. + +Examples include: + +- `STANDING_LEFT_CLICK_SIGN` +- `STANDING_RIGHT_CLICK_SHOPBLOCK` +- `SNEAKING_LEFT_CLICK_CONTAINER` +- etc. + +Each `InteractionType` defines: + +- Player stance (standing/sneaking) +- Click type (left/right) +- Target (sign/shopblock/container) + +InteractionTypes do NOT define behavior — they only define the trigger. + +--- + +# Understanding InteractionBehavior + +`InteractionBehavior` defines **what happens** when an interaction is triggered. + +Examples of built-in behaviors: + +- `TRADE_INTERACTION` +- `TRADE_UI` +- `CONTROL_PANEL` +- `CONTROL_PANEL_UI` +- `NONE` + +A behavior: + +- Executes logic +- May open GUIs +- May send chat panels +- May directly trade items +- Can cancel or modify flow + +This separation makes it easy to reuse behaviors across multiple interaction types. + +--- + +# Registering Custom Interactions + +There are two things you can register: + +- A custom `InteractionType` +- A custom `InteractionBehavior` + +--- + +## Creating a Custom InteractionBehavior + +Create a class implementing `InteractionBehavior`. + +Example: + +```java +public class MyTradeBehavior implements InteractionBehavior { + + @Override + public String getKey() { + return "MY_CUSTOM_TRADE"; + } + + @Override + public void execute(InteractionClick click) { + Player player = click.getPlayer(); + Shop shop = click.getShop(); + + player.sendMessage("You triggered my custom interaction!"); + + // Add your custom logic here + } +} +``` + +Then register it: + +```java +InteractionManager manager = api.getInteractionManager(); +manager.behavior(new MyTradeBehavior()); +``` + +Now your behavior is available for use. + +--- + +## Creating a Custom InteractionType + +You may also register custom interaction types if you want to introduce new trigger definitions. + +Example: + +```java +public class MyCustomInteraction implements InteractionType { + + @Override + public String getKey() { + return "STANDING_DOUBLE_CLICK_SIGN"; + } + + @Override + public boolean matches(InteractionClick click) { + // Define custom logic to detect this interaction + return click.isStanding() + && click.isSign() + && click.isDoubleClick(); + } +} +``` + +Register it: + +```java +manager.interaction(new MyCustomInteraction()); +``` + +--- + +# Binding Types to Behaviors + +The InteractionManager internally maps interaction types to behaviors based on configuration and registration order. + +Once your behavior is registered: + +- It can be referenced in `interaction.yml` +- Or attached programmatically + +Example interaction.yml usage: + +```yaml +STANDING_LEFT_CLICK_SIGN: MY_CUSTOM_TRADE +``` + +--- + +# The InteractionClick Object + +When your behavior executes, you receive an `InteractionClick` object. + +It provides: + +- `getPlayer()` +- `getShop()` +- `getLocation()` +- `isSneaking()` +- `isSign()` +- `isShopBlock()` +- etc. + +This gives full context for safe execution. + +--- + +# Advanced: Overriding Built-in Behavior + +If you register a behavior using the same key as an existing one, your behavior can override the default. + +⚠️ Be careful when doing this — you are replacing core functionality. + +--- + +# Best Practices + +### Always Use Unique Keys + +Avoid naming collisions: + +``` +MYPLUGIN_CUSTOM_BEHAVIOR +``` + +### Keep Behavior Lightweight + +Do not block the main thread with: + +- Heavy database calls +- File IO +- Network calls + +Use async tasks if needed. + +### Respect Permissions + +Always validate: + +```java +if (!player.hasPermission("myplugin.use")) { + return; +} +``` + +### Avoid Hard Overrides Unless Necessary + +Instead of replacing built-in behaviors, consider extending them. + +--- + +# Example: Full Minimal Implementation + +```java +public class ExampleAddon { + + public void register(QuickShopAPI api) { + + InteractionManager manager = api.getInteractionManager(); + + manager.behavior(new MyTradeBehavior()); + manager.interaction(new MyCustomInteraction()); + } +} +``` + +--- + +# Conclusion + +The Interaction System is designed to allow: + +- Full extensibility +- Clean separation of triggers and actions +- Easy integration for third-party developers + +By retrieving the `InteractionManager`: + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +You gain full control over how shops respond to player actions. \ No newline at end of file diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/development/08-tax-manager.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/development/08-tax-manager.md new file mode 100644 index 0000000000..72a56f9e88 --- /dev/null +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/development/08-tax-manager.md @@ -0,0 +1,266 @@ +# Tax System (Developer Guide) + +The QuickShop tax system allows server owners and developers to define how transaction taxes are calculated, distributed, and extended. + +As of 6.2.0.11, the tax system has been fully rewritten to provide: + +- A flexible TaxManager +- Pluggable TaxProvider support +- Progressive taxation +- Tax targeting (shop owner, interacting player, or both) +- Custom extension capability for third-party addons + +This guide explains how to work with the tax system programmatically. + +--- + +# Overview + +The tax system is composed of three core components: + +TaxManager +Responsible for coordinating tax calculation and execution. + +TaxProvider +Defines how tax values are calculated. + +TaxRates +Represents calculated tax results for a transaction. + +The system is designed to allow custom providers to be registered and used without modifying core logic. + +--- + +# Getting the TaxManager + +To work with the tax system, retrieve the TaxManager from the ShopManager. + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +Once obtained, you can: + +- Access current tax configuration +- Register custom tax providers +- Calculate tax values +- Hook into tax events + +--- + +# How the Tax System Works + +During a shop transaction: + +1. A base price is determined. +2. The TaxManager selects the active TaxProvider. +3. The TaxProvider calculates applicable tax. +4. A TaxRates object is produced. +5. The system applies the tax to: + + - Shop owner + - Interacting player + - Or both (depending on configuration) + +This architecture allows tax behavior to be modified without altering transaction logic. + +--- + +# TaxProvider + +A TaxProvider defines how tax values are calculated. + +You may create your own provider to implement: + +- Progressive tax brackets +- Flat percentage tax +- Conditional tax rules +- Region-based tax +- Rank-based tax +- Time-based tax + +Example minimal provider: + +```java +public class MyCustomTaxProvider implements TaxProvider { + + @Override + public TaxRates calculateTax(TaxContext context) { + + double basePrice = context.getPrice(); + + double taxAmount = basePrice * 0.05; // 5% flat tax + + return new TaxRates() + .ownerTax(taxAmount) + .buyerTax(0.0); + } +} +``` + +Then register it: + +```java +taxManager.provider(new MyCustomTaxProvider()); +``` + +Once registered, your provider will be used for tax calculations. + +--- + +# TaxRates + +TaxRates represents the result of a tax calculation. + +It typically contains: + +- Owner tax amount +- Buyer tax amount +- Total tax impact +- Metadata (if applicable) + +The transaction system will read from TaxRates and apply deductions accordingly. + +--- + +# Progressive Taxation + +The built-in system supports progressive tax structures. + +This allows server administrators to tax based on: + +- Player balance +- Shop owner balance +- Configured tax brackets + +Example configuration concept: + +- 0–10,000 balance → 1% tax +- 10,000–100,000 → 2% tax +- 100,000+ → 3% tax + +Developers can extend or override this logic inside a custom TaxProvider. + +--- + +# Targeting Tax + +The new tax system allows taxes to be applied to: + +- Shop owner +- Interacting player +- Both + +This is controlled via configuration, but custom providers can override distribution logic by adjusting TaxRates output. + +Example: + +```java +return new TaxRates() + .ownerTax(basePrice * 0.02) + .buyerTax(basePrice * 0.01); +``` + +--- + +# Registering a Custom TaxProvider + +To replace or extend tax logic: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); + +taxManager.provider(new MyCustomTaxProvider()); +``` + +You may register only one primary provider at a time. If multiple providers are needed, implement internal delegation within your custom provider. + +--- + +# Tax Events + +The tax system integrates with the event system. + +The modern event used is: + +ShopEnhancedTaxEvent + +This replaces legacy tax events and provides improved context, including: + +- Transaction builder reference +- TaxRates object +- Modification capability before final execution + +You can listen for the event and modify tax behavior dynamically: + +```java +@EventHandler +public void onTax(ShopEnhancedTaxEvent event) { + + TaxRates rates = event.getTaxRates(); + + // Example: Give VIP players reduced owner tax + if (event.getOwner().hasPermission("vip.tax.discount")) { + rates.ownerTax(rates.getOwnerTax() * 0.5); + } +} +``` + +--- + +# Best Practices + +Always keep tax calculations lightweight. + +Avoid: + +- Heavy database queries inside calculateTax +- Blocking network calls +- Long-running computations + +If complex logic is required, pre-cache required data outside the tax execution path. + +Ensure negative tax values are not returned unless intentional. + +Always validate final amounts before applying modifications. + +Respect configuration hierarchy unless intentionally overriding it. + +--- + +# Example Full Implementation + +```java +public class ExampleTaxAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + TaxManager taxManager = manager.taxManager(); + + taxManager.provider(new MyCustomTaxProvider()); + } +} +``` + +--- + +# Conclusion + +The new tax system is designed for: + +- Flexibility +- Extensibility +- Clean separation of concerns +- Future expansion + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +You gain full control over how QuickShop calculates and applies tax during transactions. \ No newline at end of file diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/development/09-layout-provider.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/development/09-layout-provider.md new file mode 100644 index 0000000000..55e3cd3e91 --- /dev/null +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/development/09-layout-provider.md @@ -0,0 +1,275 @@ +# Shop Layout Provider (Developer Guide) + +The Shop Layout Provider system allows developers to customize how shop signs are structured and rendered. + +As of 6.2.0.11, shop layouts are no longer hardcoded. Instead, they are controlled through the `IShopLayoutProvider` interface, which allows: + +- Custom sign line ordering +- Per-shop-type layouts (BUYING, SELLING, FROZEN, or custom types) +- Dynamic layout resolution +- Complete replacement of the default layout system + +This guide explains how to access, override, and implement a custom layout provider. + +--- + +# Overview + +The layout provider controls how shop sign lines are arranged. + +Instead of hardcoding: + +Line 1 → Header +Line 2 → Trading info +Line 3 → Item +Line 4 → Price + +The system now allows full customization through: + +- Config-based layout definitions +- Custom `IShopLayoutProvider` implementations +- Runtime overrides + +The default implementation is `SimpleShopLayoutProvider`. + +--- + +# Accessing the Layout Provider + +To retrieve the current layout provider: + +```java +ShopManager manager = api.getShopManager(); +IShopLayoutProvider provider = manager.shopLayoutProvider(); +``` + +To replace the layout provider with a custom one: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Once replaced, your implementation will control how shop layouts are generated. + +--- + +# Understanding IShopLayoutProvider + +`IShopLayoutProvider` defines how layout data is retrieved and resolved. + +It is responsible for: + +- Providing layout configuration per shop type +- Determining which layout to use +- Supplying formatted line keys +- Allowing future extensibility + +The default implementation reads layout definitions from configuration and applies them based on shop type. + +--- + +# Default Layout Example + +The default configuration-based layout looks like this: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +Each line maps to a layout component key. + +An empty string (`""`) leaves that line blank. + +The layout provider resolves these keys into actual sign content. + +--- + +# Creating a Custom Layout Provider + +To override the default behavior, implement `IShopLayoutProvider`. + +Example minimal implementation: + +```java +public class MyCustomLayoutProvider implements IShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + + ShopLayout layout = new ShopLayout(); + + layout.setLine(1, "Custom Header"); + layout.setLine(2, "Owner: " + shop.getOwnerName()); + layout.setLine(3, shop.getItem().getType().name()); + layout.setLine(4, "$" + shop.getPrice()); + + return layout; + } +} +``` + +Then register it: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Your layout will now control all shop sign formatting. + +--- + +# Per-Type Layout Control + +Because the system no longer depends on the legacy ShopType enum, layouts can support: + +- Built-in types (BUYING, SELLING, FROZEN) +- Custom shop types +- Addon-defined shop types + +Your provider can determine layout logic dynamically: + +```java +@Override +public ShopLayout provideLayout(Shop shop) { + + if (shop.getShopType().key().equals("FROZEN")) { + return frozenLayout(shop); + } + + return defaultLayout(shop); +} +``` + +This allows conditional formatting, localization adjustments, or special event styling. + +--- + +# Advanced Customization + +A custom layout provider can: + +- Pull data from external plugins +- Inject dynamic placeholders +- Modify layout per player +- Apply formatting logic +- Override color schemes +- Apply region-based formatting +- Implement animated sign systems + +Because the layout provider is resolved at runtime, you can compute layouts dynamically instead of reading static config. + +--- + +# Replacing vs Extending the Default Provider + +You have two options: + +Replace entirely: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Or extend the default implementation: + +```java +public class ExtendedLayoutProvider extends SimpleShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + ShopLayout base = super.provideLayout(shop); + + base.setLine(1, "[Extended] " + base.getLine(1)); + + return base; + } +} +``` + +Extending is safer if you only want to modify small portions. + +--- + +# Best Practices + +Keep layout generation lightweight. + +Avoid: + +- Heavy database queries +- Blocking IO +- Complex network calls + +Layout generation runs during shop updates and sign refresh events. + +Always handle null values safely. + +Ensure layout line count does not exceed sign limits. + +Avoid hardcoding shop type names unless necessary. + +If your layout supports custom shop types, validate their keys properly. + +--- + +# Example Full Registration + +```java +public class LayoutAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + + manager.shopLayoutProvider(new MyCustomLayoutProvider()); + } +} +``` + +--- + +# Conclusion + +The Shop Layout Provider system allows complete control over shop sign structure. + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +``` + +And setting: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +You can redefine how every shop is displayed on the server. + +This system was designed to support: + +- Extensibility +- Custom shop types +- Localization +- Dynamic formatting +- Future expansion \ No newline at end of file diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/faq/compare-reremake.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/faq/compare-reremake.md index aaa1a9e507..6b39f02520 100644 --- a/i18n/hu-HU/docusaurus-plugin-content-docs/current/faq/compare-reremake.md +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/faq/compare-reremake.md @@ -64,7 +64,7 @@ If you are a Reremake user, you may be confused about the differences between Hi ## Which one should I use? Well, it depends on what your needs are.\ -If you have an old server (<1.20) instance, Reremake is your only choice.\ +If you have an old server ({'<'}1.20) instance, Reremake is your only choice.\ ~~If you are in China which has GFW interfere, you also should consider Reremake because it doesn't need to load libraries from Global Internet.~~ Solved in 6.0.0.0. If none of these applies, give Hikari a try! diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md index 551f579e7c..172be3a69b 100644 --- a/i18n/hu-HU/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md @@ -1,8 +1,8 @@ # Where Addons/Compacts is -Addons and Compatilibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. +Addons and Compatibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. -- Open Modrinth versions page, locate the version your're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) +- Open Modrinth versions page, locate the version you're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) - Frantically slide your mouse wheel down until the lowest end of the page. - You get it! diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/internal/database-schema.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/internal/database-schema.md index fea685e4fc..45e04adb56 100644 --- a/i18n/hu-HU/docusaurus-plugin-content-docs/current/internal/database-schema.md +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/internal/database-schema.md @@ -4,17 +4,17 @@ This chapter will explain the implementation details of QuickShop Hikari's datab ## Tables -This section explains the database tables created by QuickShop-Hikari.\ -Unless otherwise specified, the initial `qs_` in table name is the table prefix.\ +This section explains the database tables created by QuickShop-Hikari. +Unless otherwise specified, the initial `qs_` in table name is the table prefix. For the latest code definition for each table, see: [DataTables.java](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/hikari/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/database/DataTables.java) ### `data` -This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information.\ -No matter what, a data record should not be modified after it is created, until it got deleted.\ +This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information. +No matter what, a data record should not be modified after it is created, until it got deleted. Any new changes to the shop should create a new copy, apply the changes to the copy, and insert it as a new record. -Basiclly, Copy-on-write. +Basically, Copy-on-write. A data record only be deleted from the database when no any table references their `data_id`. @@ -29,7 +29,7 @@ A data record only be deleted from the database when no any table references the | unlimited | BIT NOT NULL | 0 | Indicates whether this store is an unlimited store, 0=Limited, 1=Unlimited | | hologram | BIT NOT NULL | 0 | Indicates the suspension status of this store's display item, 0=Follow global settings, 1=Disabled | | tax_account | VARCHAR(36) | NULL | The uuid for tax account, If it is not NULL, tax will be paid to the specified account | -| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serilized to JSON string | +| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serialized to JSON string | | extra | LONGTEXT | Empty Yaml | Used to store experimental settings of QuickShop Hikari or persistent data of other plugins | | inv_wrapper | VARCHAR(255) NOT NULL | N/A | Unique identifier for InventoryWrapper for this shop data entry | | inv_symbol_link | TEXT NOT NULL | N/A | Unique Inventory symbol used to pass to InventoryWrapper, for locating inventory | @@ -38,7 +38,7 @@ A data record only be deleted from the database when no any table references the ### `shops` -This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes.\ +This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes. Multiple `shop_id` can correspond to the same `data_id`. | Column Name | DataType | Default | Description | diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/cmd-alias.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/cmd-alias.md index 53f1577685..e6ed381c0d 100644 --- a/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/cmd-alias.md +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/cmd-alias.md @@ -23,7 +23,7 @@ custom-commands: - cshop ``` -Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect.\ +Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect. The effect should be like this: ![command-alias](./img/command-alias.png) diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/datasource.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/datasource.md index 6fc1bd8931..3fd3a8bdee 100644 --- a/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/datasource.md +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/datasource.md @@ -48,7 +48,7 @@ Execute the `/quickshop export` command in console, quickshop will export a zip ![exported data](img/database-export.png) -Stop your database, switch the datasource, and start the server.\ +Stop your database, switch the datasource, and start the server. You may noticed all shops are gone, because new datasources had no data inside, we will restore them from export. Rename that exported ZIP file to `recovery.zip`, execute `/quickshop recovery` and restart your server, all shops should back. diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/itemmatcher.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/itemmatcher.md index 56be243019..922907be27 100644 --- a/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/itemmatcher.md +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/itemmatcher.md @@ -4,7 +4,7 @@ ItemMatcher is a utility used by QuickShop-Hikari to compare the items, it is th :::caution -If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse.\ +If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse. **TL;DR: Keep default unless you know what you're doing.** ::: @@ -26,10 +26,10 @@ matcher: work-type: 1 ``` -By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility.\ +By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility. But still, you can toggle to QuickShop Item Matcher if you need to customize the comparing or running QuickShop on the server jar which have bug affect the Bukkit comparing system. -## Customize the metadata compareing +## Customize the metadata comparing Customize only works under QuickShop Item Matcher. diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md index fc2af69d2b..d04e8f2783 100644 --- a/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md @@ -4,7 +4,7 @@ ItemStack Loader is a workaround for loading the Bukkit ItemStack. :::caution -Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossble. +Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossible. ::: diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/localization.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/localization.md index e9121e1a36..d47589ab9a 100644 --- a/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/localization.md +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/localization.md @@ -10,7 +10,7 @@ To help translate QuickShop-Hikari, please visit our [Crowdin Homepage](https:// ## Crowdin OTA -QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will overrided when you reload QuickShop-Hikari or restart your server. +QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will override when you reload QuickShop-Hikari or restart your server. Your installation will keep translations up-to-date without any touch. @@ -110,6 +110,16 @@ To disable the CrowdinOTA, please add it in the startup flag: -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager.enableCrowdinOTA=false ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +use-crowdin-ota: false +``` + ### Self-Hosted OTA Server If you self-hosted our translation server by using [CrowdinCopyDeploy](https://github.com/Ghost-chu/CrowdinCopyDeploy) tool, you're able to change the OTA server to yourself server. @@ -118,4 +128,12 @@ If you self-hosted our translation server by using [CrowdinCopyDeploy](https://g -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager= ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml +Use + +```yaml +crowdin-host: +``` \ No newline at end of file diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/shops/benefit.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/shops/benefit.md index 4d7a9c8f42..c59d92e6d1 100644 --- a/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/shops/benefit.md +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/shops/benefit.md @@ -37,3 +37,13 @@ By default, for security, QuickShop-Hikari disallow add offline players into sho ```bash -Dcom.ghostchu.quickshop.command.subcommand.SubCommand_Benefit.allowOffline=true ``` + +### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +shop.allow-offline-benefit: true +``` \ No newline at end of file diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/shops/control-panel b/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/shops/control-panel new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/shops/control-panel @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/shops/history.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/shops/history.md index fa891adeab..195b64a042 100644 --- a/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/shops/history.md +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/shops/history.md @@ -24,7 +24,7 @@ The History GUI displays the details of each recorded transaction and other usef ### Transaction details -When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed.\ +When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed. If you are checking the history of more than one store, the player head will be replaced with an item from the corresponding store. ![history-gui](./img/history-gui.png) diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md new file mode 100644 index 0000000000..c5ed3b3fe4 --- /dev/null +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md @@ -0,0 +1,90 @@ +# Shop Types + +QuickShop supports multiple shop types, allowing shops to behave differently depending on their mode. + +The built-in shop types are: + +- Selling +- Buying +- Frozen + +Each type changes how the shop interacts with players. + +--- + +## Selling Shop + +A Selling shop allows players to: + +- Buy items from the shop owner +- Pay money to receive items + +This is the most common shop type. + +--- + +## Buying Shop + +A Buying shop allows players to: + +- Sell items to the shop owner +- Receive money in exchange + +This is commonly used for: + +- Resource collection +- Server buy-back shops +- Automated material sinks + +--- + +## Frozen Shop + +A Frozen shop temporarily disables trading. + +While frozen: + +- No buying is allowed +- No selling is allowed +- The shop remains intact +- Staff or admins can manage it + +This is useful for: + +- Temporary suspensions +- Investigation +- Event locking +- Maintenance + +--- + +## Switching Shop Types + +Shop types can be changed through: + +- Control panel +- GUI control panel +- Admin commands + +Frozen mode is also available via: + +/qs freeze + +--- + +## Custom Shop Types + +As of 6.2.x, the system supports extensible shop types internally. + +While server owners use the built-in types, the system now allows future expansion through addons. + +--- + +## Summary + +Shop types allow you to: + +- Control how money flows +- Enable buy-back mechanics +- Temporarily disable shops +- Build advanced economic systems \ No newline at end of file diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md new file mode 100644 index 0000000000..18e0a47407 --- /dev/null +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md @@ -0,0 +1,217 @@ +# Sign Layout + +QuickShop allows you to fully customize how shop signs are structured. + +You can change: + +- What appears on each line +- The order of information +- Layout per shop type +- Whether certain lines are blank + +This gives you complete control over how shops look on your server. + +--- + +## How Sign Layout Works + +Shop signs have four lines. + +Instead of being hardcoded, QuickShop uses a configurable layout system. + +Each shop type can have its own layout: + +- SELLING +- BUYING +- FROZEN + +You define what each line displays using layout keys. + +--- + +## Configuration Location + +Sign layout is configured in `config.yml` under: + +```yaml +layout: +``` + +Example default configuration: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## Available Layout Keys + +Each line value refers to a built-in layout component. + +Common layout keys include: + +- `header` – The shop header line +- `trading` – Buy/Sell direction information +- `item` – Item name +- `price` – Shop price + +These keys are automatically formatted using your language file and formatting settings. + +--- + +## Leaving a Line Blank + +To leave a line empty, use: + +```yaml +line2: "" +``` + +This is useful if you want: + +- Minimalist signs +- Cleaner layouts +- Custom spacing +- Decorative formatting + +--- + +## Customizing Per Shop Type + +Each shop type can have a different layout. + +For example: + +```yaml +layout: + + SELLING: + line1: "header" + line2: "item" + line3: "price" + line4: "" + + BUYING: + line1: "header" + line2: "price" + line3: "item" + line4: "" + + FROZEN: + line1: "header" + line2: "" + line3: "item" + line4: "Frozen" +``` + +This allows you to visually differentiate: + +- Selling shops +- Buying shops +- Frozen shops + +--- + +## Practical Examples + +### Minimal Style + +```yaml +layout: + SELLING: + line1: "item" + line2: "price" + line3: "" + line4: "" +``` + +### Compact Economy Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "price" + line3: "item" + line4: "" +``` + +### Large Clear Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## How Updates Affect Layout + +When you change the layout: + +- Existing shop signs will update automatically when refreshed. +- New shops will use the updated format immediately. + +If needed, you can reload QuickShop to apply changes. + +--- + +## Best Practices + +- Keep important information visible (price and item). +- Avoid overly complex formatting. +- Test layout changes before deploying on large servers. +- Use different layouts for BUYING and SELLING to reduce confusion. + +--- + +## Common Questions + +### Can I add more than four lines? + +No. +Minecraft signs are limited to four lines. + +### Can I add colors? + +Colors are controlled by your language file and formatting settings. + +### Can I change layout without restarting? + +Yes, but reloading or refreshing shops is recommended to ensure full update. + +--- + +## Summary + +The Sign Layout system allows you to: + +- Fully customize shop sign appearance +- Create per-type layouts +- Simplify or expand shop information +- Improve clarity for players + +All layout customization is handled inside `config.yml`. diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md index abcc288db7..2a0d52d788 100644 --- a/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md @@ -8,19 +8,6 @@ This feature added in 6.0.0.0. By default, QuickShop-Hikari uses the default brand material from the configuration file, but you can modify it to other brands for your store with the command. -## Configuration - -```yaml - #The wall sign material. - #ACACIA_WALL_SIGN - #BIRCH_WALL_SIGN - #DARK_OAK_WALL_SIGN - #JUNGLE_WALL_SIGN - #OAK_WALL_SIGN - #SPRUCE_WALL_SIGN - sign-material: OAK_WALL_SIGN -``` - ## Change the material Use command `/quickshop sign ` to change your shop sign material. diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md new file mode 100644 index 0000000000..980bad10f2 --- /dev/null +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md @@ -0,0 +1,130 @@ +# Shop Sign Waxing + +QuickShop can automatically wax shop signs to prevent players from editing them manually. + +Waxing protects the integrity of your shop signs and helps prevent tampering, spoofing, and accidental modification. + +As of modern Minecraft versions, waxed signs cannot be edited unless they are unwaxed first. + +--- + +## What Is Sign Waxing? + +In Minecraft, waxing a sign locks it so that: + +- Players cannot edit the text +- Players cannot modify lines +- Accidental changes are prevented +- Malicious edits are blocked + +When enabled in QuickShop, shop signs are automatically waxed when created. + +--- + +## Why Use It? + +Sign waxing protects against: + +- Players editing price lines +- Changing item names on signs +- Spoofing shop information +- Accidental formatting issues +- Sign hijacking attempts + +On public servers, this feature is strongly recommended. + +--- + +## How It Works + +When a shop is created: + +1. QuickShop generates the shop sign. +2. The sign text is written. +3. The sign is automatically waxed (if enabled). + +If a shop is updated: + +- The sign will be safely updated by QuickShop. +- The wax state is maintained. + +Players cannot manually edit shop signs while waxing is enabled. + +--- + +## Configuration + +To enable or disable sign waxing, edit `config.yml`: + +```yaml +shop: + sign-wax: true +``` + +### true + +- Shop signs are automatically waxed. +- Players cannot edit the sign manually. + +### false + +- Shop signs behave like normal Minecraft signs. +- Players may edit them if permitted by the game. + +--- + +## Recommended Setting + +For most servers: + +```yaml +shop: + sign-wax: true +``` + +This ensures shop data stays accurate and secure. + +--- + +## Common Questions + +### Can admins still modify shop signs? + +QuickShop controls shop sign formatting. +Manual edits are not recommended. + +Admins should use: + +- Control panel +- Shop commands +- Direct configuration changes + +### Does waxing affect shop functionality? + +No. +Waxing only prevents manual text edits. +The shop continues to function normally. + +### Can players un-wax shop signs? + +No. +QuickShop manages the sign state automatically. + +--- + +## Best Practices + +- Keep sign-wax enabled on survival servers. +- Combine sign-wax with proper permissions. +- Avoid manually editing shop signs through other plugins. + +--- + +## Summary + +Sign Waxing: + +- Prevents tampering +- Requires no additional setup + +Enable it once and QuickShop handles the rest. \ No newline at end of file diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/shops/taxes.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/shops/taxes.md new file mode 100644 index 0000000000..1a273fd978 --- /dev/null +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/shops/taxes.md @@ -0,0 +1,92 @@ +# Taxation System + +QuickShop includes a taxation system designed to give server owners more flexibility and control over shop-based income. + +This system was revamped as of 6.2.0.11+ + +The new system allows you to: + +- Apply tax to shop owners +- Apply tax to buyers +- Apply tax to both +- Use progressive tax brackets +- Customize tax behavior in configuration + +This system replaces the legacy tax configuration. + +--- + +## How It Works + +During a transaction: + +1. The shop price is calculated. +2. Tax is calculated based on your configuration. +3. Tax is deducted from the configured target(s). +4. Remaining funds are distributed normally. + +You can configure: + +- Flat percentage tax +- Progressive tax based on player balance +- Tax accounts +- Distribution rules + +--- + +## Progressive Tax + +The new system allows you to tax based on balance brackets. + +Example concept: + +- 0 – 10,000 balance → 1% tax +- 10,000 – 100,000 → 2% tax +- 100,000+ → 3% tax + +This helps prevent extremely wealthy players from dominating the economy. + +--- + +## Who Pays the Tax? + +You can configure whether tax applies to: + +- The shop owner +- The buyer +- Both + +This gives you flexibility depending on your economy design. + +--- + +## Configuration + +All tax-related settings are located under the `shop-tax` section in `config.yml`. + +After updating to 6.2.0.11+, review your tax configuration carefully, as the old tax system has been replaced. + +--- + +## Why Use Tax? + +The taxation system can help: + +- Remove currency from circulation +- Fund server banks or towns +- Create sink mechanics +- Balance inflation +- Reward active players + +--- + +## Summary + +The new taxation system is: + +- Flexible +- Configurable +- Balance-aware +- Designed for modern economy servers + +Make sure to review your configuration after upgrading. \ No newline at end of file diff --git a/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md b/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md new file mode 100644 index 0000000000..247c24712d --- /dev/null +++ b/i18n/hu-HU/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md @@ -0,0 +1,161 @@ +# WorldEdit & FAWE Support + +QuickShop includes built-in protection and integration for WorldEdit and FastAsyncWorldEdit (FAWE). + +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. + +You do not need to download or install any additional compatibility plugins. + +--- + +## What This Does + +WorldEdit and FAWE allow administrators and builders to: + +- Copy and paste regions +- Replace large areas of blocks +- Mass-delete regions +- Roll back areas +- Regenerate terrain + +Without protection, these operations could: + +- Create ghost shops +- Leave orphaned shop data in the database +- Duplicate shops unintentionally +- Delete containers without cleaning up shop data +- Cause inconsistencies between world and database + +QuickShop now automatically detects and safely processes WorldEdit and FAWE operations. + +--- + +## Built-In Behavior + +When WorldEdit or FAWE modifies blocks: + +- Shops removed via WorldEdit are properly deleted from the database. +- Shop data stays synchronized with world changes. +- Ghost shops are prevented. +- Mass block replacements will not leave broken shop entries behind. + +This applies to: + +- //set +- //replace +- //cut +- //paste +- //regen +- Region deletion +- Mass container removal + +No configuration is required. + +--- + +## FAWE Support + +FastAsyncWorldEdit (FAWE) is fully supported. + +Because FAWE processes edits asynchronously, QuickShop handles: + +- Region-thread safe processing +- Async block updates +- Safe shop deletion during batch edits + +You do not need to enable anything manually. + +--- + +## Removing Shops with WorldEdit + +If you delete containers (chests, barrels, etc.) using WorldEdit: + +QuickShop will automatically: + +- Detect the block removal +- Unregister the shop +- Clean the database entry +- Prevent ghost shops + +You do not need to run `/qs cleanghost` after WorldEdit usage in normal circumstances. + +--- + +## Copying and Pasting Shops + +If you copy and paste regions that contain shops: + +- Shop data will not duplicate incorrectly. +- Shop IDs remain consistent. +- Invalid pasted shops will not auto-register unless properly created. + +This prevents accidental duplication exploits. + +--- + +## Performance + +WorldEdit and FAWE operations can modify thousands of blocks at once. + +QuickShop processes these safely and efficiently: + +- Batch-aware cleanup +- Thread-safe region access (especially on Folia) +- Minimal performance impact during mass edits + +--- + +## Configuration + +There are no specific WorldEdit configuration options in QuickShop. + +Support is automatic and always enabled if WorldEdit or FAWE is detected. + +If WorldEdit is not installed, no extra code is executed. + +--- + +## Common Questions + +### Do I need the old WorldEdit compatibility jar? + +No. + +As of 6.2.0.11, WorldEdit support is built-in and the separate compatibility module has been removed. + +### Does this work with FAWE? + +Yes. FAWE is fully supported. + +### Will shops break if I use //set air? + +No. Shops will be safely removed and cleaned up. + +### Do I need to restart after installing WorldEdit? + +No. QuickShop detects WorldEdit automatically on startup. + +--- + +## Best Practices + +Even though QuickShop safely handles WorldEdit operations, it is recommended to: + +- Avoid copying shops intentionally unless required +- Use backups before large region edits +- Test large FAWE operations on staging servers when possible + +--- + +## Summary + +QuickShop’s built-in WorldEdit and FAWE integration ensures: + +- Safe mass edits +- No ghost shops +- Automatic database cleanup +- Thread-safe processing +- No extra modules required + +WorldEdit support is now a core feature of QuickShop. \ No newline at end of file diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/addon/limited.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/addon/limited.md index 70af27e240..fae55a8c95 100644 --- a/i18n/it-IT/docusaurus-plugin-content-docs/current/addon/limited.md +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/addon/limited.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -41,8 +35,8 @@ Limit players to purchase up to 16 items per month. /quickshop limit period MONTH ``` -The system is based on the QuickShop-Hikari calendar system.\ -The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year.\ +The system is based on the QuickShop-Hikari calendar system. +The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year. Same for days, months and hours. Available time units: diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/addon/list.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/addon/list.md index 93d182f083..f20b91fd7b 100644 --- a/i18n/it-IT/docusaurus-plugin-content-docs/current/addon/list.md +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/addon/list.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/addon/plan.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/addon/plan.md index 52a6e79cb4..c10ef4df42 100644 --- a/i18n/it-IT/docusaurus-plugin-content-docs/current/addon/plan.md +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/addon/plan.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -18,7 +18,7 @@ Recorded data can be displayed from Hikari v2.0.0.0 onwards, but only after vers - All shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 1000 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `5` in server scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `5` in server scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Player Scope @@ -27,7 +27,7 @@ And still is Plan limitations, the list sorting is disturbed, so the display ord - All owned shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 50 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `4` in player scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `4` in player scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Showcase diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/addon/reforges.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/addon/reforges.md index 2a14509eb7..25fff1752a 100644 --- a/i18n/it-IT/docusaurus-plugin-content-docs/current/addon/reforges.md +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/addon/reforges.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.0.0.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md index 304d39bc05..6f9f51d250 100644 --- a/i18n/it-IT/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.1.1.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -44,7 +38,7 @@ _This is not necessary if you are using an H2 database._ ### Prepare for convert -To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console.\ +To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console. If a player is in the server, the conversion cannot be started. Once the conversion has begun, the server will be locked during the conversion process and no players will be able to join the server during the conversion. diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/addon/shopitemonly.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/addon/shopitemonly.md index c45062f8c2..1ccfe977b3 100644 --- a/i18n/it-IT/docusaurus-plugin-content-docs/current/addon/shopitemonly.md +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/addon/shopitemonly.md @@ -2,17 +2,11 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT - -::: - -This addon prevents players from putting non-store items into store containers.\ +This addon prevents players from putting non-store items into store containers. Does not apply to stores that use the item inventory redirection API (aka. InventoryWrapper API). This Addon will check for container (or transferring) items on events such as the player closing the container or hopper access. diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md new file mode 100644 index 0000000000..9c8b4f7407 --- /dev/null +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md @@ -0,0 +1,55 @@ +# 6.2.0.10 + +## Major Changes + +- Added support for 1.21.6 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.7 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.8 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Some internal updates for packetevents(2.9.0 is now required.) +- Updated Lands support + +## Addon Changes + +- Added MatcherPlus Addon + - Allows support for BreweryX and AdvancedItems stacks in shops with improved matching abilities +- Added FabledSkyblock Compat +- Added Dominion Compat +- Added HuskTowns Compat +- Added IridiumSkyblock Compat +- Added member-create for member creation in ARM compat +- Added admin-override and quickshop.arm.admin permission for admin overrides in ARM + +## Minor Changes + +- Added configurations for the coordinates of the display item. +- Added /qs toggledisplayall on/off server/owned + - Players need to have permission node quickshop.toggledisplayall.admin to toggle all on the server. +- Added ability to use abbreviations in /qs price and /qs create commands such as 2.5k for 2500 +- Added ability to set default display status using shop.default-display in config.yml + +## Fixes + +- Fixed issue with display item being sent to the moon on 1.21.5 +- Fixed issue where TRADE_UI interactions interfered with quick create. +- Fixed issue with displays on protocollib falling through the chest +- Fixed issue with signs on .9 and previous .10 snapshots on early versions +- Implemented some performance improvements for paper servers +- Fixed all outstanding issues with Folia usage.(thanks to RootB33R/SleazLee for contributions) + +## Possible 6.2.0.11 Features + +Here's an outline for some features that may arrive in 6.2.0.11: + +- Additional compats/addons that have been piling up. + - see: https://github.com/QuickShop-Community/QuickShop-Hikari/issues/1756 +- gradle?(interested to see compilation time uplifts) +- Update documentation +- Update configuration comments +- Update configuration system? + - auto updating? + - Allows removal of the update code +- Remove waste spigot modules? + - Any versions of 1.20 that can be discarded due to low use? +- Bug fixing, of course +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... \ No newline at end of file diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md new file mode 100644 index 0000000000..b41c88662a --- /dev/null +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md @@ -0,0 +1,173 @@ +## Outline + +- Update documentation +- Update configuration comments +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... + +# 6.2.0.11 + +## Major Changes + +- Removed Spigot Platform Modules, and stopped loading QS if Spigot is detected. This will mean that unless the protocol changes that we use for display items, QS won't need updated for each version. +- Revamped Economy Code Completely + - New classes for all economy-related systems + - Any economy-related or benefits-related events are incompatible with previous versions. +- Added sign layout customizations per-type allowing you to change how lines are configured, an empty string('') will leave an empty line for that line of the sign. + +``` + #The layout of signs for shops. + layout: + + #The layout of BUYING shops. + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of FROZEN shops. + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of SELLING shops. + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +- Add wildcard support for item blacklist patterns(thanks to bennycallanan) + - Added support for wildcard patterns in the item blacklist configuration, allowing users to block entire categories of items with simple patterns. + + - Features + - Wildcard patterns like \*_AXE and \*_SPAWN_EGG now work in blacklist configuration + - Supports \* for any characters and ? for single character matching + - Case-insensitive pattern matching +- Overhauled GUI system(thanks to Yusakidev) + - Implemented gui.yml configuration file for customizing the GUI. + - Implemented better filtering for qs browse + - Implement GUI system to be more stable, and less error prone. + - Added gui.yml for fully configurable GUI layouts and text + - Browse menu: search, sort (price/name/stock), and filter (all/buying/selling/in-stock) + - Staff menu: search functionality for player/staff selection + - Grouped item pages for better shop browsing + - Refactored all menu pages to use configurable display/lore +- Added worldedit compat to QS internally as it's widely used. +- Revamped the taxation system to be more flexible and easier to configure. + - introduced a new progressive tax system that allows you to tax based on the balance of players.(suggested by YuanYuanOwO) + - introduced the ability to tax the player interacting with the shop, the owner, or both + - all tax-related configurations have been moved under the shop-tax section of the config. this may require reconfiguration of your tax settings. + - added a new ShopEnhancedTaxEvent, deprecated the old ShopTaxEvent. + - Added a new TaxManager, and TaxProvider interfaces, this allows for custom tax providers to be added by addons/third-party developers. + +## Addons/Compats Changes + +- Added UltimateClaims compat +- Added SimpleClaimSystem compat +- Added Quests by Pika addon +- Added BetonQuest addon +- Added Pl3xMap addon +- MatcherPlus Compat Improvements + - Added support for CrazyCrates + - Added support for ExcellentCrates + - Added support for SilkSpawners. +- WorldGuard Compat Improvements(Thanks to golovin12) + - Added clear permission handling: + - Region owners and members automatically have permission to create and trade in their own regions. + - Other players must have the appropriate WorldGuard flags enabled (quickshophikari-create, quickshophikari-trade) to interact with shops. + - If a shop is located outside any region, default QuickShop behavior applies (no extra restrictions) +- Added colored markers based on shop state for bluemap(thanks to YusakiDev) +- Updated dynmap/towny addons to use the new ShopTypeEnhancedEvent instead of ShopTypeEvent. +- Removed worldedit compat, it's now included in the main plugin. +- Added support for global flags to the worldguard compat. + +## Internals/Developer APIs + +- Removed several deprecated methods and classes. +- Revamped the interaction manager. It is now more flexible and allows external additions + - This involves two classes InteractionBehavior and InteractionType. + - InteractionType details the type of interaction such as: STANDING_LEFT_CLICK_SIGN, STANDING_LEFT_CLICK_SHOP + - InteractionBehavior outlines a behavior for an InteractionType such as CONTROL_PANEL and TRADE_UI +- Added UserLimitCalculationEvent, which allows for custom limits to be applied to users. + - This is useful for limiting the number of shops a user can have, or adding on to the existing limits provided by the ranks system without needing to implement a new RankLimiter. +- Added a new ShopLayoutProvider interface, and default implementation. + - This allows for custom layouts to be used for shops, allowing for more customization. + - This also allows for developers to override the default layout provider and create their own implementation. +- How to make your own? + - Implement the classes you would like to then register with the InteractionManager: + - ```java + InteractionManager manager = QuickShop.getInstance().getInteractionManager(); + + manager.interaction(new MyTradeInteraction()); + manager.behavior(new MyTradeBehavior()); + ``` +- Replaced some Apache Commons calls that could be easily replaced with built-in java methods, reduces some calls by ~ 1100ms/method call +- Deprecated the ShopType enum, and the ShopTypeEvent. These are replaced with the new IShopType interface and implementing classes. + - The new event is ShopTypeEnhancedEvent. + - This allows for third-party addons to add their own shop types, and simplifies code checks for translations. +- Updated config system to use Boosted-yaml + - this allows for auto-updating of config files without complex update scripts + - this also allows for the config system to not be minecraft-dependent. +- Replaced logical PaperLib calls with native PaperAPI calls. + +## Minor Changes + +- Bump Java version up to 21 +- Added shop.display-allow-enchants to enable/disable enchantments for display items on shops. +- Added workaround for packetevents not supporting custom enchants on itemstacks for virtual display items. +- Using locale translations for shop-type in mode toggle icon(thanks to ExyiN) +- Bumped Residence version for the compat(thanks to YuanYuanOwO) +- add world whitelist support(thanks to wling-art) +- added /qs database save command, which saves all currently dirty-marked shops to the database. +- Split up interactions _SHOPBLOCK into _SHOPBLOCK and _CONTAINER. + - _SHOPBLOCK relates to shops, where _CONTAINER relates to shop-valid containers that are not currently shops. +- Added inventory as an option for command panel, this is useful for adding a secondary option for players to open a shop's inventory. +- Moved crowdin arguments from system properties to config.yml + - crowdin-host + - use-crowdin-ota + +## Fixes + +- Fixes issue with item price restrictions(thanks to maxcom1) +- Fixes issue with 1.20.x protocol lib displays(thanks to YuanYuanOwO) +- Fixes issue when no item is in hand for itemdebug(thanks to YuanYuanOwO) +- Fixes issue with dominion addon(thanks to YuanYuanOwO) +- Add a simple check to avoid this. If it is not own shop, reject limit request directly.(Thanks to YuanYuanOwO) +- Fix NPE by not setting tax for price in TransactionBuilder(thanks to maxcom1) +- Fixes /quickshop suggestprice to differentiate between buy/sell shops. (Thanks to MidSpike) +- PacketEvents ClassNotFoundException with ProtocolLib(thanks to wling-art) +- Reallocate block state access to region thread for shop creation(thanks to r00tbeerman) +- resolve SLF4J StaticLoggerBinder loading error(thanks to wling-art) +- sign hijacking issue by validating sign facing direction(thanks to wling-art) +- Performance improvements for QuickShop disabling to prevent potential freezes. +- Fixed issue with 1.20.4 packetevents virtual displays not staying put. +- Fixes critical issue in GriefPrevention compatibility plugin. +- Fixes issue with shop owner not getting money when benefits active. +- Fixes for lands addon on folia, Use regionThread for Folia compatibility(thanks to YusakiDev) +- Fixes for TRADE_DIRECT on stacking shops +- Fixes issue for protocollib 5.4.0 with undocumented packet changes. +- Fixes issue where item stacks could be used on creation above the max stack size. +- Fixes issue with BukkitAudiences-related crashes on 1.21.11. +- Fix issue with shop deletion when getting too impatient. +- Fix the permission check issue when a shop owned by a non-owner is transferred to someone else. (thanks to YuanYuanOwO) +- Fix ui with supertool (thanks to YuanYuanOwO) +- Fix issue with logs generating outside debug mode. +- Fix issue with /qs find. +- Fix configuration loading timing. +- Fix configuration loading/creation warning message language. +- Fix command description language key mismatch(thanks to wling-art) +- Fix qs clean command on folia(thanks to wling-art) +- Fix per-player-shop-sign on folia(thanks to wling-art) +- Fix potential recursive deadlock in virtual display packet sending(thanks to wling-art) +- Fix configuration loading/creation warning message language. +- Fix issue with /qs browse and ShopItemOnly addon not behaving properly together on folia. +- Fix issue with PLAN using outdated APIs. +- Fix issue with /qs clean on folia.(thanks to wling-art) +- Fix issue with /qs cleanghost on folia(thanks to wling-art) +- More thread safety fixes for shops on folia.(thanks to wling-art) +- Fix owner payment calculations with benefits(thanks to wling-art) \ No newline at end of file diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md index 8172f9b410..dcc3edc67d 100644 --- a/i18n/it-IT/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md @@ -20,20 +20,20 @@ the ControlComponent object with a custom one that will replace the original dur ### Introduction of the Revamped Packet System 1. **About**: - - A modular and scalable system for managing packets related to virtual display items in Minecraft. - - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. + - A modular and scalable system for managing packets related to virtual display items in Minecraft. + - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. 2. **Custom Packet Factories**: - - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. - - Packet types: - - **Spawn Packet**: Spawns a virtual item entity at a specific location. - - **Metadata Packet**: Updates the visual properties of virtual items. - - **Velocity Packet**: Adds motion/velocity to entities (currently optional). - - **Destroy Packet**: Removes the entity from the client view. + - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. + - Packet types: + - **Spawn Packet**: Spawns a virtual item entity at a specific location. + - **Metadata Packet**: Updates the visual properties of virtual items. + - **Velocity Packet**: Adds motion/velocity to entities (currently optional). + - **Destroy Packet**: Removes the entity from the client view. 3. **Error Handling and Logging**: - - Enhanced debug logs to trace packet-related issues. - - Detailed error messages for missing factories or unregistered listeners. + - Enhanced debug logs to trace packet-related issues. + - Detailed error messages for missing factories or unregistered listeners. #### Improvements: diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md index 7775308722..c6e0948d19 100644 --- a/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md index f420997a9c..38587e3784 100644 --- a/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md index 5ed8182c9a..259c55f342 100644 --- a/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md index 924a37ac49..7fd4596a6a 100644 --- a/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,6 +10,6 @@ This is a BungeeCord plugin, you need install it within your BungeeCord's plugin ## How does it work? -BungeeCord Bridge plugins will register a `quickshop:bungee` channel for fowarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. +BungeeCord Bridge plugins will register a `quickshop:bungee` channel for forwarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. All forwarding is indicated by QuickShop-Hikari on the Spigot server and ends when it is not needed. diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md index 27d68956a8..20fbaf7a0c 100644 --- a/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,5 +10,5 @@ This compatibility module added [Chest Protect](https://www.spigotmc.org/resourc ## How does it work? -This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident.\ +This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident. It also prevents players from creating shops on ChestProtect protected containers. diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md index 220e26d8bb..e1757e7be9 100644 --- a/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/dominion.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/dominion.md new file mode 100644 index 0000000000..e1195278a8 --- /dev/null +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/dominion.md @@ -0,0 +1,138 @@ +# Dominion + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and Dominion. + +It ensures that shop creation and trading respect Dominion’s land and territory protection system. + +--- + +## What Does It Do? + +Dominion allows players or groups to claim land and define territory-based permissions. + +Without compatibility: + +- Players could create shops inside territories they do not control. +- Visitors might trade inside protected dominions. +- Dominion permission rules might not apply to shop interactions. + +The Dominion compat module ensures that: + +- Shop creation respects territory ownership. +- Shop trading follows Dominion permission settings. +- Protected land remains secure from unauthorized shop usage. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a Dominion-controlled area. +- Whether the player has permission within that territory. +- Whether Dominion rules allow shop interaction. + +If the action is not permitted by Dominion settings, QuickShop blocks it. + +If the location is outside any Dominion territory, default QuickShop behavior applies. + +--- + +## Territory Owner Control + +With this module enabled: + +- Territory owners can create and manage shops inside their dominion. +- Trusted members follow territory-based permissions. +- Outsiders are restricted unless explicitly allowed. +- Shop actions respect Dominion’s land rules automatically. + +This prevents unauthorized shop placement inside protected territories. + +--- + +## Installation + +1. Install Dominion. +2. Install the QuickShop Dominion compat module. +3. Restart your server. + +The module activates automatically if Dominion is detected. + +No manual configuration linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside dominions +whitelist-mode: false + +# Allow territory owners to override shop permissions +allow-owner-override: true +``` + +If Dominion is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For servers using Dominion: + +- Restrict shop creation to territory owners or trusted members. +- Prevent shop creation in wilderness if desired. +- Allow dominion owners to manage shop permissions. +- Review Dominion permission settings to align with shop behavior. + +This ensures protected territories remain secure and organized. + +--- + +## Common Questions + +### Can players create shops in someone else's dominion? + +Only if Dominion permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You may allow or restrict shops outside dominions. + +### What happens if Dominion is removed? + +QuickShop returns to normal behavior and stops checking Dominion territories. + +--- + +## Summary + +The Dominion compat module: + +- Enforces territory-based permissions +- Prevents unauthorized shop creation +- Protects claimed land from misuse +- Integrates seamlessly with Dominion + +It is recommended for servers running Dominion. \ No newline at end of file diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md index 743d3ae666..2ac9b10488 100644 --- a/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md new file mode 100644 index 0000000000..07ba4ada66 --- /dev/null +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md @@ -0,0 +1,133 @@ +# FabledSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and FabledSkyblock. + +It ensures that shop creation and trading properly respect island boundaries and island permissions. + +--- + +## What Does It Do? + +On Skyblock servers, players build and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Players might trade in areas they should not. +- Island protection rules might not apply to shops. + +The FabledSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members behave correctly with shops. +- Island visitors are restricted appropriately. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a FabledSkyblock island. +- Whether the player has permission on that island. +- Whether island settings allow the action. + +If the action is not permitted by island rules, QuickShop will deny it. + +--- + +## Island Ownership Rules + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow island permission settings. +- Visitors can only trade if island permissions allow it. +- Outside of islands, default QuickShop behavior applies. + +--- + +## Installation + +1. Install FabledSkyblock. +2. Install the QuickShop FabledSkyblock compat module. +3. Restart your server. + +The module activates automatically if FabledSkyblock is detected. + +No manual linking is required. + +--- + +## Configuration + +If the module provides configuration options, they will appear in its `config.yml`. + +Typical options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If FabledSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most Skyblock servers: + +- Allow shop creation only inside islands. +- Prevent trading in the void or wilderness. +- Let island owners control shop permissions. +- Use island rank systems to manage shop access. + +This helps maintain economic balance between islands. + +--- + +## Common Questions + +### Can players create shops in the void? + +Only if your configuration allows it. +Most servers disable shop creation outside islands. + +### Does this affect island war or PvP modes? + +No. +The module only checks island ownership and permissions for shop interactions. + +### What happens if FabledSkyblock is removed? + +QuickShop returns to normal behavior. + +--- + +## Summary + +The FabledSkyblock compat module: + +- Protects island economies +- Enforces island permission rules +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is strongly recommended for any server running FabledSkyblock. \ No newline at end of file diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md index 81b13d2c6b..32614d3019 100644 --- a/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md @@ -2,17 +2,17 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -GreifPrevention compatibility module added compaitibility with GF. +GreifPrevention compatibility module added compatibility with GF. ## How does it work This module allow QuickShop-Hikari check if player have permission to create or use QuickShop in specific region. -And delete shops when claim removed, untrusted, unclimed, expired, resized or subclaim created. +And delete shops when claim removed, untrusted, unclaimed, expired, resized or subclaim created. ## Configuration diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md new file mode 100644 index 0000000000..e71b34d462 --- /dev/null +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md @@ -0,0 +1,139 @@ +# HuskTowns + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and HuskTowns. + +It ensures that shop creation and trading respect town and claim permissions defined by HuskTowns. + +--- + +## What Does It Do? + +HuskTowns allows players to create towns and claim land. + +Without compatibility: + +- Players could create shops inside towns they do not belong to. +- Visitors might trade inside protected towns. +- Town permission rules might not apply to shop interactions. + +The HuskTowns compat module ensures that: + +- Shop creation respects town ownership. +- Trading follows town permission settings. +- Town members and visitors are handled correctly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a HuskTowns claim. +- Whether the player is a town member, trusted player, or outsider. +- Whether the town's permission settings allow the action. + +If the action is not permitted by town rules, QuickShop blocks it. + +Outside of town claims, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Town Owner Control + +With this module enabled: + +- Town owners can create and manage shops inside their town. +- Town members follow town-based permission settings. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect town claim protection. + +This prevents unauthorized shop placement and trading inside protected towns. + +--- + +## Installation + +1. Install HuskTowns. +2. Install the QuickShop HuskTowns compat module. +3. Restart your server. + +The module activates automatically if HuskTowns is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside towns +whitelist-mode: false + +# Allow town owners to override shop permissions +allow-owner-override: true +``` + +If HuskTowns is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For town-based survival servers: + +- Restrict shop creation to town members. +- Allow trading only where town permissions permit. +- Prevent shop creation in wilderness if desired. +- Enable owner override for better administrative control. + +This helps maintain town-based economic balance. + +--- + +## Common Questions + +### Can players create shops in another town? + +Only if that town's permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You can allow or restrict shops outside towns. + +### What happens if HuskTowns is removed? + +QuickShop returns to normal behavior and stops checking town permissions. + +--- + +## Summary + +The HuskTowns compat module: + +- Enforces town-based land permissions +- Protects towns from unauthorized shop usage +- Integrates smoothly with HuskTowns +- Requires minimal setup + +It is recommended for any server running HuskTowns. \ No newline at end of file diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md new file mode 100644 index 0000000000..3fa2995eb0 --- /dev/null +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md @@ -0,0 +1,139 @@ +# IridiumSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and IridiumSkyblock. + +It ensures that shop creation and trading respect island boundaries and island permission settings defined by IridiumSkyblock. + +--- + +## What Does It Do? + +IridiumSkyblock allows players to create and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Visitors might trade inside protected islands. +- Island protection rules might not apply correctly to shops. + +The IridiumSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members and visitors are handled properly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside an IridiumSkyblock island. +- Whether the player is the island owner, member, or visitor. +- Whether island permissions allow shop interaction. + +If the action is not permitted, QuickShop blocks it. + +Outside of islands, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Island Owner Permissions + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow the island's permission configuration. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect island protection rules. + +This prevents unauthorized shop usage inside protected islands. + +--- + +## Installation + +1. Install IridiumSkyblock. +2. Install the QuickShop IridiumSkyblock compat module. +3. Restart your server. + +The module activates automatically if IridiumSkyblock is detected. + +No additional setup is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If IridiumSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most IridiumSkyblock servers: + +- Restrict shop creation to island owners. +- Allow island members to trade if trusted. +- Prevent shop creation in the void or wilderness. +- Enable owner override for better management. + +This helps maintain balanced island economies. + +--- + +## Common Questions + +### Can players create shops outside their island? + +Only if your configuration allows it. + +Most Skyblock servers restrict shops to island areas. + +### Do island ranks affect shop permissions? + +Yes, if your island permissions are configured to control interaction rights. + +QuickShop follows island rules. + +### What happens if IridiumSkyblock is removed? + +QuickShop returns to normal behavior and stops checking island permissions. + +--- + +## Summary + +The IridiumSkyblock compat module: + +- Protects island economies +- Enforces island-based permissions +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is recommended for any server running IridiumSkyblock. diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md new file mode 100644 index 0000000000..3b4726cb9d --- /dev/null +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md @@ -0,0 +1,151 @@ +# ItemMatcherPlus + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +The ItemMatcherPlus module improves how QuickShop matches custom and plugin-modified items. + +It allows QuickShop to properly recognize and stack items created by other plugins that normally would not match using standard Bukkit item comparisons. + +This module is especially useful for servers that use: + +- Custom items +- Modified metadata +- NBT-based systems +- Advanced crate rewards +- Custom brewing systems +- Custom fishing rewards + +--- + +## What Does It Do? + +By default, Minecraft item matching checks: + +- Material type +- Basic metadata + +However, many plugins modify items with: + +- Custom NBT data +- Hidden tags +- Custom lore formats +- Unique identifiers + +Without enhanced matching: + +- Items may not stack +- Shops may refuse valid items +- Transactions may fail +- Buying/selling may not behave correctly + +ItemMatcherPlus improves compatibility and matching accuracy. + +--- + +## Supported Plugins + +ItemMatcherPlus includes built-in support for: + +- AdvancedItems +- BreweryX +- CrazyCrates +- ExcellentCrates +- PyroFishing +- SilkSpawners + +If any of these plugins are installed, QuickShop will automatically use enhanced matching logic. + +No additional configuration is required. + +--- + +## How It Works + +When a player trades with a shop: + +1. QuickShop checks the item. +2. If ItemMatcherPlus is enabled, it performs advanced matching. +3. Plugin-specific metadata is validated. +4. The item is confirmed as a match (or rejected safely). + +This allows: + +- Proper stacking of custom items +- Correct shop transactions +- Accurate buy/sell detection +- Reduced false mismatches + +--- + +## Installation + +1. Download the ItemMatcherPlus module. +2. Place the JAR into your `plugins` folder. +3. Restart your server. + +If supported plugins are detected, compatibility activates automatically. + +--- + +## Configuration + +ItemMatcherPlus does not require configuration. + +It activates automatically when: + +- The module is installed +- A supported plugin is detected + +If a supported plugin is not installed, no extra logic runs. + +--- + +## Why You Should Use It + +You should install ItemMatcherPlus if your server uses: + +- Custom fishing plugins +- Custom brewing systems +- Crate plugins with modified items +- Custom spawners +- Any plugin that modifies NBT data + +Without it, shops may not properly recognize custom items. + +--- + +## Common Questions + +### Do I need this if I don't use custom item plugins? + +No. +If you only use vanilla items, this module is not necessary. + +### Does this affect performance? + +The module only activates enhanced matching when needed. + +Normal item matching remains fast and efficient. + +### Will it break existing shops? + +No. +It improves compatibility and matching accuracy without modifying existing shop data. + +--- + +## Summary + +ItemMatcherPlus: + +- Improves item matching accuracy +- Adds support for major custom item plugins +- Prevents stacking and trade issues +- Requires no configuration +- Activates automatically + +If you run a heavily customized economy server, this module is highly recommended. \ No newline at end of file diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md index ba87606698..d4ae7d129a 100644 --- a/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/lands.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/lands.md index 06296f5779..7671fcdfe0 100644 --- a/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/lands.md +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/lands.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/openinv.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/openinv.md index c51f628615..4807d57873 100644 --- a/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/openinv.md +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/openinv.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md new file mode 100644 index 0000000000..c2136320b0 --- /dev/null +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md @@ -0,0 +1,138 @@ +# SimpleClaimSystem + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and SimpleClaimSystem. + +It ensures that shop creation and trading respect land ownership and claim permissions defined by SimpleClaimSystem. + +--- + +## What Does It Do? + +SimpleClaimSystem allows players to claim land and protect it from unauthorized interaction. + +Without compatibility: + +- Players could create shops inside claims they do not own. +- Visitors might trade inside protected areas. +- Claim protection might not apply correctly to shops. + +The SimpleClaimSystem compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops within their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a SimpleClaimSystem claim. +- Whether the player has permission within that claim. +- Whether claim rules allow shop interaction. + +If the action is not permitted by the claim, QuickShop blocks it. + +If the location is outside any claim, default QuickShop behavior applies. + +--- + +## Claim Owner Control + +With this module enabled: + +- Claim owners can create and manage shops inside their claim. +- Trusted players follow claim-based permissions. +- Visitors are restricted unless explicitly allowed. +- Claim protection rules apply automatically to shop interactions. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install SimpleClaimSystem. +2. Install the QuickShop SimpleClaimSystem compat module. +3. Restart your server. + +The module activates automatically if SimpleClaimSystem is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If SimpleClaimSystem is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Enable owner override for easier management. + +This ensures players maintain control over their protected land. + +--- + +## Common Questions + +### Can players create shops in someone else's claim? + +Only if claim permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can allow shops outside claims or restrict them. + +### What happens if SimpleClaimSystem is removed? + +QuickShop will revert to default behavior and stop checking claim permissions. + +--- + +## Summary + +The SimpleClaimSystem compat module: + +- Enforces claim-based permissions +- Prevents unauthorized shop creation +- Protects land from unwanted trading +- Requires minimal setup + +It is recommended for servers running SimpleClaimSystem. \ No newline at end of file diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md index a84dbf057b..4dfa8ae97c 100644 --- a/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/towny.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/towny.md index 52ab4818f4..b26c19d335 100644 --- a/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/towny.md +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/towny.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -26,7 +26,7 @@ Town sub-command allow you switch a quickshop between regular shop and town shop For a nation shop, the shop owner will changed to nation fake player created by Towny, and use Nation's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from nation Towny account.\ +All purchases will deposit or withdraw money from nation Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Nation Shop. @@ -35,7 +35,7 @@ If Plot type restriction is enabled, only a specific Plot type can create a Nati For a town shop, the shop owner will changed to town fake player created by Towny, and use Town's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from town Towny account.\ +All purchases will deposit or withdraw money from town Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Town Shop. @@ -88,7 +88,7 @@ bank-mode: ## Permission Override -By adjust configuration, you're allow mayor or king automaticlly grant administrator permission on all shops in their management range. +By adjust configuration, you're allow mayor or king automatically grant administrator permission on all shops in their management range. ```yaml #Should allow Mayor grant the shop administrator permission on they town. @@ -168,7 +168,7 @@ This causes Towny and QuickShop Hikari to use accounts with the same name but di You can adjust the option in configuration to enable workaround. -NOTE: It will force turned on if detected EssentialsX installed on your server.\ +NOTE: It will force turned on if detected EssentialsX installed on your server. At present, we do not provide a method for disable it. ```yaml diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md new file mode 100644 index 0000000000..0189958495 --- /dev/null +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md @@ -0,0 +1,138 @@ +# UltimateClaims + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and UltimateClaims. + +It ensures that shop creation and trading respect land claim permissions managed by UltimateClaims. + +--- + +## What Does It Do? + +On servers using land-claim plugins, players protect areas of the world from unauthorized interaction. + +Without compatibility: + +- Players may create shops inside claims they do not own. +- Visitors might trade in areas where they should not. +- Claim protection rules might not apply correctly to shops. + +The UltimateClaims compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops inside their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a claim. +- Whether the player has permission in that claim. +- Whether claim rules allow shop interaction. + +If the action violates claim settings, QuickShop blocks it. + +Outside of claims, normal QuickShop behavior applies. + +--- + +## Claim Owner Permissions + +With this module enabled: + +- Claim owners can create and manage shops within their claim. +- Trusted players follow claim permission settings. +- Visitors are restricted based on claim configuration. +- Shop actions outside of claims behave normally. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install UltimateClaims. +2. Install the QuickShop UltimateClaims compat module. +3. Restart your server. + +If UltimateClaims is detected on startup, compatibility activates automatically. + +No additional linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Common options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If UltimateClaims is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Keep owner override enabled for better control. + +This ensures players maintain full control over their protected land. + +--- + +## Common Questions + +### Can players create shops inside someone else's claim? + +Only if the claim permissions allow it. + +Otherwise, QuickShop will block the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can choose to restrict shops to claimed land only. + +### What happens if UltimateClaims is removed? + +QuickShop returns to normal behavior without claim checks. + +--- + +## Summary + +The UltimateClaims compat module: + +- Protects claimed land from unauthorized shop usage +- Enforces claim-based permissions +- Integrates smoothly with land-claim servers +- Requires minimal setup + +It is recommended for any server running UltimateClaims. \ No newline at end of file diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md index 87a71a205c..6437754503 100644 --- a/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md @@ -2,8 +2,10 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. Find out more [here](../modules/shops/worldedit.md). + +Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. \ No newline at end of file diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/development/01-getting-start.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/development/01-getting-start.md index 92b773451e..0e78e52367 100644 --- a/i18n/it-IT/docusaurus-plugin-content-docs/current/development/01-getting-start.md +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/development/01-getting-start.md @@ -6,8 +6,8 @@ This series of articles will help you build extensions for QuickShop-Hikari or i ## License -QuickShop-Hikari is open source using the [GPLv3](https://www.gnu.org/licenses/quick-guide-gplv3.en.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari).\ -You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the GPLv3 agreement. +QuickShop-Hikari is open source using the [AGPLv3](https://www.gnu.org/licenses/agpl-3.0.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari). +You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the AGPLv3 agreement. ## 🚧Don't trust Javadoc too much @@ -48,7 +48,7 @@ QuickShop-Hikari divides operation sources into three types: - Server Main Thread - Async Thread (any other threads but not server main thread) -- Hybird +- Hybrid If you access the API through the wrong thread, QuickShop-Hikari will force a runtime error to be thrown. @@ -58,4 +58,4 @@ For APIs that may trigger network IO or long-time disk IO, you are required not You can see [Util.ensureThread()](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/3d1d271e1106ea1c83cc6068f8232ab7c7860918/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/util/Util.java#L351) and find out the requirements of the different APIs by looking up their use. APIs that do not use Util.ensureThread() are allowed to be called from any thread by default. -You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. +You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. \ No newline at end of file diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md index aa2404c594..7828d414ad 100644 --- a/i18n/it-IT/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md @@ -10,7 +10,7 @@ ShopManager manager = api.getShopManager(); ## Getting a shop -Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates.\ +Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates. QuickShop-Hikari's store is only bound to one half of "Large Chest", so to get the store, you need to query both the cube itself and its associated cube. The good thing is that there is an API in the plugin that allows you to handle this situation very easily. @@ -71,7 +71,7 @@ manager.deleteShop(shop) // Permanently delete this store, both memory and datab ## Identify a store -Please note that store locations are technically variable and you should not use coordinates to identify a store.\ +Please note that store locations are technically variable and you should not use coordinates to identify a store. Also RuntimeRandomUniqueId should not be used to identify the store, as the name suggests, the value changes every time the server restarts, it should only be used to handle scenarios where the player interacts with the server. ```java diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md index 543f1851da..4f839ed652 100644 --- a/i18n/it-IT/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md @@ -1,6 +1,6 @@ # 0x05 Per shop permission -QuickShop-Hikari has a per shop permission management system.\ +QuickShop-Hikari has a per shop permission management system. Therefore, for a normal permission node check is not enough, you need to attach an additional check. ## Check with shop diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/development/06-protocol-system.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/development/06-protocol-system.md index 5d37a15536..0380b789f9 100644 --- a/i18n/it-IT/docusaurus-plugin-content-docs/current/development/06-protocol-system.md +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/development/06-protocol-system.md @@ -15,30 +15,30 @@ This documentation will guide developers through the components, implementation - **Purpose**: Manages packet handling and initialization logic. - **Interface**: `PacketHandler` - **Key Methods**: - - `Map> factories()` - - Retrieves a map of supported `PacketFactory` instances keyed by game versions. - - `void initialize()` - - Initializes the packet handler. - - `Optional> factory(String version)` - - Retrieves a `PacketFactory` for a specific game version. + - `Map> factories()` + - Retrieves a map of supported `PacketFactory` instances keyed by game versions. + - `void initialize()` + - Initializes the packet handler. + - `Optional> factory(String version)` + - Retrieves a `PacketFactory` for a specific game version. ### 2. **PacketFactory** - **Purpose**: Creates and sends specific packet types. - **Interface**: `PacketFactory` - **Supported Packets**: - - **Spawn Packet**: - - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. - - Example Use: Representing shop items visually. - - **Metadata Packet**: - - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. - - Example Use: Updating item display name or properties. - - **Velocity Packet**: - - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. - - Example Use: Custom animations for virtual items. - - **Destroy Packet**: - - Removes the entity from the client view. Created using `createDestroyPacket()`. - - Example Use: Unloading or removing a virtual display item. + - **Spawn Packet**: + - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. + - Example Use: Representing shop items visually. + - **Metadata Packet**: + - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. + - Example Use: Updating item display name or properties. + - **Velocity Packet**: + - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. + - Example Use: Custom animations for virtual items. + - **Destroy Packet**: + - Removes the entity from the client view. Created using `createDestroyPacket()`. + - Example Use: Unloading or removing a virtual display item. Developers implementing custom `PacketFactory` should ensure these packets are correctly handled and optimized for performance. @@ -46,24 +46,24 @@ Developers implementing custom `PacketFactory` should ensure these packets are c - **Purpose**: Oversees the lifecycle of virtual display items and integrates with packet handlers. - **Key Features**: - - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). - - Manages virtual display items mapped to chunks. - - Provides thread-safe operations for adding and removing display items. + - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). + - Manages virtual display items mapped to chunks. + - Provides thread-safe operations for adding and removing display items. ### 4. **VirtualDisplayItem** - **Purpose**: Represents a virtual item displayed to players. - **Key Features**: - - Generates and caches packets for spawning, metadata, velocity, and destruction. - - Manages packet senders for each player. - - Handles spawn and removal operations dynamically. + - Generates and caches packets for spawning, metadata, velocity, and destruction. + - Manages packet senders for each player. + - Handles spawn and removal operations dynamically. ### 5. **ProtocolLibHandler and PacketEventsHandler** - **Purpose**: Provide implementations of `PacketHandler` using ProtocolLib and PacketEvents, respectively. - **Differences**: - - `ProtocolLibHandler` leverages ProtocolLib API. - - `PacketEventsHandler` uses the PacketEvents library. + - `ProtocolLibHandler` leverages ProtocolLib API. + - `PacketEventsHandler` uses the PacketEvents library. --- @@ -140,11 +140,11 @@ public class CustomPacketFactory implements PacketFactory { Packet factories are provided for specific game versions through two primary implementations: - **ProtocolLib**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` - **PacketEvents**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` --- diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md new file mode 100644 index 0000000000..aebc035f87 --- /dev/null +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md @@ -0,0 +1,297 @@ +# Interaction System (Developer Guide) + +The Interaction System allows developers to fully customize how players interact with shops. + +As of 6.2.0.11, the system has been redesigned to be: + +- Modular +- Extensible +- Thread-safe +- Fully customizable by third-party addons + +This guide will walk you through: + +1. What the Interaction System is +2. Getting the `InteractionManager` +3. Understanding `InteractionType` +4. Understanding `InteractionBehavior` +5. Registering custom interactions +6. Best practices + +--- + +# Overview + +The Interaction System is composed of three main components: + +| Component | Purpose | +| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| `InteractionType` | Describes **what kind of click happened** (standing, sneaking, left-click, sign, shopblock, etc.) | +| `InteractionBehavior` | Describes **what action should happen** when that type is triggered | +| `InteractionManager` | Central registry that manages interactions and behaviors | + +This separation allows developers to: + +- Add new click types +- Add new behaviors +- Override existing ones +- Extend QuickShop without modifying core code + +--- + +# Getting the InteractionManager + +To begin registering custom interactions, you must retrieve the `InteractionManager` instance. + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +If you are working directly with the plugin instance: + +```java +InteractionManager manager = QuickShop.getInstance().getInteractionManager(); +``` + +Once obtained, you can: + +- Register new interaction types +- Register new behaviors +- Override existing behaviors + +--- + +# Understanding InteractionType + +`InteractionType` represents **how** a player interacted with a shop. + +Examples include: + +- `STANDING_LEFT_CLICK_SIGN` +- `STANDING_RIGHT_CLICK_SHOPBLOCK` +- `SNEAKING_LEFT_CLICK_CONTAINER` +- etc. + +Each `InteractionType` defines: + +- Player stance (standing/sneaking) +- Click type (left/right) +- Target (sign/shopblock/container) + +InteractionTypes do NOT define behavior — they only define the trigger. + +--- + +# Understanding InteractionBehavior + +`InteractionBehavior` defines **what happens** when an interaction is triggered. + +Examples of built-in behaviors: + +- `TRADE_INTERACTION` +- `TRADE_UI` +- `CONTROL_PANEL` +- `CONTROL_PANEL_UI` +- `NONE` + +A behavior: + +- Executes logic +- May open GUIs +- May send chat panels +- May directly trade items +- Can cancel or modify flow + +This separation makes it easy to reuse behaviors across multiple interaction types. + +--- + +# Registering Custom Interactions + +There are two things you can register: + +- A custom `InteractionType` +- A custom `InteractionBehavior` + +--- + +## Creating a Custom InteractionBehavior + +Create a class implementing `InteractionBehavior`. + +Example: + +```java +public class MyTradeBehavior implements InteractionBehavior { + + @Override + public String getKey() { + return "MY_CUSTOM_TRADE"; + } + + @Override + public void execute(InteractionClick click) { + Player player = click.getPlayer(); + Shop shop = click.getShop(); + + player.sendMessage("You triggered my custom interaction!"); + + // Add your custom logic here + } +} +``` + +Then register it: + +```java +InteractionManager manager = api.getInteractionManager(); +manager.behavior(new MyTradeBehavior()); +``` + +Now your behavior is available for use. + +--- + +## Creating a Custom InteractionType + +You may also register custom interaction types if you want to introduce new trigger definitions. + +Example: + +```java +public class MyCustomInteraction implements InteractionType { + + @Override + public String getKey() { + return "STANDING_DOUBLE_CLICK_SIGN"; + } + + @Override + public boolean matches(InteractionClick click) { + // Define custom logic to detect this interaction + return click.isStanding() + && click.isSign() + && click.isDoubleClick(); + } +} +``` + +Register it: + +```java +manager.interaction(new MyCustomInteraction()); +``` + +--- + +# Binding Types to Behaviors + +The InteractionManager internally maps interaction types to behaviors based on configuration and registration order. + +Once your behavior is registered: + +- It can be referenced in `interaction.yml` +- Or attached programmatically + +Example interaction.yml usage: + +```yaml +STANDING_LEFT_CLICK_SIGN: MY_CUSTOM_TRADE +``` + +--- + +# The InteractionClick Object + +When your behavior executes, you receive an `InteractionClick` object. + +It provides: + +- `getPlayer()` +- `getShop()` +- `getLocation()` +- `isSneaking()` +- `isSign()` +- `isShopBlock()` +- etc. + +This gives full context for safe execution. + +--- + +# Advanced: Overriding Built-in Behavior + +If you register a behavior using the same key as an existing one, your behavior can override the default. + +⚠️ Be careful when doing this — you are replacing core functionality. + +--- + +# Best Practices + +### Always Use Unique Keys + +Avoid naming collisions: + +``` +MYPLUGIN_CUSTOM_BEHAVIOR +``` + +### Keep Behavior Lightweight + +Do not block the main thread with: + +- Heavy database calls +- File IO +- Network calls + +Use async tasks if needed. + +### Respect Permissions + +Always validate: + +```java +if (!player.hasPermission("myplugin.use")) { + return; +} +``` + +### Avoid Hard Overrides Unless Necessary + +Instead of replacing built-in behaviors, consider extending them. + +--- + +# Example: Full Minimal Implementation + +```java +public class ExampleAddon { + + public void register(QuickShopAPI api) { + + InteractionManager manager = api.getInteractionManager(); + + manager.behavior(new MyTradeBehavior()); + manager.interaction(new MyCustomInteraction()); + } +} +``` + +--- + +# Conclusion + +The Interaction System is designed to allow: + +- Full extensibility +- Clean separation of triggers and actions +- Easy integration for third-party developers + +By retrieving the `InteractionManager`: + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +You gain full control over how shops respond to player actions. \ No newline at end of file diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/development/08-tax-manager.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/development/08-tax-manager.md new file mode 100644 index 0000000000..72a56f9e88 --- /dev/null +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/development/08-tax-manager.md @@ -0,0 +1,266 @@ +# Tax System (Developer Guide) + +The QuickShop tax system allows server owners and developers to define how transaction taxes are calculated, distributed, and extended. + +As of 6.2.0.11, the tax system has been fully rewritten to provide: + +- A flexible TaxManager +- Pluggable TaxProvider support +- Progressive taxation +- Tax targeting (shop owner, interacting player, or both) +- Custom extension capability for third-party addons + +This guide explains how to work with the tax system programmatically. + +--- + +# Overview + +The tax system is composed of three core components: + +TaxManager +Responsible for coordinating tax calculation and execution. + +TaxProvider +Defines how tax values are calculated. + +TaxRates +Represents calculated tax results for a transaction. + +The system is designed to allow custom providers to be registered and used without modifying core logic. + +--- + +# Getting the TaxManager + +To work with the tax system, retrieve the TaxManager from the ShopManager. + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +Once obtained, you can: + +- Access current tax configuration +- Register custom tax providers +- Calculate tax values +- Hook into tax events + +--- + +# How the Tax System Works + +During a shop transaction: + +1. A base price is determined. +2. The TaxManager selects the active TaxProvider. +3. The TaxProvider calculates applicable tax. +4. A TaxRates object is produced. +5. The system applies the tax to: + + - Shop owner + - Interacting player + - Or both (depending on configuration) + +This architecture allows tax behavior to be modified without altering transaction logic. + +--- + +# TaxProvider + +A TaxProvider defines how tax values are calculated. + +You may create your own provider to implement: + +- Progressive tax brackets +- Flat percentage tax +- Conditional tax rules +- Region-based tax +- Rank-based tax +- Time-based tax + +Example minimal provider: + +```java +public class MyCustomTaxProvider implements TaxProvider { + + @Override + public TaxRates calculateTax(TaxContext context) { + + double basePrice = context.getPrice(); + + double taxAmount = basePrice * 0.05; // 5% flat tax + + return new TaxRates() + .ownerTax(taxAmount) + .buyerTax(0.0); + } +} +``` + +Then register it: + +```java +taxManager.provider(new MyCustomTaxProvider()); +``` + +Once registered, your provider will be used for tax calculations. + +--- + +# TaxRates + +TaxRates represents the result of a tax calculation. + +It typically contains: + +- Owner tax amount +- Buyer tax amount +- Total tax impact +- Metadata (if applicable) + +The transaction system will read from TaxRates and apply deductions accordingly. + +--- + +# Progressive Taxation + +The built-in system supports progressive tax structures. + +This allows server administrators to tax based on: + +- Player balance +- Shop owner balance +- Configured tax brackets + +Example configuration concept: + +- 0–10,000 balance → 1% tax +- 10,000–100,000 → 2% tax +- 100,000+ → 3% tax + +Developers can extend or override this logic inside a custom TaxProvider. + +--- + +# Targeting Tax + +The new tax system allows taxes to be applied to: + +- Shop owner +- Interacting player +- Both + +This is controlled via configuration, but custom providers can override distribution logic by adjusting TaxRates output. + +Example: + +```java +return new TaxRates() + .ownerTax(basePrice * 0.02) + .buyerTax(basePrice * 0.01); +``` + +--- + +# Registering a Custom TaxProvider + +To replace or extend tax logic: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); + +taxManager.provider(new MyCustomTaxProvider()); +``` + +You may register only one primary provider at a time. If multiple providers are needed, implement internal delegation within your custom provider. + +--- + +# Tax Events + +The tax system integrates with the event system. + +The modern event used is: + +ShopEnhancedTaxEvent + +This replaces legacy tax events and provides improved context, including: + +- Transaction builder reference +- TaxRates object +- Modification capability before final execution + +You can listen for the event and modify tax behavior dynamically: + +```java +@EventHandler +public void onTax(ShopEnhancedTaxEvent event) { + + TaxRates rates = event.getTaxRates(); + + // Example: Give VIP players reduced owner tax + if (event.getOwner().hasPermission("vip.tax.discount")) { + rates.ownerTax(rates.getOwnerTax() * 0.5); + } +} +``` + +--- + +# Best Practices + +Always keep tax calculations lightweight. + +Avoid: + +- Heavy database queries inside calculateTax +- Blocking network calls +- Long-running computations + +If complex logic is required, pre-cache required data outside the tax execution path. + +Ensure negative tax values are not returned unless intentional. + +Always validate final amounts before applying modifications. + +Respect configuration hierarchy unless intentionally overriding it. + +--- + +# Example Full Implementation + +```java +public class ExampleTaxAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + TaxManager taxManager = manager.taxManager(); + + taxManager.provider(new MyCustomTaxProvider()); + } +} +``` + +--- + +# Conclusion + +The new tax system is designed for: + +- Flexibility +- Extensibility +- Clean separation of concerns +- Future expansion + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +You gain full control over how QuickShop calculates and applies tax during transactions. \ No newline at end of file diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/development/09-layout-provider.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/development/09-layout-provider.md new file mode 100644 index 0000000000..55e3cd3e91 --- /dev/null +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/development/09-layout-provider.md @@ -0,0 +1,275 @@ +# Shop Layout Provider (Developer Guide) + +The Shop Layout Provider system allows developers to customize how shop signs are structured and rendered. + +As of 6.2.0.11, shop layouts are no longer hardcoded. Instead, they are controlled through the `IShopLayoutProvider` interface, which allows: + +- Custom sign line ordering +- Per-shop-type layouts (BUYING, SELLING, FROZEN, or custom types) +- Dynamic layout resolution +- Complete replacement of the default layout system + +This guide explains how to access, override, and implement a custom layout provider. + +--- + +# Overview + +The layout provider controls how shop sign lines are arranged. + +Instead of hardcoding: + +Line 1 → Header +Line 2 → Trading info +Line 3 → Item +Line 4 → Price + +The system now allows full customization through: + +- Config-based layout definitions +- Custom `IShopLayoutProvider` implementations +- Runtime overrides + +The default implementation is `SimpleShopLayoutProvider`. + +--- + +# Accessing the Layout Provider + +To retrieve the current layout provider: + +```java +ShopManager manager = api.getShopManager(); +IShopLayoutProvider provider = manager.shopLayoutProvider(); +``` + +To replace the layout provider with a custom one: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Once replaced, your implementation will control how shop layouts are generated. + +--- + +# Understanding IShopLayoutProvider + +`IShopLayoutProvider` defines how layout data is retrieved and resolved. + +It is responsible for: + +- Providing layout configuration per shop type +- Determining which layout to use +- Supplying formatted line keys +- Allowing future extensibility + +The default implementation reads layout definitions from configuration and applies them based on shop type. + +--- + +# Default Layout Example + +The default configuration-based layout looks like this: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +Each line maps to a layout component key. + +An empty string (`""`) leaves that line blank. + +The layout provider resolves these keys into actual sign content. + +--- + +# Creating a Custom Layout Provider + +To override the default behavior, implement `IShopLayoutProvider`. + +Example minimal implementation: + +```java +public class MyCustomLayoutProvider implements IShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + + ShopLayout layout = new ShopLayout(); + + layout.setLine(1, "Custom Header"); + layout.setLine(2, "Owner: " + shop.getOwnerName()); + layout.setLine(3, shop.getItem().getType().name()); + layout.setLine(4, "$" + shop.getPrice()); + + return layout; + } +} +``` + +Then register it: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Your layout will now control all shop sign formatting. + +--- + +# Per-Type Layout Control + +Because the system no longer depends on the legacy ShopType enum, layouts can support: + +- Built-in types (BUYING, SELLING, FROZEN) +- Custom shop types +- Addon-defined shop types + +Your provider can determine layout logic dynamically: + +```java +@Override +public ShopLayout provideLayout(Shop shop) { + + if (shop.getShopType().key().equals("FROZEN")) { + return frozenLayout(shop); + } + + return defaultLayout(shop); +} +``` + +This allows conditional formatting, localization adjustments, or special event styling. + +--- + +# Advanced Customization + +A custom layout provider can: + +- Pull data from external plugins +- Inject dynamic placeholders +- Modify layout per player +- Apply formatting logic +- Override color schemes +- Apply region-based formatting +- Implement animated sign systems + +Because the layout provider is resolved at runtime, you can compute layouts dynamically instead of reading static config. + +--- + +# Replacing vs Extending the Default Provider + +You have two options: + +Replace entirely: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Or extend the default implementation: + +```java +public class ExtendedLayoutProvider extends SimpleShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + ShopLayout base = super.provideLayout(shop); + + base.setLine(1, "[Extended] " + base.getLine(1)); + + return base; + } +} +``` + +Extending is safer if you only want to modify small portions. + +--- + +# Best Practices + +Keep layout generation lightweight. + +Avoid: + +- Heavy database queries +- Blocking IO +- Complex network calls + +Layout generation runs during shop updates and sign refresh events. + +Always handle null values safely. + +Ensure layout line count does not exceed sign limits. + +Avoid hardcoding shop type names unless necessary. + +If your layout supports custom shop types, validate their keys properly. + +--- + +# Example Full Registration + +```java +public class LayoutAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + + manager.shopLayoutProvider(new MyCustomLayoutProvider()); + } +} +``` + +--- + +# Conclusion + +The Shop Layout Provider system allows complete control over shop sign structure. + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +``` + +And setting: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +You can redefine how every shop is displayed on the server. + +This system was designed to support: + +- Extensibility +- Custom shop types +- Localization +- Dynamic formatting +- Future expansion \ No newline at end of file diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/faq/compare-reremake.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/faq/compare-reremake.md index aaa1a9e507..6b39f02520 100644 --- a/i18n/it-IT/docusaurus-plugin-content-docs/current/faq/compare-reremake.md +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/faq/compare-reremake.md @@ -64,7 +64,7 @@ If you are a Reremake user, you may be confused about the differences between Hi ## Which one should I use? Well, it depends on what your needs are.\ -If you have an old server (<1.20) instance, Reremake is your only choice.\ +If you have an old server ({'<'}1.20) instance, Reremake is your only choice.\ ~~If you are in China which has GFW interfere, you also should consider Reremake because it doesn't need to load libraries from Global Internet.~~ Solved in 6.0.0.0. If none of these applies, give Hikari a try! diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md index 551f579e7c..172be3a69b 100644 --- a/i18n/it-IT/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md @@ -1,8 +1,8 @@ # Where Addons/Compacts is -Addons and Compatilibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. +Addons and Compatibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. -- Open Modrinth versions page, locate the version your're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) +- Open Modrinth versions page, locate the version you're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) - Frantically slide your mouse wheel down until the lowest end of the page. - You get it! diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/internal/database-schema.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/internal/database-schema.md index fea685e4fc..45e04adb56 100644 --- a/i18n/it-IT/docusaurus-plugin-content-docs/current/internal/database-schema.md +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/internal/database-schema.md @@ -4,17 +4,17 @@ This chapter will explain the implementation details of QuickShop Hikari's datab ## Tables -This section explains the database tables created by QuickShop-Hikari.\ -Unless otherwise specified, the initial `qs_` in table name is the table prefix.\ +This section explains the database tables created by QuickShop-Hikari. +Unless otherwise specified, the initial `qs_` in table name is the table prefix. For the latest code definition for each table, see: [DataTables.java](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/hikari/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/database/DataTables.java) ### `data` -This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information.\ -No matter what, a data record should not be modified after it is created, until it got deleted.\ +This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information. +No matter what, a data record should not be modified after it is created, until it got deleted. Any new changes to the shop should create a new copy, apply the changes to the copy, and insert it as a new record. -Basiclly, Copy-on-write. +Basically, Copy-on-write. A data record only be deleted from the database when no any table references their `data_id`. @@ -29,7 +29,7 @@ A data record only be deleted from the database when no any table references the | unlimited | BIT NOT NULL | 0 | Indicates whether this store is an unlimited store, 0=Limited, 1=Unlimited | | hologram | BIT NOT NULL | 0 | Indicates the suspension status of this store's display item, 0=Follow global settings, 1=Disabled | | tax_account | VARCHAR(36) | NULL | The uuid for tax account, If it is not NULL, tax will be paid to the specified account | -| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serilized to JSON string | +| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serialized to JSON string | | extra | LONGTEXT | Empty Yaml | Used to store experimental settings of QuickShop Hikari or persistent data of other plugins | | inv_wrapper | VARCHAR(255) NOT NULL | N/A | Unique identifier for InventoryWrapper for this shop data entry | | inv_symbol_link | TEXT NOT NULL | N/A | Unique Inventory symbol used to pass to InventoryWrapper, for locating inventory | @@ -38,7 +38,7 @@ A data record only be deleted from the database when no any table references the ### `shops` -This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes.\ +This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes. Multiple `shop_id` can correspond to the same `data_id`. | Column Name | DataType | Default | Description | diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/cmd-alias.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/cmd-alias.md index 53f1577685..e6ed381c0d 100644 --- a/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/cmd-alias.md +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/cmd-alias.md @@ -23,7 +23,7 @@ custom-commands: - cshop ``` -Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect.\ +Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect. The effect should be like this: ![command-alias](./img/command-alias.png) diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/datasource.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/datasource.md index 6fc1bd8931..3fd3a8bdee 100644 --- a/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/datasource.md +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/datasource.md @@ -48,7 +48,7 @@ Execute the `/quickshop export` command in console, quickshop will export a zip ![exported data](img/database-export.png) -Stop your database, switch the datasource, and start the server.\ +Stop your database, switch the datasource, and start the server. You may noticed all shops are gone, because new datasources had no data inside, we will restore them from export. Rename that exported ZIP file to `recovery.zip`, execute `/quickshop recovery` and restart your server, all shops should back. diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/itemmatcher.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/itemmatcher.md index 56be243019..922907be27 100644 --- a/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/itemmatcher.md +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/itemmatcher.md @@ -4,7 +4,7 @@ ItemMatcher is a utility used by QuickShop-Hikari to compare the items, it is th :::caution -If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse.\ +If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse. **TL;DR: Keep default unless you know what you're doing.** ::: @@ -26,10 +26,10 @@ matcher: work-type: 1 ``` -By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility.\ +By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility. But still, you can toggle to QuickShop Item Matcher if you need to customize the comparing or running QuickShop on the server jar which have bug affect the Bukkit comparing system. -## Customize the metadata compareing +## Customize the metadata comparing Customize only works under QuickShop Item Matcher. diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md index fc2af69d2b..d04e8f2783 100644 --- a/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md @@ -4,7 +4,7 @@ ItemStack Loader is a workaround for loading the Bukkit ItemStack. :::caution -Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossble. +Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossible. ::: diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/localization.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/localization.md index e9121e1a36..d47589ab9a 100644 --- a/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/localization.md +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/localization.md @@ -10,7 +10,7 @@ To help translate QuickShop-Hikari, please visit our [Crowdin Homepage](https:// ## Crowdin OTA -QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will overrided when you reload QuickShop-Hikari or restart your server. +QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will override when you reload QuickShop-Hikari or restart your server. Your installation will keep translations up-to-date without any touch. @@ -110,6 +110,16 @@ To disable the CrowdinOTA, please add it in the startup flag: -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager.enableCrowdinOTA=false ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +use-crowdin-ota: false +``` + ### Self-Hosted OTA Server If you self-hosted our translation server by using [CrowdinCopyDeploy](https://github.com/Ghost-chu/CrowdinCopyDeploy) tool, you're able to change the OTA server to yourself server. @@ -118,4 +128,12 @@ If you self-hosted our translation server by using [CrowdinCopyDeploy](https://g -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager= ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml +Use + +```yaml +crowdin-host: +``` \ No newline at end of file diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/shops/benefit.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/shops/benefit.md index 4d7a9c8f42..c59d92e6d1 100644 --- a/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/shops/benefit.md +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/shops/benefit.md @@ -37,3 +37,13 @@ By default, for security, QuickShop-Hikari disallow add offline players into sho ```bash -Dcom.ghostchu.quickshop.command.subcommand.SubCommand_Benefit.allowOffline=true ``` + +### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +shop.allow-offline-benefit: true +``` \ No newline at end of file diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/shops/control-panel b/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/shops/control-panel new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/shops/control-panel @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/shops/history.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/shops/history.md index fa891adeab..195b64a042 100644 --- a/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/shops/history.md +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/shops/history.md @@ -24,7 +24,7 @@ The History GUI displays the details of each recorded transaction and other usef ### Transaction details -When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed.\ +When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed. If you are checking the history of more than one store, the player head will be replaced with an item from the corresponding store. ![history-gui](./img/history-gui.png) diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md new file mode 100644 index 0000000000..c5ed3b3fe4 --- /dev/null +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md @@ -0,0 +1,90 @@ +# Shop Types + +QuickShop supports multiple shop types, allowing shops to behave differently depending on their mode. + +The built-in shop types are: + +- Selling +- Buying +- Frozen + +Each type changes how the shop interacts with players. + +--- + +## Selling Shop + +A Selling shop allows players to: + +- Buy items from the shop owner +- Pay money to receive items + +This is the most common shop type. + +--- + +## Buying Shop + +A Buying shop allows players to: + +- Sell items to the shop owner +- Receive money in exchange + +This is commonly used for: + +- Resource collection +- Server buy-back shops +- Automated material sinks + +--- + +## Frozen Shop + +A Frozen shop temporarily disables trading. + +While frozen: + +- No buying is allowed +- No selling is allowed +- The shop remains intact +- Staff or admins can manage it + +This is useful for: + +- Temporary suspensions +- Investigation +- Event locking +- Maintenance + +--- + +## Switching Shop Types + +Shop types can be changed through: + +- Control panel +- GUI control panel +- Admin commands + +Frozen mode is also available via: + +/qs freeze + +--- + +## Custom Shop Types + +As of 6.2.x, the system supports extensible shop types internally. + +While server owners use the built-in types, the system now allows future expansion through addons. + +--- + +## Summary + +Shop types allow you to: + +- Control how money flows +- Enable buy-back mechanics +- Temporarily disable shops +- Build advanced economic systems \ No newline at end of file diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md new file mode 100644 index 0000000000..18e0a47407 --- /dev/null +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md @@ -0,0 +1,217 @@ +# Sign Layout + +QuickShop allows you to fully customize how shop signs are structured. + +You can change: + +- What appears on each line +- The order of information +- Layout per shop type +- Whether certain lines are blank + +This gives you complete control over how shops look on your server. + +--- + +## How Sign Layout Works + +Shop signs have four lines. + +Instead of being hardcoded, QuickShop uses a configurable layout system. + +Each shop type can have its own layout: + +- SELLING +- BUYING +- FROZEN + +You define what each line displays using layout keys. + +--- + +## Configuration Location + +Sign layout is configured in `config.yml` under: + +```yaml +layout: +``` + +Example default configuration: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## Available Layout Keys + +Each line value refers to a built-in layout component. + +Common layout keys include: + +- `header` – The shop header line +- `trading` – Buy/Sell direction information +- `item` – Item name +- `price` – Shop price + +These keys are automatically formatted using your language file and formatting settings. + +--- + +## Leaving a Line Blank + +To leave a line empty, use: + +```yaml +line2: "" +``` + +This is useful if you want: + +- Minimalist signs +- Cleaner layouts +- Custom spacing +- Decorative formatting + +--- + +## Customizing Per Shop Type + +Each shop type can have a different layout. + +For example: + +```yaml +layout: + + SELLING: + line1: "header" + line2: "item" + line3: "price" + line4: "" + + BUYING: + line1: "header" + line2: "price" + line3: "item" + line4: "" + + FROZEN: + line1: "header" + line2: "" + line3: "item" + line4: "Frozen" +``` + +This allows you to visually differentiate: + +- Selling shops +- Buying shops +- Frozen shops + +--- + +## Practical Examples + +### Minimal Style + +```yaml +layout: + SELLING: + line1: "item" + line2: "price" + line3: "" + line4: "" +``` + +### Compact Economy Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "price" + line3: "item" + line4: "" +``` + +### Large Clear Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## How Updates Affect Layout + +When you change the layout: + +- Existing shop signs will update automatically when refreshed. +- New shops will use the updated format immediately. + +If needed, you can reload QuickShop to apply changes. + +--- + +## Best Practices + +- Keep important information visible (price and item). +- Avoid overly complex formatting. +- Test layout changes before deploying on large servers. +- Use different layouts for BUYING and SELLING to reduce confusion. + +--- + +## Common Questions + +### Can I add more than four lines? + +No. +Minecraft signs are limited to four lines. + +### Can I add colors? + +Colors are controlled by your language file and formatting settings. + +### Can I change layout without restarting? + +Yes, but reloading or refreshing shops is recommended to ensure full update. + +--- + +## Summary + +The Sign Layout system allows you to: + +- Fully customize shop sign appearance +- Create per-type layouts +- Simplify or expand shop information +- Improve clarity for players + +All layout customization is handled inside `config.yml`. diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md index abcc288db7..2a0d52d788 100644 --- a/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md @@ -8,19 +8,6 @@ This feature added in 6.0.0.0. By default, QuickShop-Hikari uses the default brand material from the configuration file, but you can modify it to other brands for your store with the command. -## Configuration - -```yaml - #The wall sign material. - #ACACIA_WALL_SIGN - #BIRCH_WALL_SIGN - #DARK_OAK_WALL_SIGN - #JUNGLE_WALL_SIGN - #OAK_WALL_SIGN - #SPRUCE_WALL_SIGN - sign-material: OAK_WALL_SIGN -``` - ## Change the material Use command `/quickshop sign ` to change your shop sign material. diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md new file mode 100644 index 0000000000..980bad10f2 --- /dev/null +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md @@ -0,0 +1,130 @@ +# Shop Sign Waxing + +QuickShop can automatically wax shop signs to prevent players from editing them manually. + +Waxing protects the integrity of your shop signs and helps prevent tampering, spoofing, and accidental modification. + +As of modern Minecraft versions, waxed signs cannot be edited unless they are unwaxed first. + +--- + +## What Is Sign Waxing? + +In Minecraft, waxing a sign locks it so that: + +- Players cannot edit the text +- Players cannot modify lines +- Accidental changes are prevented +- Malicious edits are blocked + +When enabled in QuickShop, shop signs are automatically waxed when created. + +--- + +## Why Use It? + +Sign waxing protects against: + +- Players editing price lines +- Changing item names on signs +- Spoofing shop information +- Accidental formatting issues +- Sign hijacking attempts + +On public servers, this feature is strongly recommended. + +--- + +## How It Works + +When a shop is created: + +1. QuickShop generates the shop sign. +2. The sign text is written. +3. The sign is automatically waxed (if enabled). + +If a shop is updated: + +- The sign will be safely updated by QuickShop. +- The wax state is maintained. + +Players cannot manually edit shop signs while waxing is enabled. + +--- + +## Configuration + +To enable or disable sign waxing, edit `config.yml`: + +```yaml +shop: + sign-wax: true +``` + +### true + +- Shop signs are automatically waxed. +- Players cannot edit the sign manually. + +### false + +- Shop signs behave like normal Minecraft signs. +- Players may edit them if permitted by the game. + +--- + +## Recommended Setting + +For most servers: + +```yaml +shop: + sign-wax: true +``` + +This ensures shop data stays accurate and secure. + +--- + +## Common Questions + +### Can admins still modify shop signs? + +QuickShop controls shop sign formatting. +Manual edits are not recommended. + +Admins should use: + +- Control panel +- Shop commands +- Direct configuration changes + +### Does waxing affect shop functionality? + +No. +Waxing only prevents manual text edits. +The shop continues to function normally. + +### Can players un-wax shop signs? + +No. +QuickShop manages the sign state automatically. + +--- + +## Best Practices + +- Keep sign-wax enabled on survival servers. +- Combine sign-wax with proper permissions. +- Avoid manually editing shop signs through other plugins. + +--- + +## Summary + +Sign Waxing: + +- Prevents tampering +- Requires no additional setup + +Enable it once and QuickShop handles the rest. \ No newline at end of file diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/shops/taxes.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/shops/taxes.md new file mode 100644 index 0000000000..1a273fd978 --- /dev/null +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/shops/taxes.md @@ -0,0 +1,92 @@ +# Taxation System + +QuickShop includes a taxation system designed to give server owners more flexibility and control over shop-based income. + +This system was revamped as of 6.2.0.11+ + +The new system allows you to: + +- Apply tax to shop owners +- Apply tax to buyers +- Apply tax to both +- Use progressive tax brackets +- Customize tax behavior in configuration + +This system replaces the legacy tax configuration. + +--- + +## How It Works + +During a transaction: + +1. The shop price is calculated. +2. Tax is calculated based on your configuration. +3. Tax is deducted from the configured target(s). +4. Remaining funds are distributed normally. + +You can configure: + +- Flat percentage tax +- Progressive tax based on player balance +- Tax accounts +- Distribution rules + +--- + +## Progressive Tax + +The new system allows you to tax based on balance brackets. + +Example concept: + +- 0 – 10,000 balance → 1% tax +- 10,000 – 100,000 → 2% tax +- 100,000+ → 3% tax + +This helps prevent extremely wealthy players from dominating the economy. + +--- + +## Who Pays the Tax? + +You can configure whether tax applies to: + +- The shop owner +- The buyer +- Both + +This gives you flexibility depending on your economy design. + +--- + +## Configuration + +All tax-related settings are located under the `shop-tax` section in `config.yml`. + +After updating to 6.2.0.11+, review your tax configuration carefully, as the old tax system has been replaced. + +--- + +## Why Use Tax? + +The taxation system can help: + +- Remove currency from circulation +- Fund server banks or towns +- Create sink mechanics +- Balance inflation +- Reward active players + +--- + +## Summary + +The new taxation system is: + +- Flexible +- Configurable +- Balance-aware +- Designed for modern economy servers + +Make sure to review your configuration after upgrading. \ No newline at end of file diff --git a/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md b/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md new file mode 100644 index 0000000000..247c24712d --- /dev/null +++ b/i18n/it-IT/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md @@ -0,0 +1,161 @@ +# WorldEdit & FAWE Support + +QuickShop includes built-in protection and integration for WorldEdit and FastAsyncWorldEdit (FAWE). + +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. + +You do not need to download or install any additional compatibility plugins. + +--- + +## What This Does + +WorldEdit and FAWE allow administrators and builders to: + +- Copy and paste regions +- Replace large areas of blocks +- Mass-delete regions +- Roll back areas +- Regenerate terrain + +Without protection, these operations could: + +- Create ghost shops +- Leave orphaned shop data in the database +- Duplicate shops unintentionally +- Delete containers without cleaning up shop data +- Cause inconsistencies between world and database + +QuickShop now automatically detects and safely processes WorldEdit and FAWE operations. + +--- + +## Built-In Behavior + +When WorldEdit or FAWE modifies blocks: + +- Shops removed via WorldEdit are properly deleted from the database. +- Shop data stays synchronized with world changes. +- Ghost shops are prevented. +- Mass block replacements will not leave broken shop entries behind. + +This applies to: + +- //set +- //replace +- //cut +- //paste +- //regen +- Region deletion +- Mass container removal + +No configuration is required. + +--- + +## FAWE Support + +FastAsyncWorldEdit (FAWE) is fully supported. + +Because FAWE processes edits asynchronously, QuickShop handles: + +- Region-thread safe processing +- Async block updates +- Safe shop deletion during batch edits + +You do not need to enable anything manually. + +--- + +## Removing Shops with WorldEdit + +If you delete containers (chests, barrels, etc.) using WorldEdit: + +QuickShop will automatically: + +- Detect the block removal +- Unregister the shop +- Clean the database entry +- Prevent ghost shops + +You do not need to run `/qs cleanghost` after WorldEdit usage in normal circumstances. + +--- + +## Copying and Pasting Shops + +If you copy and paste regions that contain shops: + +- Shop data will not duplicate incorrectly. +- Shop IDs remain consistent. +- Invalid pasted shops will not auto-register unless properly created. + +This prevents accidental duplication exploits. + +--- + +## Performance + +WorldEdit and FAWE operations can modify thousands of blocks at once. + +QuickShop processes these safely and efficiently: + +- Batch-aware cleanup +- Thread-safe region access (especially on Folia) +- Minimal performance impact during mass edits + +--- + +## Configuration + +There are no specific WorldEdit configuration options in QuickShop. + +Support is automatic and always enabled if WorldEdit or FAWE is detected. + +If WorldEdit is not installed, no extra code is executed. + +--- + +## Common Questions + +### Do I need the old WorldEdit compatibility jar? + +No. + +As of 6.2.0.11, WorldEdit support is built-in and the separate compatibility module has been removed. + +### Does this work with FAWE? + +Yes. FAWE is fully supported. + +### Will shops break if I use //set air? + +No. Shops will be safely removed and cleaned up. + +### Do I need to restart after installing WorldEdit? + +No. QuickShop detects WorldEdit automatically on startup. + +--- + +## Best Practices + +Even though QuickShop safely handles WorldEdit operations, it is recommended to: + +- Avoid copying shops intentionally unless required +- Use backups before large region edits +- Test large FAWE operations on staging servers when possible + +--- + +## Summary + +QuickShop’s built-in WorldEdit and FAWE integration ensures: + +- Safe mass edits +- No ghost shops +- Automatic database cleanup +- Thread-safe processing +- No extra modules required + +WorldEdit support is now a core feature of QuickShop. \ No newline at end of file diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/addon/limited.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/addon/limited.md index 70af27e240..fae55a8c95 100644 --- a/i18n/ja-JP/docusaurus-plugin-content-docs/current/addon/limited.md +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/addon/limited.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -41,8 +35,8 @@ Limit players to purchase up to 16 items per month. /quickshop limit period MONTH ``` -The system is based on the QuickShop-Hikari calendar system.\ -The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year.\ +The system is based on the QuickShop-Hikari calendar system. +The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year. Same for days, months and hours. Available time units: diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/addon/list.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/addon/list.md index 93d182f083..f20b91fd7b 100644 --- a/i18n/ja-JP/docusaurus-plugin-content-docs/current/addon/list.md +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/addon/list.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/addon/plan.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/addon/plan.md index 52a6e79cb4..c10ef4df42 100644 --- a/i18n/ja-JP/docusaurus-plugin-content-docs/current/addon/plan.md +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/addon/plan.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -18,7 +18,7 @@ Recorded data can be displayed from Hikari v2.0.0.0 onwards, but only after vers - All shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 1000 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `5` in server scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `5` in server scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Player Scope @@ -27,7 +27,7 @@ And still is Plan limitations, the list sorting is disturbed, so the display ord - All owned shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 50 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `4` in player scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `4` in player scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Showcase diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/addon/reforges.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/addon/reforges.md index 2a14509eb7..25fff1752a 100644 --- a/i18n/ja-JP/docusaurus-plugin-content-docs/current/addon/reforges.md +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/addon/reforges.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.0.0.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md index 304d39bc05..6f9f51d250 100644 --- a/i18n/ja-JP/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.1.1.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -44,7 +38,7 @@ _This is not necessary if you are using an H2 database._ ### Prepare for convert -To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console.\ +To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console. If a player is in the server, the conversion cannot be started. Once the conversion has begun, the server will be locked during the conversion process and no players will be able to join the server during the conversion. diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/addon/shopitemonly.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/addon/shopitemonly.md index c45062f8c2..1ccfe977b3 100644 --- a/i18n/ja-JP/docusaurus-plugin-content-docs/current/addon/shopitemonly.md +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/addon/shopitemonly.md @@ -2,17 +2,11 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT - -::: - -This addon prevents players from putting non-store items into store containers.\ +This addon prevents players from putting non-store items into store containers. Does not apply to stores that use the item inventory redirection API (aka. InventoryWrapper API). This Addon will check for container (or transferring) items on events such as the player closing the container or hopper access. diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md new file mode 100644 index 0000000000..9c8b4f7407 --- /dev/null +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md @@ -0,0 +1,55 @@ +# 6.2.0.10 + +## Major Changes + +- Added support for 1.21.6 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.7 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.8 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Some internal updates for packetevents(2.9.0 is now required.) +- Updated Lands support + +## Addon Changes + +- Added MatcherPlus Addon + - Allows support for BreweryX and AdvancedItems stacks in shops with improved matching abilities +- Added FabledSkyblock Compat +- Added Dominion Compat +- Added HuskTowns Compat +- Added IridiumSkyblock Compat +- Added member-create for member creation in ARM compat +- Added admin-override and quickshop.arm.admin permission for admin overrides in ARM + +## Minor Changes + +- Added configurations for the coordinates of the display item. +- Added /qs toggledisplayall on/off server/owned + - Players need to have permission node quickshop.toggledisplayall.admin to toggle all on the server. +- Added ability to use abbreviations in /qs price and /qs create commands such as 2.5k for 2500 +- Added ability to set default display status using shop.default-display in config.yml + +## Fixes + +- Fixed issue with display item being sent to the moon on 1.21.5 +- Fixed issue where TRADE_UI interactions interfered with quick create. +- Fixed issue with displays on protocollib falling through the chest +- Fixed issue with signs on .9 and previous .10 snapshots on early versions +- Implemented some performance improvements for paper servers +- Fixed all outstanding issues with Folia usage.(thanks to RootB33R/SleazLee for contributions) + +## Possible 6.2.0.11 Features + +Here's an outline for some features that may arrive in 6.2.0.11: + +- Additional compats/addons that have been piling up. + - see: https://github.com/QuickShop-Community/QuickShop-Hikari/issues/1756 +- gradle?(interested to see compilation time uplifts) +- Update documentation +- Update configuration comments +- Update configuration system? + - auto updating? + - Allows removal of the update code +- Remove waste spigot modules? + - Any versions of 1.20 that can be discarded due to low use? +- Bug fixing, of course +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... \ No newline at end of file diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md new file mode 100644 index 0000000000..b41c88662a --- /dev/null +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md @@ -0,0 +1,173 @@ +## Outline + +- Update documentation +- Update configuration comments +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... + +# 6.2.0.11 + +## Major Changes + +- Removed Spigot Platform Modules, and stopped loading QS if Spigot is detected. This will mean that unless the protocol changes that we use for display items, QS won't need updated for each version. +- Revamped Economy Code Completely + - New classes for all economy-related systems + - Any economy-related or benefits-related events are incompatible with previous versions. +- Added sign layout customizations per-type allowing you to change how lines are configured, an empty string('') will leave an empty line for that line of the sign. + +``` + #The layout of signs for shops. + layout: + + #The layout of BUYING shops. + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of FROZEN shops. + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of SELLING shops. + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +- Add wildcard support for item blacklist patterns(thanks to bennycallanan) + - Added support for wildcard patterns in the item blacklist configuration, allowing users to block entire categories of items with simple patterns. + + - Features + - Wildcard patterns like \*_AXE and \*_SPAWN_EGG now work in blacklist configuration + - Supports \* for any characters and ? for single character matching + - Case-insensitive pattern matching +- Overhauled GUI system(thanks to Yusakidev) + - Implemented gui.yml configuration file for customizing the GUI. + - Implemented better filtering for qs browse + - Implement GUI system to be more stable, and less error prone. + - Added gui.yml for fully configurable GUI layouts and text + - Browse menu: search, sort (price/name/stock), and filter (all/buying/selling/in-stock) + - Staff menu: search functionality for player/staff selection + - Grouped item pages for better shop browsing + - Refactored all menu pages to use configurable display/lore +- Added worldedit compat to QS internally as it's widely used. +- Revamped the taxation system to be more flexible and easier to configure. + - introduced a new progressive tax system that allows you to tax based on the balance of players.(suggested by YuanYuanOwO) + - introduced the ability to tax the player interacting with the shop, the owner, or both + - all tax-related configurations have been moved under the shop-tax section of the config. this may require reconfiguration of your tax settings. + - added a new ShopEnhancedTaxEvent, deprecated the old ShopTaxEvent. + - Added a new TaxManager, and TaxProvider interfaces, this allows for custom tax providers to be added by addons/third-party developers. + +## Addons/Compats Changes + +- Added UltimateClaims compat +- Added SimpleClaimSystem compat +- Added Quests by Pika addon +- Added BetonQuest addon +- Added Pl3xMap addon +- MatcherPlus Compat Improvements + - Added support for CrazyCrates + - Added support for ExcellentCrates + - Added support for SilkSpawners. +- WorldGuard Compat Improvements(Thanks to golovin12) + - Added clear permission handling: + - Region owners and members automatically have permission to create and trade in their own regions. + - Other players must have the appropriate WorldGuard flags enabled (quickshophikari-create, quickshophikari-trade) to interact with shops. + - If a shop is located outside any region, default QuickShop behavior applies (no extra restrictions) +- Added colored markers based on shop state for bluemap(thanks to YusakiDev) +- Updated dynmap/towny addons to use the new ShopTypeEnhancedEvent instead of ShopTypeEvent. +- Removed worldedit compat, it's now included in the main plugin. +- Added support for global flags to the worldguard compat. + +## Internals/Developer APIs + +- Removed several deprecated methods and classes. +- Revamped the interaction manager. It is now more flexible and allows external additions + - This involves two classes InteractionBehavior and InteractionType. + - InteractionType details the type of interaction such as: STANDING_LEFT_CLICK_SIGN, STANDING_LEFT_CLICK_SHOP + - InteractionBehavior outlines a behavior for an InteractionType such as CONTROL_PANEL and TRADE_UI +- Added UserLimitCalculationEvent, which allows for custom limits to be applied to users. + - This is useful for limiting the number of shops a user can have, or adding on to the existing limits provided by the ranks system without needing to implement a new RankLimiter. +- Added a new ShopLayoutProvider interface, and default implementation. + - This allows for custom layouts to be used for shops, allowing for more customization. + - This also allows for developers to override the default layout provider and create their own implementation. +- How to make your own? + - Implement the classes you would like to then register with the InteractionManager: + - ```java + InteractionManager manager = QuickShop.getInstance().getInteractionManager(); + + manager.interaction(new MyTradeInteraction()); + manager.behavior(new MyTradeBehavior()); + ``` +- Replaced some Apache Commons calls that could be easily replaced with built-in java methods, reduces some calls by ~ 1100ms/method call +- Deprecated the ShopType enum, and the ShopTypeEvent. These are replaced with the new IShopType interface and implementing classes. + - The new event is ShopTypeEnhancedEvent. + - This allows for third-party addons to add their own shop types, and simplifies code checks for translations. +- Updated config system to use Boosted-yaml + - this allows for auto-updating of config files without complex update scripts + - this also allows for the config system to not be minecraft-dependent. +- Replaced logical PaperLib calls with native PaperAPI calls. + +## Minor Changes + +- Bump Java version up to 21 +- Added shop.display-allow-enchants to enable/disable enchantments for display items on shops. +- Added workaround for packetevents not supporting custom enchants on itemstacks for virtual display items. +- Using locale translations for shop-type in mode toggle icon(thanks to ExyiN) +- Bumped Residence version for the compat(thanks to YuanYuanOwO) +- add world whitelist support(thanks to wling-art) +- added /qs database save command, which saves all currently dirty-marked shops to the database. +- Split up interactions _SHOPBLOCK into _SHOPBLOCK and _CONTAINER. + - _SHOPBLOCK relates to shops, where _CONTAINER relates to shop-valid containers that are not currently shops. +- Added inventory as an option for command panel, this is useful for adding a secondary option for players to open a shop's inventory. +- Moved crowdin arguments from system properties to config.yml + - crowdin-host + - use-crowdin-ota + +## Fixes + +- Fixes issue with item price restrictions(thanks to maxcom1) +- Fixes issue with 1.20.x protocol lib displays(thanks to YuanYuanOwO) +- Fixes issue when no item is in hand for itemdebug(thanks to YuanYuanOwO) +- Fixes issue with dominion addon(thanks to YuanYuanOwO) +- Add a simple check to avoid this. If it is not own shop, reject limit request directly.(Thanks to YuanYuanOwO) +- Fix NPE by not setting tax for price in TransactionBuilder(thanks to maxcom1) +- Fixes /quickshop suggestprice to differentiate between buy/sell shops. (Thanks to MidSpike) +- PacketEvents ClassNotFoundException with ProtocolLib(thanks to wling-art) +- Reallocate block state access to region thread for shop creation(thanks to r00tbeerman) +- resolve SLF4J StaticLoggerBinder loading error(thanks to wling-art) +- sign hijacking issue by validating sign facing direction(thanks to wling-art) +- Performance improvements for QuickShop disabling to prevent potential freezes. +- Fixed issue with 1.20.4 packetevents virtual displays not staying put. +- Fixes critical issue in GriefPrevention compatibility plugin. +- Fixes issue with shop owner not getting money when benefits active. +- Fixes for lands addon on folia, Use regionThread for Folia compatibility(thanks to YusakiDev) +- Fixes for TRADE_DIRECT on stacking shops +- Fixes issue for protocollib 5.4.0 with undocumented packet changes. +- Fixes issue where item stacks could be used on creation above the max stack size. +- Fixes issue with BukkitAudiences-related crashes on 1.21.11. +- Fix issue with shop deletion when getting too impatient. +- Fix the permission check issue when a shop owned by a non-owner is transferred to someone else. (thanks to YuanYuanOwO) +- Fix ui with supertool (thanks to YuanYuanOwO) +- Fix issue with logs generating outside debug mode. +- Fix issue with /qs find. +- Fix configuration loading timing. +- Fix configuration loading/creation warning message language. +- Fix command description language key mismatch(thanks to wling-art) +- Fix qs clean command on folia(thanks to wling-art) +- Fix per-player-shop-sign on folia(thanks to wling-art) +- Fix potential recursive deadlock in virtual display packet sending(thanks to wling-art) +- Fix configuration loading/creation warning message language. +- Fix issue with /qs browse and ShopItemOnly addon not behaving properly together on folia. +- Fix issue with PLAN using outdated APIs. +- Fix issue with /qs clean on folia.(thanks to wling-art) +- Fix issue with /qs cleanghost on folia(thanks to wling-art) +- More thread safety fixes for shops on folia.(thanks to wling-art) +- Fix owner payment calculations with benefits(thanks to wling-art) \ No newline at end of file diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md index 8172f9b410..dcc3edc67d 100644 --- a/i18n/ja-JP/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md @@ -20,20 +20,20 @@ the ControlComponent object with a custom one that will replace the original dur ### Introduction of the Revamped Packet System 1. **About**: - - A modular and scalable system for managing packets related to virtual display items in Minecraft. - - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. + - A modular and scalable system for managing packets related to virtual display items in Minecraft. + - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. 2. **Custom Packet Factories**: - - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. - - Packet types: - - **Spawn Packet**: Spawns a virtual item entity at a specific location. - - **Metadata Packet**: Updates the visual properties of virtual items. - - **Velocity Packet**: Adds motion/velocity to entities (currently optional). - - **Destroy Packet**: Removes the entity from the client view. + - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. + - Packet types: + - **Spawn Packet**: Spawns a virtual item entity at a specific location. + - **Metadata Packet**: Updates the visual properties of virtual items. + - **Velocity Packet**: Adds motion/velocity to entities (currently optional). + - **Destroy Packet**: Removes the entity from the client view. 3. **Error Handling and Logging**: - - Enhanced debug logs to trace packet-related issues. - - Detailed error messages for missing factories or unregistered listeners. + - Enhanced debug logs to trace packet-related issues. + - Detailed error messages for missing factories or unregistered listeners. #### Improvements: diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md index 7775308722..c6e0948d19 100644 --- a/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md index f420997a9c..38587e3784 100644 --- a/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md index 5ed8182c9a..259c55f342 100644 --- a/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md index 924a37ac49..7fd4596a6a 100644 --- a/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,6 +10,6 @@ This is a BungeeCord plugin, you need install it within your BungeeCord's plugin ## How does it work? -BungeeCord Bridge plugins will register a `quickshop:bungee` channel for fowarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. +BungeeCord Bridge plugins will register a `quickshop:bungee` channel for forwarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. All forwarding is indicated by QuickShop-Hikari on the Spigot server and ends when it is not needed. diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md index 27d68956a8..20fbaf7a0c 100644 --- a/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,5 +10,5 @@ This compatibility module added [Chest Protect](https://www.spigotmc.org/resourc ## How does it work? -This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident.\ +This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident. It also prevents players from creating shops on ChestProtect protected containers. diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md index 220e26d8bb..e1757e7be9 100644 --- a/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/dominion.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/dominion.md new file mode 100644 index 0000000000..e1195278a8 --- /dev/null +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/dominion.md @@ -0,0 +1,138 @@ +# Dominion + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and Dominion. + +It ensures that shop creation and trading respect Dominion’s land and territory protection system. + +--- + +## What Does It Do? + +Dominion allows players or groups to claim land and define territory-based permissions. + +Without compatibility: + +- Players could create shops inside territories they do not control. +- Visitors might trade inside protected dominions. +- Dominion permission rules might not apply to shop interactions. + +The Dominion compat module ensures that: + +- Shop creation respects territory ownership. +- Shop trading follows Dominion permission settings. +- Protected land remains secure from unauthorized shop usage. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a Dominion-controlled area. +- Whether the player has permission within that territory. +- Whether Dominion rules allow shop interaction. + +If the action is not permitted by Dominion settings, QuickShop blocks it. + +If the location is outside any Dominion territory, default QuickShop behavior applies. + +--- + +## Territory Owner Control + +With this module enabled: + +- Territory owners can create and manage shops inside their dominion. +- Trusted members follow territory-based permissions. +- Outsiders are restricted unless explicitly allowed. +- Shop actions respect Dominion’s land rules automatically. + +This prevents unauthorized shop placement inside protected territories. + +--- + +## Installation + +1. Install Dominion. +2. Install the QuickShop Dominion compat module. +3. Restart your server. + +The module activates automatically if Dominion is detected. + +No manual configuration linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside dominions +whitelist-mode: false + +# Allow territory owners to override shop permissions +allow-owner-override: true +``` + +If Dominion is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For servers using Dominion: + +- Restrict shop creation to territory owners or trusted members. +- Prevent shop creation in wilderness if desired. +- Allow dominion owners to manage shop permissions. +- Review Dominion permission settings to align with shop behavior. + +This ensures protected territories remain secure and organized. + +--- + +## Common Questions + +### Can players create shops in someone else's dominion? + +Only if Dominion permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You may allow or restrict shops outside dominions. + +### What happens if Dominion is removed? + +QuickShop returns to normal behavior and stops checking Dominion territories. + +--- + +## Summary + +The Dominion compat module: + +- Enforces territory-based permissions +- Prevents unauthorized shop creation +- Protects claimed land from misuse +- Integrates seamlessly with Dominion + +It is recommended for servers running Dominion. \ No newline at end of file diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md index 743d3ae666..2ac9b10488 100644 --- a/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md new file mode 100644 index 0000000000..07ba4ada66 --- /dev/null +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md @@ -0,0 +1,133 @@ +# FabledSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and FabledSkyblock. + +It ensures that shop creation and trading properly respect island boundaries and island permissions. + +--- + +## What Does It Do? + +On Skyblock servers, players build and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Players might trade in areas they should not. +- Island protection rules might not apply to shops. + +The FabledSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members behave correctly with shops. +- Island visitors are restricted appropriately. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a FabledSkyblock island. +- Whether the player has permission on that island. +- Whether island settings allow the action. + +If the action is not permitted by island rules, QuickShop will deny it. + +--- + +## Island Ownership Rules + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow island permission settings. +- Visitors can only trade if island permissions allow it. +- Outside of islands, default QuickShop behavior applies. + +--- + +## Installation + +1. Install FabledSkyblock. +2. Install the QuickShop FabledSkyblock compat module. +3. Restart your server. + +The module activates automatically if FabledSkyblock is detected. + +No manual linking is required. + +--- + +## Configuration + +If the module provides configuration options, they will appear in its `config.yml`. + +Typical options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If FabledSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most Skyblock servers: + +- Allow shop creation only inside islands. +- Prevent trading in the void or wilderness. +- Let island owners control shop permissions. +- Use island rank systems to manage shop access. + +This helps maintain economic balance between islands. + +--- + +## Common Questions + +### Can players create shops in the void? + +Only if your configuration allows it. +Most servers disable shop creation outside islands. + +### Does this affect island war or PvP modes? + +No. +The module only checks island ownership and permissions for shop interactions. + +### What happens if FabledSkyblock is removed? + +QuickShop returns to normal behavior. + +--- + +## Summary + +The FabledSkyblock compat module: + +- Protects island economies +- Enforces island permission rules +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is strongly recommended for any server running FabledSkyblock. \ No newline at end of file diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md index 81b13d2c6b..32614d3019 100644 --- a/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md @@ -2,17 +2,17 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -GreifPrevention compatibility module added compaitibility with GF. +GreifPrevention compatibility module added compatibility with GF. ## How does it work This module allow QuickShop-Hikari check if player have permission to create or use QuickShop in specific region. -And delete shops when claim removed, untrusted, unclimed, expired, resized or subclaim created. +And delete shops when claim removed, untrusted, unclaimed, expired, resized or subclaim created. ## Configuration diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md new file mode 100644 index 0000000000..e71b34d462 --- /dev/null +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md @@ -0,0 +1,139 @@ +# HuskTowns + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and HuskTowns. + +It ensures that shop creation and trading respect town and claim permissions defined by HuskTowns. + +--- + +## What Does It Do? + +HuskTowns allows players to create towns and claim land. + +Without compatibility: + +- Players could create shops inside towns they do not belong to. +- Visitors might trade inside protected towns. +- Town permission rules might not apply to shop interactions. + +The HuskTowns compat module ensures that: + +- Shop creation respects town ownership. +- Trading follows town permission settings. +- Town members and visitors are handled correctly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a HuskTowns claim. +- Whether the player is a town member, trusted player, or outsider. +- Whether the town's permission settings allow the action. + +If the action is not permitted by town rules, QuickShop blocks it. + +Outside of town claims, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Town Owner Control + +With this module enabled: + +- Town owners can create and manage shops inside their town. +- Town members follow town-based permission settings. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect town claim protection. + +This prevents unauthorized shop placement and trading inside protected towns. + +--- + +## Installation + +1. Install HuskTowns. +2. Install the QuickShop HuskTowns compat module. +3. Restart your server. + +The module activates automatically if HuskTowns is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside towns +whitelist-mode: false + +# Allow town owners to override shop permissions +allow-owner-override: true +``` + +If HuskTowns is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For town-based survival servers: + +- Restrict shop creation to town members. +- Allow trading only where town permissions permit. +- Prevent shop creation in wilderness if desired. +- Enable owner override for better administrative control. + +This helps maintain town-based economic balance. + +--- + +## Common Questions + +### Can players create shops in another town? + +Only if that town's permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You can allow or restrict shops outside towns. + +### What happens if HuskTowns is removed? + +QuickShop returns to normal behavior and stops checking town permissions. + +--- + +## Summary + +The HuskTowns compat module: + +- Enforces town-based land permissions +- Protects towns from unauthorized shop usage +- Integrates smoothly with HuskTowns +- Requires minimal setup + +It is recommended for any server running HuskTowns. \ No newline at end of file diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md new file mode 100644 index 0000000000..3fa2995eb0 --- /dev/null +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md @@ -0,0 +1,139 @@ +# IridiumSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and IridiumSkyblock. + +It ensures that shop creation and trading respect island boundaries and island permission settings defined by IridiumSkyblock. + +--- + +## What Does It Do? + +IridiumSkyblock allows players to create and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Visitors might trade inside protected islands. +- Island protection rules might not apply correctly to shops. + +The IridiumSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members and visitors are handled properly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside an IridiumSkyblock island. +- Whether the player is the island owner, member, or visitor. +- Whether island permissions allow shop interaction. + +If the action is not permitted, QuickShop blocks it. + +Outside of islands, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Island Owner Permissions + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow the island's permission configuration. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect island protection rules. + +This prevents unauthorized shop usage inside protected islands. + +--- + +## Installation + +1. Install IridiumSkyblock. +2. Install the QuickShop IridiumSkyblock compat module. +3. Restart your server. + +The module activates automatically if IridiumSkyblock is detected. + +No additional setup is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If IridiumSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most IridiumSkyblock servers: + +- Restrict shop creation to island owners. +- Allow island members to trade if trusted. +- Prevent shop creation in the void or wilderness. +- Enable owner override for better management. + +This helps maintain balanced island economies. + +--- + +## Common Questions + +### Can players create shops outside their island? + +Only if your configuration allows it. + +Most Skyblock servers restrict shops to island areas. + +### Do island ranks affect shop permissions? + +Yes, if your island permissions are configured to control interaction rights. + +QuickShop follows island rules. + +### What happens if IridiumSkyblock is removed? + +QuickShop returns to normal behavior and stops checking island permissions. + +--- + +## Summary + +The IridiumSkyblock compat module: + +- Protects island economies +- Enforces island-based permissions +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is recommended for any server running IridiumSkyblock. diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md new file mode 100644 index 0000000000..3b4726cb9d --- /dev/null +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md @@ -0,0 +1,151 @@ +# ItemMatcherPlus + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +The ItemMatcherPlus module improves how QuickShop matches custom and plugin-modified items. + +It allows QuickShop to properly recognize and stack items created by other plugins that normally would not match using standard Bukkit item comparisons. + +This module is especially useful for servers that use: + +- Custom items +- Modified metadata +- NBT-based systems +- Advanced crate rewards +- Custom brewing systems +- Custom fishing rewards + +--- + +## What Does It Do? + +By default, Minecraft item matching checks: + +- Material type +- Basic metadata + +However, many plugins modify items with: + +- Custom NBT data +- Hidden tags +- Custom lore formats +- Unique identifiers + +Without enhanced matching: + +- Items may not stack +- Shops may refuse valid items +- Transactions may fail +- Buying/selling may not behave correctly + +ItemMatcherPlus improves compatibility and matching accuracy. + +--- + +## Supported Plugins + +ItemMatcherPlus includes built-in support for: + +- AdvancedItems +- BreweryX +- CrazyCrates +- ExcellentCrates +- PyroFishing +- SilkSpawners + +If any of these plugins are installed, QuickShop will automatically use enhanced matching logic. + +No additional configuration is required. + +--- + +## How It Works + +When a player trades with a shop: + +1. QuickShop checks the item. +2. If ItemMatcherPlus is enabled, it performs advanced matching. +3. Plugin-specific metadata is validated. +4. The item is confirmed as a match (or rejected safely). + +This allows: + +- Proper stacking of custom items +- Correct shop transactions +- Accurate buy/sell detection +- Reduced false mismatches + +--- + +## Installation + +1. Download the ItemMatcherPlus module. +2. Place the JAR into your `plugins` folder. +3. Restart your server. + +If supported plugins are detected, compatibility activates automatically. + +--- + +## Configuration + +ItemMatcherPlus does not require configuration. + +It activates automatically when: + +- The module is installed +- A supported plugin is detected + +If a supported plugin is not installed, no extra logic runs. + +--- + +## Why You Should Use It + +You should install ItemMatcherPlus if your server uses: + +- Custom fishing plugins +- Custom brewing systems +- Crate plugins with modified items +- Custom spawners +- Any plugin that modifies NBT data + +Without it, shops may not properly recognize custom items. + +--- + +## Common Questions + +### Do I need this if I don't use custom item plugins? + +No. +If you only use vanilla items, this module is not necessary. + +### Does this affect performance? + +The module only activates enhanced matching when needed. + +Normal item matching remains fast and efficient. + +### Will it break existing shops? + +No. +It improves compatibility and matching accuracy without modifying existing shop data. + +--- + +## Summary + +ItemMatcherPlus: + +- Improves item matching accuracy +- Adds support for major custom item plugins +- Prevents stacking and trade issues +- Requires no configuration +- Activates automatically + +If you run a heavily customized economy server, this module is highly recommended. \ No newline at end of file diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md index ba87606698..d4ae7d129a 100644 --- a/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/lands.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/lands.md index 06296f5779..7671fcdfe0 100644 --- a/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/lands.md +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/lands.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/openinv.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/openinv.md index c51f628615..4807d57873 100644 --- a/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/openinv.md +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/openinv.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md new file mode 100644 index 0000000000..c2136320b0 --- /dev/null +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md @@ -0,0 +1,138 @@ +# SimpleClaimSystem + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and SimpleClaimSystem. + +It ensures that shop creation and trading respect land ownership and claim permissions defined by SimpleClaimSystem. + +--- + +## What Does It Do? + +SimpleClaimSystem allows players to claim land and protect it from unauthorized interaction. + +Without compatibility: + +- Players could create shops inside claims they do not own. +- Visitors might trade inside protected areas. +- Claim protection might not apply correctly to shops. + +The SimpleClaimSystem compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops within their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a SimpleClaimSystem claim. +- Whether the player has permission within that claim. +- Whether claim rules allow shop interaction. + +If the action is not permitted by the claim, QuickShop blocks it. + +If the location is outside any claim, default QuickShop behavior applies. + +--- + +## Claim Owner Control + +With this module enabled: + +- Claim owners can create and manage shops inside their claim. +- Trusted players follow claim-based permissions. +- Visitors are restricted unless explicitly allowed. +- Claim protection rules apply automatically to shop interactions. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install SimpleClaimSystem. +2. Install the QuickShop SimpleClaimSystem compat module. +3. Restart your server. + +The module activates automatically if SimpleClaimSystem is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If SimpleClaimSystem is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Enable owner override for easier management. + +This ensures players maintain control over their protected land. + +--- + +## Common Questions + +### Can players create shops in someone else's claim? + +Only if claim permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can allow shops outside claims or restrict them. + +### What happens if SimpleClaimSystem is removed? + +QuickShop will revert to default behavior and stop checking claim permissions. + +--- + +## Summary + +The SimpleClaimSystem compat module: + +- Enforces claim-based permissions +- Prevents unauthorized shop creation +- Protects land from unwanted trading +- Requires minimal setup + +It is recommended for servers running SimpleClaimSystem. \ No newline at end of file diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md index a84dbf057b..4dfa8ae97c 100644 --- a/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/towny.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/towny.md index 52ab4818f4..b26c19d335 100644 --- a/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/towny.md +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/towny.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -26,7 +26,7 @@ Town sub-command allow you switch a quickshop between regular shop and town shop For a nation shop, the shop owner will changed to nation fake player created by Towny, and use Nation's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from nation Towny account.\ +All purchases will deposit or withdraw money from nation Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Nation Shop. @@ -35,7 +35,7 @@ If Plot type restriction is enabled, only a specific Plot type can create a Nati For a town shop, the shop owner will changed to town fake player created by Towny, and use Town's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from town Towny account.\ +All purchases will deposit or withdraw money from town Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Town Shop. @@ -88,7 +88,7 @@ bank-mode: ## Permission Override -By adjust configuration, you're allow mayor or king automaticlly grant administrator permission on all shops in their management range. +By adjust configuration, you're allow mayor or king automatically grant administrator permission on all shops in their management range. ```yaml #Should allow Mayor grant the shop administrator permission on they town. @@ -168,7 +168,7 @@ This causes Towny and QuickShop Hikari to use accounts with the same name but di You can adjust the option in configuration to enable workaround. -NOTE: It will force turned on if detected EssentialsX installed on your server.\ +NOTE: It will force turned on if detected EssentialsX installed on your server. At present, we do not provide a method for disable it. ```yaml diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md new file mode 100644 index 0000000000..0189958495 --- /dev/null +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md @@ -0,0 +1,138 @@ +# UltimateClaims + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and UltimateClaims. + +It ensures that shop creation and trading respect land claim permissions managed by UltimateClaims. + +--- + +## What Does It Do? + +On servers using land-claim plugins, players protect areas of the world from unauthorized interaction. + +Without compatibility: + +- Players may create shops inside claims they do not own. +- Visitors might trade in areas where they should not. +- Claim protection rules might not apply correctly to shops. + +The UltimateClaims compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops inside their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a claim. +- Whether the player has permission in that claim. +- Whether claim rules allow shop interaction. + +If the action violates claim settings, QuickShop blocks it. + +Outside of claims, normal QuickShop behavior applies. + +--- + +## Claim Owner Permissions + +With this module enabled: + +- Claim owners can create and manage shops within their claim. +- Trusted players follow claim permission settings. +- Visitors are restricted based on claim configuration. +- Shop actions outside of claims behave normally. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install UltimateClaims. +2. Install the QuickShop UltimateClaims compat module. +3. Restart your server. + +If UltimateClaims is detected on startup, compatibility activates automatically. + +No additional linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Common options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If UltimateClaims is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Keep owner override enabled for better control. + +This ensures players maintain full control over their protected land. + +--- + +## Common Questions + +### Can players create shops inside someone else's claim? + +Only if the claim permissions allow it. + +Otherwise, QuickShop will block the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can choose to restrict shops to claimed land only. + +### What happens if UltimateClaims is removed? + +QuickShop returns to normal behavior without claim checks. + +--- + +## Summary + +The UltimateClaims compat module: + +- Protects claimed land from unauthorized shop usage +- Enforces claim-based permissions +- Integrates smoothly with land-claim servers +- Requires minimal setup + +It is recommended for any server running UltimateClaims. \ No newline at end of file diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md index 87a71a205c..6437754503 100644 --- a/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md @@ -2,8 +2,10 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. Find out more [here](../modules/shops/worldedit.md). + +Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. \ No newline at end of file diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/development/01-getting-start.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/development/01-getting-start.md index 92b773451e..0e78e52367 100644 --- a/i18n/ja-JP/docusaurus-plugin-content-docs/current/development/01-getting-start.md +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/development/01-getting-start.md @@ -6,8 +6,8 @@ This series of articles will help you build extensions for QuickShop-Hikari or i ## License -QuickShop-Hikari is open source using the [GPLv3](https://www.gnu.org/licenses/quick-guide-gplv3.en.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari).\ -You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the GPLv3 agreement. +QuickShop-Hikari is open source using the [AGPLv3](https://www.gnu.org/licenses/agpl-3.0.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari). +You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the AGPLv3 agreement. ## 🚧Don't trust Javadoc too much @@ -48,7 +48,7 @@ QuickShop-Hikari divides operation sources into three types: - Server Main Thread - Async Thread (any other threads but not server main thread) -- Hybird +- Hybrid If you access the API through the wrong thread, QuickShop-Hikari will force a runtime error to be thrown. @@ -58,4 +58,4 @@ For APIs that may trigger network IO or long-time disk IO, you are required not You can see [Util.ensureThread()](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/3d1d271e1106ea1c83cc6068f8232ab7c7860918/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/util/Util.java#L351) and find out the requirements of the different APIs by looking up their use. APIs that do not use Util.ensureThread() are allowed to be called from any thread by default. -You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. +You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. \ No newline at end of file diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md index aa2404c594..7828d414ad 100644 --- a/i18n/ja-JP/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md @@ -10,7 +10,7 @@ ShopManager manager = api.getShopManager(); ## Getting a shop -Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates.\ +Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates. QuickShop-Hikari's store is only bound to one half of "Large Chest", so to get the store, you need to query both the cube itself and its associated cube. The good thing is that there is an API in the plugin that allows you to handle this situation very easily. @@ -71,7 +71,7 @@ manager.deleteShop(shop) // Permanently delete this store, both memory and datab ## Identify a store -Please note that store locations are technically variable and you should not use coordinates to identify a store.\ +Please note that store locations are technically variable and you should not use coordinates to identify a store. Also RuntimeRandomUniqueId should not be used to identify the store, as the name suggests, the value changes every time the server restarts, it should only be used to handle scenarios where the player interacts with the server. ```java diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md index 543f1851da..4f839ed652 100644 --- a/i18n/ja-JP/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md @@ -1,6 +1,6 @@ # 0x05 Per shop permission -QuickShop-Hikari has a per shop permission management system.\ +QuickShop-Hikari has a per shop permission management system. Therefore, for a normal permission node check is not enough, you need to attach an additional check. ## Check with shop diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/development/06-protocol-system.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/development/06-protocol-system.md index 5d37a15536..0380b789f9 100644 --- a/i18n/ja-JP/docusaurus-plugin-content-docs/current/development/06-protocol-system.md +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/development/06-protocol-system.md @@ -15,30 +15,30 @@ This documentation will guide developers through the components, implementation - **Purpose**: Manages packet handling and initialization logic. - **Interface**: `PacketHandler` - **Key Methods**: - - `Map> factories()` - - Retrieves a map of supported `PacketFactory` instances keyed by game versions. - - `void initialize()` - - Initializes the packet handler. - - `Optional> factory(String version)` - - Retrieves a `PacketFactory` for a specific game version. + - `Map> factories()` + - Retrieves a map of supported `PacketFactory` instances keyed by game versions. + - `void initialize()` + - Initializes the packet handler. + - `Optional> factory(String version)` + - Retrieves a `PacketFactory` for a specific game version. ### 2. **PacketFactory** - **Purpose**: Creates and sends specific packet types. - **Interface**: `PacketFactory` - **Supported Packets**: - - **Spawn Packet**: - - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. - - Example Use: Representing shop items visually. - - **Metadata Packet**: - - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. - - Example Use: Updating item display name or properties. - - **Velocity Packet**: - - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. - - Example Use: Custom animations for virtual items. - - **Destroy Packet**: - - Removes the entity from the client view. Created using `createDestroyPacket()`. - - Example Use: Unloading or removing a virtual display item. + - **Spawn Packet**: + - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. + - Example Use: Representing shop items visually. + - **Metadata Packet**: + - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. + - Example Use: Updating item display name or properties. + - **Velocity Packet**: + - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. + - Example Use: Custom animations for virtual items. + - **Destroy Packet**: + - Removes the entity from the client view. Created using `createDestroyPacket()`. + - Example Use: Unloading or removing a virtual display item. Developers implementing custom `PacketFactory` should ensure these packets are correctly handled and optimized for performance. @@ -46,24 +46,24 @@ Developers implementing custom `PacketFactory` should ensure these packets are c - **Purpose**: Oversees the lifecycle of virtual display items and integrates with packet handlers. - **Key Features**: - - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). - - Manages virtual display items mapped to chunks. - - Provides thread-safe operations for adding and removing display items. + - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). + - Manages virtual display items mapped to chunks. + - Provides thread-safe operations for adding and removing display items. ### 4. **VirtualDisplayItem** - **Purpose**: Represents a virtual item displayed to players. - **Key Features**: - - Generates and caches packets for spawning, metadata, velocity, and destruction. - - Manages packet senders for each player. - - Handles spawn and removal operations dynamically. + - Generates and caches packets for spawning, metadata, velocity, and destruction. + - Manages packet senders for each player. + - Handles spawn and removal operations dynamically. ### 5. **ProtocolLibHandler and PacketEventsHandler** - **Purpose**: Provide implementations of `PacketHandler` using ProtocolLib and PacketEvents, respectively. - **Differences**: - - `ProtocolLibHandler` leverages ProtocolLib API. - - `PacketEventsHandler` uses the PacketEvents library. + - `ProtocolLibHandler` leverages ProtocolLib API. + - `PacketEventsHandler` uses the PacketEvents library. --- @@ -140,11 +140,11 @@ public class CustomPacketFactory implements PacketFactory { Packet factories are provided for specific game versions through two primary implementations: - **ProtocolLib**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` - **PacketEvents**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` --- diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md new file mode 100644 index 0000000000..aebc035f87 --- /dev/null +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md @@ -0,0 +1,297 @@ +# Interaction System (Developer Guide) + +The Interaction System allows developers to fully customize how players interact with shops. + +As of 6.2.0.11, the system has been redesigned to be: + +- Modular +- Extensible +- Thread-safe +- Fully customizable by third-party addons + +This guide will walk you through: + +1. What the Interaction System is +2. Getting the `InteractionManager` +3. Understanding `InteractionType` +4. Understanding `InteractionBehavior` +5. Registering custom interactions +6. Best practices + +--- + +# Overview + +The Interaction System is composed of three main components: + +| Component | Purpose | +| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| `InteractionType` | Describes **what kind of click happened** (standing, sneaking, left-click, sign, shopblock, etc.) | +| `InteractionBehavior` | Describes **what action should happen** when that type is triggered | +| `InteractionManager` | Central registry that manages interactions and behaviors | + +This separation allows developers to: + +- Add new click types +- Add new behaviors +- Override existing ones +- Extend QuickShop without modifying core code + +--- + +# Getting the InteractionManager + +To begin registering custom interactions, you must retrieve the `InteractionManager` instance. + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +If you are working directly with the plugin instance: + +```java +InteractionManager manager = QuickShop.getInstance().getInteractionManager(); +``` + +Once obtained, you can: + +- Register new interaction types +- Register new behaviors +- Override existing behaviors + +--- + +# Understanding InteractionType + +`InteractionType` represents **how** a player interacted with a shop. + +Examples include: + +- `STANDING_LEFT_CLICK_SIGN` +- `STANDING_RIGHT_CLICK_SHOPBLOCK` +- `SNEAKING_LEFT_CLICK_CONTAINER` +- etc. + +Each `InteractionType` defines: + +- Player stance (standing/sneaking) +- Click type (left/right) +- Target (sign/shopblock/container) + +InteractionTypes do NOT define behavior — they only define the trigger. + +--- + +# Understanding InteractionBehavior + +`InteractionBehavior` defines **what happens** when an interaction is triggered. + +Examples of built-in behaviors: + +- `TRADE_INTERACTION` +- `TRADE_UI` +- `CONTROL_PANEL` +- `CONTROL_PANEL_UI` +- `NONE` + +A behavior: + +- Executes logic +- May open GUIs +- May send chat panels +- May directly trade items +- Can cancel or modify flow + +This separation makes it easy to reuse behaviors across multiple interaction types. + +--- + +# Registering Custom Interactions + +There are two things you can register: + +- A custom `InteractionType` +- A custom `InteractionBehavior` + +--- + +## Creating a Custom InteractionBehavior + +Create a class implementing `InteractionBehavior`. + +Example: + +```java +public class MyTradeBehavior implements InteractionBehavior { + + @Override + public String getKey() { + return "MY_CUSTOM_TRADE"; + } + + @Override + public void execute(InteractionClick click) { + Player player = click.getPlayer(); + Shop shop = click.getShop(); + + player.sendMessage("You triggered my custom interaction!"); + + // Add your custom logic here + } +} +``` + +Then register it: + +```java +InteractionManager manager = api.getInteractionManager(); +manager.behavior(new MyTradeBehavior()); +``` + +Now your behavior is available for use. + +--- + +## Creating a Custom InteractionType + +You may also register custom interaction types if you want to introduce new trigger definitions. + +Example: + +```java +public class MyCustomInteraction implements InteractionType { + + @Override + public String getKey() { + return "STANDING_DOUBLE_CLICK_SIGN"; + } + + @Override + public boolean matches(InteractionClick click) { + // Define custom logic to detect this interaction + return click.isStanding() + && click.isSign() + && click.isDoubleClick(); + } +} +``` + +Register it: + +```java +manager.interaction(new MyCustomInteraction()); +``` + +--- + +# Binding Types to Behaviors + +The InteractionManager internally maps interaction types to behaviors based on configuration and registration order. + +Once your behavior is registered: + +- It can be referenced in `interaction.yml` +- Or attached programmatically + +Example interaction.yml usage: + +```yaml +STANDING_LEFT_CLICK_SIGN: MY_CUSTOM_TRADE +``` + +--- + +# The InteractionClick Object + +When your behavior executes, you receive an `InteractionClick` object. + +It provides: + +- `getPlayer()` +- `getShop()` +- `getLocation()` +- `isSneaking()` +- `isSign()` +- `isShopBlock()` +- etc. + +This gives full context for safe execution. + +--- + +# Advanced: Overriding Built-in Behavior + +If you register a behavior using the same key as an existing one, your behavior can override the default. + +⚠️ Be careful when doing this — you are replacing core functionality. + +--- + +# Best Practices + +### Always Use Unique Keys + +Avoid naming collisions: + +``` +MYPLUGIN_CUSTOM_BEHAVIOR +``` + +### Keep Behavior Lightweight + +Do not block the main thread with: + +- Heavy database calls +- File IO +- Network calls + +Use async tasks if needed. + +### Respect Permissions + +Always validate: + +```java +if (!player.hasPermission("myplugin.use")) { + return; +} +``` + +### Avoid Hard Overrides Unless Necessary + +Instead of replacing built-in behaviors, consider extending them. + +--- + +# Example: Full Minimal Implementation + +```java +public class ExampleAddon { + + public void register(QuickShopAPI api) { + + InteractionManager manager = api.getInteractionManager(); + + manager.behavior(new MyTradeBehavior()); + manager.interaction(new MyCustomInteraction()); + } +} +``` + +--- + +# Conclusion + +The Interaction System is designed to allow: + +- Full extensibility +- Clean separation of triggers and actions +- Easy integration for third-party developers + +By retrieving the `InteractionManager`: + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +You gain full control over how shops respond to player actions. \ No newline at end of file diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/development/08-tax-manager.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/development/08-tax-manager.md new file mode 100644 index 0000000000..72a56f9e88 --- /dev/null +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/development/08-tax-manager.md @@ -0,0 +1,266 @@ +# Tax System (Developer Guide) + +The QuickShop tax system allows server owners and developers to define how transaction taxes are calculated, distributed, and extended. + +As of 6.2.0.11, the tax system has been fully rewritten to provide: + +- A flexible TaxManager +- Pluggable TaxProvider support +- Progressive taxation +- Tax targeting (shop owner, interacting player, or both) +- Custom extension capability for third-party addons + +This guide explains how to work with the tax system programmatically. + +--- + +# Overview + +The tax system is composed of three core components: + +TaxManager +Responsible for coordinating tax calculation and execution. + +TaxProvider +Defines how tax values are calculated. + +TaxRates +Represents calculated tax results for a transaction. + +The system is designed to allow custom providers to be registered and used without modifying core logic. + +--- + +# Getting the TaxManager + +To work with the tax system, retrieve the TaxManager from the ShopManager. + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +Once obtained, you can: + +- Access current tax configuration +- Register custom tax providers +- Calculate tax values +- Hook into tax events + +--- + +# How the Tax System Works + +During a shop transaction: + +1. A base price is determined. +2. The TaxManager selects the active TaxProvider. +3. The TaxProvider calculates applicable tax. +4. A TaxRates object is produced. +5. The system applies the tax to: + + - Shop owner + - Interacting player + - Or both (depending on configuration) + +This architecture allows tax behavior to be modified without altering transaction logic. + +--- + +# TaxProvider + +A TaxProvider defines how tax values are calculated. + +You may create your own provider to implement: + +- Progressive tax brackets +- Flat percentage tax +- Conditional tax rules +- Region-based tax +- Rank-based tax +- Time-based tax + +Example minimal provider: + +```java +public class MyCustomTaxProvider implements TaxProvider { + + @Override + public TaxRates calculateTax(TaxContext context) { + + double basePrice = context.getPrice(); + + double taxAmount = basePrice * 0.05; // 5% flat tax + + return new TaxRates() + .ownerTax(taxAmount) + .buyerTax(0.0); + } +} +``` + +Then register it: + +```java +taxManager.provider(new MyCustomTaxProvider()); +``` + +Once registered, your provider will be used for tax calculations. + +--- + +# TaxRates + +TaxRates represents the result of a tax calculation. + +It typically contains: + +- Owner tax amount +- Buyer tax amount +- Total tax impact +- Metadata (if applicable) + +The transaction system will read from TaxRates and apply deductions accordingly. + +--- + +# Progressive Taxation + +The built-in system supports progressive tax structures. + +This allows server administrators to tax based on: + +- Player balance +- Shop owner balance +- Configured tax brackets + +Example configuration concept: + +- 0–10,000 balance → 1% tax +- 10,000–100,000 → 2% tax +- 100,000+ → 3% tax + +Developers can extend or override this logic inside a custom TaxProvider. + +--- + +# Targeting Tax + +The new tax system allows taxes to be applied to: + +- Shop owner +- Interacting player +- Both + +This is controlled via configuration, but custom providers can override distribution logic by adjusting TaxRates output. + +Example: + +```java +return new TaxRates() + .ownerTax(basePrice * 0.02) + .buyerTax(basePrice * 0.01); +``` + +--- + +# Registering a Custom TaxProvider + +To replace or extend tax logic: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); + +taxManager.provider(new MyCustomTaxProvider()); +``` + +You may register only one primary provider at a time. If multiple providers are needed, implement internal delegation within your custom provider. + +--- + +# Tax Events + +The tax system integrates with the event system. + +The modern event used is: + +ShopEnhancedTaxEvent + +This replaces legacy tax events and provides improved context, including: + +- Transaction builder reference +- TaxRates object +- Modification capability before final execution + +You can listen for the event and modify tax behavior dynamically: + +```java +@EventHandler +public void onTax(ShopEnhancedTaxEvent event) { + + TaxRates rates = event.getTaxRates(); + + // Example: Give VIP players reduced owner tax + if (event.getOwner().hasPermission("vip.tax.discount")) { + rates.ownerTax(rates.getOwnerTax() * 0.5); + } +} +``` + +--- + +# Best Practices + +Always keep tax calculations lightweight. + +Avoid: + +- Heavy database queries inside calculateTax +- Blocking network calls +- Long-running computations + +If complex logic is required, pre-cache required data outside the tax execution path. + +Ensure negative tax values are not returned unless intentional. + +Always validate final amounts before applying modifications. + +Respect configuration hierarchy unless intentionally overriding it. + +--- + +# Example Full Implementation + +```java +public class ExampleTaxAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + TaxManager taxManager = manager.taxManager(); + + taxManager.provider(new MyCustomTaxProvider()); + } +} +``` + +--- + +# Conclusion + +The new tax system is designed for: + +- Flexibility +- Extensibility +- Clean separation of concerns +- Future expansion + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +You gain full control over how QuickShop calculates and applies tax during transactions. \ No newline at end of file diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/development/09-layout-provider.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/development/09-layout-provider.md new file mode 100644 index 0000000000..55e3cd3e91 --- /dev/null +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/development/09-layout-provider.md @@ -0,0 +1,275 @@ +# Shop Layout Provider (Developer Guide) + +The Shop Layout Provider system allows developers to customize how shop signs are structured and rendered. + +As of 6.2.0.11, shop layouts are no longer hardcoded. Instead, they are controlled through the `IShopLayoutProvider` interface, which allows: + +- Custom sign line ordering +- Per-shop-type layouts (BUYING, SELLING, FROZEN, or custom types) +- Dynamic layout resolution +- Complete replacement of the default layout system + +This guide explains how to access, override, and implement a custom layout provider. + +--- + +# Overview + +The layout provider controls how shop sign lines are arranged. + +Instead of hardcoding: + +Line 1 → Header +Line 2 → Trading info +Line 3 → Item +Line 4 → Price + +The system now allows full customization through: + +- Config-based layout definitions +- Custom `IShopLayoutProvider` implementations +- Runtime overrides + +The default implementation is `SimpleShopLayoutProvider`. + +--- + +# Accessing the Layout Provider + +To retrieve the current layout provider: + +```java +ShopManager manager = api.getShopManager(); +IShopLayoutProvider provider = manager.shopLayoutProvider(); +``` + +To replace the layout provider with a custom one: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Once replaced, your implementation will control how shop layouts are generated. + +--- + +# Understanding IShopLayoutProvider + +`IShopLayoutProvider` defines how layout data is retrieved and resolved. + +It is responsible for: + +- Providing layout configuration per shop type +- Determining which layout to use +- Supplying formatted line keys +- Allowing future extensibility + +The default implementation reads layout definitions from configuration and applies them based on shop type. + +--- + +# Default Layout Example + +The default configuration-based layout looks like this: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +Each line maps to a layout component key. + +An empty string (`""`) leaves that line blank. + +The layout provider resolves these keys into actual sign content. + +--- + +# Creating a Custom Layout Provider + +To override the default behavior, implement `IShopLayoutProvider`. + +Example minimal implementation: + +```java +public class MyCustomLayoutProvider implements IShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + + ShopLayout layout = new ShopLayout(); + + layout.setLine(1, "Custom Header"); + layout.setLine(2, "Owner: " + shop.getOwnerName()); + layout.setLine(3, shop.getItem().getType().name()); + layout.setLine(4, "$" + shop.getPrice()); + + return layout; + } +} +``` + +Then register it: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Your layout will now control all shop sign formatting. + +--- + +# Per-Type Layout Control + +Because the system no longer depends on the legacy ShopType enum, layouts can support: + +- Built-in types (BUYING, SELLING, FROZEN) +- Custom shop types +- Addon-defined shop types + +Your provider can determine layout logic dynamically: + +```java +@Override +public ShopLayout provideLayout(Shop shop) { + + if (shop.getShopType().key().equals("FROZEN")) { + return frozenLayout(shop); + } + + return defaultLayout(shop); +} +``` + +This allows conditional formatting, localization adjustments, or special event styling. + +--- + +# Advanced Customization + +A custom layout provider can: + +- Pull data from external plugins +- Inject dynamic placeholders +- Modify layout per player +- Apply formatting logic +- Override color schemes +- Apply region-based formatting +- Implement animated sign systems + +Because the layout provider is resolved at runtime, you can compute layouts dynamically instead of reading static config. + +--- + +# Replacing vs Extending the Default Provider + +You have two options: + +Replace entirely: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Or extend the default implementation: + +```java +public class ExtendedLayoutProvider extends SimpleShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + ShopLayout base = super.provideLayout(shop); + + base.setLine(1, "[Extended] " + base.getLine(1)); + + return base; + } +} +``` + +Extending is safer if you only want to modify small portions. + +--- + +# Best Practices + +Keep layout generation lightweight. + +Avoid: + +- Heavy database queries +- Blocking IO +- Complex network calls + +Layout generation runs during shop updates and sign refresh events. + +Always handle null values safely. + +Ensure layout line count does not exceed sign limits. + +Avoid hardcoding shop type names unless necessary. + +If your layout supports custom shop types, validate their keys properly. + +--- + +# Example Full Registration + +```java +public class LayoutAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + + manager.shopLayoutProvider(new MyCustomLayoutProvider()); + } +} +``` + +--- + +# Conclusion + +The Shop Layout Provider system allows complete control over shop sign structure. + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +``` + +And setting: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +You can redefine how every shop is displayed on the server. + +This system was designed to support: + +- Extensibility +- Custom shop types +- Localization +- Dynamic formatting +- Future expansion \ No newline at end of file diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/faq/compare-reremake.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/faq/compare-reremake.md index aaa1a9e507..6b39f02520 100644 --- a/i18n/ja-JP/docusaurus-plugin-content-docs/current/faq/compare-reremake.md +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/faq/compare-reremake.md @@ -64,7 +64,7 @@ If you are a Reremake user, you may be confused about the differences between Hi ## Which one should I use? Well, it depends on what your needs are.\ -If you have an old server (<1.20) instance, Reremake is your only choice.\ +If you have an old server ({'<'}1.20) instance, Reremake is your only choice.\ ~~If you are in China which has GFW interfere, you also should consider Reremake because it doesn't need to load libraries from Global Internet.~~ Solved in 6.0.0.0. If none of these applies, give Hikari a try! diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md index 551f579e7c..172be3a69b 100644 --- a/i18n/ja-JP/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md @@ -1,8 +1,8 @@ # Where Addons/Compacts is -Addons and Compatilibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. +Addons and Compatibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. -- Open Modrinth versions page, locate the version your're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) +- Open Modrinth versions page, locate the version you're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) - Frantically slide your mouse wheel down until the lowest end of the page. - You get it! diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/internal/database-schema.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/internal/database-schema.md index fea685e4fc..45e04adb56 100644 --- a/i18n/ja-JP/docusaurus-plugin-content-docs/current/internal/database-schema.md +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/internal/database-schema.md @@ -4,17 +4,17 @@ This chapter will explain the implementation details of QuickShop Hikari's datab ## Tables -This section explains the database tables created by QuickShop-Hikari.\ -Unless otherwise specified, the initial `qs_` in table name is the table prefix.\ +This section explains the database tables created by QuickShop-Hikari. +Unless otherwise specified, the initial `qs_` in table name is the table prefix. For the latest code definition for each table, see: [DataTables.java](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/hikari/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/database/DataTables.java) ### `data` -This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information.\ -No matter what, a data record should not be modified after it is created, until it got deleted.\ +This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information. +No matter what, a data record should not be modified after it is created, until it got deleted. Any new changes to the shop should create a new copy, apply the changes to the copy, and insert it as a new record. -Basiclly, Copy-on-write. +Basically, Copy-on-write. A data record only be deleted from the database when no any table references their `data_id`. @@ -29,7 +29,7 @@ A data record only be deleted from the database when no any table references the | unlimited | BIT NOT NULL | 0 | Indicates whether this store is an unlimited store, 0=Limited, 1=Unlimited | | hologram | BIT NOT NULL | 0 | Indicates the suspension status of this store's display item, 0=Follow global settings, 1=Disabled | | tax_account | VARCHAR(36) | NULL | The uuid for tax account, If it is not NULL, tax will be paid to the specified account | -| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serilized to JSON string | +| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serialized to JSON string | | extra | LONGTEXT | Empty Yaml | Used to store experimental settings of QuickShop Hikari or persistent data of other plugins | | inv_wrapper | VARCHAR(255) NOT NULL | N/A | Unique identifier for InventoryWrapper for this shop data entry | | inv_symbol_link | TEXT NOT NULL | N/A | Unique Inventory symbol used to pass to InventoryWrapper, for locating inventory | @@ -38,7 +38,7 @@ A data record only be deleted from the database when no any table references the ### `shops` -This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes.\ +This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes. Multiple `shop_id` can correspond to the same `data_id`. | Column Name | DataType | Default | Description | diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/modules/cmd-alias.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/modules/cmd-alias.md index 53f1577685..e6ed381c0d 100644 --- a/i18n/ja-JP/docusaurus-plugin-content-docs/current/modules/cmd-alias.md +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/modules/cmd-alias.md @@ -23,7 +23,7 @@ custom-commands: - cshop ``` -Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect.\ +Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect. The effect should be like this: ![command-alias](./img/command-alias.png) diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/modules/datasource.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/modules/datasource.md index 6fc1bd8931..3fd3a8bdee 100644 --- a/i18n/ja-JP/docusaurus-plugin-content-docs/current/modules/datasource.md +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/modules/datasource.md @@ -48,7 +48,7 @@ Execute the `/quickshop export` command in console, quickshop will export a zip ![exported data](img/database-export.png) -Stop your database, switch the datasource, and start the server.\ +Stop your database, switch the datasource, and start the server. You may noticed all shops are gone, because new datasources had no data inside, we will restore them from export. Rename that exported ZIP file to `recovery.zip`, execute `/quickshop recovery` and restart your server, all shops should back. diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/modules/itemmatcher.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/modules/itemmatcher.md index 56be243019..922907be27 100644 --- a/i18n/ja-JP/docusaurus-plugin-content-docs/current/modules/itemmatcher.md +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/modules/itemmatcher.md @@ -4,7 +4,7 @@ ItemMatcher is a utility used by QuickShop-Hikari to compare the items, it is th :::caution -If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse.\ +If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse. **TL;DR: Keep default unless you know what you're doing.** ::: @@ -26,10 +26,10 @@ matcher: work-type: 1 ``` -By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility.\ +By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility. But still, you can toggle to QuickShop Item Matcher if you need to customize the comparing or running QuickShop on the server jar which have bug affect the Bukkit comparing system. -## Customize the metadata compareing +## Customize the metadata comparing Customize only works under QuickShop Item Matcher. diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md index fc2af69d2b..d04e8f2783 100644 --- a/i18n/ja-JP/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md @@ -4,7 +4,7 @@ ItemStack Loader is a workaround for loading the Bukkit ItemStack. :::caution -Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossble. +Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossible. ::: diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/modules/localization.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/modules/localization.md index e9121e1a36..d47589ab9a 100644 --- a/i18n/ja-JP/docusaurus-plugin-content-docs/current/modules/localization.md +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/modules/localization.md @@ -10,7 +10,7 @@ To help translate QuickShop-Hikari, please visit our [Crowdin Homepage](https:// ## Crowdin OTA -QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will overrided when you reload QuickShop-Hikari or restart your server. +QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will override when you reload QuickShop-Hikari or restart your server. Your installation will keep translations up-to-date without any touch. @@ -110,6 +110,16 @@ To disable the CrowdinOTA, please add it in the startup flag: -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager.enableCrowdinOTA=false ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +use-crowdin-ota: false +``` + ### Self-Hosted OTA Server If you self-hosted our translation server by using [CrowdinCopyDeploy](https://github.com/Ghost-chu/CrowdinCopyDeploy) tool, you're able to change the OTA server to yourself server. @@ -118,4 +128,12 @@ If you self-hosted our translation server by using [CrowdinCopyDeploy](https://g -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager= ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml +Use + +```yaml +crowdin-host: +``` \ No newline at end of file diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/modules/shops/benefit.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/modules/shops/benefit.md index 4d7a9c8f42..c59d92e6d1 100644 --- a/i18n/ja-JP/docusaurus-plugin-content-docs/current/modules/shops/benefit.md +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/modules/shops/benefit.md @@ -37,3 +37,13 @@ By default, for security, QuickShop-Hikari disallow add offline players into sho ```bash -Dcom.ghostchu.quickshop.command.subcommand.SubCommand_Benefit.allowOffline=true ``` + +### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +shop.allow-offline-benefit: true +``` \ No newline at end of file diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/modules/shops/control-panel b/i18n/ja-JP/docusaurus-plugin-content-docs/current/modules/shops/control-panel new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/modules/shops/control-panel @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/modules/shops/history.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/modules/shops/history.md index fa891adeab..195b64a042 100644 --- a/i18n/ja-JP/docusaurus-plugin-content-docs/current/modules/shops/history.md +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/modules/shops/history.md @@ -24,7 +24,7 @@ The History GUI displays the details of each recorded transaction and other usef ### Transaction details -When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed.\ +When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed. If you are checking the history of more than one store, the player head will be replaced with an item from the corresponding store. ![history-gui](./img/history-gui.png) diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md new file mode 100644 index 0000000000..c5ed3b3fe4 --- /dev/null +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md @@ -0,0 +1,90 @@ +# Shop Types + +QuickShop supports multiple shop types, allowing shops to behave differently depending on their mode. + +The built-in shop types are: + +- Selling +- Buying +- Frozen + +Each type changes how the shop interacts with players. + +--- + +## Selling Shop + +A Selling shop allows players to: + +- Buy items from the shop owner +- Pay money to receive items + +This is the most common shop type. + +--- + +## Buying Shop + +A Buying shop allows players to: + +- Sell items to the shop owner +- Receive money in exchange + +This is commonly used for: + +- Resource collection +- Server buy-back shops +- Automated material sinks + +--- + +## Frozen Shop + +A Frozen shop temporarily disables trading. + +While frozen: + +- No buying is allowed +- No selling is allowed +- The shop remains intact +- Staff or admins can manage it + +This is useful for: + +- Temporary suspensions +- Investigation +- Event locking +- Maintenance + +--- + +## Switching Shop Types + +Shop types can be changed through: + +- Control panel +- GUI control panel +- Admin commands + +Frozen mode is also available via: + +/qs freeze + +--- + +## Custom Shop Types + +As of 6.2.x, the system supports extensible shop types internally. + +While server owners use the built-in types, the system now allows future expansion through addons. + +--- + +## Summary + +Shop types allow you to: + +- Control how money flows +- Enable buy-back mechanics +- Temporarily disable shops +- Build advanced economic systems \ No newline at end of file diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md new file mode 100644 index 0000000000..18e0a47407 --- /dev/null +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md @@ -0,0 +1,217 @@ +# Sign Layout + +QuickShop allows you to fully customize how shop signs are structured. + +You can change: + +- What appears on each line +- The order of information +- Layout per shop type +- Whether certain lines are blank + +This gives you complete control over how shops look on your server. + +--- + +## How Sign Layout Works + +Shop signs have four lines. + +Instead of being hardcoded, QuickShop uses a configurable layout system. + +Each shop type can have its own layout: + +- SELLING +- BUYING +- FROZEN + +You define what each line displays using layout keys. + +--- + +## Configuration Location + +Sign layout is configured in `config.yml` under: + +```yaml +layout: +``` + +Example default configuration: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## Available Layout Keys + +Each line value refers to a built-in layout component. + +Common layout keys include: + +- `header` – The shop header line +- `trading` – Buy/Sell direction information +- `item` – Item name +- `price` – Shop price + +These keys are automatically formatted using your language file and formatting settings. + +--- + +## Leaving a Line Blank + +To leave a line empty, use: + +```yaml +line2: "" +``` + +This is useful if you want: + +- Minimalist signs +- Cleaner layouts +- Custom spacing +- Decorative formatting + +--- + +## Customizing Per Shop Type + +Each shop type can have a different layout. + +For example: + +```yaml +layout: + + SELLING: + line1: "header" + line2: "item" + line3: "price" + line4: "" + + BUYING: + line1: "header" + line2: "price" + line3: "item" + line4: "" + + FROZEN: + line1: "header" + line2: "" + line3: "item" + line4: "Frozen" +``` + +This allows you to visually differentiate: + +- Selling shops +- Buying shops +- Frozen shops + +--- + +## Practical Examples + +### Minimal Style + +```yaml +layout: + SELLING: + line1: "item" + line2: "price" + line3: "" + line4: "" +``` + +### Compact Economy Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "price" + line3: "item" + line4: "" +``` + +### Large Clear Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## How Updates Affect Layout + +When you change the layout: + +- Existing shop signs will update automatically when refreshed. +- New shops will use the updated format immediately. + +If needed, you can reload QuickShop to apply changes. + +--- + +## Best Practices + +- Keep important information visible (price and item). +- Avoid overly complex formatting. +- Test layout changes before deploying on large servers. +- Use different layouts for BUYING and SELLING to reduce confusion. + +--- + +## Common Questions + +### Can I add more than four lines? + +No. +Minecraft signs are limited to four lines. + +### Can I add colors? + +Colors are controlled by your language file and formatting settings. + +### Can I change layout without restarting? + +Yes, but reloading or refreshing shops is recommended to ensure full update. + +--- + +## Summary + +The Sign Layout system allows you to: + +- Fully customize shop sign appearance +- Create per-type layouts +- Simplify or expand shop information +- Improve clarity for players + +All layout customization is handled inside `config.yml`. diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md new file mode 100644 index 0000000000..980bad10f2 --- /dev/null +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md @@ -0,0 +1,130 @@ +# Shop Sign Waxing + +QuickShop can automatically wax shop signs to prevent players from editing them manually. + +Waxing protects the integrity of your shop signs and helps prevent tampering, spoofing, and accidental modification. + +As of modern Minecraft versions, waxed signs cannot be edited unless they are unwaxed first. + +--- + +## What Is Sign Waxing? + +In Minecraft, waxing a sign locks it so that: + +- Players cannot edit the text +- Players cannot modify lines +- Accidental changes are prevented +- Malicious edits are blocked + +When enabled in QuickShop, shop signs are automatically waxed when created. + +--- + +## Why Use It? + +Sign waxing protects against: + +- Players editing price lines +- Changing item names on signs +- Spoofing shop information +- Accidental formatting issues +- Sign hijacking attempts + +On public servers, this feature is strongly recommended. + +--- + +## How It Works + +When a shop is created: + +1. QuickShop generates the shop sign. +2. The sign text is written. +3. The sign is automatically waxed (if enabled). + +If a shop is updated: + +- The sign will be safely updated by QuickShop. +- The wax state is maintained. + +Players cannot manually edit shop signs while waxing is enabled. + +--- + +## Configuration + +To enable or disable sign waxing, edit `config.yml`: + +```yaml +shop: + sign-wax: true +``` + +### true + +- Shop signs are automatically waxed. +- Players cannot edit the sign manually. + +### false + +- Shop signs behave like normal Minecraft signs. +- Players may edit them if permitted by the game. + +--- + +## Recommended Setting + +For most servers: + +```yaml +shop: + sign-wax: true +``` + +This ensures shop data stays accurate and secure. + +--- + +## Common Questions + +### Can admins still modify shop signs? + +QuickShop controls shop sign formatting. +Manual edits are not recommended. + +Admins should use: + +- Control panel +- Shop commands +- Direct configuration changes + +### Does waxing affect shop functionality? + +No. +Waxing only prevents manual text edits. +The shop continues to function normally. + +### Can players un-wax shop signs? + +No. +QuickShop manages the sign state automatically. + +--- + +## Best Practices + +- Keep sign-wax enabled on survival servers. +- Combine sign-wax with proper permissions. +- Avoid manually editing shop signs through other plugins. + +--- + +## Summary + +Sign Waxing: + +- Prevents tampering +- Requires no additional setup + +Enable it once and QuickShop handles the rest. \ No newline at end of file diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/modules/shops/taxes.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/modules/shops/taxes.md new file mode 100644 index 0000000000..1a273fd978 --- /dev/null +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/modules/shops/taxes.md @@ -0,0 +1,92 @@ +# Taxation System + +QuickShop includes a taxation system designed to give server owners more flexibility and control over shop-based income. + +This system was revamped as of 6.2.0.11+ + +The new system allows you to: + +- Apply tax to shop owners +- Apply tax to buyers +- Apply tax to both +- Use progressive tax brackets +- Customize tax behavior in configuration + +This system replaces the legacy tax configuration. + +--- + +## How It Works + +During a transaction: + +1. The shop price is calculated. +2. Tax is calculated based on your configuration. +3. Tax is deducted from the configured target(s). +4. Remaining funds are distributed normally. + +You can configure: + +- Flat percentage tax +- Progressive tax based on player balance +- Tax accounts +- Distribution rules + +--- + +## Progressive Tax + +The new system allows you to tax based on balance brackets. + +Example concept: + +- 0 – 10,000 balance → 1% tax +- 10,000 – 100,000 → 2% tax +- 100,000+ → 3% tax + +This helps prevent extremely wealthy players from dominating the economy. + +--- + +## Who Pays the Tax? + +You can configure whether tax applies to: + +- The shop owner +- The buyer +- Both + +This gives you flexibility depending on your economy design. + +--- + +## Configuration + +All tax-related settings are located under the `shop-tax` section in `config.yml`. + +After updating to 6.2.0.11+, review your tax configuration carefully, as the old tax system has been replaced. + +--- + +## Why Use Tax? + +The taxation system can help: + +- Remove currency from circulation +- Fund server banks or towns +- Create sink mechanics +- Balance inflation +- Reward active players + +--- + +## Summary + +The new taxation system is: + +- Flexible +- Configurable +- Balance-aware +- Designed for modern economy servers + +Make sure to review your configuration after upgrading. \ No newline at end of file diff --git a/i18n/ja-JP/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md b/i18n/ja-JP/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md new file mode 100644 index 0000000000..247c24712d --- /dev/null +++ b/i18n/ja-JP/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md @@ -0,0 +1,161 @@ +# WorldEdit & FAWE Support + +QuickShop includes built-in protection and integration for WorldEdit and FastAsyncWorldEdit (FAWE). + +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. + +You do not need to download or install any additional compatibility plugins. + +--- + +## What This Does + +WorldEdit and FAWE allow administrators and builders to: + +- Copy and paste regions +- Replace large areas of blocks +- Mass-delete regions +- Roll back areas +- Regenerate terrain + +Without protection, these operations could: + +- Create ghost shops +- Leave orphaned shop data in the database +- Duplicate shops unintentionally +- Delete containers without cleaning up shop data +- Cause inconsistencies between world and database + +QuickShop now automatically detects and safely processes WorldEdit and FAWE operations. + +--- + +## Built-In Behavior + +When WorldEdit or FAWE modifies blocks: + +- Shops removed via WorldEdit are properly deleted from the database. +- Shop data stays synchronized with world changes. +- Ghost shops are prevented. +- Mass block replacements will not leave broken shop entries behind. + +This applies to: + +- //set +- //replace +- //cut +- //paste +- //regen +- Region deletion +- Mass container removal + +No configuration is required. + +--- + +## FAWE Support + +FastAsyncWorldEdit (FAWE) is fully supported. + +Because FAWE processes edits asynchronously, QuickShop handles: + +- Region-thread safe processing +- Async block updates +- Safe shop deletion during batch edits + +You do not need to enable anything manually. + +--- + +## Removing Shops with WorldEdit + +If you delete containers (chests, barrels, etc.) using WorldEdit: + +QuickShop will automatically: + +- Detect the block removal +- Unregister the shop +- Clean the database entry +- Prevent ghost shops + +You do not need to run `/qs cleanghost` after WorldEdit usage in normal circumstances. + +--- + +## Copying and Pasting Shops + +If you copy and paste regions that contain shops: + +- Shop data will not duplicate incorrectly. +- Shop IDs remain consistent. +- Invalid pasted shops will not auto-register unless properly created. + +This prevents accidental duplication exploits. + +--- + +## Performance + +WorldEdit and FAWE operations can modify thousands of blocks at once. + +QuickShop processes these safely and efficiently: + +- Batch-aware cleanup +- Thread-safe region access (especially on Folia) +- Minimal performance impact during mass edits + +--- + +## Configuration + +There are no specific WorldEdit configuration options in QuickShop. + +Support is automatic and always enabled if WorldEdit or FAWE is detected. + +If WorldEdit is not installed, no extra code is executed. + +--- + +## Common Questions + +### Do I need the old WorldEdit compatibility jar? + +No. + +As of 6.2.0.11, WorldEdit support is built-in and the separate compatibility module has been removed. + +### Does this work with FAWE? + +Yes. FAWE is fully supported. + +### Will shops break if I use //set air? + +No. Shops will be safely removed and cleaned up. + +### Do I need to restart after installing WorldEdit? + +No. QuickShop detects WorldEdit automatically on startup. + +--- + +## Best Practices + +Even though QuickShop safely handles WorldEdit operations, it is recommended to: + +- Avoid copying shops intentionally unless required +- Use backups before large region edits +- Test large FAWE operations on staging servers when possible + +--- + +## Summary + +QuickShop’s built-in WorldEdit and FAWE integration ensures: + +- Safe mass edits +- No ghost shops +- Automatic database cleanup +- Thread-safe processing +- No extra modules required + +WorldEdit support is now a core feature of QuickShop. \ No newline at end of file diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/addon/limited.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/addon/limited.md index 70af27e240..fae55a8c95 100644 --- a/i18n/ko-KR/docusaurus-plugin-content-docs/current/addon/limited.md +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/addon/limited.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -41,8 +35,8 @@ Limit players to purchase up to 16 items per month. /quickshop limit period MONTH ``` -The system is based on the QuickShop-Hikari calendar system.\ -The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year.\ +The system is based on the QuickShop-Hikari calendar system. +The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year. Same for days, months and hours. Available time units: diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/addon/list.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/addon/list.md index 93d182f083..f20b91fd7b 100644 --- a/i18n/ko-KR/docusaurus-plugin-content-docs/current/addon/list.md +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/addon/list.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/addon/plan.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/addon/plan.md index 52a6e79cb4..c10ef4df42 100644 --- a/i18n/ko-KR/docusaurus-plugin-content-docs/current/addon/plan.md +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/addon/plan.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -18,7 +18,7 @@ Recorded data can be displayed from Hikari v2.0.0.0 onwards, but only after vers - All shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 1000 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `5` in server scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `5` in server scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Player Scope @@ -27,7 +27,7 @@ And still is Plan limitations, the list sorting is disturbed, so the display ord - All owned shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 50 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `4` in player scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `4` in player scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Showcase diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/addon/reforges.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/addon/reforges.md index 2a14509eb7..25fff1752a 100644 --- a/i18n/ko-KR/docusaurus-plugin-content-docs/current/addon/reforges.md +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/addon/reforges.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.0.0.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md index 304d39bc05..6f9f51d250 100644 --- a/i18n/ko-KR/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.1.1.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -44,7 +38,7 @@ _This is not necessary if you are using an H2 database._ ### Prepare for convert -To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console.\ +To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console. If a player is in the server, the conversion cannot be started. Once the conversion has begun, the server will be locked during the conversion process and no players will be able to join the server during the conversion. diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/addon/shopitemonly.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/addon/shopitemonly.md index c45062f8c2..1ccfe977b3 100644 --- a/i18n/ko-KR/docusaurus-plugin-content-docs/current/addon/shopitemonly.md +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/addon/shopitemonly.md @@ -2,17 +2,11 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT - -::: - -This addon prevents players from putting non-store items into store containers.\ +This addon prevents players from putting non-store items into store containers. Does not apply to stores that use the item inventory redirection API (aka. InventoryWrapper API). This Addon will check for container (or transferring) items on events such as the player closing the container or hopper access. diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md new file mode 100644 index 0000000000..9c8b4f7407 --- /dev/null +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md @@ -0,0 +1,55 @@ +# 6.2.0.10 + +## Major Changes + +- Added support for 1.21.6 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.7 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.8 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Some internal updates for packetevents(2.9.0 is now required.) +- Updated Lands support + +## Addon Changes + +- Added MatcherPlus Addon + - Allows support for BreweryX and AdvancedItems stacks in shops with improved matching abilities +- Added FabledSkyblock Compat +- Added Dominion Compat +- Added HuskTowns Compat +- Added IridiumSkyblock Compat +- Added member-create for member creation in ARM compat +- Added admin-override and quickshop.arm.admin permission for admin overrides in ARM + +## Minor Changes + +- Added configurations for the coordinates of the display item. +- Added /qs toggledisplayall on/off server/owned + - Players need to have permission node quickshop.toggledisplayall.admin to toggle all on the server. +- Added ability to use abbreviations in /qs price and /qs create commands such as 2.5k for 2500 +- Added ability to set default display status using shop.default-display in config.yml + +## Fixes + +- Fixed issue with display item being sent to the moon on 1.21.5 +- Fixed issue where TRADE_UI interactions interfered with quick create. +- Fixed issue with displays on protocollib falling through the chest +- Fixed issue with signs on .9 and previous .10 snapshots on early versions +- Implemented some performance improvements for paper servers +- Fixed all outstanding issues with Folia usage.(thanks to RootB33R/SleazLee for contributions) + +## Possible 6.2.0.11 Features + +Here's an outline for some features that may arrive in 6.2.0.11: + +- Additional compats/addons that have been piling up. + - see: https://github.com/QuickShop-Community/QuickShop-Hikari/issues/1756 +- gradle?(interested to see compilation time uplifts) +- Update documentation +- Update configuration comments +- Update configuration system? + - auto updating? + - Allows removal of the update code +- Remove waste spigot modules? + - Any versions of 1.20 that can be discarded due to low use? +- Bug fixing, of course +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... \ No newline at end of file diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md new file mode 100644 index 0000000000..b41c88662a --- /dev/null +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md @@ -0,0 +1,173 @@ +## Outline + +- Update documentation +- Update configuration comments +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... + +# 6.2.0.11 + +## Major Changes + +- Removed Spigot Platform Modules, and stopped loading QS if Spigot is detected. This will mean that unless the protocol changes that we use for display items, QS won't need updated for each version. +- Revamped Economy Code Completely + - New classes for all economy-related systems + - Any economy-related or benefits-related events are incompatible with previous versions. +- Added sign layout customizations per-type allowing you to change how lines are configured, an empty string('') will leave an empty line for that line of the sign. + +``` + #The layout of signs for shops. + layout: + + #The layout of BUYING shops. + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of FROZEN shops. + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of SELLING shops. + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +- Add wildcard support for item blacklist patterns(thanks to bennycallanan) + - Added support for wildcard patterns in the item blacklist configuration, allowing users to block entire categories of items with simple patterns. + + - Features + - Wildcard patterns like \*_AXE and \*_SPAWN_EGG now work in blacklist configuration + - Supports \* for any characters and ? for single character matching + - Case-insensitive pattern matching +- Overhauled GUI system(thanks to Yusakidev) + - Implemented gui.yml configuration file for customizing the GUI. + - Implemented better filtering for qs browse + - Implement GUI system to be more stable, and less error prone. + - Added gui.yml for fully configurable GUI layouts and text + - Browse menu: search, sort (price/name/stock), and filter (all/buying/selling/in-stock) + - Staff menu: search functionality for player/staff selection + - Grouped item pages for better shop browsing + - Refactored all menu pages to use configurable display/lore +- Added worldedit compat to QS internally as it's widely used. +- Revamped the taxation system to be more flexible and easier to configure. + - introduced a new progressive tax system that allows you to tax based on the balance of players.(suggested by YuanYuanOwO) + - introduced the ability to tax the player interacting with the shop, the owner, or both + - all tax-related configurations have been moved under the shop-tax section of the config. this may require reconfiguration of your tax settings. + - added a new ShopEnhancedTaxEvent, deprecated the old ShopTaxEvent. + - Added a new TaxManager, and TaxProvider interfaces, this allows for custom tax providers to be added by addons/third-party developers. + +## Addons/Compats Changes + +- Added UltimateClaims compat +- Added SimpleClaimSystem compat +- Added Quests by Pika addon +- Added BetonQuest addon +- Added Pl3xMap addon +- MatcherPlus Compat Improvements + - Added support for CrazyCrates + - Added support for ExcellentCrates + - Added support for SilkSpawners. +- WorldGuard Compat Improvements(Thanks to golovin12) + - Added clear permission handling: + - Region owners and members automatically have permission to create and trade in their own regions. + - Other players must have the appropriate WorldGuard flags enabled (quickshophikari-create, quickshophikari-trade) to interact with shops. + - If a shop is located outside any region, default QuickShop behavior applies (no extra restrictions) +- Added colored markers based on shop state for bluemap(thanks to YusakiDev) +- Updated dynmap/towny addons to use the new ShopTypeEnhancedEvent instead of ShopTypeEvent. +- Removed worldedit compat, it's now included in the main plugin. +- Added support for global flags to the worldguard compat. + +## Internals/Developer APIs + +- Removed several deprecated methods and classes. +- Revamped the interaction manager. It is now more flexible and allows external additions + - This involves two classes InteractionBehavior and InteractionType. + - InteractionType details the type of interaction such as: STANDING_LEFT_CLICK_SIGN, STANDING_LEFT_CLICK_SHOP + - InteractionBehavior outlines a behavior for an InteractionType such as CONTROL_PANEL and TRADE_UI +- Added UserLimitCalculationEvent, which allows for custom limits to be applied to users. + - This is useful for limiting the number of shops a user can have, or adding on to the existing limits provided by the ranks system without needing to implement a new RankLimiter. +- Added a new ShopLayoutProvider interface, and default implementation. + - This allows for custom layouts to be used for shops, allowing for more customization. + - This also allows for developers to override the default layout provider and create their own implementation. +- How to make your own? + - Implement the classes you would like to then register with the InteractionManager: + - ```java + InteractionManager manager = QuickShop.getInstance().getInteractionManager(); + + manager.interaction(new MyTradeInteraction()); + manager.behavior(new MyTradeBehavior()); + ``` +- Replaced some Apache Commons calls that could be easily replaced with built-in java methods, reduces some calls by ~ 1100ms/method call +- Deprecated the ShopType enum, and the ShopTypeEvent. These are replaced with the new IShopType interface and implementing classes. + - The new event is ShopTypeEnhancedEvent. + - This allows for third-party addons to add their own shop types, and simplifies code checks for translations. +- Updated config system to use Boosted-yaml + - this allows for auto-updating of config files without complex update scripts + - this also allows for the config system to not be minecraft-dependent. +- Replaced logical PaperLib calls with native PaperAPI calls. + +## Minor Changes + +- Bump Java version up to 21 +- Added shop.display-allow-enchants to enable/disable enchantments for display items on shops. +- Added workaround for packetevents not supporting custom enchants on itemstacks for virtual display items. +- Using locale translations for shop-type in mode toggle icon(thanks to ExyiN) +- Bumped Residence version for the compat(thanks to YuanYuanOwO) +- add world whitelist support(thanks to wling-art) +- added /qs database save command, which saves all currently dirty-marked shops to the database. +- Split up interactions _SHOPBLOCK into _SHOPBLOCK and _CONTAINER. + - _SHOPBLOCK relates to shops, where _CONTAINER relates to shop-valid containers that are not currently shops. +- Added inventory as an option for command panel, this is useful for adding a secondary option for players to open a shop's inventory. +- Moved crowdin arguments from system properties to config.yml + - crowdin-host + - use-crowdin-ota + +## Fixes + +- Fixes issue with item price restrictions(thanks to maxcom1) +- Fixes issue with 1.20.x protocol lib displays(thanks to YuanYuanOwO) +- Fixes issue when no item is in hand for itemdebug(thanks to YuanYuanOwO) +- Fixes issue with dominion addon(thanks to YuanYuanOwO) +- Add a simple check to avoid this. If it is not own shop, reject limit request directly.(Thanks to YuanYuanOwO) +- Fix NPE by not setting tax for price in TransactionBuilder(thanks to maxcom1) +- Fixes /quickshop suggestprice to differentiate between buy/sell shops. (Thanks to MidSpike) +- PacketEvents ClassNotFoundException with ProtocolLib(thanks to wling-art) +- Reallocate block state access to region thread for shop creation(thanks to r00tbeerman) +- resolve SLF4J StaticLoggerBinder loading error(thanks to wling-art) +- sign hijacking issue by validating sign facing direction(thanks to wling-art) +- Performance improvements for QuickShop disabling to prevent potential freezes. +- Fixed issue with 1.20.4 packetevents virtual displays not staying put. +- Fixes critical issue in GriefPrevention compatibility plugin. +- Fixes issue with shop owner not getting money when benefits active. +- Fixes for lands addon on folia, Use regionThread for Folia compatibility(thanks to YusakiDev) +- Fixes for TRADE_DIRECT on stacking shops +- Fixes issue for protocollib 5.4.0 with undocumented packet changes. +- Fixes issue where item stacks could be used on creation above the max stack size. +- Fixes issue with BukkitAudiences-related crashes on 1.21.11. +- Fix issue with shop deletion when getting too impatient. +- Fix the permission check issue when a shop owned by a non-owner is transferred to someone else. (thanks to YuanYuanOwO) +- Fix ui with supertool (thanks to YuanYuanOwO) +- Fix issue with logs generating outside debug mode. +- Fix issue with /qs find. +- Fix configuration loading timing. +- Fix configuration loading/creation warning message language. +- Fix command description language key mismatch(thanks to wling-art) +- Fix qs clean command on folia(thanks to wling-art) +- Fix per-player-shop-sign on folia(thanks to wling-art) +- Fix potential recursive deadlock in virtual display packet sending(thanks to wling-art) +- Fix configuration loading/creation warning message language. +- Fix issue with /qs browse and ShopItemOnly addon not behaving properly together on folia. +- Fix issue with PLAN using outdated APIs. +- Fix issue with /qs clean on folia.(thanks to wling-art) +- Fix issue with /qs cleanghost on folia(thanks to wling-art) +- More thread safety fixes for shops on folia.(thanks to wling-art) +- Fix owner payment calculations with benefits(thanks to wling-art) \ No newline at end of file diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md index 8172f9b410..dcc3edc67d 100644 --- a/i18n/ko-KR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md @@ -20,20 +20,20 @@ the ControlComponent object with a custom one that will replace the original dur ### Introduction of the Revamped Packet System 1. **About**: - - A modular and scalable system for managing packets related to virtual display items in Minecraft. - - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. + - A modular and scalable system for managing packets related to virtual display items in Minecraft. + - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. 2. **Custom Packet Factories**: - - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. - - Packet types: - - **Spawn Packet**: Spawns a virtual item entity at a specific location. - - **Metadata Packet**: Updates the visual properties of virtual items. - - **Velocity Packet**: Adds motion/velocity to entities (currently optional). - - **Destroy Packet**: Removes the entity from the client view. + - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. + - Packet types: + - **Spawn Packet**: Spawns a virtual item entity at a specific location. + - **Metadata Packet**: Updates the visual properties of virtual items. + - **Velocity Packet**: Adds motion/velocity to entities (currently optional). + - **Destroy Packet**: Removes the entity from the client view. 3. **Error Handling and Logging**: - - Enhanced debug logs to trace packet-related issues. - - Detailed error messages for missing factories or unregistered listeners. + - Enhanced debug logs to trace packet-related issues. + - Detailed error messages for missing factories or unregistered listeners. #### Improvements: diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md index 7775308722..c6e0948d19 100644 --- a/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md index f420997a9c..38587e3784 100644 --- a/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md index 5ed8182c9a..259c55f342 100644 --- a/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md index 924a37ac49..7fd4596a6a 100644 --- a/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,6 +10,6 @@ This is a BungeeCord plugin, you need install it within your BungeeCord's plugin ## How does it work? -BungeeCord Bridge plugins will register a `quickshop:bungee` channel for fowarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. +BungeeCord Bridge plugins will register a `quickshop:bungee` channel for forwarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. All forwarding is indicated by QuickShop-Hikari on the Spigot server and ends when it is not needed. diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md index 27d68956a8..20fbaf7a0c 100644 --- a/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,5 +10,5 @@ This compatibility module added [Chest Protect](https://www.spigotmc.org/resourc ## How does it work? -This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident.\ +This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident. It also prevents players from creating shops on ChestProtect protected containers. diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md index 220e26d8bb..e1757e7be9 100644 --- a/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/dominion.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/dominion.md new file mode 100644 index 0000000000..e1195278a8 --- /dev/null +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/dominion.md @@ -0,0 +1,138 @@ +# Dominion + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and Dominion. + +It ensures that shop creation and trading respect Dominion’s land and territory protection system. + +--- + +## What Does It Do? + +Dominion allows players or groups to claim land and define territory-based permissions. + +Without compatibility: + +- Players could create shops inside territories they do not control. +- Visitors might trade inside protected dominions. +- Dominion permission rules might not apply to shop interactions. + +The Dominion compat module ensures that: + +- Shop creation respects territory ownership. +- Shop trading follows Dominion permission settings. +- Protected land remains secure from unauthorized shop usage. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a Dominion-controlled area. +- Whether the player has permission within that territory. +- Whether Dominion rules allow shop interaction. + +If the action is not permitted by Dominion settings, QuickShop blocks it. + +If the location is outside any Dominion territory, default QuickShop behavior applies. + +--- + +## Territory Owner Control + +With this module enabled: + +- Territory owners can create and manage shops inside their dominion. +- Trusted members follow territory-based permissions. +- Outsiders are restricted unless explicitly allowed. +- Shop actions respect Dominion’s land rules automatically. + +This prevents unauthorized shop placement inside protected territories. + +--- + +## Installation + +1. Install Dominion. +2. Install the QuickShop Dominion compat module. +3. Restart your server. + +The module activates automatically if Dominion is detected. + +No manual configuration linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside dominions +whitelist-mode: false + +# Allow territory owners to override shop permissions +allow-owner-override: true +``` + +If Dominion is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For servers using Dominion: + +- Restrict shop creation to territory owners or trusted members. +- Prevent shop creation in wilderness if desired. +- Allow dominion owners to manage shop permissions. +- Review Dominion permission settings to align with shop behavior. + +This ensures protected territories remain secure and organized. + +--- + +## Common Questions + +### Can players create shops in someone else's dominion? + +Only if Dominion permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You may allow or restrict shops outside dominions. + +### What happens if Dominion is removed? + +QuickShop returns to normal behavior and stops checking Dominion territories. + +--- + +## Summary + +The Dominion compat module: + +- Enforces territory-based permissions +- Prevents unauthorized shop creation +- Protects claimed land from misuse +- Integrates seamlessly with Dominion + +It is recommended for servers running Dominion. \ No newline at end of file diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md index 743d3ae666..2ac9b10488 100644 --- a/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md new file mode 100644 index 0000000000..07ba4ada66 --- /dev/null +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md @@ -0,0 +1,133 @@ +# FabledSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and FabledSkyblock. + +It ensures that shop creation and trading properly respect island boundaries and island permissions. + +--- + +## What Does It Do? + +On Skyblock servers, players build and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Players might trade in areas they should not. +- Island protection rules might not apply to shops. + +The FabledSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members behave correctly with shops. +- Island visitors are restricted appropriately. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a FabledSkyblock island. +- Whether the player has permission on that island. +- Whether island settings allow the action. + +If the action is not permitted by island rules, QuickShop will deny it. + +--- + +## Island Ownership Rules + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow island permission settings. +- Visitors can only trade if island permissions allow it. +- Outside of islands, default QuickShop behavior applies. + +--- + +## Installation + +1. Install FabledSkyblock. +2. Install the QuickShop FabledSkyblock compat module. +3. Restart your server. + +The module activates automatically if FabledSkyblock is detected. + +No manual linking is required. + +--- + +## Configuration + +If the module provides configuration options, they will appear in its `config.yml`. + +Typical options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If FabledSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most Skyblock servers: + +- Allow shop creation only inside islands. +- Prevent trading in the void or wilderness. +- Let island owners control shop permissions. +- Use island rank systems to manage shop access. + +This helps maintain economic balance between islands. + +--- + +## Common Questions + +### Can players create shops in the void? + +Only if your configuration allows it. +Most servers disable shop creation outside islands. + +### Does this affect island war or PvP modes? + +No. +The module only checks island ownership and permissions for shop interactions. + +### What happens if FabledSkyblock is removed? + +QuickShop returns to normal behavior. + +--- + +## Summary + +The FabledSkyblock compat module: + +- Protects island economies +- Enforces island permission rules +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is strongly recommended for any server running FabledSkyblock. \ No newline at end of file diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md index 81b13d2c6b..32614d3019 100644 --- a/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md @@ -2,17 +2,17 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -GreifPrevention compatibility module added compaitibility with GF. +GreifPrevention compatibility module added compatibility with GF. ## How does it work This module allow QuickShop-Hikari check if player have permission to create or use QuickShop in specific region. -And delete shops when claim removed, untrusted, unclimed, expired, resized or subclaim created. +And delete shops when claim removed, untrusted, unclaimed, expired, resized or subclaim created. ## Configuration diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md new file mode 100644 index 0000000000..e71b34d462 --- /dev/null +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md @@ -0,0 +1,139 @@ +# HuskTowns + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and HuskTowns. + +It ensures that shop creation and trading respect town and claim permissions defined by HuskTowns. + +--- + +## What Does It Do? + +HuskTowns allows players to create towns and claim land. + +Without compatibility: + +- Players could create shops inside towns they do not belong to. +- Visitors might trade inside protected towns. +- Town permission rules might not apply to shop interactions. + +The HuskTowns compat module ensures that: + +- Shop creation respects town ownership. +- Trading follows town permission settings. +- Town members and visitors are handled correctly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a HuskTowns claim. +- Whether the player is a town member, trusted player, or outsider. +- Whether the town's permission settings allow the action. + +If the action is not permitted by town rules, QuickShop blocks it. + +Outside of town claims, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Town Owner Control + +With this module enabled: + +- Town owners can create and manage shops inside their town. +- Town members follow town-based permission settings. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect town claim protection. + +This prevents unauthorized shop placement and trading inside protected towns. + +--- + +## Installation + +1. Install HuskTowns. +2. Install the QuickShop HuskTowns compat module. +3. Restart your server. + +The module activates automatically if HuskTowns is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside towns +whitelist-mode: false + +# Allow town owners to override shop permissions +allow-owner-override: true +``` + +If HuskTowns is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For town-based survival servers: + +- Restrict shop creation to town members. +- Allow trading only where town permissions permit. +- Prevent shop creation in wilderness if desired. +- Enable owner override for better administrative control. + +This helps maintain town-based economic balance. + +--- + +## Common Questions + +### Can players create shops in another town? + +Only if that town's permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You can allow or restrict shops outside towns. + +### What happens if HuskTowns is removed? + +QuickShop returns to normal behavior and stops checking town permissions. + +--- + +## Summary + +The HuskTowns compat module: + +- Enforces town-based land permissions +- Protects towns from unauthorized shop usage +- Integrates smoothly with HuskTowns +- Requires minimal setup + +It is recommended for any server running HuskTowns. \ No newline at end of file diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md new file mode 100644 index 0000000000..3fa2995eb0 --- /dev/null +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md @@ -0,0 +1,139 @@ +# IridiumSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and IridiumSkyblock. + +It ensures that shop creation and trading respect island boundaries and island permission settings defined by IridiumSkyblock. + +--- + +## What Does It Do? + +IridiumSkyblock allows players to create and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Visitors might trade inside protected islands. +- Island protection rules might not apply correctly to shops. + +The IridiumSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members and visitors are handled properly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside an IridiumSkyblock island. +- Whether the player is the island owner, member, or visitor. +- Whether island permissions allow shop interaction. + +If the action is not permitted, QuickShop blocks it. + +Outside of islands, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Island Owner Permissions + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow the island's permission configuration. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect island protection rules. + +This prevents unauthorized shop usage inside protected islands. + +--- + +## Installation + +1. Install IridiumSkyblock. +2. Install the QuickShop IridiumSkyblock compat module. +3. Restart your server. + +The module activates automatically if IridiumSkyblock is detected. + +No additional setup is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If IridiumSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most IridiumSkyblock servers: + +- Restrict shop creation to island owners. +- Allow island members to trade if trusted. +- Prevent shop creation in the void or wilderness. +- Enable owner override for better management. + +This helps maintain balanced island economies. + +--- + +## Common Questions + +### Can players create shops outside their island? + +Only if your configuration allows it. + +Most Skyblock servers restrict shops to island areas. + +### Do island ranks affect shop permissions? + +Yes, if your island permissions are configured to control interaction rights. + +QuickShop follows island rules. + +### What happens if IridiumSkyblock is removed? + +QuickShop returns to normal behavior and stops checking island permissions. + +--- + +## Summary + +The IridiumSkyblock compat module: + +- Protects island economies +- Enforces island-based permissions +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is recommended for any server running IridiumSkyblock. diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md new file mode 100644 index 0000000000..3b4726cb9d --- /dev/null +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md @@ -0,0 +1,151 @@ +# ItemMatcherPlus + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +The ItemMatcherPlus module improves how QuickShop matches custom and plugin-modified items. + +It allows QuickShop to properly recognize and stack items created by other plugins that normally would not match using standard Bukkit item comparisons. + +This module is especially useful for servers that use: + +- Custom items +- Modified metadata +- NBT-based systems +- Advanced crate rewards +- Custom brewing systems +- Custom fishing rewards + +--- + +## What Does It Do? + +By default, Minecraft item matching checks: + +- Material type +- Basic metadata + +However, many plugins modify items with: + +- Custom NBT data +- Hidden tags +- Custom lore formats +- Unique identifiers + +Without enhanced matching: + +- Items may not stack +- Shops may refuse valid items +- Transactions may fail +- Buying/selling may not behave correctly + +ItemMatcherPlus improves compatibility and matching accuracy. + +--- + +## Supported Plugins + +ItemMatcherPlus includes built-in support for: + +- AdvancedItems +- BreweryX +- CrazyCrates +- ExcellentCrates +- PyroFishing +- SilkSpawners + +If any of these plugins are installed, QuickShop will automatically use enhanced matching logic. + +No additional configuration is required. + +--- + +## How It Works + +When a player trades with a shop: + +1. QuickShop checks the item. +2. If ItemMatcherPlus is enabled, it performs advanced matching. +3. Plugin-specific metadata is validated. +4. The item is confirmed as a match (or rejected safely). + +This allows: + +- Proper stacking of custom items +- Correct shop transactions +- Accurate buy/sell detection +- Reduced false mismatches + +--- + +## Installation + +1. Download the ItemMatcherPlus module. +2. Place the JAR into your `plugins` folder. +3. Restart your server. + +If supported plugins are detected, compatibility activates automatically. + +--- + +## Configuration + +ItemMatcherPlus does not require configuration. + +It activates automatically when: + +- The module is installed +- A supported plugin is detected + +If a supported plugin is not installed, no extra logic runs. + +--- + +## Why You Should Use It + +You should install ItemMatcherPlus if your server uses: + +- Custom fishing plugins +- Custom brewing systems +- Crate plugins with modified items +- Custom spawners +- Any plugin that modifies NBT data + +Without it, shops may not properly recognize custom items. + +--- + +## Common Questions + +### Do I need this if I don't use custom item plugins? + +No. +If you only use vanilla items, this module is not necessary. + +### Does this affect performance? + +The module only activates enhanced matching when needed. + +Normal item matching remains fast and efficient. + +### Will it break existing shops? + +No. +It improves compatibility and matching accuracy without modifying existing shop data. + +--- + +## Summary + +ItemMatcherPlus: + +- Improves item matching accuracy +- Adds support for major custom item plugins +- Prevents stacking and trade issues +- Requires no configuration +- Activates automatically + +If you run a heavily customized economy server, this module is highly recommended. \ No newline at end of file diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md index ba87606698..d4ae7d129a 100644 --- a/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/lands.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/lands.md index 06296f5779..7671fcdfe0 100644 --- a/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/lands.md +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/lands.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/openinv.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/openinv.md index c51f628615..4807d57873 100644 --- a/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/openinv.md +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/openinv.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md new file mode 100644 index 0000000000..c2136320b0 --- /dev/null +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md @@ -0,0 +1,138 @@ +# SimpleClaimSystem + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and SimpleClaimSystem. + +It ensures that shop creation and trading respect land ownership and claim permissions defined by SimpleClaimSystem. + +--- + +## What Does It Do? + +SimpleClaimSystem allows players to claim land and protect it from unauthorized interaction. + +Without compatibility: + +- Players could create shops inside claims they do not own. +- Visitors might trade inside protected areas. +- Claim protection might not apply correctly to shops. + +The SimpleClaimSystem compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops within their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a SimpleClaimSystem claim. +- Whether the player has permission within that claim. +- Whether claim rules allow shop interaction. + +If the action is not permitted by the claim, QuickShop blocks it. + +If the location is outside any claim, default QuickShop behavior applies. + +--- + +## Claim Owner Control + +With this module enabled: + +- Claim owners can create and manage shops inside their claim. +- Trusted players follow claim-based permissions. +- Visitors are restricted unless explicitly allowed. +- Claim protection rules apply automatically to shop interactions. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install SimpleClaimSystem. +2. Install the QuickShop SimpleClaimSystem compat module. +3. Restart your server. + +The module activates automatically if SimpleClaimSystem is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If SimpleClaimSystem is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Enable owner override for easier management. + +This ensures players maintain control over their protected land. + +--- + +## Common Questions + +### Can players create shops in someone else's claim? + +Only if claim permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can allow shops outside claims or restrict them. + +### What happens if SimpleClaimSystem is removed? + +QuickShop will revert to default behavior and stop checking claim permissions. + +--- + +## Summary + +The SimpleClaimSystem compat module: + +- Enforces claim-based permissions +- Prevents unauthorized shop creation +- Protects land from unwanted trading +- Requires minimal setup + +It is recommended for servers running SimpleClaimSystem. \ No newline at end of file diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md index a84dbf057b..4dfa8ae97c 100644 --- a/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/towny.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/towny.md index 52ab4818f4..b26c19d335 100644 --- a/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/towny.md +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/towny.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -26,7 +26,7 @@ Town sub-command allow you switch a quickshop between regular shop and town shop For a nation shop, the shop owner will changed to nation fake player created by Towny, and use Nation's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from nation Towny account.\ +All purchases will deposit or withdraw money from nation Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Nation Shop. @@ -35,7 +35,7 @@ If Plot type restriction is enabled, only a specific Plot type can create a Nati For a town shop, the shop owner will changed to town fake player created by Towny, and use Town's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from town Towny account.\ +All purchases will deposit or withdraw money from town Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Town Shop. @@ -88,7 +88,7 @@ bank-mode: ## Permission Override -By adjust configuration, you're allow mayor or king automaticlly grant administrator permission on all shops in their management range. +By adjust configuration, you're allow mayor or king automatically grant administrator permission on all shops in their management range. ```yaml #Should allow Mayor grant the shop administrator permission on they town. @@ -168,7 +168,7 @@ This causes Towny and QuickShop Hikari to use accounts with the same name but di You can adjust the option in configuration to enable workaround. -NOTE: It will force turned on if detected EssentialsX installed on your server.\ +NOTE: It will force turned on if detected EssentialsX installed on your server. At present, we do not provide a method for disable it. ```yaml diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md new file mode 100644 index 0000000000..0189958495 --- /dev/null +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md @@ -0,0 +1,138 @@ +# UltimateClaims + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and UltimateClaims. + +It ensures that shop creation and trading respect land claim permissions managed by UltimateClaims. + +--- + +## What Does It Do? + +On servers using land-claim plugins, players protect areas of the world from unauthorized interaction. + +Without compatibility: + +- Players may create shops inside claims they do not own. +- Visitors might trade in areas where they should not. +- Claim protection rules might not apply correctly to shops. + +The UltimateClaims compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops inside their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a claim. +- Whether the player has permission in that claim. +- Whether claim rules allow shop interaction. + +If the action violates claim settings, QuickShop blocks it. + +Outside of claims, normal QuickShop behavior applies. + +--- + +## Claim Owner Permissions + +With this module enabled: + +- Claim owners can create and manage shops within their claim. +- Trusted players follow claim permission settings. +- Visitors are restricted based on claim configuration. +- Shop actions outside of claims behave normally. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install UltimateClaims. +2. Install the QuickShop UltimateClaims compat module. +3. Restart your server. + +If UltimateClaims is detected on startup, compatibility activates automatically. + +No additional linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Common options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If UltimateClaims is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Keep owner override enabled for better control. + +This ensures players maintain full control over their protected land. + +--- + +## Common Questions + +### Can players create shops inside someone else's claim? + +Only if the claim permissions allow it. + +Otherwise, QuickShop will block the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can choose to restrict shops to claimed land only. + +### What happens if UltimateClaims is removed? + +QuickShop returns to normal behavior without claim checks. + +--- + +## Summary + +The UltimateClaims compat module: + +- Protects claimed land from unauthorized shop usage +- Enforces claim-based permissions +- Integrates smoothly with land-claim servers +- Requires minimal setup + +It is recommended for any server running UltimateClaims. \ No newline at end of file diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md index 87a71a205c..6437754503 100644 --- a/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md @@ -2,8 +2,10 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. Find out more [here](../modules/shops/worldedit.md). + +Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. \ No newline at end of file diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/development/01-getting-start.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/development/01-getting-start.md index 92b773451e..0e78e52367 100644 --- a/i18n/ko-KR/docusaurus-plugin-content-docs/current/development/01-getting-start.md +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/development/01-getting-start.md @@ -6,8 +6,8 @@ This series of articles will help you build extensions for QuickShop-Hikari or i ## License -QuickShop-Hikari is open source using the [GPLv3](https://www.gnu.org/licenses/quick-guide-gplv3.en.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari).\ -You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the GPLv3 agreement. +QuickShop-Hikari is open source using the [AGPLv3](https://www.gnu.org/licenses/agpl-3.0.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari). +You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the AGPLv3 agreement. ## 🚧Don't trust Javadoc too much @@ -48,7 +48,7 @@ QuickShop-Hikari divides operation sources into three types: - Server Main Thread - Async Thread (any other threads but not server main thread) -- Hybird +- Hybrid If you access the API through the wrong thread, QuickShop-Hikari will force a runtime error to be thrown. @@ -58,4 +58,4 @@ For APIs that may trigger network IO or long-time disk IO, you are required not You can see [Util.ensureThread()](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/3d1d271e1106ea1c83cc6068f8232ab7c7860918/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/util/Util.java#L351) and find out the requirements of the different APIs by looking up their use. APIs that do not use Util.ensureThread() are allowed to be called from any thread by default. -You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. +You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. \ No newline at end of file diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md index aa2404c594..7828d414ad 100644 --- a/i18n/ko-KR/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md @@ -10,7 +10,7 @@ ShopManager manager = api.getShopManager(); ## Getting a shop -Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates.\ +Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates. QuickShop-Hikari's store is only bound to one half of "Large Chest", so to get the store, you need to query both the cube itself and its associated cube. The good thing is that there is an API in the plugin that allows you to handle this situation very easily. @@ -71,7 +71,7 @@ manager.deleteShop(shop) // Permanently delete this store, both memory and datab ## Identify a store -Please note that store locations are technically variable and you should not use coordinates to identify a store.\ +Please note that store locations are technically variable and you should not use coordinates to identify a store. Also RuntimeRandomUniqueId should not be used to identify the store, as the name suggests, the value changes every time the server restarts, it should only be used to handle scenarios where the player interacts with the server. ```java diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md index 543f1851da..4f839ed652 100644 --- a/i18n/ko-KR/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md @@ -1,6 +1,6 @@ # 0x05 Per shop permission -QuickShop-Hikari has a per shop permission management system.\ +QuickShop-Hikari has a per shop permission management system. Therefore, for a normal permission node check is not enough, you need to attach an additional check. ## Check with shop diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/development/06-protocol-system.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/development/06-protocol-system.md index 5d37a15536..0380b789f9 100644 --- a/i18n/ko-KR/docusaurus-plugin-content-docs/current/development/06-protocol-system.md +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/development/06-protocol-system.md @@ -15,30 +15,30 @@ This documentation will guide developers through the components, implementation - **Purpose**: Manages packet handling and initialization logic. - **Interface**: `PacketHandler` - **Key Methods**: - - `Map> factories()` - - Retrieves a map of supported `PacketFactory` instances keyed by game versions. - - `void initialize()` - - Initializes the packet handler. - - `Optional> factory(String version)` - - Retrieves a `PacketFactory` for a specific game version. + - `Map> factories()` + - Retrieves a map of supported `PacketFactory` instances keyed by game versions. + - `void initialize()` + - Initializes the packet handler. + - `Optional> factory(String version)` + - Retrieves a `PacketFactory` for a specific game version. ### 2. **PacketFactory** - **Purpose**: Creates and sends specific packet types. - **Interface**: `PacketFactory` - **Supported Packets**: - - **Spawn Packet**: - - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. - - Example Use: Representing shop items visually. - - **Metadata Packet**: - - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. - - Example Use: Updating item display name or properties. - - **Velocity Packet**: - - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. - - Example Use: Custom animations for virtual items. - - **Destroy Packet**: - - Removes the entity from the client view. Created using `createDestroyPacket()`. - - Example Use: Unloading or removing a virtual display item. + - **Spawn Packet**: + - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. + - Example Use: Representing shop items visually. + - **Metadata Packet**: + - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. + - Example Use: Updating item display name or properties. + - **Velocity Packet**: + - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. + - Example Use: Custom animations for virtual items. + - **Destroy Packet**: + - Removes the entity from the client view. Created using `createDestroyPacket()`. + - Example Use: Unloading or removing a virtual display item. Developers implementing custom `PacketFactory` should ensure these packets are correctly handled and optimized for performance. @@ -46,24 +46,24 @@ Developers implementing custom `PacketFactory` should ensure these packets are c - **Purpose**: Oversees the lifecycle of virtual display items and integrates with packet handlers. - **Key Features**: - - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). - - Manages virtual display items mapped to chunks. - - Provides thread-safe operations for adding and removing display items. + - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). + - Manages virtual display items mapped to chunks. + - Provides thread-safe operations for adding and removing display items. ### 4. **VirtualDisplayItem** - **Purpose**: Represents a virtual item displayed to players. - **Key Features**: - - Generates and caches packets for spawning, metadata, velocity, and destruction. - - Manages packet senders for each player. - - Handles spawn and removal operations dynamically. + - Generates and caches packets for spawning, metadata, velocity, and destruction. + - Manages packet senders for each player. + - Handles spawn and removal operations dynamically. ### 5. **ProtocolLibHandler and PacketEventsHandler** - **Purpose**: Provide implementations of `PacketHandler` using ProtocolLib and PacketEvents, respectively. - **Differences**: - - `ProtocolLibHandler` leverages ProtocolLib API. - - `PacketEventsHandler` uses the PacketEvents library. + - `ProtocolLibHandler` leverages ProtocolLib API. + - `PacketEventsHandler` uses the PacketEvents library. --- @@ -140,11 +140,11 @@ public class CustomPacketFactory implements PacketFactory { Packet factories are provided for specific game versions through two primary implementations: - **ProtocolLib**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` - **PacketEvents**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` --- diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md new file mode 100644 index 0000000000..aebc035f87 --- /dev/null +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md @@ -0,0 +1,297 @@ +# Interaction System (Developer Guide) + +The Interaction System allows developers to fully customize how players interact with shops. + +As of 6.2.0.11, the system has been redesigned to be: + +- Modular +- Extensible +- Thread-safe +- Fully customizable by third-party addons + +This guide will walk you through: + +1. What the Interaction System is +2. Getting the `InteractionManager` +3. Understanding `InteractionType` +4. Understanding `InteractionBehavior` +5. Registering custom interactions +6. Best practices + +--- + +# Overview + +The Interaction System is composed of three main components: + +| Component | Purpose | +| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| `InteractionType` | Describes **what kind of click happened** (standing, sneaking, left-click, sign, shopblock, etc.) | +| `InteractionBehavior` | Describes **what action should happen** when that type is triggered | +| `InteractionManager` | Central registry that manages interactions and behaviors | + +This separation allows developers to: + +- Add new click types +- Add new behaviors +- Override existing ones +- Extend QuickShop without modifying core code + +--- + +# Getting the InteractionManager + +To begin registering custom interactions, you must retrieve the `InteractionManager` instance. + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +If you are working directly with the plugin instance: + +```java +InteractionManager manager = QuickShop.getInstance().getInteractionManager(); +``` + +Once obtained, you can: + +- Register new interaction types +- Register new behaviors +- Override existing behaviors + +--- + +# Understanding InteractionType + +`InteractionType` represents **how** a player interacted with a shop. + +Examples include: + +- `STANDING_LEFT_CLICK_SIGN` +- `STANDING_RIGHT_CLICK_SHOPBLOCK` +- `SNEAKING_LEFT_CLICK_CONTAINER` +- etc. + +Each `InteractionType` defines: + +- Player stance (standing/sneaking) +- Click type (left/right) +- Target (sign/shopblock/container) + +InteractionTypes do NOT define behavior — they only define the trigger. + +--- + +# Understanding InteractionBehavior + +`InteractionBehavior` defines **what happens** when an interaction is triggered. + +Examples of built-in behaviors: + +- `TRADE_INTERACTION` +- `TRADE_UI` +- `CONTROL_PANEL` +- `CONTROL_PANEL_UI` +- `NONE` + +A behavior: + +- Executes logic +- May open GUIs +- May send chat panels +- May directly trade items +- Can cancel or modify flow + +This separation makes it easy to reuse behaviors across multiple interaction types. + +--- + +# Registering Custom Interactions + +There are two things you can register: + +- A custom `InteractionType` +- A custom `InteractionBehavior` + +--- + +## Creating a Custom InteractionBehavior + +Create a class implementing `InteractionBehavior`. + +Example: + +```java +public class MyTradeBehavior implements InteractionBehavior { + + @Override + public String getKey() { + return "MY_CUSTOM_TRADE"; + } + + @Override + public void execute(InteractionClick click) { + Player player = click.getPlayer(); + Shop shop = click.getShop(); + + player.sendMessage("You triggered my custom interaction!"); + + // Add your custom logic here + } +} +``` + +Then register it: + +```java +InteractionManager manager = api.getInteractionManager(); +manager.behavior(new MyTradeBehavior()); +``` + +Now your behavior is available for use. + +--- + +## Creating a Custom InteractionType + +You may also register custom interaction types if you want to introduce new trigger definitions. + +Example: + +```java +public class MyCustomInteraction implements InteractionType { + + @Override + public String getKey() { + return "STANDING_DOUBLE_CLICK_SIGN"; + } + + @Override + public boolean matches(InteractionClick click) { + // Define custom logic to detect this interaction + return click.isStanding() + && click.isSign() + && click.isDoubleClick(); + } +} +``` + +Register it: + +```java +manager.interaction(new MyCustomInteraction()); +``` + +--- + +# Binding Types to Behaviors + +The InteractionManager internally maps interaction types to behaviors based on configuration and registration order. + +Once your behavior is registered: + +- It can be referenced in `interaction.yml` +- Or attached programmatically + +Example interaction.yml usage: + +```yaml +STANDING_LEFT_CLICK_SIGN: MY_CUSTOM_TRADE +``` + +--- + +# The InteractionClick Object + +When your behavior executes, you receive an `InteractionClick` object. + +It provides: + +- `getPlayer()` +- `getShop()` +- `getLocation()` +- `isSneaking()` +- `isSign()` +- `isShopBlock()` +- etc. + +This gives full context for safe execution. + +--- + +# Advanced: Overriding Built-in Behavior + +If you register a behavior using the same key as an existing one, your behavior can override the default. + +⚠️ Be careful when doing this — you are replacing core functionality. + +--- + +# Best Practices + +### Always Use Unique Keys + +Avoid naming collisions: + +``` +MYPLUGIN_CUSTOM_BEHAVIOR +``` + +### Keep Behavior Lightweight + +Do not block the main thread with: + +- Heavy database calls +- File IO +- Network calls + +Use async tasks if needed. + +### Respect Permissions + +Always validate: + +```java +if (!player.hasPermission("myplugin.use")) { + return; +} +``` + +### Avoid Hard Overrides Unless Necessary + +Instead of replacing built-in behaviors, consider extending them. + +--- + +# Example: Full Minimal Implementation + +```java +public class ExampleAddon { + + public void register(QuickShopAPI api) { + + InteractionManager manager = api.getInteractionManager(); + + manager.behavior(new MyTradeBehavior()); + manager.interaction(new MyCustomInteraction()); + } +} +``` + +--- + +# Conclusion + +The Interaction System is designed to allow: + +- Full extensibility +- Clean separation of triggers and actions +- Easy integration for third-party developers + +By retrieving the `InteractionManager`: + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +You gain full control over how shops respond to player actions. \ No newline at end of file diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/development/08-tax-manager.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/development/08-tax-manager.md new file mode 100644 index 0000000000..72a56f9e88 --- /dev/null +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/development/08-tax-manager.md @@ -0,0 +1,266 @@ +# Tax System (Developer Guide) + +The QuickShop tax system allows server owners and developers to define how transaction taxes are calculated, distributed, and extended. + +As of 6.2.0.11, the tax system has been fully rewritten to provide: + +- A flexible TaxManager +- Pluggable TaxProvider support +- Progressive taxation +- Tax targeting (shop owner, interacting player, or both) +- Custom extension capability for third-party addons + +This guide explains how to work with the tax system programmatically. + +--- + +# Overview + +The tax system is composed of three core components: + +TaxManager +Responsible for coordinating tax calculation and execution. + +TaxProvider +Defines how tax values are calculated. + +TaxRates +Represents calculated tax results for a transaction. + +The system is designed to allow custom providers to be registered and used without modifying core logic. + +--- + +# Getting the TaxManager + +To work with the tax system, retrieve the TaxManager from the ShopManager. + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +Once obtained, you can: + +- Access current tax configuration +- Register custom tax providers +- Calculate tax values +- Hook into tax events + +--- + +# How the Tax System Works + +During a shop transaction: + +1. A base price is determined. +2. The TaxManager selects the active TaxProvider. +3. The TaxProvider calculates applicable tax. +4. A TaxRates object is produced. +5. The system applies the tax to: + + - Shop owner + - Interacting player + - Or both (depending on configuration) + +This architecture allows tax behavior to be modified without altering transaction logic. + +--- + +# TaxProvider + +A TaxProvider defines how tax values are calculated. + +You may create your own provider to implement: + +- Progressive tax brackets +- Flat percentage tax +- Conditional tax rules +- Region-based tax +- Rank-based tax +- Time-based tax + +Example minimal provider: + +```java +public class MyCustomTaxProvider implements TaxProvider { + + @Override + public TaxRates calculateTax(TaxContext context) { + + double basePrice = context.getPrice(); + + double taxAmount = basePrice * 0.05; // 5% flat tax + + return new TaxRates() + .ownerTax(taxAmount) + .buyerTax(0.0); + } +} +``` + +Then register it: + +```java +taxManager.provider(new MyCustomTaxProvider()); +``` + +Once registered, your provider will be used for tax calculations. + +--- + +# TaxRates + +TaxRates represents the result of a tax calculation. + +It typically contains: + +- Owner tax amount +- Buyer tax amount +- Total tax impact +- Metadata (if applicable) + +The transaction system will read from TaxRates and apply deductions accordingly. + +--- + +# Progressive Taxation + +The built-in system supports progressive tax structures. + +This allows server administrators to tax based on: + +- Player balance +- Shop owner balance +- Configured tax brackets + +Example configuration concept: + +- 0–10,000 balance → 1% tax +- 10,000–100,000 → 2% tax +- 100,000+ → 3% tax + +Developers can extend or override this logic inside a custom TaxProvider. + +--- + +# Targeting Tax + +The new tax system allows taxes to be applied to: + +- Shop owner +- Interacting player +- Both + +This is controlled via configuration, but custom providers can override distribution logic by adjusting TaxRates output. + +Example: + +```java +return new TaxRates() + .ownerTax(basePrice * 0.02) + .buyerTax(basePrice * 0.01); +``` + +--- + +# Registering a Custom TaxProvider + +To replace or extend tax logic: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); + +taxManager.provider(new MyCustomTaxProvider()); +``` + +You may register only one primary provider at a time. If multiple providers are needed, implement internal delegation within your custom provider. + +--- + +# Tax Events + +The tax system integrates with the event system. + +The modern event used is: + +ShopEnhancedTaxEvent + +This replaces legacy tax events and provides improved context, including: + +- Transaction builder reference +- TaxRates object +- Modification capability before final execution + +You can listen for the event and modify tax behavior dynamically: + +```java +@EventHandler +public void onTax(ShopEnhancedTaxEvent event) { + + TaxRates rates = event.getTaxRates(); + + // Example: Give VIP players reduced owner tax + if (event.getOwner().hasPermission("vip.tax.discount")) { + rates.ownerTax(rates.getOwnerTax() * 0.5); + } +} +``` + +--- + +# Best Practices + +Always keep tax calculations lightweight. + +Avoid: + +- Heavy database queries inside calculateTax +- Blocking network calls +- Long-running computations + +If complex logic is required, pre-cache required data outside the tax execution path. + +Ensure negative tax values are not returned unless intentional. + +Always validate final amounts before applying modifications. + +Respect configuration hierarchy unless intentionally overriding it. + +--- + +# Example Full Implementation + +```java +public class ExampleTaxAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + TaxManager taxManager = manager.taxManager(); + + taxManager.provider(new MyCustomTaxProvider()); + } +} +``` + +--- + +# Conclusion + +The new tax system is designed for: + +- Flexibility +- Extensibility +- Clean separation of concerns +- Future expansion + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +You gain full control over how QuickShop calculates and applies tax during transactions. \ No newline at end of file diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/development/09-layout-provider.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/development/09-layout-provider.md new file mode 100644 index 0000000000..55e3cd3e91 --- /dev/null +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/development/09-layout-provider.md @@ -0,0 +1,275 @@ +# Shop Layout Provider (Developer Guide) + +The Shop Layout Provider system allows developers to customize how shop signs are structured and rendered. + +As of 6.2.0.11, shop layouts are no longer hardcoded. Instead, they are controlled through the `IShopLayoutProvider` interface, which allows: + +- Custom sign line ordering +- Per-shop-type layouts (BUYING, SELLING, FROZEN, or custom types) +- Dynamic layout resolution +- Complete replacement of the default layout system + +This guide explains how to access, override, and implement a custom layout provider. + +--- + +# Overview + +The layout provider controls how shop sign lines are arranged. + +Instead of hardcoding: + +Line 1 → Header +Line 2 → Trading info +Line 3 → Item +Line 4 → Price + +The system now allows full customization through: + +- Config-based layout definitions +- Custom `IShopLayoutProvider` implementations +- Runtime overrides + +The default implementation is `SimpleShopLayoutProvider`. + +--- + +# Accessing the Layout Provider + +To retrieve the current layout provider: + +```java +ShopManager manager = api.getShopManager(); +IShopLayoutProvider provider = manager.shopLayoutProvider(); +``` + +To replace the layout provider with a custom one: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Once replaced, your implementation will control how shop layouts are generated. + +--- + +# Understanding IShopLayoutProvider + +`IShopLayoutProvider` defines how layout data is retrieved and resolved. + +It is responsible for: + +- Providing layout configuration per shop type +- Determining which layout to use +- Supplying formatted line keys +- Allowing future extensibility + +The default implementation reads layout definitions from configuration and applies them based on shop type. + +--- + +# Default Layout Example + +The default configuration-based layout looks like this: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +Each line maps to a layout component key. + +An empty string (`""`) leaves that line blank. + +The layout provider resolves these keys into actual sign content. + +--- + +# Creating a Custom Layout Provider + +To override the default behavior, implement `IShopLayoutProvider`. + +Example minimal implementation: + +```java +public class MyCustomLayoutProvider implements IShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + + ShopLayout layout = new ShopLayout(); + + layout.setLine(1, "Custom Header"); + layout.setLine(2, "Owner: " + shop.getOwnerName()); + layout.setLine(3, shop.getItem().getType().name()); + layout.setLine(4, "$" + shop.getPrice()); + + return layout; + } +} +``` + +Then register it: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Your layout will now control all shop sign formatting. + +--- + +# Per-Type Layout Control + +Because the system no longer depends on the legacy ShopType enum, layouts can support: + +- Built-in types (BUYING, SELLING, FROZEN) +- Custom shop types +- Addon-defined shop types + +Your provider can determine layout logic dynamically: + +```java +@Override +public ShopLayout provideLayout(Shop shop) { + + if (shop.getShopType().key().equals("FROZEN")) { + return frozenLayout(shop); + } + + return defaultLayout(shop); +} +``` + +This allows conditional formatting, localization adjustments, or special event styling. + +--- + +# Advanced Customization + +A custom layout provider can: + +- Pull data from external plugins +- Inject dynamic placeholders +- Modify layout per player +- Apply formatting logic +- Override color schemes +- Apply region-based formatting +- Implement animated sign systems + +Because the layout provider is resolved at runtime, you can compute layouts dynamically instead of reading static config. + +--- + +# Replacing vs Extending the Default Provider + +You have two options: + +Replace entirely: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Or extend the default implementation: + +```java +public class ExtendedLayoutProvider extends SimpleShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + ShopLayout base = super.provideLayout(shop); + + base.setLine(1, "[Extended] " + base.getLine(1)); + + return base; + } +} +``` + +Extending is safer if you only want to modify small portions. + +--- + +# Best Practices + +Keep layout generation lightweight. + +Avoid: + +- Heavy database queries +- Blocking IO +- Complex network calls + +Layout generation runs during shop updates and sign refresh events. + +Always handle null values safely. + +Ensure layout line count does not exceed sign limits. + +Avoid hardcoding shop type names unless necessary. + +If your layout supports custom shop types, validate their keys properly. + +--- + +# Example Full Registration + +```java +public class LayoutAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + + manager.shopLayoutProvider(new MyCustomLayoutProvider()); + } +} +``` + +--- + +# Conclusion + +The Shop Layout Provider system allows complete control over shop sign structure. + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +``` + +And setting: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +You can redefine how every shop is displayed on the server. + +This system was designed to support: + +- Extensibility +- Custom shop types +- Localization +- Dynamic formatting +- Future expansion \ No newline at end of file diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/faq/compare-reremake.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/faq/compare-reremake.md index aaa1a9e507..6b39f02520 100644 --- a/i18n/ko-KR/docusaurus-plugin-content-docs/current/faq/compare-reremake.md +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/faq/compare-reremake.md @@ -64,7 +64,7 @@ If you are a Reremake user, you may be confused about the differences between Hi ## Which one should I use? Well, it depends on what your needs are.\ -If you have an old server (<1.20) instance, Reremake is your only choice.\ +If you have an old server ({'<'}1.20) instance, Reremake is your only choice.\ ~~If you are in China which has GFW interfere, you also should consider Reremake because it doesn't need to load libraries from Global Internet.~~ Solved in 6.0.0.0. If none of these applies, give Hikari a try! diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md index 551f579e7c..172be3a69b 100644 --- a/i18n/ko-KR/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md @@ -1,8 +1,8 @@ # Where Addons/Compacts is -Addons and Compatilibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. +Addons and Compatibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. -- Open Modrinth versions page, locate the version your're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) +- Open Modrinth versions page, locate the version you're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) - Frantically slide your mouse wheel down until the lowest end of the page. - You get it! diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/internal/database-schema.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/internal/database-schema.md index fea685e4fc..45e04adb56 100644 --- a/i18n/ko-KR/docusaurus-plugin-content-docs/current/internal/database-schema.md +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/internal/database-schema.md @@ -4,17 +4,17 @@ This chapter will explain the implementation details of QuickShop Hikari's datab ## Tables -This section explains the database tables created by QuickShop-Hikari.\ -Unless otherwise specified, the initial `qs_` in table name is the table prefix.\ +This section explains the database tables created by QuickShop-Hikari. +Unless otherwise specified, the initial `qs_` in table name is the table prefix. For the latest code definition for each table, see: [DataTables.java](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/hikari/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/database/DataTables.java) ### `data` -This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information.\ -No matter what, a data record should not be modified after it is created, until it got deleted.\ +This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information. +No matter what, a data record should not be modified after it is created, until it got deleted. Any new changes to the shop should create a new copy, apply the changes to the copy, and insert it as a new record. -Basiclly, Copy-on-write. +Basically, Copy-on-write. A data record only be deleted from the database when no any table references their `data_id`. @@ -29,7 +29,7 @@ A data record only be deleted from the database when no any table references the | unlimited | BIT NOT NULL | 0 | Indicates whether this store is an unlimited store, 0=Limited, 1=Unlimited | | hologram | BIT NOT NULL | 0 | Indicates the suspension status of this store's display item, 0=Follow global settings, 1=Disabled | | tax_account | VARCHAR(36) | NULL | The uuid for tax account, If it is not NULL, tax will be paid to the specified account | -| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serilized to JSON string | +| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serialized to JSON string | | extra | LONGTEXT | Empty Yaml | Used to store experimental settings of QuickShop Hikari or persistent data of other plugins | | inv_wrapper | VARCHAR(255) NOT NULL | N/A | Unique identifier for InventoryWrapper for this shop data entry | | inv_symbol_link | TEXT NOT NULL | N/A | Unique Inventory symbol used to pass to InventoryWrapper, for locating inventory | @@ -38,7 +38,7 @@ A data record only be deleted from the database when no any table references the ### `shops` -This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes.\ +This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes. Multiple `shop_id` can correspond to the same `data_id`. | Column Name | DataType | Default | Description | diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/modules/cmd-alias.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/modules/cmd-alias.md index 53f1577685..e6ed381c0d 100644 --- a/i18n/ko-KR/docusaurus-plugin-content-docs/current/modules/cmd-alias.md +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/modules/cmd-alias.md @@ -23,7 +23,7 @@ custom-commands: - cshop ``` -Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect.\ +Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect. The effect should be like this: ![command-alias](./img/command-alias.png) diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/modules/datasource.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/modules/datasource.md index 6fc1bd8931..3fd3a8bdee 100644 --- a/i18n/ko-KR/docusaurus-plugin-content-docs/current/modules/datasource.md +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/modules/datasource.md @@ -48,7 +48,7 @@ Execute the `/quickshop export` command in console, quickshop will export a zip ![exported data](img/database-export.png) -Stop your database, switch the datasource, and start the server.\ +Stop your database, switch the datasource, and start the server. You may noticed all shops are gone, because new datasources had no data inside, we will restore them from export. Rename that exported ZIP file to `recovery.zip`, execute `/quickshop recovery` and restart your server, all shops should back. diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/modules/itemmatcher.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/modules/itemmatcher.md index 56be243019..922907be27 100644 --- a/i18n/ko-KR/docusaurus-plugin-content-docs/current/modules/itemmatcher.md +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/modules/itemmatcher.md @@ -4,7 +4,7 @@ ItemMatcher is a utility used by QuickShop-Hikari to compare the items, it is th :::caution -If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse.\ +If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse. **TL;DR: Keep default unless you know what you're doing.** ::: @@ -26,10 +26,10 @@ matcher: work-type: 1 ``` -By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility.\ +By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility. But still, you can toggle to QuickShop Item Matcher if you need to customize the comparing or running QuickShop on the server jar which have bug affect the Bukkit comparing system. -## Customize the metadata compareing +## Customize the metadata comparing Customize only works under QuickShop Item Matcher. diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md index fc2af69d2b..d04e8f2783 100644 --- a/i18n/ko-KR/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md @@ -4,7 +4,7 @@ ItemStack Loader is a workaround for loading the Bukkit ItemStack. :::caution -Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossble. +Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossible. ::: diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/modules/localization.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/modules/localization.md index e9121e1a36..d47589ab9a 100644 --- a/i18n/ko-KR/docusaurus-plugin-content-docs/current/modules/localization.md +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/modules/localization.md @@ -10,7 +10,7 @@ To help translate QuickShop-Hikari, please visit our [Crowdin Homepage](https:// ## Crowdin OTA -QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will overrided when you reload QuickShop-Hikari or restart your server. +QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will override when you reload QuickShop-Hikari or restart your server. Your installation will keep translations up-to-date without any touch. @@ -110,6 +110,16 @@ To disable the CrowdinOTA, please add it in the startup flag: -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager.enableCrowdinOTA=false ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +use-crowdin-ota: false +``` + ### Self-Hosted OTA Server If you self-hosted our translation server by using [CrowdinCopyDeploy](https://github.com/Ghost-chu/CrowdinCopyDeploy) tool, you're able to change the OTA server to yourself server. @@ -118,4 +128,12 @@ If you self-hosted our translation server by using [CrowdinCopyDeploy](https://g -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager= ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml +Use + +```yaml +crowdin-host: +``` \ No newline at end of file diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/modules/shops/benefit.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/modules/shops/benefit.md index 4d7a9c8f42..c59d92e6d1 100644 --- a/i18n/ko-KR/docusaurus-plugin-content-docs/current/modules/shops/benefit.md +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/modules/shops/benefit.md @@ -37,3 +37,13 @@ By default, for security, QuickShop-Hikari disallow add offline players into sho ```bash -Dcom.ghostchu.quickshop.command.subcommand.SubCommand_Benefit.allowOffline=true ``` + +### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +shop.allow-offline-benefit: true +``` \ No newline at end of file diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/modules/shops/control-panel b/i18n/ko-KR/docusaurus-plugin-content-docs/current/modules/shops/control-panel new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/modules/shops/control-panel @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/modules/shops/history.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/modules/shops/history.md index fa891adeab..195b64a042 100644 --- a/i18n/ko-KR/docusaurus-plugin-content-docs/current/modules/shops/history.md +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/modules/shops/history.md @@ -24,7 +24,7 @@ The History GUI displays the details of each recorded transaction and other usef ### Transaction details -When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed.\ +When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed. If you are checking the history of more than one store, the player head will be replaced with an item from the corresponding store. ![history-gui](./img/history-gui.png) diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md new file mode 100644 index 0000000000..c5ed3b3fe4 --- /dev/null +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md @@ -0,0 +1,90 @@ +# Shop Types + +QuickShop supports multiple shop types, allowing shops to behave differently depending on their mode. + +The built-in shop types are: + +- Selling +- Buying +- Frozen + +Each type changes how the shop interacts with players. + +--- + +## Selling Shop + +A Selling shop allows players to: + +- Buy items from the shop owner +- Pay money to receive items + +This is the most common shop type. + +--- + +## Buying Shop + +A Buying shop allows players to: + +- Sell items to the shop owner +- Receive money in exchange + +This is commonly used for: + +- Resource collection +- Server buy-back shops +- Automated material sinks + +--- + +## Frozen Shop + +A Frozen shop temporarily disables trading. + +While frozen: + +- No buying is allowed +- No selling is allowed +- The shop remains intact +- Staff or admins can manage it + +This is useful for: + +- Temporary suspensions +- Investigation +- Event locking +- Maintenance + +--- + +## Switching Shop Types + +Shop types can be changed through: + +- Control panel +- GUI control panel +- Admin commands + +Frozen mode is also available via: + +/qs freeze + +--- + +## Custom Shop Types + +As of 6.2.x, the system supports extensible shop types internally. + +While server owners use the built-in types, the system now allows future expansion through addons. + +--- + +## Summary + +Shop types allow you to: + +- Control how money flows +- Enable buy-back mechanics +- Temporarily disable shops +- Build advanced economic systems \ No newline at end of file diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md new file mode 100644 index 0000000000..18e0a47407 --- /dev/null +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md @@ -0,0 +1,217 @@ +# Sign Layout + +QuickShop allows you to fully customize how shop signs are structured. + +You can change: + +- What appears on each line +- The order of information +- Layout per shop type +- Whether certain lines are blank + +This gives you complete control over how shops look on your server. + +--- + +## How Sign Layout Works + +Shop signs have four lines. + +Instead of being hardcoded, QuickShop uses a configurable layout system. + +Each shop type can have its own layout: + +- SELLING +- BUYING +- FROZEN + +You define what each line displays using layout keys. + +--- + +## Configuration Location + +Sign layout is configured in `config.yml` under: + +```yaml +layout: +``` + +Example default configuration: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## Available Layout Keys + +Each line value refers to a built-in layout component. + +Common layout keys include: + +- `header` – The shop header line +- `trading` – Buy/Sell direction information +- `item` – Item name +- `price` – Shop price + +These keys are automatically formatted using your language file and formatting settings. + +--- + +## Leaving a Line Blank + +To leave a line empty, use: + +```yaml +line2: "" +``` + +This is useful if you want: + +- Minimalist signs +- Cleaner layouts +- Custom spacing +- Decorative formatting + +--- + +## Customizing Per Shop Type + +Each shop type can have a different layout. + +For example: + +```yaml +layout: + + SELLING: + line1: "header" + line2: "item" + line3: "price" + line4: "" + + BUYING: + line1: "header" + line2: "price" + line3: "item" + line4: "" + + FROZEN: + line1: "header" + line2: "" + line3: "item" + line4: "Frozen" +``` + +This allows you to visually differentiate: + +- Selling shops +- Buying shops +- Frozen shops + +--- + +## Practical Examples + +### Minimal Style + +```yaml +layout: + SELLING: + line1: "item" + line2: "price" + line3: "" + line4: "" +``` + +### Compact Economy Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "price" + line3: "item" + line4: "" +``` + +### Large Clear Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## How Updates Affect Layout + +When you change the layout: + +- Existing shop signs will update automatically when refreshed. +- New shops will use the updated format immediately. + +If needed, you can reload QuickShop to apply changes. + +--- + +## Best Practices + +- Keep important information visible (price and item). +- Avoid overly complex formatting. +- Test layout changes before deploying on large servers. +- Use different layouts for BUYING and SELLING to reduce confusion. + +--- + +## Common Questions + +### Can I add more than four lines? + +No. +Minecraft signs are limited to four lines. + +### Can I add colors? + +Colors are controlled by your language file and formatting settings. + +### Can I change layout without restarting? + +Yes, but reloading or refreshing shops is recommended to ensure full update. + +--- + +## Summary + +The Sign Layout system allows you to: + +- Fully customize shop sign appearance +- Create per-type layouts +- Simplify or expand shop information +- Improve clarity for players + +All layout customization is handled inside `config.yml`. diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md new file mode 100644 index 0000000000..980bad10f2 --- /dev/null +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md @@ -0,0 +1,130 @@ +# Shop Sign Waxing + +QuickShop can automatically wax shop signs to prevent players from editing them manually. + +Waxing protects the integrity of your shop signs and helps prevent tampering, spoofing, and accidental modification. + +As of modern Minecraft versions, waxed signs cannot be edited unless they are unwaxed first. + +--- + +## What Is Sign Waxing? + +In Minecraft, waxing a sign locks it so that: + +- Players cannot edit the text +- Players cannot modify lines +- Accidental changes are prevented +- Malicious edits are blocked + +When enabled in QuickShop, shop signs are automatically waxed when created. + +--- + +## Why Use It? + +Sign waxing protects against: + +- Players editing price lines +- Changing item names on signs +- Spoofing shop information +- Accidental formatting issues +- Sign hijacking attempts + +On public servers, this feature is strongly recommended. + +--- + +## How It Works + +When a shop is created: + +1. QuickShop generates the shop sign. +2. The sign text is written. +3. The sign is automatically waxed (if enabled). + +If a shop is updated: + +- The sign will be safely updated by QuickShop. +- The wax state is maintained. + +Players cannot manually edit shop signs while waxing is enabled. + +--- + +## Configuration + +To enable or disable sign waxing, edit `config.yml`: + +```yaml +shop: + sign-wax: true +``` + +### true + +- Shop signs are automatically waxed. +- Players cannot edit the sign manually. + +### false + +- Shop signs behave like normal Minecraft signs. +- Players may edit them if permitted by the game. + +--- + +## Recommended Setting + +For most servers: + +```yaml +shop: + sign-wax: true +``` + +This ensures shop data stays accurate and secure. + +--- + +## Common Questions + +### Can admins still modify shop signs? + +QuickShop controls shop sign formatting. +Manual edits are not recommended. + +Admins should use: + +- Control panel +- Shop commands +- Direct configuration changes + +### Does waxing affect shop functionality? + +No. +Waxing only prevents manual text edits. +The shop continues to function normally. + +### Can players un-wax shop signs? + +No. +QuickShop manages the sign state automatically. + +--- + +## Best Practices + +- Keep sign-wax enabled on survival servers. +- Combine sign-wax with proper permissions. +- Avoid manually editing shop signs through other plugins. + +--- + +## Summary + +Sign Waxing: + +- Prevents tampering +- Requires no additional setup + +Enable it once and QuickShop handles the rest. \ No newline at end of file diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/modules/shops/taxes.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/modules/shops/taxes.md new file mode 100644 index 0000000000..1a273fd978 --- /dev/null +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/modules/shops/taxes.md @@ -0,0 +1,92 @@ +# Taxation System + +QuickShop includes a taxation system designed to give server owners more flexibility and control over shop-based income. + +This system was revamped as of 6.2.0.11+ + +The new system allows you to: + +- Apply tax to shop owners +- Apply tax to buyers +- Apply tax to both +- Use progressive tax brackets +- Customize tax behavior in configuration + +This system replaces the legacy tax configuration. + +--- + +## How It Works + +During a transaction: + +1. The shop price is calculated. +2. Tax is calculated based on your configuration. +3. Tax is deducted from the configured target(s). +4. Remaining funds are distributed normally. + +You can configure: + +- Flat percentage tax +- Progressive tax based on player balance +- Tax accounts +- Distribution rules + +--- + +## Progressive Tax + +The new system allows you to tax based on balance brackets. + +Example concept: + +- 0 – 10,000 balance → 1% tax +- 10,000 – 100,000 → 2% tax +- 100,000+ → 3% tax + +This helps prevent extremely wealthy players from dominating the economy. + +--- + +## Who Pays the Tax? + +You can configure whether tax applies to: + +- The shop owner +- The buyer +- Both + +This gives you flexibility depending on your economy design. + +--- + +## Configuration + +All tax-related settings are located under the `shop-tax` section in `config.yml`. + +After updating to 6.2.0.11+, review your tax configuration carefully, as the old tax system has been replaced. + +--- + +## Why Use Tax? + +The taxation system can help: + +- Remove currency from circulation +- Fund server banks or towns +- Create sink mechanics +- Balance inflation +- Reward active players + +--- + +## Summary + +The new taxation system is: + +- Flexible +- Configurable +- Balance-aware +- Designed for modern economy servers + +Make sure to review your configuration after upgrading. \ No newline at end of file diff --git a/i18n/ko-KR/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md b/i18n/ko-KR/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md new file mode 100644 index 0000000000..247c24712d --- /dev/null +++ b/i18n/ko-KR/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md @@ -0,0 +1,161 @@ +# WorldEdit & FAWE Support + +QuickShop includes built-in protection and integration for WorldEdit and FastAsyncWorldEdit (FAWE). + +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. + +You do not need to download or install any additional compatibility plugins. + +--- + +## What This Does + +WorldEdit and FAWE allow administrators and builders to: + +- Copy and paste regions +- Replace large areas of blocks +- Mass-delete regions +- Roll back areas +- Regenerate terrain + +Without protection, these operations could: + +- Create ghost shops +- Leave orphaned shop data in the database +- Duplicate shops unintentionally +- Delete containers without cleaning up shop data +- Cause inconsistencies between world and database + +QuickShop now automatically detects and safely processes WorldEdit and FAWE operations. + +--- + +## Built-In Behavior + +When WorldEdit or FAWE modifies blocks: + +- Shops removed via WorldEdit are properly deleted from the database. +- Shop data stays synchronized with world changes. +- Ghost shops are prevented. +- Mass block replacements will not leave broken shop entries behind. + +This applies to: + +- //set +- //replace +- //cut +- //paste +- //regen +- Region deletion +- Mass container removal + +No configuration is required. + +--- + +## FAWE Support + +FastAsyncWorldEdit (FAWE) is fully supported. + +Because FAWE processes edits asynchronously, QuickShop handles: + +- Region-thread safe processing +- Async block updates +- Safe shop deletion during batch edits + +You do not need to enable anything manually. + +--- + +## Removing Shops with WorldEdit + +If you delete containers (chests, barrels, etc.) using WorldEdit: + +QuickShop will automatically: + +- Detect the block removal +- Unregister the shop +- Clean the database entry +- Prevent ghost shops + +You do not need to run `/qs cleanghost` after WorldEdit usage in normal circumstances. + +--- + +## Copying and Pasting Shops + +If you copy and paste regions that contain shops: + +- Shop data will not duplicate incorrectly. +- Shop IDs remain consistent. +- Invalid pasted shops will not auto-register unless properly created. + +This prevents accidental duplication exploits. + +--- + +## Performance + +WorldEdit and FAWE operations can modify thousands of blocks at once. + +QuickShop processes these safely and efficiently: + +- Batch-aware cleanup +- Thread-safe region access (especially on Folia) +- Minimal performance impact during mass edits + +--- + +## Configuration + +There are no specific WorldEdit configuration options in QuickShop. + +Support is automatic and always enabled if WorldEdit or FAWE is detected. + +If WorldEdit is not installed, no extra code is executed. + +--- + +## Common Questions + +### Do I need the old WorldEdit compatibility jar? + +No. + +As of 6.2.0.11, WorldEdit support is built-in and the separate compatibility module has been removed. + +### Does this work with FAWE? + +Yes. FAWE is fully supported. + +### Will shops break if I use //set air? + +No. Shops will be safely removed and cleaned up. + +### Do I need to restart after installing WorldEdit? + +No. QuickShop detects WorldEdit automatically on startup. + +--- + +## Best Practices + +Even though QuickShop safely handles WorldEdit operations, it is recommended to: + +- Avoid copying shops intentionally unless required +- Use backups before large region edits +- Test large FAWE operations on staging servers when possible + +--- + +## Summary + +QuickShop’s built-in WorldEdit and FAWE integration ensures: + +- Safe mass edits +- No ghost shops +- Automatic database cleanup +- Thread-safe processing +- No extra modules required + +WorldEdit support is now a core feature of QuickShop. \ No newline at end of file diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/addon/limited.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/addon/limited.md index 70af27e240..fae55a8c95 100644 --- a/i18n/lt-LT/docusaurus-plugin-content-docs/current/addon/limited.md +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/addon/limited.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -41,8 +35,8 @@ Limit players to purchase up to 16 items per month. /quickshop limit period MONTH ``` -The system is based on the QuickShop-Hikari calendar system.\ -The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year.\ +The system is based on the QuickShop-Hikari calendar system. +The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year. Same for days, months and hours. Available time units: diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/addon/list.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/addon/list.md index 93d182f083..f20b91fd7b 100644 --- a/i18n/lt-LT/docusaurus-plugin-content-docs/current/addon/list.md +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/addon/list.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/addon/plan.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/addon/plan.md index 52a6e79cb4..c10ef4df42 100644 --- a/i18n/lt-LT/docusaurus-plugin-content-docs/current/addon/plan.md +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/addon/plan.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -18,7 +18,7 @@ Recorded data can be displayed from Hikari v2.0.0.0 onwards, but only after vers - All shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 1000 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `5` in server scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `5` in server scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Player Scope @@ -27,7 +27,7 @@ And still is Plan limitations, the list sorting is disturbed, so the display ord - All owned shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 50 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `4` in player scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `4` in player scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Showcase diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/addon/reforges.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/addon/reforges.md index 2a14509eb7..25fff1752a 100644 --- a/i18n/lt-LT/docusaurus-plugin-content-docs/current/addon/reforges.md +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/addon/reforges.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.0.0.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md index 304d39bc05..6f9f51d250 100644 --- a/i18n/lt-LT/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.1.1.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -44,7 +38,7 @@ _This is not necessary if you are using an H2 database._ ### Prepare for convert -To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console.\ +To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console. If a player is in the server, the conversion cannot be started. Once the conversion has begun, the server will be locked during the conversion process and no players will be able to join the server during the conversion. diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/addon/shopitemonly.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/addon/shopitemonly.md index c45062f8c2..1ccfe977b3 100644 --- a/i18n/lt-LT/docusaurus-plugin-content-docs/current/addon/shopitemonly.md +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/addon/shopitemonly.md @@ -2,17 +2,11 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT - -::: - -This addon prevents players from putting non-store items into store containers.\ +This addon prevents players from putting non-store items into store containers. Does not apply to stores that use the item inventory redirection API (aka. InventoryWrapper API). This Addon will check for container (or transferring) items on events such as the player closing the container or hopper access. diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md new file mode 100644 index 0000000000..9c8b4f7407 --- /dev/null +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md @@ -0,0 +1,55 @@ +# 6.2.0.10 + +## Major Changes + +- Added support for 1.21.6 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.7 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.8 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Some internal updates for packetevents(2.9.0 is now required.) +- Updated Lands support + +## Addon Changes + +- Added MatcherPlus Addon + - Allows support for BreweryX and AdvancedItems stacks in shops with improved matching abilities +- Added FabledSkyblock Compat +- Added Dominion Compat +- Added HuskTowns Compat +- Added IridiumSkyblock Compat +- Added member-create for member creation in ARM compat +- Added admin-override and quickshop.arm.admin permission for admin overrides in ARM + +## Minor Changes + +- Added configurations for the coordinates of the display item. +- Added /qs toggledisplayall on/off server/owned + - Players need to have permission node quickshop.toggledisplayall.admin to toggle all on the server. +- Added ability to use abbreviations in /qs price and /qs create commands such as 2.5k for 2500 +- Added ability to set default display status using shop.default-display in config.yml + +## Fixes + +- Fixed issue with display item being sent to the moon on 1.21.5 +- Fixed issue where TRADE_UI interactions interfered with quick create. +- Fixed issue with displays on protocollib falling through the chest +- Fixed issue with signs on .9 and previous .10 snapshots on early versions +- Implemented some performance improvements for paper servers +- Fixed all outstanding issues with Folia usage.(thanks to RootB33R/SleazLee for contributions) + +## Possible 6.2.0.11 Features + +Here's an outline for some features that may arrive in 6.2.0.11: + +- Additional compats/addons that have been piling up. + - see: https://github.com/QuickShop-Community/QuickShop-Hikari/issues/1756 +- gradle?(interested to see compilation time uplifts) +- Update documentation +- Update configuration comments +- Update configuration system? + - auto updating? + - Allows removal of the update code +- Remove waste spigot modules? + - Any versions of 1.20 that can be discarded due to low use? +- Bug fixing, of course +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... \ No newline at end of file diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md new file mode 100644 index 0000000000..b41c88662a --- /dev/null +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md @@ -0,0 +1,173 @@ +## Outline + +- Update documentation +- Update configuration comments +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... + +# 6.2.0.11 + +## Major Changes + +- Removed Spigot Platform Modules, and stopped loading QS if Spigot is detected. This will mean that unless the protocol changes that we use for display items, QS won't need updated for each version. +- Revamped Economy Code Completely + - New classes for all economy-related systems + - Any economy-related or benefits-related events are incompatible with previous versions. +- Added sign layout customizations per-type allowing you to change how lines are configured, an empty string('') will leave an empty line for that line of the sign. + +``` + #The layout of signs for shops. + layout: + + #The layout of BUYING shops. + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of FROZEN shops. + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of SELLING shops. + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +- Add wildcard support for item blacklist patterns(thanks to bennycallanan) + - Added support for wildcard patterns in the item blacklist configuration, allowing users to block entire categories of items with simple patterns. + + - Features + - Wildcard patterns like \*_AXE and \*_SPAWN_EGG now work in blacklist configuration + - Supports \* for any characters and ? for single character matching + - Case-insensitive pattern matching +- Overhauled GUI system(thanks to Yusakidev) + - Implemented gui.yml configuration file for customizing the GUI. + - Implemented better filtering for qs browse + - Implement GUI system to be more stable, and less error prone. + - Added gui.yml for fully configurable GUI layouts and text + - Browse menu: search, sort (price/name/stock), and filter (all/buying/selling/in-stock) + - Staff menu: search functionality for player/staff selection + - Grouped item pages for better shop browsing + - Refactored all menu pages to use configurable display/lore +- Added worldedit compat to QS internally as it's widely used. +- Revamped the taxation system to be more flexible and easier to configure. + - introduced a new progressive tax system that allows you to tax based on the balance of players.(suggested by YuanYuanOwO) + - introduced the ability to tax the player interacting with the shop, the owner, or both + - all tax-related configurations have been moved under the shop-tax section of the config. this may require reconfiguration of your tax settings. + - added a new ShopEnhancedTaxEvent, deprecated the old ShopTaxEvent. + - Added a new TaxManager, and TaxProvider interfaces, this allows for custom tax providers to be added by addons/third-party developers. + +## Addons/Compats Changes + +- Added UltimateClaims compat +- Added SimpleClaimSystem compat +- Added Quests by Pika addon +- Added BetonQuest addon +- Added Pl3xMap addon +- MatcherPlus Compat Improvements + - Added support for CrazyCrates + - Added support for ExcellentCrates + - Added support for SilkSpawners. +- WorldGuard Compat Improvements(Thanks to golovin12) + - Added clear permission handling: + - Region owners and members automatically have permission to create and trade in their own regions. + - Other players must have the appropriate WorldGuard flags enabled (quickshophikari-create, quickshophikari-trade) to interact with shops. + - If a shop is located outside any region, default QuickShop behavior applies (no extra restrictions) +- Added colored markers based on shop state for bluemap(thanks to YusakiDev) +- Updated dynmap/towny addons to use the new ShopTypeEnhancedEvent instead of ShopTypeEvent. +- Removed worldedit compat, it's now included in the main plugin. +- Added support for global flags to the worldguard compat. + +## Internals/Developer APIs + +- Removed several deprecated methods and classes. +- Revamped the interaction manager. It is now more flexible and allows external additions + - This involves two classes InteractionBehavior and InteractionType. + - InteractionType details the type of interaction such as: STANDING_LEFT_CLICK_SIGN, STANDING_LEFT_CLICK_SHOP + - InteractionBehavior outlines a behavior for an InteractionType such as CONTROL_PANEL and TRADE_UI +- Added UserLimitCalculationEvent, which allows for custom limits to be applied to users. + - This is useful for limiting the number of shops a user can have, or adding on to the existing limits provided by the ranks system without needing to implement a new RankLimiter. +- Added a new ShopLayoutProvider interface, and default implementation. + - This allows for custom layouts to be used for shops, allowing for more customization. + - This also allows for developers to override the default layout provider and create their own implementation. +- How to make your own? + - Implement the classes you would like to then register with the InteractionManager: + - ```java + InteractionManager manager = QuickShop.getInstance().getInteractionManager(); + + manager.interaction(new MyTradeInteraction()); + manager.behavior(new MyTradeBehavior()); + ``` +- Replaced some Apache Commons calls that could be easily replaced with built-in java methods, reduces some calls by ~ 1100ms/method call +- Deprecated the ShopType enum, and the ShopTypeEvent. These are replaced with the new IShopType interface and implementing classes. + - The new event is ShopTypeEnhancedEvent. + - This allows for third-party addons to add their own shop types, and simplifies code checks for translations. +- Updated config system to use Boosted-yaml + - this allows for auto-updating of config files without complex update scripts + - this also allows for the config system to not be minecraft-dependent. +- Replaced logical PaperLib calls with native PaperAPI calls. + +## Minor Changes + +- Bump Java version up to 21 +- Added shop.display-allow-enchants to enable/disable enchantments for display items on shops. +- Added workaround for packetevents not supporting custom enchants on itemstacks for virtual display items. +- Using locale translations for shop-type in mode toggle icon(thanks to ExyiN) +- Bumped Residence version for the compat(thanks to YuanYuanOwO) +- add world whitelist support(thanks to wling-art) +- added /qs database save command, which saves all currently dirty-marked shops to the database. +- Split up interactions _SHOPBLOCK into _SHOPBLOCK and _CONTAINER. + - _SHOPBLOCK relates to shops, where _CONTAINER relates to shop-valid containers that are not currently shops. +- Added inventory as an option for command panel, this is useful for adding a secondary option for players to open a shop's inventory. +- Moved crowdin arguments from system properties to config.yml + - crowdin-host + - use-crowdin-ota + +## Fixes + +- Fixes issue with item price restrictions(thanks to maxcom1) +- Fixes issue with 1.20.x protocol lib displays(thanks to YuanYuanOwO) +- Fixes issue when no item is in hand for itemdebug(thanks to YuanYuanOwO) +- Fixes issue with dominion addon(thanks to YuanYuanOwO) +- Add a simple check to avoid this. If it is not own shop, reject limit request directly.(Thanks to YuanYuanOwO) +- Fix NPE by not setting tax for price in TransactionBuilder(thanks to maxcom1) +- Fixes /quickshop suggestprice to differentiate between buy/sell shops. (Thanks to MidSpike) +- PacketEvents ClassNotFoundException with ProtocolLib(thanks to wling-art) +- Reallocate block state access to region thread for shop creation(thanks to r00tbeerman) +- resolve SLF4J StaticLoggerBinder loading error(thanks to wling-art) +- sign hijacking issue by validating sign facing direction(thanks to wling-art) +- Performance improvements for QuickShop disabling to prevent potential freezes. +- Fixed issue with 1.20.4 packetevents virtual displays not staying put. +- Fixes critical issue in GriefPrevention compatibility plugin. +- Fixes issue with shop owner not getting money when benefits active. +- Fixes for lands addon on folia, Use regionThread for Folia compatibility(thanks to YusakiDev) +- Fixes for TRADE_DIRECT on stacking shops +- Fixes issue for protocollib 5.4.0 with undocumented packet changes. +- Fixes issue where item stacks could be used on creation above the max stack size. +- Fixes issue with BukkitAudiences-related crashes on 1.21.11. +- Fix issue with shop deletion when getting too impatient. +- Fix the permission check issue when a shop owned by a non-owner is transferred to someone else. (thanks to YuanYuanOwO) +- Fix ui with supertool (thanks to YuanYuanOwO) +- Fix issue with logs generating outside debug mode. +- Fix issue with /qs find. +- Fix configuration loading timing. +- Fix configuration loading/creation warning message language. +- Fix command description language key mismatch(thanks to wling-art) +- Fix qs clean command on folia(thanks to wling-art) +- Fix per-player-shop-sign on folia(thanks to wling-art) +- Fix potential recursive deadlock in virtual display packet sending(thanks to wling-art) +- Fix configuration loading/creation warning message language. +- Fix issue with /qs browse and ShopItemOnly addon not behaving properly together on folia. +- Fix issue with PLAN using outdated APIs. +- Fix issue with /qs clean on folia.(thanks to wling-art) +- Fix issue with /qs cleanghost on folia(thanks to wling-art) +- More thread safety fixes for shops on folia.(thanks to wling-art) +- Fix owner payment calculations with benefits(thanks to wling-art) \ No newline at end of file diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md index 8172f9b410..dcc3edc67d 100644 --- a/i18n/lt-LT/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md @@ -20,20 +20,20 @@ the ControlComponent object with a custom one that will replace the original dur ### Introduction of the Revamped Packet System 1. **About**: - - A modular and scalable system for managing packets related to virtual display items in Minecraft. - - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. + - A modular and scalable system for managing packets related to virtual display items in Minecraft. + - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. 2. **Custom Packet Factories**: - - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. - - Packet types: - - **Spawn Packet**: Spawns a virtual item entity at a specific location. - - **Metadata Packet**: Updates the visual properties of virtual items. - - **Velocity Packet**: Adds motion/velocity to entities (currently optional). - - **Destroy Packet**: Removes the entity from the client view. + - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. + - Packet types: + - **Spawn Packet**: Spawns a virtual item entity at a specific location. + - **Metadata Packet**: Updates the visual properties of virtual items. + - **Velocity Packet**: Adds motion/velocity to entities (currently optional). + - **Destroy Packet**: Removes the entity from the client view. 3. **Error Handling and Logging**: - - Enhanced debug logs to trace packet-related issues. - - Detailed error messages for missing factories or unregistered listeners. + - Enhanced debug logs to trace packet-related issues. + - Detailed error messages for missing factories or unregistered listeners. #### Improvements: diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md index 7775308722..c6e0948d19 100644 --- a/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md index f420997a9c..38587e3784 100644 --- a/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md index 5ed8182c9a..259c55f342 100644 --- a/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md index 924a37ac49..7fd4596a6a 100644 --- a/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,6 +10,6 @@ This is a BungeeCord plugin, you need install it within your BungeeCord's plugin ## How does it work? -BungeeCord Bridge plugins will register a `quickshop:bungee` channel for fowarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. +BungeeCord Bridge plugins will register a `quickshop:bungee` channel for forwarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. All forwarding is indicated by QuickShop-Hikari on the Spigot server and ends when it is not needed. diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md index 27d68956a8..20fbaf7a0c 100644 --- a/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,5 +10,5 @@ This compatibility module added [Chest Protect](https://www.spigotmc.org/resourc ## How does it work? -This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident.\ +This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident. It also prevents players from creating shops on ChestProtect protected containers. diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md index 220e26d8bb..e1757e7be9 100644 --- a/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/dominion.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/dominion.md new file mode 100644 index 0000000000..e1195278a8 --- /dev/null +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/dominion.md @@ -0,0 +1,138 @@ +# Dominion + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and Dominion. + +It ensures that shop creation and trading respect Dominion’s land and territory protection system. + +--- + +## What Does It Do? + +Dominion allows players or groups to claim land and define territory-based permissions. + +Without compatibility: + +- Players could create shops inside territories they do not control. +- Visitors might trade inside protected dominions. +- Dominion permission rules might not apply to shop interactions. + +The Dominion compat module ensures that: + +- Shop creation respects territory ownership. +- Shop trading follows Dominion permission settings. +- Protected land remains secure from unauthorized shop usage. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a Dominion-controlled area. +- Whether the player has permission within that territory. +- Whether Dominion rules allow shop interaction. + +If the action is not permitted by Dominion settings, QuickShop blocks it. + +If the location is outside any Dominion territory, default QuickShop behavior applies. + +--- + +## Territory Owner Control + +With this module enabled: + +- Territory owners can create and manage shops inside their dominion. +- Trusted members follow territory-based permissions. +- Outsiders are restricted unless explicitly allowed. +- Shop actions respect Dominion’s land rules automatically. + +This prevents unauthorized shop placement inside protected territories. + +--- + +## Installation + +1. Install Dominion. +2. Install the QuickShop Dominion compat module. +3. Restart your server. + +The module activates automatically if Dominion is detected. + +No manual configuration linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside dominions +whitelist-mode: false + +# Allow territory owners to override shop permissions +allow-owner-override: true +``` + +If Dominion is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For servers using Dominion: + +- Restrict shop creation to territory owners or trusted members. +- Prevent shop creation in wilderness if desired. +- Allow dominion owners to manage shop permissions. +- Review Dominion permission settings to align with shop behavior. + +This ensures protected territories remain secure and organized. + +--- + +## Common Questions + +### Can players create shops in someone else's dominion? + +Only if Dominion permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You may allow or restrict shops outside dominions. + +### What happens if Dominion is removed? + +QuickShop returns to normal behavior and stops checking Dominion territories. + +--- + +## Summary + +The Dominion compat module: + +- Enforces territory-based permissions +- Prevents unauthorized shop creation +- Protects claimed land from misuse +- Integrates seamlessly with Dominion + +It is recommended for servers running Dominion. \ No newline at end of file diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md index 743d3ae666..2ac9b10488 100644 --- a/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md new file mode 100644 index 0000000000..07ba4ada66 --- /dev/null +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md @@ -0,0 +1,133 @@ +# FabledSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and FabledSkyblock. + +It ensures that shop creation and trading properly respect island boundaries and island permissions. + +--- + +## What Does It Do? + +On Skyblock servers, players build and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Players might trade in areas they should not. +- Island protection rules might not apply to shops. + +The FabledSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members behave correctly with shops. +- Island visitors are restricted appropriately. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a FabledSkyblock island. +- Whether the player has permission on that island. +- Whether island settings allow the action. + +If the action is not permitted by island rules, QuickShop will deny it. + +--- + +## Island Ownership Rules + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow island permission settings. +- Visitors can only trade if island permissions allow it. +- Outside of islands, default QuickShop behavior applies. + +--- + +## Installation + +1. Install FabledSkyblock. +2. Install the QuickShop FabledSkyblock compat module. +3. Restart your server. + +The module activates automatically if FabledSkyblock is detected. + +No manual linking is required. + +--- + +## Configuration + +If the module provides configuration options, they will appear in its `config.yml`. + +Typical options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If FabledSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most Skyblock servers: + +- Allow shop creation only inside islands. +- Prevent trading in the void or wilderness. +- Let island owners control shop permissions. +- Use island rank systems to manage shop access. + +This helps maintain economic balance between islands. + +--- + +## Common Questions + +### Can players create shops in the void? + +Only if your configuration allows it. +Most servers disable shop creation outside islands. + +### Does this affect island war or PvP modes? + +No. +The module only checks island ownership and permissions for shop interactions. + +### What happens if FabledSkyblock is removed? + +QuickShop returns to normal behavior. + +--- + +## Summary + +The FabledSkyblock compat module: + +- Protects island economies +- Enforces island permission rules +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is strongly recommended for any server running FabledSkyblock. \ No newline at end of file diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md index 81b13d2c6b..32614d3019 100644 --- a/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md @@ -2,17 +2,17 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -GreifPrevention compatibility module added compaitibility with GF. +GreifPrevention compatibility module added compatibility with GF. ## How does it work This module allow QuickShop-Hikari check if player have permission to create or use QuickShop in specific region. -And delete shops when claim removed, untrusted, unclimed, expired, resized or subclaim created. +And delete shops when claim removed, untrusted, unclaimed, expired, resized or subclaim created. ## Configuration diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md new file mode 100644 index 0000000000..e71b34d462 --- /dev/null +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md @@ -0,0 +1,139 @@ +# HuskTowns + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and HuskTowns. + +It ensures that shop creation and trading respect town and claim permissions defined by HuskTowns. + +--- + +## What Does It Do? + +HuskTowns allows players to create towns and claim land. + +Without compatibility: + +- Players could create shops inside towns they do not belong to. +- Visitors might trade inside protected towns. +- Town permission rules might not apply to shop interactions. + +The HuskTowns compat module ensures that: + +- Shop creation respects town ownership. +- Trading follows town permission settings. +- Town members and visitors are handled correctly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a HuskTowns claim. +- Whether the player is a town member, trusted player, or outsider. +- Whether the town's permission settings allow the action. + +If the action is not permitted by town rules, QuickShop blocks it. + +Outside of town claims, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Town Owner Control + +With this module enabled: + +- Town owners can create and manage shops inside their town. +- Town members follow town-based permission settings. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect town claim protection. + +This prevents unauthorized shop placement and trading inside protected towns. + +--- + +## Installation + +1. Install HuskTowns. +2. Install the QuickShop HuskTowns compat module. +3. Restart your server. + +The module activates automatically if HuskTowns is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside towns +whitelist-mode: false + +# Allow town owners to override shop permissions +allow-owner-override: true +``` + +If HuskTowns is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For town-based survival servers: + +- Restrict shop creation to town members. +- Allow trading only where town permissions permit. +- Prevent shop creation in wilderness if desired. +- Enable owner override for better administrative control. + +This helps maintain town-based economic balance. + +--- + +## Common Questions + +### Can players create shops in another town? + +Only if that town's permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You can allow or restrict shops outside towns. + +### What happens if HuskTowns is removed? + +QuickShop returns to normal behavior and stops checking town permissions. + +--- + +## Summary + +The HuskTowns compat module: + +- Enforces town-based land permissions +- Protects towns from unauthorized shop usage +- Integrates smoothly with HuskTowns +- Requires minimal setup + +It is recommended for any server running HuskTowns. \ No newline at end of file diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md new file mode 100644 index 0000000000..3fa2995eb0 --- /dev/null +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md @@ -0,0 +1,139 @@ +# IridiumSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and IridiumSkyblock. + +It ensures that shop creation and trading respect island boundaries and island permission settings defined by IridiumSkyblock. + +--- + +## What Does It Do? + +IridiumSkyblock allows players to create and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Visitors might trade inside protected islands. +- Island protection rules might not apply correctly to shops. + +The IridiumSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members and visitors are handled properly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside an IridiumSkyblock island. +- Whether the player is the island owner, member, or visitor. +- Whether island permissions allow shop interaction. + +If the action is not permitted, QuickShop blocks it. + +Outside of islands, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Island Owner Permissions + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow the island's permission configuration. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect island protection rules. + +This prevents unauthorized shop usage inside protected islands. + +--- + +## Installation + +1. Install IridiumSkyblock. +2. Install the QuickShop IridiumSkyblock compat module. +3. Restart your server. + +The module activates automatically if IridiumSkyblock is detected. + +No additional setup is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If IridiumSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most IridiumSkyblock servers: + +- Restrict shop creation to island owners. +- Allow island members to trade if trusted. +- Prevent shop creation in the void or wilderness. +- Enable owner override for better management. + +This helps maintain balanced island economies. + +--- + +## Common Questions + +### Can players create shops outside their island? + +Only if your configuration allows it. + +Most Skyblock servers restrict shops to island areas. + +### Do island ranks affect shop permissions? + +Yes, if your island permissions are configured to control interaction rights. + +QuickShop follows island rules. + +### What happens if IridiumSkyblock is removed? + +QuickShop returns to normal behavior and stops checking island permissions. + +--- + +## Summary + +The IridiumSkyblock compat module: + +- Protects island economies +- Enforces island-based permissions +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is recommended for any server running IridiumSkyblock. diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md new file mode 100644 index 0000000000..3b4726cb9d --- /dev/null +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md @@ -0,0 +1,151 @@ +# ItemMatcherPlus + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +The ItemMatcherPlus module improves how QuickShop matches custom and plugin-modified items. + +It allows QuickShop to properly recognize and stack items created by other plugins that normally would not match using standard Bukkit item comparisons. + +This module is especially useful for servers that use: + +- Custom items +- Modified metadata +- NBT-based systems +- Advanced crate rewards +- Custom brewing systems +- Custom fishing rewards + +--- + +## What Does It Do? + +By default, Minecraft item matching checks: + +- Material type +- Basic metadata + +However, many plugins modify items with: + +- Custom NBT data +- Hidden tags +- Custom lore formats +- Unique identifiers + +Without enhanced matching: + +- Items may not stack +- Shops may refuse valid items +- Transactions may fail +- Buying/selling may not behave correctly + +ItemMatcherPlus improves compatibility and matching accuracy. + +--- + +## Supported Plugins + +ItemMatcherPlus includes built-in support for: + +- AdvancedItems +- BreweryX +- CrazyCrates +- ExcellentCrates +- PyroFishing +- SilkSpawners + +If any of these plugins are installed, QuickShop will automatically use enhanced matching logic. + +No additional configuration is required. + +--- + +## How It Works + +When a player trades with a shop: + +1. QuickShop checks the item. +2. If ItemMatcherPlus is enabled, it performs advanced matching. +3. Plugin-specific metadata is validated. +4. The item is confirmed as a match (or rejected safely). + +This allows: + +- Proper stacking of custom items +- Correct shop transactions +- Accurate buy/sell detection +- Reduced false mismatches + +--- + +## Installation + +1. Download the ItemMatcherPlus module. +2. Place the JAR into your `plugins` folder. +3. Restart your server. + +If supported plugins are detected, compatibility activates automatically. + +--- + +## Configuration + +ItemMatcherPlus does not require configuration. + +It activates automatically when: + +- The module is installed +- A supported plugin is detected + +If a supported plugin is not installed, no extra logic runs. + +--- + +## Why You Should Use It + +You should install ItemMatcherPlus if your server uses: + +- Custom fishing plugins +- Custom brewing systems +- Crate plugins with modified items +- Custom spawners +- Any plugin that modifies NBT data + +Without it, shops may not properly recognize custom items. + +--- + +## Common Questions + +### Do I need this if I don't use custom item plugins? + +No. +If you only use vanilla items, this module is not necessary. + +### Does this affect performance? + +The module only activates enhanced matching when needed. + +Normal item matching remains fast and efficient. + +### Will it break existing shops? + +No. +It improves compatibility and matching accuracy without modifying existing shop data. + +--- + +## Summary + +ItemMatcherPlus: + +- Improves item matching accuracy +- Adds support for major custom item plugins +- Prevents stacking and trade issues +- Requires no configuration +- Activates automatically + +If you run a heavily customized economy server, this module is highly recommended. \ No newline at end of file diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md index ba87606698..d4ae7d129a 100644 --- a/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/lands.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/lands.md index 06296f5779..7671fcdfe0 100644 --- a/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/lands.md +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/lands.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/openinv.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/openinv.md index c51f628615..4807d57873 100644 --- a/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/openinv.md +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/openinv.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md new file mode 100644 index 0000000000..c2136320b0 --- /dev/null +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md @@ -0,0 +1,138 @@ +# SimpleClaimSystem + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and SimpleClaimSystem. + +It ensures that shop creation and trading respect land ownership and claim permissions defined by SimpleClaimSystem. + +--- + +## What Does It Do? + +SimpleClaimSystem allows players to claim land and protect it from unauthorized interaction. + +Without compatibility: + +- Players could create shops inside claims they do not own. +- Visitors might trade inside protected areas. +- Claim protection might not apply correctly to shops. + +The SimpleClaimSystem compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops within their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a SimpleClaimSystem claim. +- Whether the player has permission within that claim. +- Whether claim rules allow shop interaction. + +If the action is not permitted by the claim, QuickShop blocks it. + +If the location is outside any claim, default QuickShop behavior applies. + +--- + +## Claim Owner Control + +With this module enabled: + +- Claim owners can create and manage shops inside their claim. +- Trusted players follow claim-based permissions. +- Visitors are restricted unless explicitly allowed. +- Claim protection rules apply automatically to shop interactions. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install SimpleClaimSystem. +2. Install the QuickShop SimpleClaimSystem compat module. +3. Restart your server. + +The module activates automatically if SimpleClaimSystem is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If SimpleClaimSystem is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Enable owner override for easier management. + +This ensures players maintain control over their protected land. + +--- + +## Common Questions + +### Can players create shops in someone else's claim? + +Only if claim permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can allow shops outside claims or restrict them. + +### What happens if SimpleClaimSystem is removed? + +QuickShop will revert to default behavior and stop checking claim permissions. + +--- + +## Summary + +The SimpleClaimSystem compat module: + +- Enforces claim-based permissions +- Prevents unauthorized shop creation +- Protects land from unwanted trading +- Requires minimal setup + +It is recommended for servers running SimpleClaimSystem. \ No newline at end of file diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md index a84dbf057b..4dfa8ae97c 100644 --- a/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/towny.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/towny.md index 52ab4818f4..b26c19d335 100644 --- a/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/towny.md +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/towny.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -26,7 +26,7 @@ Town sub-command allow you switch a quickshop between regular shop and town shop For a nation shop, the shop owner will changed to nation fake player created by Towny, and use Nation's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from nation Towny account.\ +All purchases will deposit or withdraw money from nation Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Nation Shop. @@ -35,7 +35,7 @@ If Plot type restriction is enabled, only a specific Plot type can create a Nati For a town shop, the shop owner will changed to town fake player created by Towny, and use Town's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from town Towny account.\ +All purchases will deposit or withdraw money from town Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Town Shop. @@ -88,7 +88,7 @@ bank-mode: ## Permission Override -By adjust configuration, you're allow mayor or king automaticlly grant administrator permission on all shops in their management range. +By adjust configuration, you're allow mayor or king automatically grant administrator permission on all shops in their management range. ```yaml #Should allow Mayor grant the shop administrator permission on they town. @@ -168,7 +168,7 @@ This causes Towny and QuickShop Hikari to use accounts with the same name but di You can adjust the option in configuration to enable workaround. -NOTE: It will force turned on if detected EssentialsX installed on your server.\ +NOTE: It will force turned on if detected EssentialsX installed on your server. At present, we do not provide a method for disable it. ```yaml diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md new file mode 100644 index 0000000000..0189958495 --- /dev/null +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md @@ -0,0 +1,138 @@ +# UltimateClaims + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and UltimateClaims. + +It ensures that shop creation and trading respect land claim permissions managed by UltimateClaims. + +--- + +## What Does It Do? + +On servers using land-claim plugins, players protect areas of the world from unauthorized interaction. + +Without compatibility: + +- Players may create shops inside claims they do not own. +- Visitors might trade in areas where they should not. +- Claim protection rules might not apply correctly to shops. + +The UltimateClaims compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops inside their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a claim. +- Whether the player has permission in that claim. +- Whether claim rules allow shop interaction. + +If the action violates claim settings, QuickShop blocks it. + +Outside of claims, normal QuickShop behavior applies. + +--- + +## Claim Owner Permissions + +With this module enabled: + +- Claim owners can create and manage shops within their claim. +- Trusted players follow claim permission settings. +- Visitors are restricted based on claim configuration. +- Shop actions outside of claims behave normally. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install UltimateClaims. +2. Install the QuickShop UltimateClaims compat module. +3. Restart your server. + +If UltimateClaims is detected on startup, compatibility activates automatically. + +No additional linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Common options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If UltimateClaims is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Keep owner override enabled for better control. + +This ensures players maintain full control over their protected land. + +--- + +## Common Questions + +### Can players create shops inside someone else's claim? + +Only if the claim permissions allow it. + +Otherwise, QuickShop will block the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can choose to restrict shops to claimed land only. + +### What happens if UltimateClaims is removed? + +QuickShop returns to normal behavior without claim checks. + +--- + +## Summary + +The UltimateClaims compat module: + +- Protects claimed land from unauthorized shop usage +- Enforces claim-based permissions +- Integrates smoothly with land-claim servers +- Requires minimal setup + +It is recommended for any server running UltimateClaims. \ No newline at end of file diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md index 87a71a205c..6437754503 100644 --- a/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md @@ -2,8 +2,10 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. Find out more [here](../modules/shops/worldedit.md). + +Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. \ No newline at end of file diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/development/01-getting-start.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/development/01-getting-start.md index 92b773451e..0e78e52367 100644 --- a/i18n/lt-LT/docusaurus-plugin-content-docs/current/development/01-getting-start.md +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/development/01-getting-start.md @@ -6,8 +6,8 @@ This series of articles will help you build extensions for QuickShop-Hikari or i ## License -QuickShop-Hikari is open source using the [GPLv3](https://www.gnu.org/licenses/quick-guide-gplv3.en.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari).\ -You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the GPLv3 agreement. +QuickShop-Hikari is open source using the [AGPLv3](https://www.gnu.org/licenses/agpl-3.0.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari). +You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the AGPLv3 agreement. ## 🚧Don't trust Javadoc too much @@ -48,7 +48,7 @@ QuickShop-Hikari divides operation sources into three types: - Server Main Thread - Async Thread (any other threads but not server main thread) -- Hybird +- Hybrid If you access the API through the wrong thread, QuickShop-Hikari will force a runtime error to be thrown. @@ -58,4 +58,4 @@ For APIs that may trigger network IO or long-time disk IO, you are required not You can see [Util.ensureThread()](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/3d1d271e1106ea1c83cc6068f8232ab7c7860918/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/util/Util.java#L351) and find out the requirements of the different APIs by looking up their use. APIs that do not use Util.ensureThread() are allowed to be called from any thread by default. -You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. +You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. \ No newline at end of file diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md index aa2404c594..7828d414ad 100644 --- a/i18n/lt-LT/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md @@ -10,7 +10,7 @@ ShopManager manager = api.getShopManager(); ## Getting a shop -Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates.\ +Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates. QuickShop-Hikari's store is only bound to one half of "Large Chest", so to get the store, you need to query both the cube itself and its associated cube. The good thing is that there is an API in the plugin that allows you to handle this situation very easily. @@ -71,7 +71,7 @@ manager.deleteShop(shop) // Permanently delete this store, both memory and datab ## Identify a store -Please note that store locations are technically variable and you should not use coordinates to identify a store.\ +Please note that store locations are technically variable and you should not use coordinates to identify a store. Also RuntimeRandomUniqueId should not be used to identify the store, as the name suggests, the value changes every time the server restarts, it should only be used to handle scenarios where the player interacts with the server. ```java diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md index 543f1851da..4f839ed652 100644 --- a/i18n/lt-LT/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md @@ -1,6 +1,6 @@ # 0x05 Per shop permission -QuickShop-Hikari has a per shop permission management system.\ +QuickShop-Hikari has a per shop permission management system. Therefore, for a normal permission node check is not enough, you need to attach an additional check. ## Check with shop diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/development/06-protocol-system.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/development/06-protocol-system.md index 5d37a15536..0380b789f9 100644 --- a/i18n/lt-LT/docusaurus-plugin-content-docs/current/development/06-protocol-system.md +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/development/06-protocol-system.md @@ -15,30 +15,30 @@ This documentation will guide developers through the components, implementation - **Purpose**: Manages packet handling and initialization logic. - **Interface**: `PacketHandler` - **Key Methods**: - - `Map> factories()` - - Retrieves a map of supported `PacketFactory` instances keyed by game versions. - - `void initialize()` - - Initializes the packet handler. - - `Optional> factory(String version)` - - Retrieves a `PacketFactory` for a specific game version. + - `Map> factories()` + - Retrieves a map of supported `PacketFactory` instances keyed by game versions. + - `void initialize()` + - Initializes the packet handler. + - `Optional> factory(String version)` + - Retrieves a `PacketFactory` for a specific game version. ### 2. **PacketFactory** - **Purpose**: Creates and sends specific packet types. - **Interface**: `PacketFactory` - **Supported Packets**: - - **Spawn Packet**: - - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. - - Example Use: Representing shop items visually. - - **Metadata Packet**: - - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. - - Example Use: Updating item display name or properties. - - **Velocity Packet**: - - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. - - Example Use: Custom animations for virtual items. - - **Destroy Packet**: - - Removes the entity from the client view. Created using `createDestroyPacket()`. - - Example Use: Unloading or removing a virtual display item. + - **Spawn Packet**: + - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. + - Example Use: Representing shop items visually. + - **Metadata Packet**: + - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. + - Example Use: Updating item display name or properties. + - **Velocity Packet**: + - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. + - Example Use: Custom animations for virtual items. + - **Destroy Packet**: + - Removes the entity from the client view. Created using `createDestroyPacket()`. + - Example Use: Unloading or removing a virtual display item. Developers implementing custom `PacketFactory` should ensure these packets are correctly handled and optimized for performance. @@ -46,24 +46,24 @@ Developers implementing custom `PacketFactory` should ensure these packets are c - **Purpose**: Oversees the lifecycle of virtual display items and integrates with packet handlers. - **Key Features**: - - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). - - Manages virtual display items mapped to chunks. - - Provides thread-safe operations for adding and removing display items. + - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). + - Manages virtual display items mapped to chunks. + - Provides thread-safe operations for adding and removing display items. ### 4. **VirtualDisplayItem** - **Purpose**: Represents a virtual item displayed to players. - **Key Features**: - - Generates and caches packets for spawning, metadata, velocity, and destruction. - - Manages packet senders for each player. - - Handles spawn and removal operations dynamically. + - Generates and caches packets for spawning, metadata, velocity, and destruction. + - Manages packet senders for each player. + - Handles spawn and removal operations dynamically. ### 5. **ProtocolLibHandler and PacketEventsHandler** - **Purpose**: Provide implementations of `PacketHandler` using ProtocolLib and PacketEvents, respectively. - **Differences**: - - `ProtocolLibHandler` leverages ProtocolLib API. - - `PacketEventsHandler` uses the PacketEvents library. + - `ProtocolLibHandler` leverages ProtocolLib API. + - `PacketEventsHandler` uses the PacketEvents library. --- @@ -140,11 +140,11 @@ public class CustomPacketFactory implements PacketFactory { Packet factories are provided for specific game versions through two primary implementations: - **ProtocolLib**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` - **PacketEvents**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` --- diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md new file mode 100644 index 0000000000..aebc035f87 --- /dev/null +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md @@ -0,0 +1,297 @@ +# Interaction System (Developer Guide) + +The Interaction System allows developers to fully customize how players interact with shops. + +As of 6.2.0.11, the system has been redesigned to be: + +- Modular +- Extensible +- Thread-safe +- Fully customizable by third-party addons + +This guide will walk you through: + +1. What the Interaction System is +2. Getting the `InteractionManager` +3. Understanding `InteractionType` +4. Understanding `InteractionBehavior` +5. Registering custom interactions +6. Best practices + +--- + +# Overview + +The Interaction System is composed of three main components: + +| Component | Purpose | +| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| `InteractionType` | Describes **what kind of click happened** (standing, sneaking, left-click, sign, shopblock, etc.) | +| `InteractionBehavior` | Describes **what action should happen** when that type is triggered | +| `InteractionManager` | Central registry that manages interactions and behaviors | + +This separation allows developers to: + +- Add new click types +- Add new behaviors +- Override existing ones +- Extend QuickShop without modifying core code + +--- + +# Getting the InteractionManager + +To begin registering custom interactions, you must retrieve the `InteractionManager` instance. + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +If you are working directly with the plugin instance: + +```java +InteractionManager manager = QuickShop.getInstance().getInteractionManager(); +``` + +Once obtained, you can: + +- Register new interaction types +- Register new behaviors +- Override existing behaviors + +--- + +# Understanding InteractionType + +`InteractionType` represents **how** a player interacted with a shop. + +Examples include: + +- `STANDING_LEFT_CLICK_SIGN` +- `STANDING_RIGHT_CLICK_SHOPBLOCK` +- `SNEAKING_LEFT_CLICK_CONTAINER` +- etc. + +Each `InteractionType` defines: + +- Player stance (standing/sneaking) +- Click type (left/right) +- Target (sign/shopblock/container) + +InteractionTypes do NOT define behavior — they only define the trigger. + +--- + +# Understanding InteractionBehavior + +`InteractionBehavior` defines **what happens** when an interaction is triggered. + +Examples of built-in behaviors: + +- `TRADE_INTERACTION` +- `TRADE_UI` +- `CONTROL_PANEL` +- `CONTROL_PANEL_UI` +- `NONE` + +A behavior: + +- Executes logic +- May open GUIs +- May send chat panels +- May directly trade items +- Can cancel or modify flow + +This separation makes it easy to reuse behaviors across multiple interaction types. + +--- + +# Registering Custom Interactions + +There are two things you can register: + +- A custom `InteractionType` +- A custom `InteractionBehavior` + +--- + +## Creating a Custom InteractionBehavior + +Create a class implementing `InteractionBehavior`. + +Example: + +```java +public class MyTradeBehavior implements InteractionBehavior { + + @Override + public String getKey() { + return "MY_CUSTOM_TRADE"; + } + + @Override + public void execute(InteractionClick click) { + Player player = click.getPlayer(); + Shop shop = click.getShop(); + + player.sendMessage("You triggered my custom interaction!"); + + // Add your custom logic here + } +} +``` + +Then register it: + +```java +InteractionManager manager = api.getInteractionManager(); +manager.behavior(new MyTradeBehavior()); +``` + +Now your behavior is available for use. + +--- + +## Creating a Custom InteractionType + +You may also register custom interaction types if you want to introduce new trigger definitions. + +Example: + +```java +public class MyCustomInteraction implements InteractionType { + + @Override + public String getKey() { + return "STANDING_DOUBLE_CLICK_SIGN"; + } + + @Override + public boolean matches(InteractionClick click) { + // Define custom logic to detect this interaction + return click.isStanding() + && click.isSign() + && click.isDoubleClick(); + } +} +``` + +Register it: + +```java +manager.interaction(new MyCustomInteraction()); +``` + +--- + +# Binding Types to Behaviors + +The InteractionManager internally maps interaction types to behaviors based on configuration and registration order. + +Once your behavior is registered: + +- It can be referenced in `interaction.yml` +- Or attached programmatically + +Example interaction.yml usage: + +```yaml +STANDING_LEFT_CLICK_SIGN: MY_CUSTOM_TRADE +``` + +--- + +# The InteractionClick Object + +When your behavior executes, you receive an `InteractionClick` object. + +It provides: + +- `getPlayer()` +- `getShop()` +- `getLocation()` +- `isSneaking()` +- `isSign()` +- `isShopBlock()` +- etc. + +This gives full context for safe execution. + +--- + +# Advanced: Overriding Built-in Behavior + +If you register a behavior using the same key as an existing one, your behavior can override the default. + +⚠️ Be careful when doing this — you are replacing core functionality. + +--- + +# Best Practices + +### Always Use Unique Keys + +Avoid naming collisions: + +``` +MYPLUGIN_CUSTOM_BEHAVIOR +``` + +### Keep Behavior Lightweight + +Do not block the main thread with: + +- Heavy database calls +- File IO +- Network calls + +Use async tasks if needed. + +### Respect Permissions + +Always validate: + +```java +if (!player.hasPermission("myplugin.use")) { + return; +} +``` + +### Avoid Hard Overrides Unless Necessary + +Instead of replacing built-in behaviors, consider extending them. + +--- + +# Example: Full Minimal Implementation + +```java +public class ExampleAddon { + + public void register(QuickShopAPI api) { + + InteractionManager manager = api.getInteractionManager(); + + manager.behavior(new MyTradeBehavior()); + manager.interaction(new MyCustomInteraction()); + } +} +``` + +--- + +# Conclusion + +The Interaction System is designed to allow: + +- Full extensibility +- Clean separation of triggers and actions +- Easy integration for third-party developers + +By retrieving the `InteractionManager`: + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +You gain full control over how shops respond to player actions. \ No newline at end of file diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/development/08-tax-manager.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/development/08-tax-manager.md new file mode 100644 index 0000000000..72a56f9e88 --- /dev/null +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/development/08-tax-manager.md @@ -0,0 +1,266 @@ +# Tax System (Developer Guide) + +The QuickShop tax system allows server owners and developers to define how transaction taxes are calculated, distributed, and extended. + +As of 6.2.0.11, the tax system has been fully rewritten to provide: + +- A flexible TaxManager +- Pluggable TaxProvider support +- Progressive taxation +- Tax targeting (shop owner, interacting player, or both) +- Custom extension capability for third-party addons + +This guide explains how to work with the tax system programmatically. + +--- + +# Overview + +The tax system is composed of three core components: + +TaxManager +Responsible for coordinating tax calculation and execution. + +TaxProvider +Defines how tax values are calculated. + +TaxRates +Represents calculated tax results for a transaction. + +The system is designed to allow custom providers to be registered and used without modifying core logic. + +--- + +# Getting the TaxManager + +To work with the tax system, retrieve the TaxManager from the ShopManager. + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +Once obtained, you can: + +- Access current tax configuration +- Register custom tax providers +- Calculate tax values +- Hook into tax events + +--- + +# How the Tax System Works + +During a shop transaction: + +1. A base price is determined. +2. The TaxManager selects the active TaxProvider. +3. The TaxProvider calculates applicable tax. +4. A TaxRates object is produced. +5. The system applies the tax to: + + - Shop owner + - Interacting player + - Or both (depending on configuration) + +This architecture allows tax behavior to be modified without altering transaction logic. + +--- + +# TaxProvider + +A TaxProvider defines how tax values are calculated. + +You may create your own provider to implement: + +- Progressive tax brackets +- Flat percentage tax +- Conditional tax rules +- Region-based tax +- Rank-based tax +- Time-based tax + +Example minimal provider: + +```java +public class MyCustomTaxProvider implements TaxProvider { + + @Override + public TaxRates calculateTax(TaxContext context) { + + double basePrice = context.getPrice(); + + double taxAmount = basePrice * 0.05; // 5% flat tax + + return new TaxRates() + .ownerTax(taxAmount) + .buyerTax(0.0); + } +} +``` + +Then register it: + +```java +taxManager.provider(new MyCustomTaxProvider()); +``` + +Once registered, your provider will be used for tax calculations. + +--- + +# TaxRates + +TaxRates represents the result of a tax calculation. + +It typically contains: + +- Owner tax amount +- Buyer tax amount +- Total tax impact +- Metadata (if applicable) + +The transaction system will read from TaxRates and apply deductions accordingly. + +--- + +# Progressive Taxation + +The built-in system supports progressive tax structures. + +This allows server administrators to tax based on: + +- Player balance +- Shop owner balance +- Configured tax brackets + +Example configuration concept: + +- 0–10,000 balance → 1% tax +- 10,000–100,000 → 2% tax +- 100,000+ → 3% tax + +Developers can extend or override this logic inside a custom TaxProvider. + +--- + +# Targeting Tax + +The new tax system allows taxes to be applied to: + +- Shop owner +- Interacting player +- Both + +This is controlled via configuration, but custom providers can override distribution logic by adjusting TaxRates output. + +Example: + +```java +return new TaxRates() + .ownerTax(basePrice * 0.02) + .buyerTax(basePrice * 0.01); +``` + +--- + +# Registering a Custom TaxProvider + +To replace or extend tax logic: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); + +taxManager.provider(new MyCustomTaxProvider()); +``` + +You may register only one primary provider at a time. If multiple providers are needed, implement internal delegation within your custom provider. + +--- + +# Tax Events + +The tax system integrates with the event system. + +The modern event used is: + +ShopEnhancedTaxEvent + +This replaces legacy tax events and provides improved context, including: + +- Transaction builder reference +- TaxRates object +- Modification capability before final execution + +You can listen for the event and modify tax behavior dynamically: + +```java +@EventHandler +public void onTax(ShopEnhancedTaxEvent event) { + + TaxRates rates = event.getTaxRates(); + + // Example: Give VIP players reduced owner tax + if (event.getOwner().hasPermission("vip.tax.discount")) { + rates.ownerTax(rates.getOwnerTax() * 0.5); + } +} +``` + +--- + +# Best Practices + +Always keep tax calculations lightweight. + +Avoid: + +- Heavy database queries inside calculateTax +- Blocking network calls +- Long-running computations + +If complex logic is required, pre-cache required data outside the tax execution path. + +Ensure negative tax values are not returned unless intentional. + +Always validate final amounts before applying modifications. + +Respect configuration hierarchy unless intentionally overriding it. + +--- + +# Example Full Implementation + +```java +public class ExampleTaxAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + TaxManager taxManager = manager.taxManager(); + + taxManager.provider(new MyCustomTaxProvider()); + } +} +``` + +--- + +# Conclusion + +The new tax system is designed for: + +- Flexibility +- Extensibility +- Clean separation of concerns +- Future expansion + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +You gain full control over how QuickShop calculates and applies tax during transactions. \ No newline at end of file diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/development/09-layout-provider.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/development/09-layout-provider.md new file mode 100644 index 0000000000..55e3cd3e91 --- /dev/null +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/development/09-layout-provider.md @@ -0,0 +1,275 @@ +# Shop Layout Provider (Developer Guide) + +The Shop Layout Provider system allows developers to customize how shop signs are structured and rendered. + +As of 6.2.0.11, shop layouts are no longer hardcoded. Instead, they are controlled through the `IShopLayoutProvider` interface, which allows: + +- Custom sign line ordering +- Per-shop-type layouts (BUYING, SELLING, FROZEN, or custom types) +- Dynamic layout resolution +- Complete replacement of the default layout system + +This guide explains how to access, override, and implement a custom layout provider. + +--- + +# Overview + +The layout provider controls how shop sign lines are arranged. + +Instead of hardcoding: + +Line 1 → Header +Line 2 → Trading info +Line 3 → Item +Line 4 → Price + +The system now allows full customization through: + +- Config-based layout definitions +- Custom `IShopLayoutProvider` implementations +- Runtime overrides + +The default implementation is `SimpleShopLayoutProvider`. + +--- + +# Accessing the Layout Provider + +To retrieve the current layout provider: + +```java +ShopManager manager = api.getShopManager(); +IShopLayoutProvider provider = manager.shopLayoutProvider(); +``` + +To replace the layout provider with a custom one: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Once replaced, your implementation will control how shop layouts are generated. + +--- + +# Understanding IShopLayoutProvider + +`IShopLayoutProvider` defines how layout data is retrieved and resolved. + +It is responsible for: + +- Providing layout configuration per shop type +- Determining which layout to use +- Supplying formatted line keys +- Allowing future extensibility + +The default implementation reads layout definitions from configuration and applies them based on shop type. + +--- + +# Default Layout Example + +The default configuration-based layout looks like this: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +Each line maps to a layout component key. + +An empty string (`""`) leaves that line blank. + +The layout provider resolves these keys into actual sign content. + +--- + +# Creating a Custom Layout Provider + +To override the default behavior, implement `IShopLayoutProvider`. + +Example minimal implementation: + +```java +public class MyCustomLayoutProvider implements IShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + + ShopLayout layout = new ShopLayout(); + + layout.setLine(1, "Custom Header"); + layout.setLine(2, "Owner: " + shop.getOwnerName()); + layout.setLine(3, shop.getItem().getType().name()); + layout.setLine(4, "$" + shop.getPrice()); + + return layout; + } +} +``` + +Then register it: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Your layout will now control all shop sign formatting. + +--- + +# Per-Type Layout Control + +Because the system no longer depends on the legacy ShopType enum, layouts can support: + +- Built-in types (BUYING, SELLING, FROZEN) +- Custom shop types +- Addon-defined shop types + +Your provider can determine layout logic dynamically: + +```java +@Override +public ShopLayout provideLayout(Shop shop) { + + if (shop.getShopType().key().equals("FROZEN")) { + return frozenLayout(shop); + } + + return defaultLayout(shop); +} +``` + +This allows conditional formatting, localization adjustments, or special event styling. + +--- + +# Advanced Customization + +A custom layout provider can: + +- Pull data from external plugins +- Inject dynamic placeholders +- Modify layout per player +- Apply formatting logic +- Override color schemes +- Apply region-based formatting +- Implement animated sign systems + +Because the layout provider is resolved at runtime, you can compute layouts dynamically instead of reading static config. + +--- + +# Replacing vs Extending the Default Provider + +You have two options: + +Replace entirely: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Or extend the default implementation: + +```java +public class ExtendedLayoutProvider extends SimpleShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + ShopLayout base = super.provideLayout(shop); + + base.setLine(1, "[Extended] " + base.getLine(1)); + + return base; + } +} +``` + +Extending is safer if you only want to modify small portions. + +--- + +# Best Practices + +Keep layout generation lightweight. + +Avoid: + +- Heavy database queries +- Blocking IO +- Complex network calls + +Layout generation runs during shop updates and sign refresh events. + +Always handle null values safely. + +Ensure layout line count does not exceed sign limits. + +Avoid hardcoding shop type names unless necessary. + +If your layout supports custom shop types, validate their keys properly. + +--- + +# Example Full Registration + +```java +public class LayoutAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + + manager.shopLayoutProvider(new MyCustomLayoutProvider()); + } +} +``` + +--- + +# Conclusion + +The Shop Layout Provider system allows complete control over shop sign structure. + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +``` + +And setting: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +You can redefine how every shop is displayed on the server. + +This system was designed to support: + +- Extensibility +- Custom shop types +- Localization +- Dynamic formatting +- Future expansion \ No newline at end of file diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/faq/compare-reremake.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/faq/compare-reremake.md index aaa1a9e507..6b39f02520 100644 --- a/i18n/lt-LT/docusaurus-plugin-content-docs/current/faq/compare-reremake.md +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/faq/compare-reremake.md @@ -64,7 +64,7 @@ If you are a Reremake user, you may be confused about the differences between Hi ## Which one should I use? Well, it depends on what your needs are.\ -If you have an old server (<1.20) instance, Reremake is your only choice.\ +If you have an old server ({'<'}1.20) instance, Reremake is your only choice.\ ~~If you are in China which has GFW interfere, you also should consider Reremake because it doesn't need to load libraries from Global Internet.~~ Solved in 6.0.0.0. If none of these applies, give Hikari a try! diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md index 551f579e7c..172be3a69b 100644 --- a/i18n/lt-LT/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md @@ -1,8 +1,8 @@ # Where Addons/Compacts is -Addons and Compatilibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. +Addons and Compatibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. -- Open Modrinth versions page, locate the version your're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) +- Open Modrinth versions page, locate the version you're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) - Frantically slide your mouse wheel down until the lowest end of the page. - You get it! diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/internal/database-schema.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/internal/database-schema.md index fea685e4fc..45e04adb56 100644 --- a/i18n/lt-LT/docusaurus-plugin-content-docs/current/internal/database-schema.md +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/internal/database-schema.md @@ -4,17 +4,17 @@ This chapter will explain the implementation details of QuickShop Hikari's datab ## Tables -This section explains the database tables created by QuickShop-Hikari.\ -Unless otherwise specified, the initial `qs_` in table name is the table prefix.\ +This section explains the database tables created by QuickShop-Hikari. +Unless otherwise specified, the initial `qs_` in table name is the table prefix. For the latest code definition for each table, see: [DataTables.java](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/hikari/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/database/DataTables.java) ### `data` -This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information.\ -No matter what, a data record should not be modified after it is created, until it got deleted.\ +This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information. +No matter what, a data record should not be modified after it is created, until it got deleted. Any new changes to the shop should create a new copy, apply the changes to the copy, and insert it as a new record. -Basiclly, Copy-on-write. +Basically, Copy-on-write. A data record only be deleted from the database when no any table references their `data_id`. @@ -29,7 +29,7 @@ A data record only be deleted from the database when no any table references the | unlimited | BIT NOT NULL | 0 | Indicates whether this store is an unlimited store, 0=Limited, 1=Unlimited | | hologram | BIT NOT NULL | 0 | Indicates the suspension status of this store's display item, 0=Follow global settings, 1=Disabled | | tax_account | VARCHAR(36) | NULL | The uuid for tax account, If it is not NULL, tax will be paid to the specified account | -| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serilized to JSON string | +| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serialized to JSON string | | extra | LONGTEXT | Empty Yaml | Used to store experimental settings of QuickShop Hikari or persistent data of other plugins | | inv_wrapper | VARCHAR(255) NOT NULL | N/A | Unique identifier for InventoryWrapper for this shop data entry | | inv_symbol_link | TEXT NOT NULL | N/A | Unique Inventory symbol used to pass to InventoryWrapper, for locating inventory | @@ -38,7 +38,7 @@ A data record only be deleted from the database when no any table references the ### `shops` -This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes.\ +This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes. Multiple `shop_id` can correspond to the same `data_id`. | Column Name | DataType | Default | Description | diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/modules/cmd-alias.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/modules/cmd-alias.md index 53f1577685..e6ed381c0d 100644 --- a/i18n/lt-LT/docusaurus-plugin-content-docs/current/modules/cmd-alias.md +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/modules/cmd-alias.md @@ -23,7 +23,7 @@ custom-commands: - cshop ``` -Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect.\ +Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect. The effect should be like this: ![command-alias](./img/command-alias.png) diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/modules/datasource.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/modules/datasource.md index 6fc1bd8931..3fd3a8bdee 100644 --- a/i18n/lt-LT/docusaurus-plugin-content-docs/current/modules/datasource.md +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/modules/datasource.md @@ -48,7 +48,7 @@ Execute the `/quickshop export` command in console, quickshop will export a zip ![exported data](img/database-export.png) -Stop your database, switch the datasource, and start the server.\ +Stop your database, switch the datasource, and start the server. You may noticed all shops are gone, because new datasources had no data inside, we will restore them from export. Rename that exported ZIP file to `recovery.zip`, execute `/quickshop recovery` and restart your server, all shops should back. diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/modules/itemmatcher.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/modules/itemmatcher.md index 56be243019..922907be27 100644 --- a/i18n/lt-LT/docusaurus-plugin-content-docs/current/modules/itemmatcher.md +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/modules/itemmatcher.md @@ -4,7 +4,7 @@ ItemMatcher is a utility used by QuickShop-Hikari to compare the items, it is th :::caution -If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse.\ +If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse. **TL;DR: Keep default unless you know what you're doing.** ::: @@ -26,10 +26,10 @@ matcher: work-type: 1 ``` -By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility.\ +By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility. But still, you can toggle to QuickShop Item Matcher if you need to customize the comparing or running QuickShop on the server jar which have bug affect the Bukkit comparing system. -## Customize the metadata compareing +## Customize the metadata comparing Customize only works under QuickShop Item Matcher. diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md index fc2af69d2b..d04e8f2783 100644 --- a/i18n/lt-LT/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md @@ -4,7 +4,7 @@ ItemStack Loader is a workaround for loading the Bukkit ItemStack. :::caution -Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossble. +Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossible. ::: diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/modules/localization.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/modules/localization.md index e9121e1a36..d47589ab9a 100644 --- a/i18n/lt-LT/docusaurus-plugin-content-docs/current/modules/localization.md +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/modules/localization.md @@ -10,7 +10,7 @@ To help translate QuickShop-Hikari, please visit our [Crowdin Homepage](https:// ## Crowdin OTA -QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will overrided when you reload QuickShop-Hikari or restart your server. +QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will override when you reload QuickShop-Hikari or restart your server. Your installation will keep translations up-to-date without any touch. @@ -110,6 +110,16 @@ To disable the CrowdinOTA, please add it in the startup flag: -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager.enableCrowdinOTA=false ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +use-crowdin-ota: false +``` + ### Self-Hosted OTA Server If you self-hosted our translation server by using [CrowdinCopyDeploy](https://github.com/Ghost-chu/CrowdinCopyDeploy) tool, you're able to change the OTA server to yourself server. @@ -118,4 +128,12 @@ If you self-hosted our translation server by using [CrowdinCopyDeploy](https://g -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager= ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml +Use + +```yaml +crowdin-host: +``` \ No newline at end of file diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/modules/shops/benefit.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/modules/shops/benefit.md index 4d7a9c8f42..c59d92e6d1 100644 --- a/i18n/lt-LT/docusaurus-plugin-content-docs/current/modules/shops/benefit.md +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/modules/shops/benefit.md @@ -37,3 +37,13 @@ By default, for security, QuickShop-Hikari disallow add offline players into sho ```bash -Dcom.ghostchu.quickshop.command.subcommand.SubCommand_Benefit.allowOffline=true ``` + +### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +shop.allow-offline-benefit: true +``` \ No newline at end of file diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/modules/shops/control-panel b/i18n/lt-LT/docusaurus-plugin-content-docs/current/modules/shops/control-panel new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/modules/shops/control-panel @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/modules/shops/history.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/modules/shops/history.md index fa891adeab..195b64a042 100644 --- a/i18n/lt-LT/docusaurus-plugin-content-docs/current/modules/shops/history.md +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/modules/shops/history.md @@ -24,7 +24,7 @@ The History GUI displays the details of each recorded transaction and other usef ### Transaction details -When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed.\ +When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed. If you are checking the history of more than one store, the player head will be replaced with an item from the corresponding store. ![history-gui](./img/history-gui.png) diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md new file mode 100644 index 0000000000..c5ed3b3fe4 --- /dev/null +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md @@ -0,0 +1,90 @@ +# Shop Types + +QuickShop supports multiple shop types, allowing shops to behave differently depending on their mode. + +The built-in shop types are: + +- Selling +- Buying +- Frozen + +Each type changes how the shop interacts with players. + +--- + +## Selling Shop + +A Selling shop allows players to: + +- Buy items from the shop owner +- Pay money to receive items + +This is the most common shop type. + +--- + +## Buying Shop + +A Buying shop allows players to: + +- Sell items to the shop owner +- Receive money in exchange + +This is commonly used for: + +- Resource collection +- Server buy-back shops +- Automated material sinks + +--- + +## Frozen Shop + +A Frozen shop temporarily disables trading. + +While frozen: + +- No buying is allowed +- No selling is allowed +- The shop remains intact +- Staff or admins can manage it + +This is useful for: + +- Temporary suspensions +- Investigation +- Event locking +- Maintenance + +--- + +## Switching Shop Types + +Shop types can be changed through: + +- Control panel +- GUI control panel +- Admin commands + +Frozen mode is also available via: + +/qs freeze + +--- + +## Custom Shop Types + +As of 6.2.x, the system supports extensible shop types internally. + +While server owners use the built-in types, the system now allows future expansion through addons. + +--- + +## Summary + +Shop types allow you to: + +- Control how money flows +- Enable buy-back mechanics +- Temporarily disable shops +- Build advanced economic systems \ No newline at end of file diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md new file mode 100644 index 0000000000..18e0a47407 --- /dev/null +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md @@ -0,0 +1,217 @@ +# Sign Layout + +QuickShop allows you to fully customize how shop signs are structured. + +You can change: + +- What appears on each line +- The order of information +- Layout per shop type +- Whether certain lines are blank + +This gives you complete control over how shops look on your server. + +--- + +## How Sign Layout Works + +Shop signs have four lines. + +Instead of being hardcoded, QuickShop uses a configurable layout system. + +Each shop type can have its own layout: + +- SELLING +- BUYING +- FROZEN + +You define what each line displays using layout keys. + +--- + +## Configuration Location + +Sign layout is configured in `config.yml` under: + +```yaml +layout: +``` + +Example default configuration: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## Available Layout Keys + +Each line value refers to a built-in layout component. + +Common layout keys include: + +- `header` – The shop header line +- `trading` – Buy/Sell direction information +- `item` – Item name +- `price` – Shop price + +These keys are automatically formatted using your language file and formatting settings. + +--- + +## Leaving a Line Blank + +To leave a line empty, use: + +```yaml +line2: "" +``` + +This is useful if you want: + +- Minimalist signs +- Cleaner layouts +- Custom spacing +- Decorative formatting + +--- + +## Customizing Per Shop Type + +Each shop type can have a different layout. + +For example: + +```yaml +layout: + + SELLING: + line1: "header" + line2: "item" + line3: "price" + line4: "" + + BUYING: + line1: "header" + line2: "price" + line3: "item" + line4: "" + + FROZEN: + line1: "header" + line2: "" + line3: "item" + line4: "Frozen" +``` + +This allows you to visually differentiate: + +- Selling shops +- Buying shops +- Frozen shops + +--- + +## Practical Examples + +### Minimal Style + +```yaml +layout: + SELLING: + line1: "item" + line2: "price" + line3: "" + line4: "" +``` + +### Compact Economy Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "price" + line3: "item" + line4: "" +``` + +### Large Clear Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## How Updates Affect Layout + +When you change the layout: + +- Existing shop signs will update automatically when refreshed. +- New shops will use the updated format immediately. + +If needed, you can reload QuickShop to apply changes. + +--- + +## Best Practices + +- Keep important information visible (price and item). +- Avoid overly complex formatting. +- Test layout changes before deploying on large servers. +- Use different layouts for BUYING and SELLING to reduce confusion. + +--- + +## Common Questions + +### Can I add more than four lines? + +No. +Minecraft signs are limited to four lines. + +### Can I add colors? + +Colors are controlled by your language file and formatting settings. + +### Can I change layout without restarting? + +Yes, but reloading or refreshing shops is recommended to ensure full update. + +--- + +## Summary + +The Sign Layout system allows you to: + +- Fully customize shop sign appearance +- Create per-type layouts +- Simplify or expand shop information +- Improve clarity for players + +All layout customization is handled inside `config.yml`. diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md new file mode 100644 index 0000000000..980bad10f2 --- /dev/null +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md @@ -0,0 +1,130 @@ +# Shop Sign Waxing + +QuickShop can automatically wax shop signs to prevent players from editing them manually. + +Waxing protects the integrity of your shop signs and helps prevent tampering, spoofing, and accidental modification. + +As of modern Minecraft versions, waxed signs cannot be edited unless they are unwaxed first. + +--- + +## What Is Sign Waxing? + +In Minecraft, waxing a sign locks it so that: + +- Players cannot edit the text +- Players cannot modify lines +- Accidental changes are prevented +- Malicious edits are blocked + +When enabled in QuickShop, shop signs are automatically waxed when created. + +--- + +## Why Use It? + +Sign waxing protects against: + +- Players editing price lines +- Changing item names on signs +- Spoofing shop information +- Accidental formatting issues +- Sign hijacking attempts + +On public servers, this feature is strongly recommended. + +--- + +## How It Works + +When a shop is created: + +1. QuickShop generates the shop sign. +2. The sign text is written. +3. The sign is automatically waxed (if enabled). + +If a shop is updated: + +- The sign will be safely updated by QuickShop. +- The wax state is maintained. + +Players cannot manually edit shop signs while waxing is enabled. + +--- + +## Configuration + +To enable or disable sign waxing, edit `config.yml`: + +```yaml +shop: + sign-wax: true +``` + +### true + +- Shop signs are automatically waxed. +- Players cannot edit the sign manually. + +### false + +- Shop signs behave like normal Minecraft signs. +- Players may edit them if permitted by the game. + +--- + +## Recommended Setting + +For most servers: + +```yaml +shop: + sign-wax: true +``` + +This ensures shop data stays accurate and secure. + +--- + +## Common Questions + +### Can admins still modify shop signs? + +QuickShop controls shop sign formatting. +Manual edits are not recommended. + +Admins should use: + +- Control panel +- Shop commands +- Direct configuration changes + +### Does waxing affect shop functionality? + +No. +Waxing only prevents manual text edits. +The shop continues to function normally. + +### Can players un-wax shop signs? + +No. +QuickShop manages the sign state automatically. + +--- + +## Best Practices + +- Keep sign-wax enabled on survival servers. +- Combine sign-wax with proper permissions. +- Avoid manually editing shop signs through other plugins. + +--- + +## Summary + +Sign Waxing: + +- Prevents tampering +- Requires no additional setup + +Enable it once and QuickShop handles the rest. \ No newline at end of file diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/modules/shops/taxes.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/modules/shops/taxes.md new file mode 100644 index 0000000000..1a273fd978 --- /dev/null +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/modules/shops/taxes.md @@ -0,0 +1,92 @@ +# Taxation System + +QuickShop includes a taxation system designed to give server owners more flexibility and control over shop-based income. + +This system was revamped as of 6.2.0.11+ + +The new system allows you to: + +- Apply tax to shop owners +- Apply tax to buyers +- Apply tax to both +- Use progressive tax brackets +- Customize tax behavior in configuration + +This system replaces the legacy tax configuration. + +--- + +## How It Works + +During a transaction: + +1. The shop price is calculated. +2. Tax is calculated based on your configuration. +3. Tax is deducted from the configured target(s). +4. Remaining funds are distributed normally. + +You can configure: + +- Flat percentage tax +- Progressive tax based on player balance +- Tax accounts +- Distribution rules + +--- + +## Progressive Tax + +The new system allows you to tax based on balance brackets. + +Example concept: + +- 0 – 10,000 balance → 1% tax +- 10,000 – 100,000 → 2% tax +- 100,000+ → 3% tax + +This helps prevent extremely wealthy players from dominating the economy. + +--- + +## Who Pays the Tax? + +You can configure whether tax applies to: + +- The shop owner +- The buyer +- Both + +This gives you flexibility depending on your economy design. + +--- + +## Configuration + +All tax-related settings are located under the `shop-tax` section in `config.yml`. + +After updating to 6.2.0.11+, review your tax configuration carefully, as the old tax system has been replaced. + +--- + +## Why Use Tax? + +The taxation system can help: + +- Remove currency from circulation +- Fund server banks or towns +- Create sink mechanics +- Balance inflation +- Reward active players + +--- + +## Summary + +The new taxation system is: + +- Flexible +- Configurable +- Balance-aware +- Designed for modern economy servers + +Make sure to review your configuration after upgrading. \ No newline at end of file diff --git a/i18n/lt-LT/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md b/i18n/lt-LT/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md new file mode 100644 index 0000000000..247c24712d --- /dev/null +++ b/i18n/lt-LT/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md @@ -0,0 +1,161 @@ +# WorldEdit & FAWE Support + +QuickShop includes built-in protection and integration for WorldEdit and FastAsyncWorldEdit (FAWE). + +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. + +You do not need to download or install any additional compatibility plugins. + +--- + +## What This Does + +WorldEdit and FAWE allow administrators and builders to: + +- Copy and paste regions +- Replace large areas of blocks +- Mass-delete regions +- Roll back areas +- Regenerate terrain + +Without protection, these operations could: + +- Create ghost shops +- Leave orphaned shop data in the database +- Duplicate shops unintentionally +- Delete containers without cleaning up shop data +- Cause inconsistencies between world and database + +QuickShop now automatically detects and safely processes WorldEdit and FAWE operations. + +--- + +## Built-In Behavior + +When WorldEdit or FAWE modifies blocks: + +- Shops removed via WorldEdit are properly deleted from the database. +- Shop data stays synchronized with world changes. +- Ghost shops are prevented. +- Mass block replacements will not leave broken shop entries behind. + +This applies to: + +- //set +- //replace +- //cut +- //paste +- //regen +- Region deletion +- Mass container removal + +No configuration is required. + +--- + +## FAWE Support + +FastAsyncWorldEdit (FAWE) is fully supported. + +Because FAWE processes edits asynchronously, QuickShop handles: + +- Region-thread safe processing +- Async block updates +- Safe shop deletion during batch edits + +You do not need to enable anything manually. + +--- + +## Removing Shops with WorldEdit + +If you delete containers (chests, barrels, etc.) using WorldEdit: + +QuickShop will automatically: + +- Detect the block removal +- Unregister the shop +- Clean the database entry +- Prevent ghost shops + +You do not need to run `/qs cleanghost` after WorldEdit usage in normal circumstances. + +--- + +## Copying and Pasting Shops + +If you copy and paste regions that contain shops: + +- Shop data will not duplicate incorrectly. +- Shop IDs remain consistent. +- Invalid pasted shops will not auto-register unless properly created. + +This prevents accidental duplication exploits. + +--- + +## Performance + +WorldEdit and FAWE operations can modify thousands of blocks at once. + +QuickShop processes these safely and efficiently: + +- Batch-aware cleanup +- Thread-safe region access (especially on Folia) +- Minimal performance impact during mass edits + +--- + +## Configuration + +There are no specific WorldEdit configuration options in QuickShop. + +Support is automatic and always enabled if WorldEdit or FAWE is detected. + +If WorldEdit is not installed, no extra code is executed. + +--- + +## Common Questions + +### Do I need the old WorldEdit compatibility jar? + +No. + +As of 6.2.0.11, WorldEdit support is built-in and the separate compatibility module has been removed. + +### Does this work with FAWE? + +Yes. FAWE is fully supported. + +### Will shops break if I use //set air? + +No. Shops will be safely removed and cleaned up. + +### Do I need to restart after installing WorldEdit? + +No. QuickShop detects WorldEdit automatically on startup. + +--- + +## Best Practices + +Even though QuickShop safely handles WorldEdit operations, it is recommended to: + +- Avoid copying shops intentionally unless required +- Use backups before large region edits +- Test large FAWE operations on staging servers when possible + +--- + +## Summary + +QuickShop’s built-in WorldEdit and FAWE integration ensures: + +- Safe mass edits +- No ghost shops +- Automatic database cleanup +- Thread-safe processing +- No extra modules required + +WorldEdit support is now a core feature of QuickShop. \ No newline at end of file diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/addon/limited.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/addon/limited.md index 70af27e240..fae55a8c95 100644 --- a/i18n/nl-NL/docusaurus-plugin-content-docs/current/addon/limited.md +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/addon/limited.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -41,8 +35,8 @@ Limit players to purchase up to 16 items per month. /quickshop limit period MONTH ``` -The system is based on the QuickShop-Hikari calendar system.\ -The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year.\ +The system is based on the QuickShop-Hikari calendar system. +The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year. Same for days, months and hours. Available time units: diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/addon/list.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/addon/list.md index 93d182f083..f20b91fd7b 100644 --- a/i18n/nl-NL/docusaurus-plugin-content-docs/current/addon/list.md +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/addon/list.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/addon/plan.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/addon/plan.md index 52a6e79cb4..c10ef4df42 100644 --- a/i18n/nl-NL/docusaurus-plugin-content-docs/current/addon/plan.md +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/addon/plan.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -18,7 +18,7 @@ Recorded data can be displayed from Hikari v2.0.0.0 onwards, but only after vers - All shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 1000 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `5` in server scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `5` in server scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Player Scope @@ -27,7 +27,7 @@ And still is Plan limitations, the list sorting is disturbed, so the display ord - All owned shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 50 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `4` in player scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `4` in player scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Showcase diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/addon/reforges.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/addon/reforges.md index 2a14509eb7..25fff1752a 100644 --- a/i18n/nl-NL/docusaurus-plugin-content-docs/current/addon/reforges.md +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/addon/reforges.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.0.0.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md index 304d39bc05..6f9f51d250 100644 --- a/i18n/nl-NL/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.1.1.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -44,7 +38,7 @@ _This is not necessary if you are using an H2 database._ ### Prepare for convert -To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console.\ +To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console. If a player is in the server, the conversion cannot be started. Once the conversion has begun, the server will be locked during the conversion process and no players will be able to join the server during the conversion. diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/addon/shopitemonly.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/addon/shopitemonly.md index c45062f8c2..1ccfe977b3 100644 --- a/i18n/nl-NL/docusaurus-plugin-content-docs/current/addon/shopitemonly.md +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/addon/shopitemonly.md @@ -2,17 +2,11 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT - -::: - -This addon prevents players from putting non-store items into store containers.\ +This addon prevents players from putting non-store items into store containers. Does not apply to stores that use the item inventory redirection API (aka. InventoryWrapper API). This Addon will check for container (or transferring) items on events such as the player closing the container or hopper access. diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md new file mode 100644 index 0000000000..9c8b4f7407 --- /dev/null +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md @@ -0,0 +1,55 @@ +# 6.2.0.10 + +## Major Changes + +- Added support for 1.21.6 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.7 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.8 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Some internal updates for packetevents(2.9.0 is now required.) +- Updated Lands support + +## Addon Changes + +- Added MatcherPlus Addon + - Allows support for BreweryX and AdvancedItems stacks in shops with improved matching abilities +- Added FabledSkyblock Compat +- Added Dominion Compat +- Added HuskTowns Compat +- Added IridiumSkyblock Compat +- Added member-create for member creation in ARM compat +- Added admin-override and quickshop.arm.admin permission for admin overrides in ARM + +## Minor Changes + +- Added configurations for the coordinates of the display item. +- Added /qs toggledisplayall on/off server/owned + - Players need to have permission node quickshop.toggledisplayall.admin to toggle all on the server. +- Added ability to use abbreviations in /qs price and /qs create commands such as 2.5k for 2500 +- Added ability to set default display status using shop.default-display in config.yml + +## Fixes + +- Fixed issue with display item being sent to the moon on 1.21.5 +- Fixed issue where TRADE_UI interactions interfered with quick create. +- Fixed issue with displays on protocollib falling through the chest +- Fixed issue with signs on .9 and previous .10 snapshots on early versions +- Implemented some performance improvements for paper servers +- Fixed all outstanding issues with Folia usage.(thanks to RootB33R/SleazLee for contributions) + +## Possible 6.2.0.11 Features + +Here's an outline for some features that may arrive in 6.2.0.11: + +- Additional compats/addons that have been piling up. + - see: https://github.com/QuickShop-Community/QuickShop-Hikari/issues/1756 +- gradle?(interested to see compilation time uplifts) +- Update documentation +- Update configuration comments +- Update configuration system? + - auto updating? + - Allows removal of the update code +- Remove waste spigot modules? + - Any versions of 1.20 that can be discarded due to low use? +- Bug fixing, of course +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... \ No newline at end of file diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md new file mode 100644 index 0000000000..b41c88662a --- /dev/null +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md @@ -0,0 +1,173 @@ +## Outline + +- Update documentation +- Update configuration comments +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... + +# 6.2.0.11 + +## Major Changes + +- Removed Spigot Platform Modules, and stopped loading QS if Spigot is detected. This will mean that unless the protocol changes that we use for display items, QS won't need updated for each version. +- Revamped Economy Code Completely + - New classes for all economy-related systems + - Any economy-related or benefits-related events are incompatible with previous versions. +- Added sign layout customizations per-type allowing you to change how lines are configured, an empty string('') will leave an empty line for that line of the sign. + +``` + #The layout of signs for shops. + layout: + + #The layout of BUYING shops. + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of FROZEN shops. + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of SELLING shops. + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +- Add wildcard support for item blacklist patterns(thanks to bennycallanan) + - Added support for wildcard patterns in the item blacklist configuration, allowing users to block entire categories of items with simple patterns. + + - Features + - Wildcard patterns like \*_AXE and \*_SPAWN_EGG now work in blacklist configuration + - Supports \* for any characters and ? for single character matching + - Case-insensitive pattern matching +- Overhauled GUI system(thanks to Yusakidev) + - Implemented gui.yml configuration file for customizing the GUI. + - Implemented better filtering for qs browse + - Implement GUI system to be more stable, and less error prone. + - Added gui.yml for fully configurable GUI layouts and text + - Browse menu: search, sort (price/name/stock), and filter (all/buying/selling/in-stock) + - Staff menu: search functionality for player/staff selection + - Grouped item pages for better shop browsing + - Refactored all menu pages to use configurable display/lore +- Added worldedit compat to QS internally as it's widely used. +- Revamped the taxation system to be more flexible and easier to configure. + - introduced a new progressive tax system that allows you to tax based on the balance of players.(suggested by YuanYuanOwO) + - introduced the ability to tax the player interacting with the shop, the owner, or both + - all tax-related configurations have been moved under the shop-tax section of the config. this may require reconfiguration of your tax settings. + - added a new ShopEnhancedTaxEvent, deprecated the old ShopTaxEvent. + - Added a new TaxManager, and TaxProvider interfaces, this allows for custom tax providers to be added by addons/third-party developers. + +## Addons/Compats Changes + +- Added UltimateClaims compat +- Added SimpleClaimSystem compat +- Added Quests by Pika addon +- Added BetonQuest addon +- Added Pl3xMap addon +- MatcherPlus Compat Improvements + - Added support for CrazyCrates + - Added support for ExcellentCrates + - Added support for SilkSpawners. +- WorldGuard Compat Improvements(Thanks to golovin12) + - Added clear permission handling: + - Region owners and members automatically have permission to create and trade in their own regions. + - Other players must have the appropriate WorldGuard flags enabled (quickshophikari-create, quickshophikari-trade) to interact with shops. + - If a shop is located outside any region, default QuickShop behavior applies (no extra restrictions) +- Added colored markers based on shop state for bluemap(thanks to YusakiDev) +- Updated dynmap/towny addons to use the new ShopTypeEnhancedEvent instead of ShopTypeEvent. +- Removed worldedit compat, it's now included in the main plugin. +- Added support for global flags to the worldguard compat. + +## Internals/Developer APIs + +- Removed several deprecated methods and classes. +- Revamped the interaction manager. It is now more flexible and allows external additions + - This involves two classes InteractionBehavior and InteractionType. + - InteractionType details the type of interaction such as: STANDING_LEFT_CLICK_SIGN, STANDING_LEFT_CLICK_SHOP + - InteractionBehavior outlines a behavior for an InteractionType such as CONTROL_PANEL and TRADE_UI +- Added UserLimitCalculationEvent, which allows for custom limits to be applied to users. + - This is useful for limiting the number of shops a user can have, or adding on to the existing limits provided by the ranks system without needing to implement a new RankLimiter. +- Added a new ShopLayoutProvider interface, and default implementation. + - This allows for custom layouts to be used for shops, allowing for more customization. + - This also allows for developers to override the default layout provider and create their own implementation. +- How to make your own? + - Implement the classes you would like to then register with the InteractionManager: + - ```java + InteractionManager manager = QuickShop.getInstance().getInteractionManager(); + + manager.interaction(new MyTradeInteraction()); + manager.behavior(new MyTradeBehavior()); + ``` +- Replaced some Apache Commons calls that could be easily replaced with built-in java methods, reduces some calls by ~ 1100ms/method call +- Deprecated the ShopType enum, and the ShopTypeEvent. These are replaced with the new IShopType interface and implementing classes. + - The new event is ShopTypeEnhancedEvent. + - This allows for third-party addons to add their own shop types, and simplifies code checks for translations. +- Updated config system to use Boosted-yaml + - this allows for auto-updating of config files without complex update scripts + - this also allows for the config system to not be minecraft-dependent. +- Replaced logical PaperLib calls with native PaperAPI calls. + +## Minor Changes + +- Bump Java version up to 21 +- Added shop.display-allow-enchants to enable/disable enchantments for display items on shops. +- Added workaround for packetevents not supporting custom enchants on itemstacks for virtual display items. +- Using locale translations for shop-type in mode toggle icon(thanks to ExyiN) +- Bumped Residence version for the compat(thanks to YuanYuanOwO) +- add world whitelist support(thanks to wling-art) +- added /qs database save command, which saves all currently dirty-marked shops to the database. +- Split up interactions _SHOPBLOCK into _SHOPBLOCK and _CONTAINER. + - _SHOPBLOCK relates to shops, where _CONTAINER relates to shop-valid containers that are not currently shops. +- Added inventory as an option for command panel, this is useful for adding a secondary option for players to open a shop's inventory. +- Moved crowdin arguments from system properties to config.yml + - crowdin-host + - use-crowdin-ota + +## Fixes + +- Fixes issue with item price restrictions(thanks to maxcom1) +- Fixes issue with 1.20.x protocol lib displays(thanks to YuanYuanOwO) +- Fixes issue when no item is in hand for itemdebug(thanks to YuanYuanOwO) +- Fixes issue with dominion addon(thanks to YuanYuanOwO) +- Add a simple check to avoid this. If it is not own shop, reject limit request directly.(Thanks to YuanYuanOwO) +- Fix NPE by not setting tax for price in TransactionBuilder(thanks to maxcom1) +- Fixes /quickshop suggestprice to differentiate between buy/sell shops. (Thanks to MidSpike) +- PacketEvents ClassNotFoundException with ProtocolLib(thanks to wling-art) +- Reallocate block state access to region thread for shop creation(thanks to r00tbeerman) +- resolve SLF4J StaticLoggerBinder loading error(thanks to wling-art) +- sign hijacking issue by validating sign facing direction(thanks to wling-art) +- Performance improvements for QuickShop disabling to prevent potential freezes. +- Fixed issue with 1.20.4 packetevents virtual displays not staying put. +- Fixes critical issue in GriefPrevention compatibility plugin. +- Fixes issue with shop owner not getting money when benefits active. +- Fixes for lands addon on folia, Use regionThread for Folia compatibility(thanks to YusakiDev) +- Fixes for TRADE_DIRECT on stacking shops +- Fixes issue for protocollib 5.4.0 with undocumented packet changes. +- Fixes issue where item stacks could be used on creation above the max stack size. +- Fixes issue with BukkitAudiences-related crashes on 1.21.11. +- Fix issue with shop deletion when getting too impatient. +- Fix the permission check issue when a shop owned by a non-owner is transferred to someone else. (thanks to YuanYuanOwO) +- Fix ui with supertool (thanks to YuanYuanOwO) +- Fix issue with logs generating outside debug mode. +- Fix issue with /qs find. +- Fix configuration loading timing. +- Fix configuration loading/creation warning message language. +- Fix command description language key mismatch(thanks to wling-art) +- Fix qs clean command on folia(thanks to wling-art) +- Fix per-player-shop-sign on folia(thanks to wling-art) +- Fix potential recursive deadlock in virtual display packet sending(thanks to wling-art) +- Fix configuration loading/creation warning message language. +- Fix issue with /qs browse and ShopItemOnly addon not behaving properly together on folia. +- Fix issue with PLAN using outdated APIs. +- Fix issue with /qs clean on folia.(thanks to wling-art) +- Fix issue with /qs cleanghost on folia(thanks to wling-art) +- More thread safety fixes for shops on folia.(thanks to wling-art) +- Fix owner payment calculations with benefits(thanks to wling-art) \ No newline at end of file diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md index 8172f9b410..dcc3edc67d 100644 --- a/i18n/nl-NL/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md @@ -20,20 +20,20 @@ the ControlComponent object with a custom one that will replace the original dur ### Introduction of the Revamped Packet System 1. **About**: - - A modular and scalable system for managing packets related to virtual display items in Minecraft. - - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. + - A modular and scalable system for managing packets related to virtual display items in Minecraft. + - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. 2. **Custom Packet Factories**: - - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. - - Packet types: - - **Spawn Packet**: Spawns a virtual item entity at a specific location. - - **Metadata Packet**: Updates the visual properties of virtual items. - - **Velocity Packet**: Adds motion/velocity to entities (currently optional). - - **Destroy Packet**: Removes the entity from the client view. + - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. + - Packet types: + - **Spawn Packet**: Spawns a virtual item entity at a specific location. + - **Metadata Packet**: Updates the visual properties of virtual items. + - **Velocity Packet**: Adds motion/velocity to entities (currently optional). + - **Destroy Packet**: Removes the entity from the client view. 3. **Error Handling and Logging**: - - Enhanced debug logs to trace packet-related issues. - - Detailed error messages for missing factories or unregistered listeners. + - Enhanced debug logs to trace packet-related issues. + - Detailed error messages for missing factories or unregistered listeners. #### Improvements: diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md index 7775308722..c6e0948d19 100644 --- a/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md index f420997a9c..38587e3784 100644 --- a/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md index 5ed8182c9a..259c55f342 100644 --- a/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md index 924a37ac49..7fd4596a6a 100644 --- a/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,6 +10,6 @@ This is a BungeeCord plugin, you need install it within your BungeeCord's plugin ## How does it work? -BungeeCord Bridge plugins will register a `quickshop:bungee` channel for fowarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. +BungeeCord Bridge plugins will register a `quickshop:bungee` channel for forwarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. All forwarding is indicated by QuickShop-Hikari on the Spigot server and ends when it is not needed. diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md index 27d68956a8..20fbaf7a0c 100644 --- a/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,5 +10,5 @@ This compatibility module added [Chest Protect](https://www.spigotmc.org/resourc ## How does it work? -This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident.\ +This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident. It also prevents players from creating shops on ChestProtect protected containers. diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md index 220e26d8bb..e1757e7be9 100644 --- a/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/dominion.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/dominion.md new file mode 100644 index 0000000000..e1195278a8 --- /dev/null +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/dominion.md @@ -0,0 +1,138 @@ +# Dominion + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and Dominion. + +It ensures that shop creation and trading respect Dominion’s land and territory protection system. + +--- + +## What Does It Do? + +Dominion allows players or groups to claim land and define territory-based permissions. + +Without compatibility: + +- Players could create shops inside territories they do not control. +- Visitors might trade inside protected dominions. +- Dominion permission rules might not apply to shop interactions. + +The Dominion compat module ensures that: + +- Shop creation respects territory ownership. +- Shop trading follows Dominion permission settings. +- Protected land remains secure from unauthorized shop usage. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a Dominion-controlled area. +- Whether the player has permission within that territory. +- Whether Dominion rules allow shop interaction. + +If the action is not permitted by Dominion settings, QuickShop blocks it. + +If the location is outside any Dominion territory, default QuickShop behavior applies. + +--- + +## Territory Owner Control + +With this module enabled: + +- Territory owners can create and manage shops inside their dominion. +- Trusted members follow territory-based permissions. +- Outsiders are restricted unless explicitly allowed. +- Shop actions respect Dominion’s land rules automatically. + +This prevents unauthorized shop placement inside protected territories. + +--- + +## Installation + +1. Install Dominion. +2. Install the QuickShop Dominion compat module. +3. Restart your server. + +The module activates automatically if Dominion is detected. + +No manual configuration linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside dominions +whitelist-mode: false + +# Allow territory owners to override shop permissions +allow-owner-override: true +``` + +If Dominion is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For servers using Dominion: + +- Restrict shop creation to territory owners or trusted members. +- Prevent shop creation in wilderness if desired. +- Allow dominion owners to manage shop permissions. +- Review Dominion permission settings to align with shop behavior. + +This ensures protected territories remain secure and organized. + +--- + +## Common Questions + +### Can players create shops in someone else's dominion? + +Only if Dominion permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You may allow or restrict shops outside dominions. + +### What happens if Dominion is removed? + +QuickShop returns to normal behavior and stops checking Dominion territories. + +--- + +## Summary + +The Dominion compat module: + +- Enforces territory-based permissions +- Prevents unauthorized shop creation +- Protects claimed land from misuse +- Integrates seamlessly with Dominion + +It is recommended for servers running Dominion. \ No newline at end of file diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md index 743d3ae666..2ac9b10488 100644 --- a/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md new file mode 100644 index 0000000000..07ba4ada66 --- /dev/null +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md @@ -0,0 +1,133 @@ +# FabledSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and FabledSkyblock. + +It ensures that shop creation and trading properly respect island boundaries and island permissions. + +--- + +## What Does It Do? + +On Skyblock servers, players build and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Players might trade in areas they should not. +- Island protection rules might not apply to shops. + +The FabledSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members behave correctly with shops. +- Island visitors are restricted appropriately. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a FabledSkyblock island. +- Whether the player has permission on that island. +- Whether island settings allow the action. + +If the action is not permitted by island rules, QuickShop will deny it. + +--- + +## Island Ownership Rules + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow island permission settings. +- Visitors can only trade if island permissions allow it. +- Outside of islands, default QuickShop behavior applies. + +--- + +## Installation + +1. Install FabledSkyblock. +2. Install the QuickShop FabledSkyblock compat module. +3. Restart your server. + +The module activates automatically if FabledSkyblock is detected. + +No manual linking is required. + +--- + +## Configuration + +If the module provides configuration options, they will appear in its `config.yml`. + +Typical options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If FabledSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most Skyblock servers: + +- Allow shop creation only inside islands. +- Prevent trading in the void or wilderness. +- Let island owners control shop permissions. +- Use island rank systems to manage shop access. + +This helps maintain economic balance between islands. + +--- + +## Common Questions + +### Can players create shops in the void? + +Only if your configuration allows it. +Most servers disable shop creation outside islands. + +### Does this affect island war or PvP modes? + +No. +The module only checks island ownership and permissions for shop interactions. + +### What happens if FabledSkyblock is removed? + +QuickShop returns to normal behavior. + +--- + +## Summary + +The FabledSkyblock compat module: + +- Protects island economies +- Enforces island permission rules +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is strongly recommended for any server running FabledSkyblock. \ No newline at end of file diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md index 81b13d2c6b..32614d3019 100644 --- a/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md @@ -2,17 +2,17 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -GreifPrevention compatibility module added compaitibility with GF. +GreifPrevention compatibility module added compatibility with GF. ## How does it work This module allow QuickShop-Hikari check if player have permission to create or use QuickShop in specific region. -And delete shops when claim removed, untrusted, unclimed, expired, resized or subclaim created. +And delete shops when claim removed, untrusted, unclaimed, expired, resized or subclaim created. ## Configuration diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md new file mode 100644 index 0000000000..e71b34d462 --- /dev/null +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md @@ -0,0 +1,139 @@ +# HuskTowns + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and HuskTowns. + +It ensures that shop creation and trading respect town and claim permissions defined by HuskTowns. + +--- + +## What Does It Do? + +HuskTowns allows players to create towns and claim land. + +Without compatibility: + +- Players could create shops inside towns they do not belong to. +- Visitors might trade inside protected towns. +- Town permission rules might not apply to shop interactions. + +The HuskTowns compat module ensures that: + +- Shop creation respects town ownership. +- Trading follows town permission settings. +- Town members and visitors are handled correctly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a HuskTowns claim. +- Whether the player is a town member, trusted player, or outsider. +- Whether the town's permission settings allow the action. + +If the action is not permitted by town rules, QuickShop blocks it. + +Outside of town claims, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Town Owner Control + +With this module enabled: + +- Town owners can create and manage shops inside their town. +- Town members follow town-based permission settings. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect town claim protection. + +This prevents unauthorized shop placement and trading inside protected towns. + +--- + +## Installation + +1. Install HuskTowns. +2. Install the QuickShop HuskTowns compat module. +3. Restart your server. + +The module activates automatically if HuskTowns is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside towns +whitelist-mode: false + +# Allow town owners to override shop permissions +allow-owner-override: true +``` + +If HuskTowns is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For town-based survival servers: + +- Restrict shop creation to town members. +- Allow trading only where town permissions permit. +- Prevent shop creation in wilderness if desired. +- Enable owner override for better administrative control. + +This helps maintain town-based economic balance. + +--- + +## Common Questions + +### Can players create shops in another town? + +Only if that town's permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You can allow or restrict shops outside towns. + +### What happens if HuskTowns is removed? + +QuickShop returns to normal behavior and stops checking town permissions. + +--- + +## Summary + +The HuskTowns compat module: + +- Enforces town-based land permissions +- Protects towns from unauthorized shop usage +- Integrates smoothly with HuskTowns +- Requires minimal setup + +It is recommended for any server running HuskTowns. \ No newline at end of file diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md new file mode 100644 index 0000000000..3fa2995eb0 --- /dev/null +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md @@ -0,0 +1,139 @@ +# IridiumSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and IridiumSkyblock. + +It ensures that shop creation and trading respect island boundaries and island permission settings defined by IridiumSkyblock. + +--- + +## What Does It Do? + +IridiumSkyblock allows players to create and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Visitors might trade inside protected islands. +- Island protection rules might not apply correctly to shops. + +The IridiumSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members and visitors are handled properly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside an IridiumSkyblock island. +- Whether the player is the island owner, member, or visitor. +- Whether island permissions allow shop interaction. + +If the action is not permitted, QuickShop blocks it. + +Outside of islands, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Island Owner Permissions + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow the island's permission configuration. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect island protection rules. + +This prevents unauthorized shop usage inside protected islands. + +--- + +## Installation + +1. Install IridiumSkyblock. +2. Install the QuickShop IridiumSkyblock compat module. +3. Restart your server. + +The module activates automatically if IridiumSkyblock is detected. + +No additional setup is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If IridiumSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most IridiumSkyblock servers: + +- Restrict shop creation to island owners. +- Allow island members to trade if trusted. +- Prevent shop creation in the void or wilderness. +- Enable owner override for better management. + +This helps maintain balanced island economies. + +--- + +## Common Questions + +### Can players create shops outside their island? + +Only if your configuration allows it. + +Most Skyblock servers restrict shops to island areas. + +### Do island ranks affect shop permissions? + +Yes, if your island permissions are configured to control interaction rights. + +QuickShop follows island rules. + +### What happens if IridiumSkyblock is removed? + +QuickShop returns to normal behavior and stops checking island permissions. + +--- + +## Summary + +The IridiumSkyblock compat module: + +- Protects island economies +- Enforces island-based permissions +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is recommended for any server running IridiumSkyblock. diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md new file mode 100644 index 0000000000..3b4726cb9d --- /dev/null +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md @@ -0,0 +1,151 @@ +# ItemMatcherPlus + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +The ItemMatcherPlus module improves how QuickShop matches custom and plugin-modified items. + +It allows QuickShop to properly recognize and stack items created by other plugins that normally would not match using standard Bukkit item comparisons. + +This module is especially useful for servers that use: + +- Custom items +- Modified metadata +- NBT-based systems +- Advanced crate rewards +- Custom brewing systems +- Custom fishing rewards + +--- + +## What Does It Do? + +By default, Minecraft item matching checks: + +- Material type +- Basic metadata + +However, many plugins modify items with: + +- Custom NBT data +- Hidden tags +- Custom lore formats +- Unique identifiers + +Without enhanced matching: + +- Items may not stack +- Shops may refuse valid items +- Transactions may fail +- Buying/selling may not behave correctly + +ItemMatcherPlus improves compatibility and matching accuracy. + +--- + +## Supported Plugins + +ItemMatcherPlus includes built-in support for: + +- AdvancedItems +- BreweryX +- CrazyCrates +- ExcellentCrates +- PyroFishing +- SilkSpawners + +If any of these plugins are installed, QuickShop will automatically use enhanced matching logic. + +No additional configuration is required. + +--- + +## How It Works + +When a player trades with a shop: + +1. QuickShop checks the item. +2. If ItemMatcherPlus is enabled, it performs advanced matching. +3. Plugin-specific metadata is validated. +4. The item is confirmed as a match (or rejected safely). + +This allows: + +- Proper stacking of custom items +- Correct shop transactions +- Accurate buy/sell detection +- Reduced false mismatches + +--- + +## Installation + +1. Download the ItemMatcherPlus module. +2. Place the JAR into your `plugins` folder. +3. Restart your server. + +If supported plugins are detected, compatibility activates automatically. + +--- + +## Configuration + +ItemMatcherPlus does not require configuration. + +It activates automatically when: + +- The module is installed +- A supported plugin is detected + +If a supported plugin is not installed, no extra logic runs. + +--- + +## Why You Should Use It + +You should install ItemMatcherPlus if your server uses: + +- Custom fishing plugins +- Custom brewing systems +- Crate plugins with modified items +- Custom spawners +- Any plugin that modifies NBT data + +Without it, shops may not properly recognize custom items. + +--- + +## Common Questions + +### Do I need this if I don't use custom item plugins? + +No. +If you only use vanilla items, this module is not necessary. + +### Does this affect performance? + +The module only activates enhanced matching when needed. + +Normal item matching remains fast and efficient. + +### Will it break existing shops? + +No. +It improves compatibility and matching accuracy without modifying existing shop data. + +--- + +## Summary + +ItemMatcherPlus: + +- Improves item matching accuracy +- Adds support for major custom item plugins +- Prevents stacking and trade issues +- Requires no configuration +- Activates automatically + +If you run a heavily customized economy server, this module is highly recommended. \ No newline at end of file diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md index ba87606698..d4ae7d129a 100644 --- a/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/lands.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/lands.md index 06296f5779..7671fcdfe0 100644 --- a/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/lands.md +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/lands.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/openinv.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/openinv.md index c51f628615..4807d57873 100644 --- a/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/openinv.md +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/openinv.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md new file mode 100644 index 0000000000..c2136320b0 --- /dev/null +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md @@ -0,0 +1,138 @@ +# SimpleClaimSystem + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and SimpleClaimSystem. + +It ensures that shop creation and trading respect land ownership and claim permissions defined by SimpleClaimSystem. + +--- + +## What Does It Do? + +SimpleClaimSystem allows players to claim land and protect it from unauthorized interaction. + +Without compatibility: + +- Players could create shops inside claims they do not own. +- Visitors might trade inside protected areas. +- Claim protection might not apply correctly to shops. + +The SimpleClaimSystem compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops within their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a SimpleClaimSystem claim. +- Whether the player has permission within that claim. +- Whether claim rules allow shop interaction. + +If the action is not permitted by the claim, QuickShop blocks it. + +If the location is outside any claim, default QuickShop behavior applies. + +--- + +## Claim Owner Control + +With this module enabled: + +- Claim owners can create and manage shops inside their claim. +- Trusted players follow claim-based permissions. +- Visitors are restricted unless explicitly allowed. +- Claim protection rules apply automatically to shop interactions. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install SimpleClaimSystem. +2. Install the QuickShop SimpleClaimSystem compat module. +3. Restart your server. + +The module activates automatically if SimpleClaimSystem is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If SimpleClaimSystem is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Enable owner override for easier management. + +This ensures players maintain control over their protected land. + +--- + +## Common Questions + +### Can players create shops in someone else's claim? + +Only if claim permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can allow shops outside claims or restrict them. + +### What happens if SimpleClaimSystem is removed? + +QuickShop will revert to default behavior and stop checking claim permissions. + +--- + +## Summary + +The SimpleClaimSystem compat module: + +- Enforces claim-based permissions +- Prevents unauthorized shop creation +- Protects land from unwanted trading +- Requires minimal setup + +It is recommended for servers running SimpleClaimSystem. \ No newline at end of file diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md index a84dbf057b..4dfa8ae97c 100644 --- a/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/towny.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/towny.md index 52ab4818f4..b26c19d335 100644 --- a/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/towny.md +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/towny.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -26,7 +26,7 @@ Town sub-command allow you switch a quickshop between regular shop and town shop For a nation shop, the shop owner will changed to nation fake player created by Towny, and use Nation's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from nation Towny account.\ +All purchases will deposit or withdraw money from nation Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Nation Shop. @@ -35,7 +35,7 @@ If Plot type restriction is enabled, only a specific Plot type can create a Nati For a town shop, the shop owner will changed to town fake player created by Towny, and use Town's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from town Towny account.\ +All purchases will deposit or withdraw money from town Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Town Shop. @@ -88,7 +88,7 @@ bank-mode: ## Permission Override -By adjust configuration, you're allow mayor or king automaticlly grant administrator permission on all shops in their management range. +By adjust configuration, you're allow mayor or king automatically grant administrator permission on all shops in their management range. ```yaml #Should allow Mayor grant the shop administrator permission on they town. @@ -168,7 +168,7 @@ This causes Towny and QuickShop Hikari to use accounts with the same name but di You can adjust the option in configuration to enable workaround. -NOTE: It will force turned on if detected EssentialsX installed on your server.\ +NOTE: It will force turned on if detected EssentialsX installed on your server. At present, we do not provide a method for disable it. ```yaml diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md new file mode 100644 index 0000000000..0189958495 --- /dev/null +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md @@ -0,0 +1,138 @@ +# UltimateClaims + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and UltimateClaims. + +It ensures that shop creation and trading respect land claim permissions managed by UltimateClaims. + +--- + +## What Does It Do? + +On servers using land-claim plugins, players protect areas of the world from unauthorized interaction. + +Without compatibility: + +- Players may create shops inside claims they do not own. +- Visitors might trade in areas where they should not. +- Claim protection rules might not apply correctly to shops. + +The UltimateClaims compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops inside their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a claim. +- Whether the player has permission in that claim. +- Whether claim rules allow shop interaction. + +If the action violates claim settings, QuickShop blocks it. + +Outside of claims, normal QuickShop behavior applies. + +--- + +## Claim Owner Permissions + +With this module enabled: + +- Claim owners can create and manage shops within their claim. +- Trusted players follow claim permission settings. +- Visitors are restricted based on claim configuration. +- Shop actions outside of claims behave normally. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install UltimateClaims. +2. Install the QuickShop UltimateClaims compat module. +3. Restart your server. + +If UltimateClaims is detected on startup, compatibility activates automatically. + +No additional linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Common options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If UltimateClaims is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Keep owner override enabled for better control. + +This ensures players maintain full control over their protected land. + +--- + +## Common Questions + +### Can players create shops inside someone else's claim? + +Only if the claim permissions allow it. + +Otherwise, QuickShop will block the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can choose to restrict shops to claimed land only. + +### What happens if UltimateClaims is removed? + +QuickShop returns to normal behavior without claim checks. + +--- + +## Summary + +The UltimateClaims compat module: + +- Protects claimed land from unauthorized shop usage +- Enforces claim-based permissions +- Integrates smoothly with land-claim servers +- Requires minimal setup + +It is recommended for any server running UltimateClaims. \ No newline at end of file diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md index 87a71a205c..6437754503 100644 --- a/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md @@ -2,8 +2,10 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. Find out more [here](../modules/shops/worldedit.md). + +Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. \ No newline at end of file diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/development/01-getting-start.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/development/01-getting-start.md index 92b773451e..0e78e52367 100644 --- a/i18n/nl-NL/docusaurus-plugin-content-docs/current/development/01-getting-start.md +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/development/01-getting-start.md @@ -6,8 +6,8 @@ This series of articles will help you build extensions for QuickShop-Hikari or i ## License -QuickShop-Hikari is open source using the [GPLv3](https://www.gnu.org/licenses/quick-guide-gplv3.en.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari).\ -You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the GPLv3 agreement. +QuickShop-Hikari is open source using the [AGPLv3](https://www.gnu.org/licenses/agpl-3.0.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari). +You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the AGPLv3 agreement. ## 🚧Don't trust Javadoc too much @@ -48,7 +48,7 @@ QuickShop-Hikari divides operation sources into three types: - Server Main Thread - Async Thread (any other threads but not server main thread) -- Hybird +- Hybrid If you access the API through the wrong thread, QuickShop-Hikari will force a runtime error to be thrown. @@ -58,4 +58,4 @@ For APIs that may trigger network IO or long-time disk IO, you are required not You can see [Util.ensureThread()](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/3d1d271e1106ea1c83cc6068f8232ab7c7860918/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/util/Util.java#L351) and find out the requirements of the different APIs by looking up their use. APIs that do not use Util.ensureThread() are allowed to be called from any thread by default. -You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. +You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. \ No newline at end of file diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md index aa2404c594..7828d414ad 100644 --- a/i18n/nl-NL/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md @@ -10,7 +10,7 @@ ShopManager manager = api.getShopManager(); ## Getting a shop -Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates.\ +Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates. QuickShop-Hikari's store is only bound to one half of "Large Chest", so to get the store, you need to query both the cube itself and its associated cube. The good thing is that there is an API in the plugin that allows you to handle this situation very easily. @@ -71,7 +71,7 @@ manager.deleteShop(shop) // Permanently delete this store, both memory and datab ## Identify a store -Please note that store locations are technically variable and you should not use coordinates to identify a store.\ +Please note that store locations are technically variable and you should not use coordinates to identify a store. Also RuntimeRandomUniqueId should not be used to identify the store, as the name suggests, the value changes every time the server restarts, it should only be used to handle scenarios where the player interacts with the server. ```java diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md index 543f1851da..4f839ed652 100644 --- a/i18n/nl-NL/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md @@ -1,6 +1,6 @@ # 0x05 Per shop permission -QuickShop-Hikari has a per shop permission management system.\ +QuickShop-Hikari has a per shop permission management system. Therefore, for a normal permission node check is not enough, you need to attach an additional check. ## Check with shop diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/development/06-protocol-system.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/development/06-protocol-system.md index 5d37a15536..0380b789f9 100644 --- a/i18n/nl-NL/docusaurus-plugin-content-docs/current/development/06-protocol-system.md +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/development/06-protocol-system.md @@ -15,30 +15,30 @@ This documentation will guide developers through the components, implementation - **Purpose**: Manages packet handling and initialization logic. - **Interface**: `PacketHandler` - **Key Methods**: - - `Map> factories()` - - Retrieves a map of supported `PacketFactory` instances keyed by game versions. - - `void initialize()` - - Initializes the packet handler. - - `Optional> factory(String version)` - - Retrieves a `PacketFactory` for a specific game version. + - `Map> factories()` + - Retrieves a map of supported `PacketFactory` instances keyed by game versions. + - `void initialize()` + - Initializes the packet handler. + - `Optional> factory(String version)` + - Retrieves a `PacketFactory` for a specific game version. ### 2. **PacketFactory** - **Purpose**: Creates and sends specific packet types. - **Interface**: `PacketFactory` - **Supported Packets**: - - **Spawn Packet**: - - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. - - Example Use: Representing shop items visually. - - **Metadata Packet**: - - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. - - Example Use: Updating item display name or properties. - - **Velocity Packet**: - - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. - - Example Use: Custom animations for virtual items. - - **Destroy Packet**: - - Removes the entity from the client view. Created using `createDestroyPacket()`. - - Example Use: Unloading or removing a virtual display item. + - **Spawn Packet**: + - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. + - Example Use: Representing shop items visually. + - **Metadata Packet**: + - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. + - Example Use: Updating item display name or properties. + - **Velocity Packet**: + - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. + - Example Use: Custom animations for virtual items. + - **Destroy Packet**: + - Removes the entity from the client view. Created using `createDestroyPacket()`. + - Example Use: Unloading or removing a virtual display item. Developers implementing custom `PacketFactory` should ensure these packets are correctly handled and optimized for performance. @@ -46,24 +46,24 @@ Developers implementing custom `PacketFactory` should ensure these packets are c - **Purpose**: Oversees the lifecycle of virtual display items and integrates with packet handlers. - **Key Features**: - - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). - - Manages virtual display items mapped to chunks. - - Provides thread-safe operations for adding and removing display items. + - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). + - Manages virtual display items mapped to chunks. + - Provides thread-safe operations for adding and removing display items. ### 4. **VirtualDisplayItem** - **Purpose**: Represents a virtual item displayed to players. - **Key Features**: - - Generates and caches packets for spawning, metadata, velocity, and destruction. - - Manages packet senders for each player. - - Handles spawn and removal operations dynamically. + - Generates and caches packets for spawning, metadata, velocity, and destruction. + - Manages packet senders for each player. + - Handles spawn and removal operations dynamically. ### 5. **ProtocolLibHandler and PacketEventsHandler** - **Purpose**: Provide implementations of `PacketHandler` using ProtocolLib and PacketEvents, respectively. - **Differences**: - - `ProtocolLibHandler` leverages ProtocolLib API. - - `PacketEventsHandler` uses the PacketEvents library. + - `ProtocolLibHandler` leverages ProtocolLib API. + - `PacketEventsHandler` uses the PacketEvents library. --- @@ -140,11 +140,11 @@ public class CustomPacketFactory implements PacketFactory { Packet factories are provided for specific game versions through two primary implementations: - **ProtocolLib**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` - **PacketEvents**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` --- diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md new file mode 100644 index 0000000000..aebc035f87 --- /dev/null +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md @@ -0,0 +1,297 @@ +# Interaction System (Developer Guide) + +The Interaction System allows developers to fully customize how players interact with shops. + +As of 6.2.0.11, the system has been redesigned to be: + +- Modular +- Extensible +- Thread-safe +- Fully customizable by third-party addons + +This guide will walk you through: + +1. What the Interaction System is +2. Getting the `InteractionManager` +3. Understanding `InteractionType` +4. Understanding `InteractionBehavior` +5. Registering custom interactions +6. Best practices + +--- + +# Overview + +The Interaction System is composed of three main components: + +| Component | Purpose | +| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| `InteractionType` | Describes **what kind of click happened** (standing, sneaking, left-click, sign, shopblock, etc.) | +| `InteractionBehavior` | Describes **what action should happen** when that type is triggered | +| `InteractionManager` | Central registry that manages interactions and behaviors | + +This separation allows developers to: + +- Add new click types +- Add new behaviors +- Override existing ones +- Extend QuickShop without modifying core code + +--- + +# Getting the InteractionManager + +To begin registering custom interactions, you must retrieve the `InteractionManager` instance. + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +If you are working directly with the plugin instance: + +```java +InteractionManager manager = QuickShop.getInstance().getInteractionManager(); +``` + +Once obtained, you can: + +- Register new interaction types +- Register new behaviors +- Override existing behaviors + +--- + +# Understanding InteractionType + +`InteractionType` represents **how** a player interacted with a shop. + +Examples include: + +- `STANDING_LEFT_CLICK_SIGN` +- `STANDING_RIGHT_CLICK_SHOPBLOCK` +- `SNEAKING_LEFT_CLICK_CONTAINER` +- etc. + +Each `InteractionType` defines: + +- Player stance (standing/sneaking) +- Click type (left/right) +- Target (sign/shopblock/container) + +InteractionTypes do NOT define behavior — they only define the trigger. + +--- + +# Understanding InteractionBehavior + +`InteractionBehavior` defines **what happens** when an interaction is triggered. + +Examples of built-in behaviors: + +- `TRADE_INTERACTION` +- `TRADE_UI` +- `CONTROL_PANEL` +- `CONTROL_PANEL_UI` +- `NONE` + +A behavior: + +- Executes logic +- May open GUIs +- May send chat panels +- May directly trade items +- Can cancel or modify flow + +This separation makes it easy to reuse behaviors across multiple interaction types. + +--- + +# Registering Custom Interactions + +There are two things you can register: + +- A custom `InteractionType` +- A custom `InteractionBehavior` + +--- + +## Creating a Custom InteractionBehavior + +Create a class implementing `InteractionBehavior`. + +Example: + +```java +public class MyTradeBehavior implements InteractionBehavior { + + @Override + public String getKey() { + return "MY_CUSTOM_TRADE"; + } + + @Override + public void execute(InteractionClick click) { + Player player = click.getPlayer(); + Shop shop = click.getShop(); + + player.sendMessage("You triggered my custom interaction!"); + + // Add your custom logic here + } +} +``` + +Then register it: + +```java +InteractionManager manager = api.getInteractionManager(); +manager.behavior(new MyTradeBehavior()); +``` + +Now your behavior is available for use. + +--- + +## Creating a Custom InteractionType + +You may also register custom interaction types if you want to introduce new trigger definitions. + +Example: + +```java +public class MyCustomInteraction implements InteractionType { + + @Override + public String getKey() { + return "STANDING_DOUBLE_CLICK_SIGN"; + } + + @Override + public boolean matches(InteractionClick click) { + // Define custom logic to detect this interaction + return click.isStanding() + && click.isSign() + && click.isDoubleClick(); + } +} +``` + +Register it: + +```java +manager.interaction(new MyCustomInteraction()); +``` + +--- + +# Binding Types to Behaviors + +The InteractionManager internally maps interaction types to behaviors based on configuration and registration order. + +Once your behavior is registered: + +- It can be referenced in `interaction.yml` +- Or attached programmatically + +Example interaction.yml usage: + +```yaml +STANDING_LEFT_CLICK_SIGN: MY_CUSTOM_TRADE +``` + +--- + +# The InteractionClick Object + +When your behavior executes, you receive an `InteractionClick` object. + +It provides: + +- `getPlayer()` +- `getShop()` +- `getLocation()` +- `isSneaking()` +- `isSign()` +- `isShopBlock()` +- etc. + +This gives full context for safe execution. + +--- + +# Advanced: Overriding Built-in Behavior + +If you register a behavior using the same key as an existing one, your behavior can override the default. + +⚠️ Be careful when doing this — you are replacing core functionality. + +--- + +# Best Practices + +### Always Use Unique Keys + +Avoid naming collisions: + +``` +MYPLUGIN_CUSTOM_BEHAVIOR +``` + +### Keep Behavior Lightweight + +Do not block the main thread with: + +- Heavy database calls +- File IO +- Network calls + +Use async tasks if needed. + +### Respect Permissions + +Always validate: + +```java +if (!player.hasPermission("myplugin.use")) { + return; +} +``` + +### Avoid Hard Overrides Unless Necessary + +Instead of replacing built-in behaviors, consider extending them. + +--- + +# Example: Full Minimal Implementation + +```java +public class ExampleAddon { + + public void register(QuickShopAPI api) { + + InteractionManager manager = api.getInteractionManager(); + + manager.behavior(new MyTradeBehavior()); + manager.interaction(new MyCustomInteraction()); + } +} +``` + +--- + +# Conclusion + +The Interaction System is designed to allow: + +- Full extensibility +- Clean separation of triggers and actions +- Easy integration for third-party developers + +By retrieving the `InteractionManager`: + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +You gain full control over how shops respond to player actions. \ No newline at end of file diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/development/08-tax-manager.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/development/08-tax-manager.md new file mode 100644 index 0000000000..72a56f9e88 --- /dev/null +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/development/08-tax-manager.md @@ -0,0 +1,266 @@ +# Tax System (Developer Guide) + +The QuickShop tax system allows server owners and developers to define how transaction taxes are calculated, distributed, and extended. + +As of 6.2.0.11, the tax system has been fully rewritten to provide: + +- A flexible TaxManager +- Pluggable TaxProvider support +- Progressive taxation +- Tax targeting (shop owner, interacting player, or both) +- Custom extension capability for third-party addons + +This guide explains how to work with the tax system programmatically. + +--- + +# Overview + +The tax system is composed of three core components: + +TaxManager +Responsible for coordinating tax calculation and execution. + +TaxProvider +Defines how tax values are calculated. + +TaxRates +Represents calculated tax results for a transaction. + +The system is designed to allow custom providers to be registered and used without modifying core logic. + +--- + +# Getting the TaxManager + +To work with the tax system, retrieve the TaxManager from the ShopManager. + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +Once obtained, you can: + +- Access current tax configuration +- Register custom tax providers +- Calculate tax values +- Hook into tax events + +--- + +# How the Tax System Works + +During a shop transaction: + +1. A base price is determined. +2. The TaxManager selects the active TaxProvider. +3. The TaxProvider calculates applicable tax. +4. A TaxRates object is produced. +5. The system applies the tax to: + + - Shop owner + - Interacting player + - Or both (depending on configuration) + +This architecture allows tax behavior to be modified without altering transaction logic. + +--- + +# TaxProvider + +A TaxProvider defines how tax values are calculated. + +You may create your own provider to implement: + +- Progressive tax brackets +- Flat percentage tax +- Conditional tax rules +- Region-based tax +- Rank-based tax +- Time-based tax + +Example minimal provider: + +```java +public class MyCustomTaxProvider implements TaxProvider { + + @Override + public TaxRates calculateTax(TaxContext context) { + + double basePrice = context.getPrice(); + + double taxAmount = basePrice * 0.05; // 5% flat tax + + return new TaxRates() + .ownerTax(taxAmount) + .buyerTax(0.0); + } +} +``` + +Then register it: + +```java +taxManager.provider(new MyCustomTaxProvider()); +``` + +Once registered, your provider will be used for tax calculations. + +--- + +# TaxRates + +TaxRates represents the result of a tax calculation. + +It typically contains: + +- Owner tax amount +- Buyer tax amount +- Total tax impact +- Metadata (if applicable) + +The transaction system will read from TaxRates and apply deductions accordingly. + +--- + +# Progressive Taxation + +The built-in system supports progressive tax structures. + +This allows server administrators to tax based on: + +- Player balance +- Shop owner balance +- Configured tax brackets + +Example configuration concept: + +- 0–10,000 balance → 1% tax +- 10,000–100,000 → 2% tax +- 100,000+ → 3% tax + +Developers can extend or override this logic inside a custom TaxProvider. + +--- + +# Targeting Tax + +The new tax system allows taxes to be applied to: + +- Shop owner +- Interacting player +- Both + +This is controlled via configuration, but custom providers can override distribution logic by adjusting TaxRates output. + +Example: + +```java +return new TaxRates() + .ownerTax(basePrice * 0.02) + .buyerTax(basePrice * 0.01); +``` + +--- + +# Registering a Custom TaxProvider + +To replace or extend tax logic: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); + +taxManager.provider(new MyCustomTaxProvider()); +``` + +You may register only one primary provider at a time. If multiple providers are needed, implement internal delegation within your custom provider. + +--- + +# Tax Events + +The tax system integrates with the event system. + +The modern event used is: + +ShopEnhancedTaxEvent + +This replaces legacy tax events and provides improved context, including: + +- Transaction builder reference +- TaxRates object +- Modification capability before final execution + +You can listen for the event and modify tax behavior dynamically: + +```java +@EventHandler +public void onTax(ShopEnhancedTaxEvent event) { + + TaxRates rates = event.getTaxRates(); + + // Example: Give VIP players reduced owner tax + if (event.getOwner().hasPermission("vip.tax.discount")) { + rates.ownerTax(rates.getOwnerTax() * 0.5); + } +} +``` + +--- + +# Best Practices + +Always keep tax calculations lightweight. + +Avoid: + +- Heavy database queries inside calculateTax +- Blocking network calls +- Long-running computations + +If complex logic is required, pre-cache required data outside the tax execution path. + +Ensure negative tax values are not returned unless intentional. + +Always validate final amounts before applying modifications. + +Respect configuration hierarchy unless intentionally overriding it. + +--- + +# Example Full Implementation + +```java +public class ExampleTaxAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + TaxManager taxManager = manager.taxManager(); + + taxManager.provider(new MyCustomTaxProvider()); + } +} +``` + +--- + +# Conclusion + +The new tax system is designed for: + +- Flexibility +- Extensibility +- Clean separation of concerns +- Future expansion + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +You gain full control over how QuickShop calculates and applies tax during transactions. \ No newline at end of file diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/development/09-layout-provider.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/development/09-layout-provider.md new file mode 100644 index 0000000000..55e3cd3e91 --- /dev/null +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/development/09-layout-provider.md @@ -0,0 +1,275 @@ +# Shop Layout Provider (Developer Guide) + +The Shop Layout Provider system allows developers to customize how shop signs are structured and rendered. + +As of 6.2.0.11, shop layouts are no longer hardcoded. Instead, they are controlled through the `IShopLayoutProvider` interface, which allows: + +- Custom sign line ordering +- Per-shop-type layouts (BUYING, SELLING, FROZEN, or custom types) +- Dynamic layout resolution +- Complete replacement of the default layout system + +This guide explains how to access, override, and implement a custom layout provider. + +--- + +# Overview + +The layout provider controls how shop sign lines are arranged. + +Instead of hardcoding: + +Line 1 → Header +Line 2 → Trading info +Line 3 → Item +Line 4 → Price + +The system now allows full customization through: + +- Config-based layout definitions +- Custom `IShopLayoutProvider` implementations +- Runtime overrides + +The default implementation is `SimpleShopLayoutProvider`. + +--- + +# Accessing the Layout Provider + +To retrieve the current layout provider: + +```java +ShopManager manager = api.getShopManager(); +IShopLayoutProvider provider = manager.shopLayoutProvider(); +``` + +To replace the layout provider with a custom one: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Once replaced, your implementation will control how shop layouts are generated. + +--- + +# Understanding IShopLayoutProvider + +`IShopLayoutProvider` defines how layout data is retrieved and resolved. + +It is responsible for: + +- Providing layout configuration per shop type +- Determining which layout to use +- Supplying formatted line keys +- Allowing future extensibility + +The default implementation reads layout definitions from configuration and applies them based on shop type. + +--- + +# Default Layout Example + +The default configuration-based layout looks like this: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +Each line maps to a layout component key. + +An empty string (`""`) leaves that line blank. + +The layout provider resolves these keys into actual sign content. + +--- + +# Creating a Custom Layout Provider + +To override the default behavior, implement `IShopLayoutProvider`. + +Example minimal implementation: + +```java +public class MyCustomLayoutProvider implements IShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + + ShopLayout layout = new ShopLayout(); + + layout.setLine(1, "Custom Header"); + layout.setLine(2, "Owner: " + shop.getOwnerName()); + layout.setLine(3, shop.getItem().getType().name()); + layout.setLine(4, "$" + shop.getPrice()); + + return layout; + } +} +``` + +Then register it: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Your layout will now control all shop sign formatting. + +--- + +# Per-Type Layout Control + +Because the system no longer depends on the legacy ShopType enum, layouts can support: + +- Built-in types (BUYING, SELLING, FROZEN) +- Custom shop types +- Addon-defined shop types + +Your provider can determine layout logic dynamically: + +```java +@Override +public ShopLayout provideLayout(Shop shop) { + + if (shop.getShopType().key().equals("FROZEN")) { + return frozenLayout(shop); + } + + return defaultLayout(shop); +} +``` + +This allows conditional formatting, localization adjustments, or special event styling. + +--- + +# Advanced Customization + +A custom layout provider can: + +- Pull data from external plugins +- Inject dynamic placeholders +- Modify layout per player +- Apply formatting logic +- Override color schemes +- Apply region-based formatting +- Implement animated sign systems + +Because the layout provider is resolved at runtime, you can compute layouts dynamically instead of reading static config. + +--- + +# Replacing vs Extending the Default Provider + +You have two options: + +Replace entirely: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Or extend the default implementation: + +```java +public class ExtendedLayoutProvider extends SimpleShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + ShopLayout base = super.provideLayout(shop); + + base.setLine(1, "[Extended] " + base.getLine(1)); + + return base; + } +} +``` + +Extending is safer if you only want to modify small portions. + +--- + +# Best Practices + +Keep layout generation lightweight. + +Avoid: + +- Heavy database queries +- Blocking IO +- Complex network calls + +Layout generation runs during shop updates and sign refresh events. + +Always handle null values safely. + +Ensure layout line count does not exceed sign limits. + +Avoid hardcoding shop type names unless necessary. + +If your layout supports custom shop types, validate their keys properly. + +--- + +# Example Full Registration + +```java +public class LayoutAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + + manager.shopLayoutProvider(new MyCustomLayoutProvider()); + } +} +``` + +--- + +# Conclusion + +The Shop Layout Provider system allows complete control over shop sign structure. + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +``` + +And setting: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +You can redefine how every shop is displayed on the server. + +This system was designed to support: + +- Extensibility +- Custom shop types +- Localization +- Dynamic formatting +- Future expansion \ No newline at end of file diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/faq/compare-reremake.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/faq/compare-reremake.md index aaa1a9e507..6b39f02520 100644 --- a/i18n/nl-NL/docusaurus-plugin-content-docs/current/faq/compare-reremake.md +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/faq/compare-reremake.md @@ -64,7 +64,7 @@ If you are a Reremake user, you may be confused about the differences between Hi ## Which one should I use? Well, it depends on what your needs are.\ -If you have an old server (<1.20) instance, Reremake is your only choice.\ +If you have an old server ({'<'}1.20) instance, Reremake is your only choice.\ ~~If you are in China which has GFW interfere, you also should consider Reremake because it doesn't need to load libraries from Global Internet.~~ Solved in 6.0.0.0. If none of these applies, give Hikari a try! diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md index 551f579e7c..172be3a69b 100644 --- a/i18n/nl-NL/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md @@ -1,8 +1,8 @@ # Where Addons/Compacts is -Addons and Compatilibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. +Addons and Compatibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. -- Open Modrinth versions page, locate the version your're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) +- Open Modrinth versions page, locate the version you're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) - Frantically slide your mouse wheel down until the lowest end of the page. - You get it! diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/internal/database-schema.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/internal/database-schema.md index fea685e4fc..45e04adb56 100644 --- a/i18n/nl-NL/docusaurus-plugin-content-docs/current/internal/database-schema.md +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/internal/database-schema.md @@ -4,17 +4,17 @@ This chapter will explain the implementation details of QuickShop Hikari's datab ## Tables -This section explains the database tables created by QuickShop-Hikari.\ -Unless otherwise specified, the initial `qs_` in table name is the table prefix.\ +This section explains the database tables created by QuickShop-Hikari. +Unless otherwise specified, the initial `qs_` in table name is the table prefix. For the latest code definition for each table, see: [DataTables.java](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/hikari/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/database/DataTables.java) ### `data` -This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information.\ -No matter what, a data record should not be modified after it is created, until it got deleted.\ +This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information. +No matter what, a data record should not be modified after it is created, until it got deleted. Any new changes to the shop should create a new copy, apply the changes to the copy, and insert it as a new record. -Basiclly, Copy-on-write. +Basically, Copy-on-write. A data record only be deleted from the database when no any table references their `data_id`. @@ -29,7 +29,7 @@ A data record only be deleted from the database when no any table references the | unlimited | BIT NOT NULL | 0 | Indicates whether this store is an unlimited store, 0=Limited, 1=Unlimited | | hologram | BIT NOT NULL | 0 | Indicates the suspension status of this store's display item, 0=Follow global settings, 1=Disabled | | tax_account | VARCHAR(36) | NULL | The uuid for tax account, If it is not NULL, tax will be paid to the specified account | -| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serilized to JSON string | +| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serialized to JSON string | | extra | LONGTEXT | Empty Yaml | Used to store experimental settings of QuickShop Hikari or persistent data of other plugins | | inv_wrapper | VARCHAR(255) NOT NULL | N/A | Unique identifier for InventoryWrapper for this shop data entry | | inv_symbol_link | TEXT NOT NULL | N/A | Unique Inventory symbol used to pass to InventoryWrapper, for locating inventory | @@ -38,7 +38,7 @@ A data record only be deleted from the database when no any table references the ### `shops` -This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes.\ +This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes. Multiple `shop_id` can correspond to the same `data_id`. | Column Name | DataType | Default | Description | diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/modules/cmd-alias.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/modules/cmd-alias.md index 53f1577685..e6ed381c0d 100644 --- a/i18n/nl-NL/docusaurus-plugin-content-docs/current/modules/cmd-alias.md +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/modules/cmd-alias.md @@ -23,7 +23,7 @@ custom-commands: - cshop ``` -Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect.\ +Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect. The effect should be like this: ![command-alias](./img/command-alias.png) diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/modules/datasource.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/modules/datasource.md index 6fc1bd8931..3fd3a8bdee 100644 --- a/i18n/nl-NL/docusaurus-plugin-content-docs/current/modules/datasource.md +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/modules/datasource.md @@ -48,7 +48,7 @@ Execute the `/quickshop export` command in console, quickshop will export a zip ![exported data](img/database-export.png) -Stop your database, switch the datasource, and start the server.\ +Stop your database, switch the datasource, and start the server. You may noticed all shops are gone, because new datasources had no data inside, we will restore them from export. Rename that exported ZIP file to `recovery.zip`, execute `/quickshop recovery` and restart your server, all shops should back. diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/modules/itemmatcher.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/modules/itemmatcher.md index 56be243019..922907be27 100644 --- a/i18n/nl-NL/docusaurus-plugin-content-docs/current/modules/itemmatcher.md +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/modules/itemmatcher.md @@ -4,7 +4,7 @@ ItemMatcher is a utility used by QuickShop-Hikari to compare the items, it is th :::caution -If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse.\ +If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse. **TL;DR: Keep default unless you know what you're doing.** ::: @@ -26,10 +26,10 @@ matcher: work-type: 1 ``` -By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility.\ +By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility. But still, you can toggle to QuickShop Item Matcher if you need to customize the comparing or running QuickShop on the server jar which have bug affect the Bukkit comparing system. -## Customize the metadata compareing +## Customize the metadata comparing Customize only works under QuickShop Item Matcher. diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md index fc2af69d2b..d04e8f2783 100644 --- a/i18n/nl-NL/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md @@ -4,7 +4,7 @@ ItemStack Loader is a workaround for loading the Bukkit ItemStack. :::caution -Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossble. +Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossible. ::: diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/modules/localization.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/modules/localization.md index e9121e1a36..d47589ab9a 100644 --- a/i18n/nl-NL/docusaurus-plugin-content-docs/current/modules/localization.md +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/modules/localization.md @@ -10,7 +10,7 @@ To help translate QuickShop-Hikari, please visit our [Crowdin Homepage](https:// ## Crowdin OTA -QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will overrided when you reload QuickShop-Hikari or restart your server. +QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will override when you reload QuickShop-Hikari or restart your server. Your installation will keep translations up-to-date without any touch. @@ -110,6 +110,16 @@ To disable the CrowdinOTA, please add it in the startup flag: -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager.enableCrowdinOTA=false ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +use-crowdin-ota: false +``` + ### Self-Hosted OTA Server If you self-hosted our translation server by using [CrowdinCopyDeploy](https://github.com/Ghost-chu/CrowdinCopyDeploy) tool, you're able to change the OTA server to yourself server. @@ -118,4 +128,12 @@ If you self-hosted our translation server by using [CrowdinCopyDeploy](https://g -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager= ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml +Use + +```yaml +crowdin-host: +``` \ No newline at end of file diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/modules/shops/benefit.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/modules/shops/benefit.md index 4d7a9c8f42..c59d92e6d1 100644 --- a/i18n/nl-NL/docusaurus-plugin-content-docs/current/modules/shops/benefit.md +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/modules/shops/benefit.md @@ -37,3 +37,13 @@ By default, for security, QuickShop-Hikari disallow add offline players into sho ```bash -Dcom.ghostchu.quickshop.command.subcommand.SubCommand_Benefit.allowOffline=true ``` + +### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +shop.allow-offline-benefit: true +``` \ No newline at end of file diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/modules/shops/control-panel b/i18n/nl-NL/docusaurus-plugin-content-docs/current/modules/shops/control-panel new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/modules/shops/control-panel @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/modules/shops/history.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/modules/shops/history.md index fa891adeab..195b64a042 100644 --- a/i18n/nl-NL/docusaurus-plugin-content-docs/current/modules/shops/history.md +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/modules/shops/history.md @@ -24,7 +24,7 @@ The History GUI displays the details of each recorded transaction and other usef ### Transaction details -When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed.\ +When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed. If you are checking the history of more than one store, the player head will be replaced with an item from the corresponding store. ![history-gui](./img/history-gui.png) diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md new file mode 100644 index 0000000000..c5ed3b3fe4 --- /dev/null +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md @@ -0,0 +1,90 @@ +# Shop Types + +QuickShop supports multiple shop types, allowing shops to behave differently depending on their mode. + +The built-in shop types are: + +- Selling +- Buying +- Frozen + +Each type changes how the shop interacts with players. + +--- + +## Selling Shop + +A Selling shop allows players to: + +- Buy items from the shop owner +- Pay money to receive items + +This is the most common shop type. + +--- + +## Buying Shop + +A Buying shop allows players to: + +- Sell items to the shop owner +- Receive money in exchange + +This is commonly used for: + +- Resource collection +- Server buy-back shops +- Automated material sinks + +--- + +## Frozen Shop + +A Frozen shop temporarily disables trading. + +While frozen: + +- No buying is allowed +- No selling is allowed +- The shop remains intact +- Staff or admins can manage it + +This is useful for: + +- Temporary suspensions +- Investigation +- Event locking +- Maintenance + +--- + +## Switching Shop Types + +Shop types can be changed through: + +- Control panel +- GUI control panel +- Admin commands + +Frozen mode is also available via: + +/qs freeze + +--- + +## Custom Shop Types + +As of 6.2.x, the system supports extensible shop types internally. + +While server owners use the built-in types, the system now allows future expansion through addons. + +--- + +## Summary + +Shop types allow you to: + +- Control how money flows +- Enable buy-back mechanics +- Temporarily disable shops +- Build advanced economic systems \ No newline at end of file diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md new file mode 100644 index 0000000000..18e0a47407 --- /dev/null +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md @@ -0,0 +1,217 @@ +# Sign Layout + +QuickShop allows you to fully customize how shop signs are structured. + +You can change: + +- What appears on each line +- The order of information +- Layout per shop type +- Whether certain lines are blank + +This gives you complete control over how shops look on your server. + +--- + +## How Sign Layout Works + +Shop signs have four lines. + +Instead of being hardcoded, QuickShop uses a configurable layout system. + +Each shop type can have its own layout: + +- SELLING +- BUYING +- FROZEN + +You define what each line displays using layout keys. + +--- + +## Configuration Location + +Sign layout is configured in `config.yml` under: + +```yaml +layout: +``` + +Example default configuration: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## Available Layout Keys + +Each line value refers to a built-in layout component. + +Common layout keys include: + +- `header` – The shop header line +- `trading` – Buy/Sell direction information +- `item` – Item name +- `price` – Shop price + +These keys are automatically formatted using your language file and formatting settings. + +--- + +## Leaving a Line Blank + +To leave a line empty, use: + +```yaml +line2: "" +``` + +This is useful if you want: + +- Minimalist signs +- Cleaner layouts +- Custom spacing +- Decorative formatting + +--- + +## Customizing Per Shop Type + +Each shop type can have a different layout. + +For example: + +```yaml +layout: + + SELLING: + line1: "header" + line2: "item" + line3: "price" + line4: "" + + BUYING: + line1: "header" + line2: "price" + line3: "item" + line4: "" + + FROZEN: + line1: "header" + line2: "" + line3: "item" + line4: "Frozen" +``` + +This allows you to visually differentiate: + +- Selling shops +- Buying shops +- Frozen shops + +--- + +## Practical Examples + +### Minimal Style + +```yaml +layout: + SELLING: + line1: "item" + line2: "price" + line3: "" + line4: "" +``` + +### Compact Economy Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "price" + line3: "item" + line4: "" +``` + +### Large Clear Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## How Updates Affect Layout + +When you change the layout: + +- Existing shop signs will update automatically when refreshed. +- New shops will use the updated format immediately. + +If needed, you can reload QuickShop to apply changes. + +--- + +## Best Practices + +- Keep important information visible (price and item). +- Avoid overly complex formatting. +- Test layout changes before deploying on large servers. +- Use different layouts for BUYING and SELLING to reduce confusion. + +--- + +## Common Questions + +### Can I add more than four lines? + +No. +Minecraft signs are limited to four lines. + +### Can I add colors? + +Colors are controlled by your language file and formatting settings. + +### Can I change layout without restarting? + +Yes, but reloading or refreshing shops is recommended to ensure full update. + +--- + +## Summary + +The Sign Layout system allows you to: + +- Fully customize shop sign appearance +- Create per-type layouts +- Simplify or expand shop information +- Improve clarity for players + +All layout customization is handled inside `config.yml`. diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md new file mode 100644 index 0000000000..980bad10f2 --- /dev/null +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md @@ -0,0 +1,130 @@ +# Shop Sign Waxing + +QuickShop can automatically wax shop signs to prevent players from editing them manually. + +Waxing protects the integrity of your shop signs and helps prevent tampering, spoofing, and accidental modification. + +As of modern Minecraft versions, waxed signs cannot be edited unless they are unwaxed first. + +--- + +## What Is Sign Waxing? + +In Minecraft, waxing a sign locks it so that: + +- Players cannot edit the text +- Players cannot modify lines +- Accidental changes are prevented +- Malicious edits are blocked + +When enabled in QuickShop, shop signs are automatically waxed when created. + +--- + +## Why Use It? + +Sign waxing protects against: + +- Players editing price lines +- Changing item names on signs +- Spoofing shop information +- Accidental formatting issues +- Sign hijacking attempts + +On public servers, this feature is strongly recommended. + +--- + +## How It Works + +When a shop is created: + +1. QuickShop generates the shop sign. +2. The sign text is written. +3. The sign is automatically waxed (if enabled). + +If a shop is updated: + +- The sign will be safely updated by QuickShop. +- The wax state is maintained. + +Players cannot manually edit shop signs while waxing is enabled. + +--- + +## Configuration + +To enable or disable sign waxing, edit `config.yml`: + +```yaml +shop: + sign-wax: true +``` + +### true + +- Shop signs are automatically waxed. +- Players cannot edit the sign manually. + +### false + +- Shop signs behave like normal Minecraft signs. +- Players may edit them if permitted by the game. + +--- + +## Recommended Setting + +For most servers: + +```yaml +shop: + sign-wax: true +``` + +This ensures shop data stays accurate and secure. + +--- + +## Common Questions + +### Can admins still modify shop signs? + +QuickShop controls shop sign formatting. +Manual edits are not recommended. + +Admins should use: + +- Control panel +- Shop commands +- Direct configuration changes + +### Does waxing affect shop functionality? + +No. +Waxing only prevents manual text edits. +The shop continues to function normally. + +### Can players un-wax shop signs? + +No. +QuickShop manages the sign state automatically. + +--- + +## Best Practices + +- Keep sign-wax enabled on survival servers. +- Combine sign-wax with proper permissions. +- Avoid manually editing shop signs through other plugins. + +--- + +## Summary + +Sign Waxing: + +- Prevents tampering +- Requires no additional setup + +Enable it once and QuickShop handles the rest. \ No newline at end of file diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/modules/shops/taxes.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/modules/shops/taxes.md new file mode 100644 index 0000000000..1a273fd978 --- /dev/null +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/modules/shops/taxes.md @@ -0,0 +1,92 @@ +# Taxation System + +QuickShop includes a taxation system designed to give server owners more flexibility and control over shop-based income. + +This system was revamped as of 6.2.0.11+ + +The new system allows you to: + +- Apply tax to shop owners +- Apply tax to buyers +- Apply tax to both +- Use progressive tax brackets +- Customize tax behavior in configuration + +This system replaces the legacy tax configuration. + +--- + +## How It Works + +During a transaction: + +1. The shop price is calculated. +2. Tax is calculated based on your configuration. +3. Tax is deducted from the configured target(s). +4. Remaining funds are distributed normally. + +You can configure: + +- Flat percentage tax +- Progressive tax based on player balance +- Tax accounts +- Distribution rules + +--- + +## Progressive Tax + +The new system allows you to tax based on balance brackets. + +Example concept: + +- 0 – 10,000 balance → 1% tax +- 10,000 – 100,000 → 2% tax +- 100,000+ → 3% tax + +This helps prevent extremely wealthy players from dominating the economy. + +--- + +## Who Pays the Tax? + +You can configure whether tax applies to: + +- The shop owner +- The buyer +- Both + +This gives you flexibility depending on your economy design. + +--- + +## Configuration + +All tax-related settings are located under the `shop-tax` section in `config.yml`. + +After updating to 6.2.0.11+, review your tax configuration carefully, as the old tax system has been replaced. + +--- + +## Why Use Tax? + +The taxation system can help: + +- Remove currency from circulation +- Fund server banks or towns +- Create sink mechanics +- Balance inflation +- Reward active players + +--- + +## Summary + +The new taxation system is: + +- Flexible +- Configurable +- Balance-aware +- Designed for modern economy servers + +Make sure to review your configuration after upgrading. \ No newline at end of file diff --git a/i18n/nl-NL/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md b/i18n/nl-NL/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md new file mode 100644 index 0000000000..247c24712d --- /dev/null +++ b/i18n/nl-NL/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md @@ -0,0 +1,161 @@ +# WorldEdit & FAWE Support + +QuickShop includes built-in protection and integration for WorldEdit and FastAsyncWorldEdit (FAWE). + +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. + +You do not need to download or install any additional compatibility plugins. + +--- + +## What This Does + +WorldEdit and FAWE allow administrators and builders to: + +- Copy and paste regions +- Replace large areas of blocks +- Mass-delete regions +- Roll back areas +- Regenerate terrain + +Without protection, these operations could: + +- Create ghost shops +- Leave orphaned shop data in the database +- Duplicate shops unintentionally +- Delete containers without cleaning up shop data +- Cause inconsistencies between world and database + +QuickShop now automatically detects and safely processes WorldEdit and FAWE operations. + +--- + +## Built-In Behavior + +When WorldEdit or FAWE modifies blocks: + +- Shops removed via WorldEdit are properly deleted from the database. +- Shop data stays synchronized with world changes. +- Ghost shops are prevented. +- Mass block replacements will not leave broken shop entries behind. + +This applies to: + +- //set +- //replace +- //cut +- //paste +- //regen +- Region deletion +- Mass container removal + +No configuration is required. + +--- + +## FAWE Support + +FastAsyncWorldEdit (FAWE) is fully supported. + +Because FAWE processes edits asynchronously, QuickShop handles: + +- Region-thread safe processing +- Async block updates +- Safe shop deletion during batch edits + +You do not need to enable anything manually. + +--- + +## Removing Shops with WorldEdit + +If you delete containers (chests, barrels, etc.) using WorldEdit: + +QuickShop will automatically: + +- Detect the block removal +- Unregister the shop +- Clean the database entry +- Prevent ghost shops + +You do not need to run `/qs cleanghost` after WorldEdit usage in normal circumstances. + +--- + +## Copying and Pasting Shops + +If you copy and paste regions that contain shops: + +- Shop data will not duplicate incorrectly. +- Shop IDs remain consistent. +- Invalid pasted shops will not auto-register unless properly created. + +This prevents accidental duplication exploits. + +--- + +## Performance + +WorldEdit and FAWE operations can modify thousands of blocks at once. + +QuickShop processes these safely and efficiently: + +- Batch-aware cleanup +- Thread-safe region access (especially on Folia) +- Minimal performance impact during mass edits + +--- + +## Configuration + +There are no specific WorldEdit configuration options in QuickShop. + +Support is automatic and always enabled if WorldEdit or FAWE is detected. + +If WorldEdit is not installed, no extra code is executed. + +--- + +## Common Questions + +### Do I need the old WorldEdit compatibility jar? + +No. + +As of 6.2.0.11, WorldEdit support is built-in and the separate compatibility module has been removed. + +### Does this work with FAWE? + +Yes. FAWE is fully supported. + +### Will shops break if I use //set air? + +No. Shops will be safely removed and cleaned up. + +### Do I need to restart after installing WorldEdit? + +No. QuickShop detects WorldEdit automatically on startup. + +--- + +## Best Practices + +Even though QuickShop safely handles WorldEdit operations, it is recommended to: + +- Avoid copying shops intentionally unless required +- Use backups before large region edits +- Test large FAWE operations on staging servers when possible + +--- + +## Summary + +QuickShop’s built-in WorldEdit and FAWE integration ensures: + +- Safe mass edits +- No ghost shops +- Automatic database cleanup +- Thread-safe processing +- No extra modules required + +WorldEdit support is now a core feature of QuickShop. \ No newline at end of file diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/addon/limited.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/addon/limited.md index 70af27e240..fae55a8c95 100644 --- a/i18n/no-NO/docusaurus-plugin-content-docs/current/addon/limited.md +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/addon/limited.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -41,8 +35,8 @@ Limit players to purchase up to 16 items per month. /quickshop limit period MONTH ``` -The system is based on the QuickShop-Hikari calendar system.\ -The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year.\ +The system is based on the QuickShop-Hikari calendar system. +The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year. Same for days, months and hours. Available time units: diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/addon/list.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/addon/list.md index 93d182f083..f20b91fd7b 100644 --- a/i18n/no-NO/docusaurus-plugin-content-docs/current/addon/list.md +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/addon/list.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/addon/plan.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/addon/plan.md index 52a6e79cb4..c10ef4df42 100644 --- a/i18n/no-NO/docusaurus-plugin-content-docs/current/addon/plan.md +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/addon/plan.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -18,7 +18,7 @@ Recorded data can be displayed from Hikari v2.0.0.0 onwards, but only after vers - All shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 1000 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `5` in server scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `5` in server scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Player Scope @@ -27,7 +27,7 @@ And still is Plan limitations, the list sorting is disturbed, so the display ord - All owned shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 50 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `4` in player scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `4` in player scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Showcase diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/addon/reforges.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/addon/reforges.md index 2a14509eb7..25fff1752a 100644 --- a/i18n/no-NO/docusaurus-plugin-content-docs/current/addon/reforges.md +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/addon/reforges.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.0.0.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md index 304d39bc05..6f9f51d250 100644 --- a/i18n/no-NO/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.1.1.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -44,7 +38,7 @@ _This is not necessary if you are using an H2 database._ ### Prepare for convert -To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console.\ +To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console. If a player is in the server, the conversion cannot be started. Once the conversion has begun, the server will be locked during the conversion process and no players will be able to join the server during the conversion. diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/addon/shopitemonly.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/addon/shopitemonly.md index c45062f8c2..1ccfe977b3 100644 --- a/i18n/no-NO/docusaurus-plugin-content-docs/current/addon/shopitemonly.md +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/addon/shopitemonly.md @@ -2,17 +2,11 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT - -::: - -This addon prevents players from putting non-store items into store containers.\ +This addon prevents players from putting non-store items into store containers. Does not apply to stores that use the item inventory redirection API (aka. InventoryWrapper API). This Addon will check for container (or transferring) items on events such as the player closing the container or hopper access. diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md new file mode 100644 index 0000000000..9c8b4f7407 --- /dev/null +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md @@ -0,0 +1,55 @@ +# 6.2.0.10 + +## Major Changes + +- Added support for 1.21.6 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.7 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.8 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Some internal updates for packetevents(2.9.0 is now required.) +- Updated Lands support + +## Addon Changes + +- Added MatcherPlus Addon + - Allows support for BreweryX and AdvancedItems stacks in shops with improved matching abilities +- Added FabledSkyblock Compat +- Added Dominion Compat +- Added HuskTowns Compat +- Added IridiumSkyblock Compat +- Added member-create for member creation in ARM compat +- Added admin-override and quickshop.arm.admin permission for admin overrides in ARM + +## Minor Changes + +- Added configurations for the coordinates of the display item. +- Added /qs toggledisplayall on/off server/owned + - Players need to have permission node quickshop.toggledisplayall.admin to toggle all on the server. +- Added ability to use abbreviations in /qs price and /qs create commands such as 2.5k for 2500 +- Added ability to set default display status using shop.default-display in config.yml + +## Fixes + +- Fixed issue with display item being sent to the moon on 1.21.5 +- Fixed issue where TRADE_UI interactions interfered with quick create. +- Fixed issue with displays on protocollib falling through the chest +- Fixed issue with signs on .9 and previous .10 snapshots on early versions +- Implemented some performance improvements for paper servers +- Fixed all outstanding issues with Folia usage.(thanks to RootB33R/SleazLee for contributions) + +## Possible 6.2.0.11 Features + +Here's an outline for some features that may arrive in 6.2.0.11: + +- Additional compats/addons that have been piling up. + - see: https://github.com/QuickShop-Community/QuickShop-Hikari/issues/1756 +- gradle?(interested to see compilation time uplifts) +- Update documentation +- Update configuration comments +- Update configuration system? + - auto updating? + - Allows removal of the update code +- Remove waste spigot modules? + - Any versions of 1.20 that can be discarded due to low use? +- Bug fixing, of course +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... \ No newline at end of file diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md new file mode 100644 index 0000000000..b41c88662a --- /dev/null +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md @@ -0,0 +1,173 @@ +## Outline + +- Update documentation +- Update configuration comments +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... + +# 6.2.0.11 + +## Major Changes + +- Removed Spigot Platform Modules, and stopped loading QS if Spigot is detected. This will mean that unless the protocol changes that we use for display items, QS won't need updated for each version. +- Revamped Economy Code Completely + - New classes for all economy-related systems + - Any economy-related or benefits-related events are incompatible with previous versions. +- Added sign layout customizations per-type allowing you to change how lines are configured, an empty string('') will leave an empty line for that line of the sign. + +``` + #The layout of signs for shops. + layout: + + #The layout of BUYING shops. + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of FROZEN shops. + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of SELLING shops. + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +- Add wildcard support for item blacklist patterns(thanks to bennycallanan) + - Added support for wildcard patterns in the item blacklist configuration, allowing users to block entire categories of items with simple patterns. + + - Features + - Wildcard patterns like \*_AXE and \*_SPAWN_EGG now work in blacklist configuration + - Supports \* for any characters and ? for single character matching + - Case-insensitive pattern matching +- Overhauled GUI system(thanks to Yusakidev) + - Implemented gui.yml configuration file for customizing the GUI. + - Implemented better filtering for qs browse + - Implement GUI system to be more stable, and less error prone. + - Added gui.yml for fully configurable GUI layouts and text + - Browse menu: search, sort (price/name/stock), and filter (all/buying/selling/in-stock) + - Staff menu: search functionality for player/staff selection + - Grouped item pages for better shop browsing + - Refactored all menu pages to use configurable display/lore +- Added worldedit compat to QS internally as it's widely used. +- Revamped the taxation system to be more flexible and easier to configure. + - introduced a new progressive tax system that allows you to tax based on the balance of players.(suggested by YuanYuanOwO) + - introduced the ability to tax the player interacting with the shop, the owner, or both + - all tax-related configurations have been moved under the shop-tax section of the config. this may require reconfiguration of your tax settings. + - added a new ShopEnhancedTaxEvent, deprecated the old ShopTaxEvent. + - Added a new TaxManager, and TaxProvider interfaces, this allows for custom tax providers to be added by addons/third-party developers. + +## Addons/Compats Changes + +- Added UltimateClaims compat +- Added SimpleClaimSystem compat +- Added Quests by Pika addon +- Added BetonQuest addon +- Added Pl3xMap addon +- MatcherPlus Compat Improvements + - Added support for CrazyCrates + - Added support for ExcellentCrates + - Added support for SilkSpawners. +- WorldGuard Compat Improvements(Thanks to golovin12) + - Added clear permission handling: + - Region owners and members automatically have permission to create and trade in their own regions. + - Other players must have the appropriate WorldGuard flags enabled (quickshophikari-create, quickshophikari-trade) to interact with shops. + - If a shop is located outside any region, default QuickShop behavior applies (no extra restrictions) +- Added colored markers based on shop state for bluemap(thanks to YusakiDev) +- Updated dynmap/towny addons to use the new ShopTypeEnhancedEvent instead of ShopTypeEvent. +- Removed worldedit compat, it's now included in the main plugin. +- Added support for global flags to the worldguard compat. + +## Internals/Developer APIs + +- Removed several deprecated methods and classes. +- Revamped the interaction manager. It is now more flexible and allows external additions + - This involves two classes InteractionBehavior and InteractionType. + - InteractionType details the type of interaction such as: STANDING_LEFT_CLICK_SIGN, STANDING_LEFT_CLICK_SHOP + - InteractionBehavior outlines a behavior for an InteractionType such as CONTROL_PANEL and TRADE_UI +- Added UserLimitCalculationEvent, which allows for custom limits to be applied to users. + - This is useful for limiting the number of shops a user can have, or adding on to the existing limits provided by the ranks system without needing to implement a new RankLimiter. +- Added a new ShopLayoutProvider interface, and default implementation. + - This allows for custom layouts to be used for shops, allowing for more customization. + - This also allows for developers to override the default layout provider and create their own implementation. +- How to make your own? + - Implement the classes you would like to then register with the InteractionManager: + - ```java + InteractionManager manager = QuickShop.getInstance().getInteractionManager(); + + manager.interaction(new MyTradeInteraction()); + manager.behavior(new MyTradeBehavior()); + ``` +- Replaced some Apache Commons calls that could be easily replaced with built-in java methods, reduces some calls by ~ 1100ms/method call +- Deprecated the ShopType enum, and the ShopTypeEvent. These are replaced with the new IShopType interface and implementing classes. + - The new event is ShopTypeEnhancedEvent. + - This allows for third-party addons to add their own shop types, and simplifies code checks for translations. +- Updated config system to use Boosted-yaml + - this allows for auto-updating of config files without complex update scripts + - this also allows for the config system to not be minecraft-dependent. +- Replaced logical PaperLib calls with native PaperAPI calls. + +## Minor Changes + +- Bump Java version up to 21 +- Added shop.display-allow-enchants to enable/disable enchantments for display items on shops. +- Added workaround for packetevents not supporting custom enchants on itemstacks for virtual display items. +- Using locale translations for shop-type in mode toggle icon(thanks to ExyiN) +- Bumped Residence version for the compat(thanks to YuanYuanOwO) +- add world whitelist support(thanks to wling-art) +- added /qs database save command, which saves all currently dirty-marked shops to the database. +- Split up interactions _SHOPBLOCK into _SHOPBLOCK and _CONTAINER. + - _SHOPBLOCK relates to shops, where _CONTAINER relates to shop-valid containers that are not currently shops. +- Added inventory as an option for command panel, this is useful for adding a secondary option for players to open a shop's inventory. +- Moved crowdin arguments from system properties to config.yml + - crowdin-host + - use-crowdin-ota + +## Fixes + +- Fixes issue with item price restrictions(thanks to maxcom1) +- Fixes issue with 1.20.x protocol lib displays(thanks to YuanYuanOwO) +- Fixes issue when no item is in hand for itemdebug(thanks to YuanYuanOwO) +- Fixes issue with dominion addon(thanks to YuanYuanOwO) +- Add a simple check to avoid this. If it is not own shop, reject limit request directly.(Thanks to YuanYuanOwO) +- Fix NPE by not setting tax for price in TransactionBuilder(thanks to maxcom1) +- Fixes /quickshop suggestprice to differentiate between buy/sell shops. (Thanks to MidSpike) +- PacketEvents ClassNotFoundException with ProtocolLib(thanks to wling-art) +- Reallocate block state access to region thread for shop creation(thanks to r00tbeerman) +- resolve SLF4J StaticLoggerBinder loading error(thanks to wling-art) +- sign hijacking issue by validating sign facing direction(thanks to wling-art) +- Performance improvements for QuickShop disabling to prevent potential freezes. +- Fixed issue with 1.20.4 packetevents virtual displays not staying put. +- Fixes critical issue in GriefPrevention compatibility plugin. +- Fixes issue with shop owner not getting money when benefits active. +- Fixes for lands addon on folia, Use regionThread for Folia compatibility(thanks to YusakiDev) +- Fixes for TRADE_DIRECT on stacking shops +- Fixes issue for protocollib 5.4.0 with undocumented packet changes. +- Fixes issue where item stacks could be used on creation above the max stack size. +- Fixes issue with BukkitAudiences-related crashes on 1.21.11. +- Fix issue with shop deletion when getting too impatient. +- Fix the permission check issue when a shop owned by a non-owner is transferred to someone else. (thanks to YuanYuanOwO) +- Fix ui with supertool (thanks to YuanYuanOwO) +- Fix issue with logs generating outside debug mode. +- Fix issue with /qs find. +- Fix configuration loading timing. +- Fix configuration loading/creation warning message language. +- Fix command description language key mismatch(thanks to wling-art) +- Fix qs clean command on folia(thanks to wling-art) +- Fix per-player-shop-sign on folia(thanks to wling-art) +- Fix potential recursive deadlock in virtual display packet sending(thanks to wling-art) +- Fix configuration loading/creation warning message language. +- Fix issue with /qs browse and ShopItemOnly addon not behaving properly together on folia. +- Fix issue with PLAN using outdated APIs. +- Fix issue with /qs clean on folia.(thanks to wling-art) +- Fix issue with /qs cleanghost on folia(thanks to wling-art) +- More thread safety fixes for shops on folia.(thanks to wling-art) +- Fix owner payment calculations with benefits(thanks to wling-art) \ No newline at end of file diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md index 8172f9b410..dcc3edc67d 100644 --- a/i18n/no-NO/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md @@ -20,20 +20,20 @@ the ControlComponent object with a custom one that will replace the original dur ### Introduction of the Revamped Packet System 1. **About**: - - A modular and scalable system for managing packets related to virtual display items in Minecraft. - - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. + - A modular and scalable system for managing packets related to virtual display items in Minecraft. + - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. 2. **Custom Packet Factories**: - - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. - - Packet types: - - **Spawn Packet**: Spawns a virtual item entity at a specific location. - - **Metadata Packet**: Updates the visual properties of virtual items. - - **Velocity Packet**: Adds motion/velocity to entities (currently optional). - - **Destroy Packet**: Removes the entity from the client view. + - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. + - Packet types: + - **Spawn Packet**: Spawns a virtual item entity at a specific location. + - **Metadata Packet**: Updates the visual properties of virtual items. + - **Velocity Packet**: Adds motion/velocity to entities (currently optional). + - **Destroy Packet**: Removes the entity from the client view. 3. **Error Handling and Logging**: - - Enhanced debug logs to trace packet-related issues. - - Detailed error messages for missing factories or unregistered listeners. + - Enhanced debug logs to trace packet-related issues. + - Detailed error messages for missing factories or unregistered listeners. #### Improvements: diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md index 7775308722..c6e0948d19 100644 --- a/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md index f420997a9c..38587e3784 100644 --- a/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md index 5ed8182c9a..259c55f342 100644 --- a/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md index 924a37ac49..7fd4596a6a 100644 --- a/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,6 +10,6 @@ This is a BungeeCord plugin, you need install it within your BungeeCord's plugin ## How does it work? -BungeeCord Bridge plugins will register a `quickshop:bungee` channel for fowarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. +BungeeCord Bridge plugins will register a `quickshop:bungee` channel for forwarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. All forwarding is indicated by QuickShop-Hikari on the Spigot server and ends when it is not needed. diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md index 27d68956a8..20fbaf7a0c 100644 --- a/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,5 +10,5 @@ This compatibility module added [Chest Protect](https://www.spigotmc.org/resourc ## How does it work? -This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident.\ +This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident. It also prevents players from creating shops on ChestProtect protected containers. diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md index 220e26d8bb..e1757e7be9 100644 --- a/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/dominion.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/dominion.md new file mode 100644 index 0000000000..e1195278a8 --- /dev/null +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/dominion.md @@ -0,0 +1,138 @@ +# Dominion + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and Dominion. + +It ensures that shop creation and trading respect Dominion’s land and territory protection system. + +--- + +## What Does It Do? + +Dominion allows players or groups to claim land and define territory-based permissions. + +Without compatibility: + +- Players could create shops inside territories they do not control. +- Visitors might trade inside protected dominions. +- Dominion permission rules might not apply to shop interactions. + +The Dominion compat module ensures that: + +- Shop creation respects territory ownership. +- Shop trading follows Dominion permission settings. +- Protected land remains secure from unauthorized shop usage. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a Dominion-controlled area. +- Whether the player has permission within that territory. +- Whether Dominion rules allow shop interaction. + +If the action is not permitted by Dominion settings, QuickShop blocks it. + +If the location is outside any Dominion territory, default QuickShop behavior applies. + +--- + +## Territory Owner Control + +With this module enabled: + +- Territory owners can create and manage shops inside their dominion. +- Trusted members follow territory-based permissions. +- Outsiders are restricted unless explicitly allowed. +- Shop actions respect Dominion’s land rules automatically. + +This prevents unauthorized shop placement inside protected territories. + +--- + +## Installation + +1. Install Dominion. +2. Install the QuickShop Dominion compat module. +3. Restart your server. + +The module activates automatically if Dominion is detected. + +No manual configuration linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside dominions +whitelist-mode: false + +# Allow territory owners to override shop permissions +allow-owner-override: true +``` + +If Dominion is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For servers using Dominion: + +- Restrict shop creation to territory owners or trusted members. +- Prevent shop creation in wilderness if desired. +- Allow dominion owners to manage shop permissions. +- Review Dominion permission settings to align with shop behavior. + +This ensures protected territories remain secure and organized. + +--- + +## Common Questions + +### Can players create shops in someone else's dominion? + +Only if Dominion permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You may allow or restrict shops outside dominions. + +### What happens if Dominion is removed? + +QuickShop returns to normal behavior and stops checking Dominion territories. + +--- + +## Summary + +The Dominion compat module: + +- Enforces territory-based permissions +- Prevents unauthorized shop creation +- Protects claimed land from misuse +- Integrates seamlessly with Dominion + +It is recommended for servers running Dominion. \ No newline at end of file diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md index 743d3ae666..2ac9b10488 100644 --- a/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md new file mode 100644 index 0000000000..07ba4ada66 --- /dev/null +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md @@ -0,0 +1,133 @@ +# FabledSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and FabledSkyblock. + +It ensures that shop creation and trading properly respect island boundaries and island permissions. + +--- + +## What Does It Do? + +On Skyblock servers, players build and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Players might trade in areas they should not. +- Island protection rules might not apply to shops. + +The FabledSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members behave correctly with shops. +- Island visitors are restricted appropriately. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a FabledSkyblock island. +- Whether the player has permission on that island. +- Whether island settings allow the action. + +If the action is not permitted by island rules, QuickShop will deny it. + +--- + +## Island Ownership Rules + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow island permission settings. +- Visitors can only trade if island permissions allow it. +- Outside of islands, default QuickShop behavior applies. + +--- + +## Installation + +1. Install FabledSkyblock. +2. Install the QuickShop FabledSkyblock compat module. +3. Restart your server. + +The module activates automatically if FabledSkyblock is detected. + +No manual linking is required. + +--- + +## Configuration + +If the module provides configuration options, they will appear in its `config.yml`. + +Typical options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If FabledSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most Skyblock servers: + +- Allow shop creation only inside islands. +- Prevent trading in the void or wilderness. +- Let island owners control shop permissions. +- Use island rank systems to manage shop access. + +This helps maintain economic balance between islands. + +--- + +## Common Questions + +### Can players create shops in the void? + +Only if your configuration allows it. +Most servers disable shop creation outside islands. + +### Does this affect island war or PvP modes? + +No. +The module only checks island ownership and permissions for shop interactions. + +### What happens if FabledSkyblock is removed? + +QuickShop returns to normal behavior. + +--- + +## Summary + +The FabledSkyblock compat module: + +- Protects island economies +- Enforces island permission rules +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is strongly recommended for any server running FabledSkyblock. \ No newline at end of file diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md index 81b13d2c6b..32614d3019 100644 --- a/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md @@ -2,17 +2,17 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -GreifPrevention compatibility module added compaitibility with GF. +GreifPrevention compatibility module added compatibility with GF. ## How does it work This module allow QuickShop-Hikari check if player have permission to create or use QuickShop in specific region. -And delete shops when claim removed, untrusted, unclimed, expired, resized or subclaim created. +And delete shops when claim removed, untrusted, unclaimed, expired, resized or subclaim created. ## Configuration diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md new file mode 100644 index 0000000000..e71b34d462 --- /dev/null +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md @@ -0,0 +1,139 @@ +# HuskTowns + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and HuskTowns. + +It ensures that shop creation and trading respect town and claim permissions defined by HuskTowns. + +--- + +## What Does It Do? + +HuskTowns allows players to create towns and claim land. + +Without compatibility: + +- Players could create shops inside towns they do not belong to. +- Visitors might trade inside protected towns. +- Town permission rules might not apply to shop interactions. + +The HuskTowns compat module ensures that: + +- Shop creation respects town ownership. +- Trading follows town permission settings. +- Town members and visitors are handled correctly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a HuskTowns claim. +- Whether the player is a town member, trusted player, or outsider. +- Whether the town's permission settings allow the action. + +If the action is not permitted by town rules, QuickShop blocks it. + +Outside of town claims, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Town Owner Control + +With this module enabled: + +- Town owners can create and manage shops inside their town. +- Town members follow town-based permission settings. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect town claim protection. + +This prevents unauthorized shop placement and trading inside protected towns. + +--- + +## Installation + +1. Install HuskTowns. +2. Install the QuickShop HuskTowns compat module. +3. Restart your server. + +The module activates automatically if HuskTowns is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside towns +whitelist-mode: false + +# Allow town owners to override shop permissions +allow-owner-override: true +``` + +If HuskTowns is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For town-based survival servers: + +- Restrict shop creation to town members. +- Allow trading only where town permissions permit. +- Prevent shop creation in wilderness if desired. +- Enable owner override for better administrative control. + +This helps maintain town-based economic balance. + +--- + +## Common Questions + +### Can players create shops in another town? + +Only if that town's permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You can allow or restrict shops outside towns. + +### What happens if HuskTowns is removed? + +QuickShop returns to normal behavior and stops checking town permissions. + +--- + +## Summary + +The HuskTowns compat module: + +- Enforces town-based land permissions +- Protects towns from unauthorized shop usage +- Integrates smoothly with HuskTowns +- Requires minimal setup + +It is recommended for any server running HuskTowns. \ No newline at end of file diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md new file mode 100644 index 0000000000..3fa2995eb0 --- /dev/null +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md @@ -0,0 +1,139 @@ +# IridiumSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and IridiumSkyblock. + +It ensures that shop creation and trading respect island boundaries and island permission settings defined by IridiumSkyblock. + +--- + +## What Does It Do? + +IridiumSkyblock allows players to create and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Visitors might trade inside protected islands. +- Island protection rules might not apply correctly to shops. + +The IridiumSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members and visitors are handled properly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside an IridiumSkyblock island. +- Whether the player is the island owner, member, or visitor. +- Whether island permissions allow shop interaction. + +If the action is not permitted, QuickShop blocks it. + +Outside of islands, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Island Owner Permissions + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow the island's permission configuration. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect island protection rules. + +This prevents unauthorized shop usage inside protected islands. + +--- + +## Installation + +1. Install IridiumSkyblock. +2. Install the QuickShop IridiumSkyblock compat module. +3. Restart your server. + +The module activates automatically if IridiumSkyblock is detected. + +No additional setup is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If IridiumSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most IridiumSkyblock servers: + +- Restrict shop creation to island owners. +- Allow island members to trade if trusted. +- Prevent shop creation in the void or wilderness. +- Enable owner override for better management. + +This helps maintain balanced island economies. + +--- + +## Common Questions + +### Can players create shops outside their island? + +Only if your configuration allows it. + +Most Skyblock servers restrict shops to island areas. + +### Do island ranks affect shop permissions? + +Yes, if your island permissions are configured to control interaction rights. + +QuickShop follows island rules. + +### What happens if IridiumSkyblock is removed? + +QuickShop returns to normal behavior and stops checking island permissions. + +--- + +## Summary + +The IridiumSkyblock compat module: + +- Protects island economies +- Enforces island-based permissions +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is recommended for any server running IridiumSkyblock. diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md new file mode 100644 index 0000000000..3b4726cb9d --- /dev/null +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md @@ -0,0 +1,151 @@ +# ItemMatcherPlus + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +The ItemMatcherPlus module improves how QuickShop matches custom and plugin-modified items. + +It allows QuickShop to properly recognize and stack items created by other plugins that normally would not match using standard Bukkit item comparisons. + +This module is especially useful for servers that use: + +- Custom items +- Modified metadata +- NBT-based systems +- Advanced crate rewards +- Custom brewing systems +- Custom fishing rewards + +--- + +## What Does It Do? + +By default, Minecraft item matching checks: + +- Material type +- Basic metadata + +However, many plugins modify items with: + +- Custom NBT data +- Hidden tags +- Custom lore formats +- Unique identifiers + +Without enhanced matching: + +- Items may not stack +- Shops may refuse valid items +- Transactions may fail +- Buying/selling may not behave correctly + +ItemMatcherPlus improves compatibility and matching accuracy. + +--- + +## Supported Plugins + +ItemMatcherPlus includes built-in support for: + +- AdvancedItems +- BreweryX +- CrazyCrates +- ExcellentCrates +- PyroFishing +- SilkSpawners + +If any of these plugins are installed, QuickShop will automatically use enhanced matching logic. + +No additional configuration is required. + +--- + +## How It Works + +When a player trades with a shop: + +1. QuickShop checks the item. +2. If ItemMatcherPlus is enabled, it performs advanced matching. +3. Plugin-specific metadata is validated. +4. The item is confirmed as a match (or rejected safely). + +This allows: + +- Proper stacking of custom items +- Correct shop transactions +- Accurate buy/sell detection +- Reduced false mismatches + +--- + +## Installation + +1. Download the ItemMatcherPlus module. +2. Place the JAR into your `plugins` folder. +3. Restart your server. + +If supported plugins are detected, compatibility activates automatically. + +--- + +## Configuration + +ItemMatcherPlus does not require configuration. + +It activates automatically when: + +- The module is installed +- A supported plugin is detected + +If a supported plugin is not installed, no extra logic runs. + +--- + +## Why You Should Use It + +You should install ItemMatcherPlus if your server uses: + +- Custom fishing plugins +- Custom brewing systems +- Crate plugins with modified items +- Custom spawners +- Any plugin that modifies NBT data + +Without it, shops may not properly recognize custom items. + +--- + +## Common Questions + +### Do I need this if I don't use custom item plugins? + +No. +If you only use vanilla items, this module is not necessary. + +### Does this affect performance? + +The module only activates enhanced matching when needed. + +Normal item matching remains fast and efficient. + +### Will it break existing shops? + +No. +It improves compatibility and matching accuracy without modifying existing shop data. + +--- + +## Summary + +ItemMatcherPlus: + +- Improves item matching accuracy +- Adds support for major custom item plugins +- Prevents stacking and trade issues +- Requires no configuration +- Activates automatically + +If you run a heavily customized economy server, this module is highly recommended. \ No newline at end of file diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md index ba87606698..d4ae7d129a 100644 --- a/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/lands.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/lands.md index 06296f5779..7671fcdfe0 100644 --- a/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/lands.md +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/lands.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/openinv.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/openinv.md index c51f628615..4807d57873 100644 --- a/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/openinv.md +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/openinv.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md new file mode 100644 index 0000000000..c2136320b0 --- /dev/null +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md @@ -0,0 +1,138 @@ +# SimpleClaimSystem + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and SimpleClaimSystem. + +It ensures that shop creation and trading respect land ownership and claim permissions defined by SimpleClaimSystem. + +--- + +## What Does It Do? + +SimpleClaimSystem allows players to claim land and protect it from unauthorized interaction. + +Without compatibility: + +- Players could create shops inside claims they do not own. +- Visitors might trade inside protected areas. +- Claim protection might not apply correctly to shops. + +The SimpleClaimSystem compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops within their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a SimpleClaimSystem claim. +- Whether the player has permission within that claim. +- Whether claim rules allow shop interaction. + +If the action is not permitted by the claim, QuickShop blocks it. + +If the location is outside any claim, default QuickShop behavior applies. + +--- + +## Claim Owner Control + +With this module enabled: + +- Claim owners can create and manage shops inside their claim. +- Trusted players follow claim-based permissions. +- Visitors are restricted unless explicitly allowed. +- Claim protection rules apply automatically to shop interactions. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install SimpleClaimSystem. +2. Install the QuickShop SimpleClaimSystem compat module. +3. Restart your server. + +The module activates automatically if SimpleClaimSystem is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If SimpleClaimSystem is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Enable owner override for easier management. + +This ensures players maintain control over their protected land. + +--- + +## Common Questions + +### Can players create shops in someone else's claim? + +Only if claim permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can allow shops outside claims or restrict them. + +### What happens if SimpleClaimSystem is removed? + +QuickShop will revert to default behavior and stop checking claim permissions. + +--- + +## Summary + +The SimpleClaimSystem compat module: + +- Enforces claim-based permissions +- Prevents unauthorized shop creation +- Protects land from unwanted trading +- Requires minimal setup + +It is recommended for servers running SimpleClaimSystem. \ No newline at end of file diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md index a84dbf057b..4dfa8ae97c 100644 --- a/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/towny.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/towny.md index 52ab4818f4..b26c19d335 100644 --- a/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/towny.md +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/towny.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -26,7 +26,7 @@ Town sub-command allow you switch a quickshop between regular shop and town shop For a nation shop, the shop owner will changed to nation fake player created by Towny, and use Nation's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from nation Towny account.\ +All purchases will deposit or withdraw money from nation Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Nation Shop. @@ -35,7 +35,7 @@ If Plot type restriction is enabled, only a specific Plot type can create a Nati For a town shop, the shop owner will changed to town fake player created by Towny, and use Town's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from town Towny account.\ +All purchases will deposit or withdraw money from town Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Town Shop. @@ -88,7 +88,7 @@ bank-mode: ## Permission Override -By adjust configuration, you're allow mayor or king automaticlly grant administrator permission on all shops in their management range. +By adjust configuration, you're allow mayor or king automatically grant administrator permission on all shops in their management range. ```yaml #Should allow Mayor grant the shop administrator permission on they town. @@ -168,7 +168,7 @@ This causes Towny and QuickShop Hikari to use accounts with the same name but di You can adjust the option in configuration to enable workaround. -NOTE: It will force turned on if detected EssentialsX installed on your server.\ +NOTE: It will force turned on if detected EssentialsX installed on your server. At present, we do not provide a method for disable it. ```yaml diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md new file mode 100644 index 0000000000..0189958495 --- /dev/null +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md @@ -0,0 +1,138 @@ +# UltimateClaims + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and UltimateClaims. + +It ensures that shop creation and trading respect land claim permissions managed by UltimateClaims. + +--- + +## What Does It Do? + +On servers using land-claim plugins, players protect areas of the world from unauthorized interaction. + +Without compatibility: + +- Players may create shops inside claims they do not own. +- Visitors might trade in areas where they should not. +- Claim protection rules might not apply correctly to shops. + +The UltimateClaims compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops inside their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a claim. +- Whether the player has permission in that claim. +- Whether claim rules allow shop interaction. + +If the action violates claim settings, QuickShop blocks it. + +Outside of claims, normal QuickShop behavior applies. + +--- + +## Claim Owner Permissions + +With this module enabled: + +- Claim owners can create and manage shops within their claim. +- Trusted players follow claim permission settings. +- Visitors are restricted based on claim configuration. +- Shop actions outside of claims behave normally. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install UltimateClaims. +2. Install the QuickShop UltimateClaims compat module. +3. Restart your server. + +If UltimateClaims is detected on startup, compatibility activates automatically. + +No additional linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Common options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If UltimateClaims is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Keep owner override enabled for better control. + +This ensures players maintain full control over their protected land. + +--- + +## Common Questions + +### Can players create shops inside someone else's claim? + +Only if the claim permissions allow it. + +Otherwise, QuickShop will block the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can choose to restrict shops to claimed land only. + +### What happens if UltimateClaims is removed? + +QuickShop returns to normal behavior without claim checks. + +--- + +## Summary + +The UltimateClaims compat module: + +- Protects claimed land from unauthorized shop usage +- Enforces claim-based permissions +- Integrates smoothly with land-claim servers +- Requires minimal setup + +It is recommended for any server running UltimateClaims. \ No newline at end of file diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md index 87a71a205c..6437754503 100644 --- a/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md @@ -2,8 +2,10 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. Find out more [here](../modules/shops/worldedit.md). + +Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. \ No newline at end of file diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/development/01-getting-start.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/development/01-getting-start.md index 92b773451e..0e78e52367 100644 --- a/i18n/no-NO/docusaurus-plugin-content-docs/current/development/01-getting-start.md +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/development/01-getting-start.md @@ -6,8 +6,8 @@ This series of articles will help you build extensions for QuickShop-Hikari or i ## License -QuickShop-Hikari is open source using the [GPLv3](https://www.gnu.org/licenses/quick-guide-gplv3.en.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari).\ -You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the GPLv3 agreement. +QuickShop-Hikari is open source using the [AGPLv3](https://www.gnu.org/licenses/agpl-3.0.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari). +You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the AGPLv3 agreement. ## 🚧Don't trust Javadoc too much @@ -48,7 +48,7 @@ QuickShop-Hikari divides operation sources into three types: - Server Main Thread - Async Thread (any other threads but not server main thread) -- Hybird +- Hybrid If you access the API through the wrong thread, QuickShop-Hikari will force a runtime error to be thrown. @@ -58,4 +58,4 @@ For APIs that may trigger network IO or long-time disk IO, you are required not You can see [Util.ensureThread()](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/3d1d271e1106ea1c83cc6068f8232ab7c7860918/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/util/Util.java#L351) and find out the requirements of the different APIs by looking up their use. APIs that do not use Util.ensureThread() are allowed to be called from any thread by default. -You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. +You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. \ No newline at end of file diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md index aa2404c594..7828d414ad 100644 --- a/i18n/no-NO/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md @@ -10,7 +10,7 @@ ShopManager manager = api.getShopManager(); ## Getting a shop -Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates.\ +Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates. QuickShop-Hikari's store is only bound to one half of "Large Chest", so to get the store, you need to query both the cube itself and its associated cube. The good thing is that there is an API in the plugin that allows you to handle this situation very easily. @@ -71,7 +71,7 @@ manager.deleteShop(shop) // Permanently delete this store, both memory and datab ## Identify a store -Please note that store locations are technically variable and you should not use coordinates to identify a store.\ +Please note that store locations are technically variable and you should not use coordinates to identify a store. Also RuntimeRandomUniqueId should not be used to identify the store, as the name suggests, the value changes every time the server restarts, it should only be used to handle scenarios where the player interacts with the server. ```java diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md index 543f1851da..4f839ed652 100644 --- a/i18n/no-NO/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md @@ -1,6 +1,6 @@ # 0x05 Per shop permission -QuickShop-Hikari has a per shop permission management system.\ +QuickShop-Hikari has a per shop permission management system. Therefore, for a normal permission node check is not enough, you need to attach an additional check. ## Check with shop diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/development/06-protocol-system.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/development/06-protocol-system.md index 5d37a15536..0380b789f9 100644 --- a/i18n/no-NO/docusaurus-plugin-content-docs/current/development/06-protocol-system.md +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/development/06-protocol-system.md @@ -15,30 +15,30 @@ This documentation will guide developers through the components, implementation - **Purpose**: Manages packet handling and initialization logic. - **Interface**: `PacketHandler` - **Key Methods**: - - `Map> factories()` - - Retrieves a map of supported `PacketFactory` instances keyed by game versions. - - `void initialize()` - - Initializes the packet handler. - - `Optional> factory(String version)` - - Retrieves a `PacketFactory` for a specific game version. + - `Map> factories()` + - Retrieves a map of supported `PacketFactory` instances keyed by game versions. + - `void initialize()` + - Initializes the packet handler. + - `Optional> factory(String version)` + - Retrieves a `PacketFactory` for a specific game version. ### 2. **PacketFactory** - **Purpose**: Creates and sends specific packet types. - **Interface**: `PacketFactory` - **Supported Packets**: - - **Spawn Packet**: - - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. - - Example Use: Representing shop items visually. - - **Metadata Packet**: - - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. - - Example Use: Updating item display name or properties. - - **Velocity Packet**: - - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. - - Example Use: Custom animations for virtual items. - - **Destroy Packet**: - - Removes the entity from the client view. Created using `createDestroyPacket()`. - - Example Use: Unloading or removing a virtual display item. + - **Spawn Packet**: + - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. + - Example Use: Representing shop items visually. + - **Metadata Packet**: + - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. + - Example Use: Updating item display name or properties. + - **Velocity Packet**: + - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. + - Example Use: Custom animations for virtual items. + - **Destroy Packet**: + - Removes the entity from the client view. Created using `createDestroyPacket()`. + - Example Use: Unloading or removing a virtual display item. Developers implementing custom `PacketFactory` should ensure these packets are correctly handled and optimized for performance. @@ -46,24 +46,24 @@ Developers implementing custom `PacketFactory` should ensure these packets are c - **Purpose**: Oversees the lifecycle of virtual display items and integrates with packet handlers. - **Key Features**: - - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). - - Manages virtual display items mapped to chunks. - - Provides thread-safe operations for adding and removing display items. + - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). + - Manages virtual display items mapped to chunks. + - Provides thread-safe operations for adding and removing display items. ### 4. **VirtualDisplayItem** - **Purpose**: Represents a virtual item displayed to players. - **Key Features**: - - Generates and caches packets for spawning, metadata, velocity, and destruction. - - Manages packet senders for each player. - - Handles spawn and removal operations dynamically. + - Generates and caches packets for spawning, metadata, velocity, and destruction. + - Manages packet senders for each player. + - Handles spawn and removal operations dynamically. ### 5. **ProtocolLibHandler and PacketEventsHandler** - **Purpose**: Provide implementations of `PacketHandler` using ProtocolLib and PacketEvents, respectively. - **Differences**: - - `ProtocolLibHandler` leverages ProtocolLib API. - - `PacketEventsHandler` uses the PacketEvents library. + - `ProtocolLibHandler` leverages ProtocolLib API. + - `PacketEventsHandler` uses the PacketEvents library. --- @@ -140,11 +140,11 @@ public class CustomPacketFactory implements PacketFactory { Packet factories are provided for specific game versions through two primary implementations: - **ProtocolLib**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` - **PacketEvents**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` --- diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md new file mode 100644 index 0000000000..aebc035f87 --- /dev/null +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md @@ -0,0 +1,297 @@ +# Interaction System (Developer Guide) + +The Interaction System allows developers to fully customize how players interact with shops. + +As of 6.2.0.11, the system has been redesigned to be: + +- Modular +- Extensible +- Thread-safe +- Fully customizable by third-party addons + +This guide will walk you through: + +1. What the Interaction System is +2. Getting the `InteractionManager` +3. Understanding `InteractionType` +4. Understanding `InteractionBehavior` +5. Registering custom interactions +6. Best practices + +--- + +# Overview + +The Interaction System is composed of three main components: + +| Component | Purpose | +| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| `InteractionType` | Describes **what kind of click happened** (standing, sneaking, left-click, sign, shopblock, etc.) | +| `InteractionBehavior` | Describes **what action should happen** when that type is triggered | +| `InteractionManager` | Central registry that manages interactions and behaviors | + +This separation allows developers to: + +- Add new click types +- Add new behaviors +- Override existing ones +- Extend QuickShop without modifying core code + +--- + +# Getting the InteractionManager + +To begin registering custom interactions, you must retrieve the `InteractionManager` instance. + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +If you are working directly with the plugin instance: + +```java +InteractionManager manager = QuickShop.getInstance().getInteractionManager(); +``` + +Once obtained, you can: + +- Register new interaction types +- Register new behaviors +- Override existing behaviors + +--- + +# Understanding InteractionType + +`InteractionType` represents **how** a player interacted with a shop. + +Examples include: + +- `STANDING_LEFT_CLICK_SIGN` +- `STANDING_RIGHT_CLICK_SHOPBLOCK` +- `SNEAKING_LEFT_CLICK_CONTAINER` +- etc. + +Each `InteractionType` defines: + +- Player stance (standing/sneaking) +- Click type (left/right) +- Target (sign/shopblock/container) + +InteractionTypes do NOT define behavior — they only define the trigger. + +--- + +# Understanding InteractionBehavior + +`InteractionBehavior` defines **what happens** when an interaction is triggered. + +Examples of built-in behaviors: + +- `TRADE_INTERACTION` +- `TRADE_UI` +- `CONTROL_PANEL` +- `CONTROL_PANEL_UI` +- `NONE` + +A behavior: + +- Executes logic +- May open GUIs +- May send chat panels +- May directly trade items +- Can cancel or modify flow + +This separation makes it easy to reuse behaviors across multiple interaction types. + +--- + +# Registering Custom Interactions + +There are two things you can register: + +- A custom `InteractionType` +- A custom `InteractionBehavior` + +--- + +## Creating a Custom InteractionBehavior + +Create a class implementing `InteractionBehavior`. + +Example: + +```java +public class MyTradeBehavior implements InteractionBehavior { + + @Override + public String getKey() { + return "MY_CUSTOM_TRADE"; + } + + @Override + public void execute(InteractionClick click) { + Player player = click.getPlayer(); + Shop shop = click.getShop(); + + player.sendMessage("You triggered my custom interaction!"); + + // Add your custom logic here + } +} +``` + +Then register it: + +```java +InteractionManager manager = api.getInteractionManager(); +manager.behavior(new MyTradeBehavior()); +``` + +Now your behavior is available for use. + +--- + +## Creating a Custom InteractionType + +You may also register custom interaction types if you want to introduce new trigger definitions. + +Example: + +```java +public class MyCustomInteraction implements InteractionType { + + @Override + public String getKey() { + return "STANDING_DOUBLE_CLICK_SIGN"; + } + + @Override + public boolean matches(InteractionClick click) { + // Define custom logic to detect this interaction + return click.isStanding() + && click.isSign() + && click.isDoubleClick(); + } +} +``` + +Register it: + +```java +manager.interaction(new MyCustomInteraction()); +``` + +--- + +# Binding Types to Behaviors + +The InteractionManager internally maps interaction types to behaviors based on configuration and registration order. + +Once your behavior is registered: + +- It can be referenced in `interaction.yml` +- Or attached programmatically + +Example interaction.yml usage: + +```yaml +STANDING_LEFT_CLICK_SIGN: MY_CUSTOM_TRADE +``` + +--- + +# The InteractionClick Object + +When your behavior executes, you receive an `InteractionClick` object. + +It provides: + +- `getPlayer()` +- `getShop()` +- `getLocation()` +- `isSneaking()` +- `isSign()` +- `isShopBlock()` +- etc. + +This gives full context for safe execution. + +--- + +# Advanced: Overriding Built-in Behavior + +If you register a behavior using the same key as an existing one, your behavior can override the default. + +⚠️ Be careful when doing this — you are replacing core functionality. + +--- + +# Best Practices + +### Always Use Unique Keys + +Avoid naming collisions: + +``` +MYPLUGIN_CUSTOM_BEHAVIOR +``` + +### Keep Behavior Lightweight + +Do not block the main thread with: + +- Heavy database calls +- File IO +- Network calls + +Use async tasks if needed. + +### Respect Permissions + +Always validate: + +```java +if (!player.hasPermission("myplugin.use")) { + return; +} +``` + +### Avoid Hard Overrides Unless Necessary + +Instead of replacing built-in behaviors, consider extending them. + +--- + +# Example: Full Minimal Implementation + +```java +public class ExampleAddon { + + public void register(QuickShopAPI api) { + + InteractionManager manager = api.getInteractionManager(); + + manager.behavior(new MyTradeBehavior()); + manager.interaction(new MyCustomInteraction()); + } +} +``` + +--- + +# Conclusion + +The Interaction System is designed to allow: + +- Full extensibility +- Clean separation of triggers and actions +- Easy integration for third-party developers + +By retrieving the `InteractionManager`: + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +You gain full control over how shops respond to player actions. \ No newline at end of file diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/development/08-tax-manager.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/development/08-tax-manager.md new file mode 100644 index 0000000000..72a56f9e88 --- /dev/null +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/development/08-tax-manager.md @@ -0,0 +1,266 @@ +# Tax System (Developer Guide) + +The QuickShop tax system allows server owners and developers to define how transaction taxes are calculated, distributed, and extended. + +As of 6.2.0.11, the tax system has been fully rewritten to provide: + +- A flexible TaxManager +- Pluggable TaxProvider support +- Progressive taxation +- Tax targeting (shop owner, interacting player, or both) +- Custom extension capability for third-party addons + +This guide explains how to work with the tax system programmatically. + +--- + +# Overview + +The tax system is composed of three core components: + +TaxManager +Responsible for coordinating tax calculation and execution. + +TaxProvider +Defines how tax values are calculated. + +TaxRates +Represents calculated tax results for a transaction. + +The system is designed to allow custom providers to be registered and used without modifying core logic. + +--- + +# Getting the TaxManager + +To work with the tax system, retrieve the TaxManager from the ShopManager. + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +Once obtained, you can: + +- Access current tax configuration +- Register custom tax providers +- Calculate tax values +- Hook into tax events + +--- + +# How the Tax System Works + +During a shop transaction: + +1. A base price is determined. +2. The TaxManager selects the active TaxProvider. +3. The TaxProvider calculates applicable tax. +4. A TaxRates object is produced. +5. The system applies the tax to: + + - Shop owner + - Interacting player + - Or both (depending on configuration) + +This architecture allows tax behavior to be modified without altering transaction logic. + +--- + +# TaxProvider + +A TaxProvider defines how tax values are calculated. + +You may create your own provider to implement: + +- Progressive tax brackets +- Flat percentage tax +- Conditional tax rules +- Region-based tax +- Rank-based tax +- Time-based tax + +Example minimal provider: + +```java +public class MyCustomTaxProvider implements TaxProvider { + + @Override + public TaxRates calculateTax(TaxContext context) { + + double basePrice = context.getPrice(); + + double taxAmount = basePrice * 0.05; // 5% flat tax + + return new TaxRates() + .ownerTax(taxAmount) + .buyerTax(0.0); + } +} +``` + +Then register it: + +```java +taxManager.provider(new MyCustomTaxProvider()); +``` + +Once registered, your provider will be used for tax calculations. + +--- + +# TaxRates + +TaxRates represents the result of a tax calculation. + +It typically contains: + +- Owner tax amount +- Buyer tax amount +- Total tax impact +- Metadata (if applicable) + +The transaction system will read from TaxRates and apply deductions accordingly. + +--- + +# Progressive Taxation + +The built-in system supports progressive tax structures. + +This allows server administrators to tax based on: + +- Player balance +- Shop owner balance +- Configured tax brackets + +Example configuration concept: + +- 0–10,000 balance → 1% tax +- 10,000–100,000 → 2% tax +- 100,000+ → 3% tax + +Developers can extend or override this logic inside a custom TaxProvider. + +--- + +# Targeting Tax + +The new tax system allows taxes to be applied to: + +- Shop owner +- Interacting player +- Both + +This is controlled via configuration, but custom providers can override distribution logic by adjusting TaxRates output. + +Example: + +```java +return new TaxRates() + .ownerTax(basePrice * 0.02) + .buyerTax(basePrice * 0.01); +``` + +--- + +# Registering a Custom TaxProvider + +To replace or extend tax logic: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); + +taxManager.provider(new MyCustomTaxProvider()); +``` + +You may register only one primary provider at a time. If multiple providers are needed, implement internal delegation within your custom provider. + +--- + +# Tax Events + +The tax system integrates with the event system. + +The modern event used is: + +ShopEnhancedTaxEvent + +This replaces legacy tax events and provides improved context, including: + +- Transaction builder reference +- TaxRates object +- Modification capability before final execution + +You can listen for the event and modify tax behavior dynamically: + +```java +@EventHandler +public void onTax(ShopEnhancedTaxEvent event) { + + TaxRates rates = event.getTaxRates(); + + // Example: Give VIP players reduced owner tax + if (event.getOwner().hasPermission("vip.tax.discount")) { + rates.ownerTax(rates.getOwnerTax() * 0.5); + } +} +``` + +--- + +# Best Practices + +Always keep tax calculations lightweight. + +Avoid: + +- Heavy database queries inside calculateTax +- Blocking network calls +- Long-running computations + +If complex logic is required, pre-cache required data outside the tax execution path. + +Ensure negative tax values are not returned unless intentional. + +Always validate final amounts before applying modifications. + +Respect configuration hierarchy unless intentionally overriding it. + +--- + +# Example Full Implementation + +```java +public class ExampleTaxAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + TaxManager taxManager = manager.taxManager(); + + taxManager.provider(new MyCustomTaxProvider()); + } +} +``` + +--- + +# Conclusion + +The new tax system is designed for: + +- Flexibility +- Extensibility +- Clean separation of concerns +- Future expansion + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +You gain full control over how QuickShop calculates and applies tax during transactions. \ No newline at end of file diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/development/09-layout-provider.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/development/09-layout-provider.md new file mode 100644 index 0000000000..55e3cd3e91 --- /dev/null +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/development/09-layout-provider.md @@ -0,0 +1,275 @@ +# Shop Layout Provider (Developer Guide) + +The Shop Layout Provider system allows developers to customize how shop signs are structured and rendered. + +As of 6.2.0.11, shop layouts are no longer hardcoded. Instead, they are controlled through the `IShopLayoutProvider` interface, which allows: + +- Custom sign line ordering +- Per-shop-type layouts (BUYING, SELLING, FROZEN, or custom types) +- Dynamic layout resolution +- Complete replacement of the default layout system + +This guide explains how to access, override, and implement a custom layout provider. + +--- + +# Overview + +The layout provider controls how shop sign lines are arranged. + +Instead of hardcoding: + +Line 1 → Header +Line 2 → Trading info +Line 3 → Item +Line 4 → Price + +The system now allows full customization through: + +- Config-based layout definitions +- Custom `IShopLayoutProvider` implementations +- Runtime overrides + +The default implementation is `SimpleShopLayoutProvider`. + +--- + +# Accessing the Layout Provider + +To retrieve the current layout provider: + +```java +ShopManager manager = api.getShopManager(); +IShopLayoutProvider provider = manager.shopLayoutProvider(); +``` + +To replace the layout provider with a custom one: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Once replaced, your implementation will control how shop layouts are generated. + +--- + +# Understanding IShopLayoutProvider + +`IShopLayoutProvider` defines how layout data is retrieved and resolved. + +It is responsible for: + +- Providing layout configuration per shop type +- Determining which layout to use +- Supplying formatted line keys +- Allowing future extensibility + +The default implementation reads layout definitions from configuration and applies them based on shop type. + +--- + +# Default Layout Example + +The default configuration-based layout looks like this: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +Each line maps to a layout component key. + +An empty string (`""`) leaves that line blank. + +The layout provider resolves these keys into actual sign content. + +--- + +# Creating a Custom Layout Provider + +To override the default behavior, implement `IShopLayoutProvider`. + +Example minimal implementation: + +```java +public class MyCustomLayoutProvider implements IShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + + ShopLayout layout = new ShopLayout(); + + layout.setLine(1, "Custom Header"); + layout.setLine(2, "Owner: " + shop.getOwnerName()); + layout.setLine(3, shop.getItem().getType().name()); + layout.setLine(4, "$" + shop.getPrice()); + + return layout; + } +} +``` + +Then register it: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Your layout will now control all shop sign formatting. + +--- + +# Per-Type Layout Control + +Because the system no longer depends on the legacy ShopType enum, layouts can support: + +- Built-in types (BUYING, SELLING, FROZEN) +- Custom shop types +- Addon-defined shop types + +Your provider can determine layout logic dynamically: + +```java +@Override +public ShopLayout provideLayout(Shop shop) { + + if (shop.getShopType().key().equals("FROZEN")) { + return frozenLayout(shop); + } + + return defaultLayout(shop); +} +``` + +This allows conditional formatting, localization adjustments, or special event styling. + +--- + +# Advanced Customization + +A custom layout provider can: + +- Pull data from external plugins +- Inject dynamic placeholders +- Modify layout per player +- Apply formatting logic +- Override color schemes +- Apply region-based formatting +- Implement animated sign systems + +Because the layout provider is resolved at runtime, you can compute layouts dynamically instead of reading static config. + +--- + +# Replacing vs Extending the Default Provider + +You have two options: + +Replace entirely: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Or extend the default implementation: + +```java +public class ExtendedLayoutProvider extends SimpleShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + ShopLayout base = super.provideLayout(shop); + + base.setLine(1, "[Extended] " + base.getLine(1)); + + return base; + } +} +``` + +Extending is safer if you only want to modify small portions. + +--- + +# Best Practices + +Keep layout generation lightweight. + +Avoid: + +- Heavy database queries +- Blocking IO +- Complex network calls + +Layout generation runs during shop updates and sign refresh events. + +Always handle null values safely. + +Ensure layout line count does not exceed sign limits. + +Avoid hardcoding shop type names unless necessary. + +If your layout supports custom shop types, validate their keys properly. + +--- + +# Example Full Registration + +```java +public class LayoutAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + + manager.shopLayoutProvider(new MyCustomLayoutProvider()); + } +} +``` + +--- + +# Conclusion + +The Shop Layout Provider system allows complete control over shop sign structure. + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +``` + +And setting: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +You can redefine how every shop is displayed on the server. + +This system was designed to support: + +- Extensibility +- Custom shop types +- Localization +- Dynamic formatting +- Future expansion \ No newline at end of file diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/faq/compare-reremake.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/faq/compare-reremake.md index aaa1a9e507..6b39f02520 100644 --- a/i18n/no-NO/docusaurus-plugin-content-docs/current/faq/compare-reremake.md +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/faq/compare-reremake.md @@ -64,7 +64,7 @@ If you are a Reremake user, you may be confused about the differences between Hi ## Which one should I use? Well, it depends on what your needs are.\ -If you have an old server (<1.20) instance, Reremake is your only choice.\ +If you have an old server ({'<'}1.20) instance, Reremake is your only choice.\ ~~If you are in China which has GFW interfere, you also should consider Reremake because it doesn't need to load libraries from Global Internet.~~ Solved in 6.0.0.0. If none of these applies, give Hikari a try! diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md index 551f579e7c..172be3a69b 100644 --- a/i18n/no-NO/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md @@ -1,8 +1,8 @@ # Where Addons/Compacts is -Addons and Compatilibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. +Addons and Compatibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. -- Open Modrinth versions page, locate the version your're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) +- Open Modrinth versions page, locate the version you're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) - Frantically slide your mouse wheel down until the lowest end of the page. - You get it! diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/internal/database-schema.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/internal/database-schema.md index fea685e4fc..45e04adb56 100644 --- a/i18n/no-NO/docusaurus-plugin-content-docs/current/internal/database-schema.md +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/internal/database-schema.md @@ -4,17 +4,17 @@ This chapter will explain the implementation details of QuickShop Hikari's datab ## Tables -This section explains the database tables created by QuickShop-Hikari.\ -Unless otherwise specified, the initial `qs_` in table name is the table prefix.\ +This section explains the database tables created by QuickShop-Hikari. +Unless otherwise specified, the initial `qs_` in table name is the table prefix. For the latest code definition for each table, see: [DataTables.java](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/hikari/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/database/DataTables.java) ### `data` -This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information.\ -No matter what, a data record should not be modified after it is created, until it got deleted.\ +This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information. +No matter what, a data record should not be modified after it is created, until it got deleted. Any new changes to the shop should create a new copy, apply the changes to the copy, and insert it as a new record. -Basiclly, Copy-on-write. +Basically, Copy-on-write. A data record only be deleted from the database when no any table references their `data_id`. @@ -29,7 +29,7 @@ A data record only be deleted from the database when no any table references the | unlimited | BIT NOT NULL | 0 | Indicates whether this store is an unlimited store, 0=Limited, 1=Unlimited | | hologram | BIT NOT NULL | 0 | Indicates the suspension status of this store's display item, 0=Follow global settings, 1=Disabled | | tax_account | VARCHAR(36) | NULL | The uuid for tax account, If it is not NULL, tax will be paid to the specified account | -| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serilized to JSON string | +| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serialized to JSON string | | extra | LONGTEXT | Empty Yaml | Used to store experimental settings of QuickShop Hikari or persistent data of other plugins | | inv_wrapper | VARCHAR(255) NOT NULL | N/A | Unique identifier for InventoryWrapper for this shop data entry | | inv_symbol_link | TEXT NOT NULL | N/A | Unique Inventory symbol used to pass to InventoryWrapper, for locating inventory | @@ -38,7 +38,7 @@ A data record only be deleted from the database when no any table references the ### `shops` -This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes.\ +This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes. Multiple `shop_id` can correspond to the same `data_id`. | Column Name | DataType | Default | Description | diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/modules/cmd-alias.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/modules/cmd-alias.md index 53f1577685..e6ed381c0d 100644 --- a/i18n/no-NO/docusaurus-plugin-content-docs/current/modules/cmd-alias.md +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/modules/cmd-alias.md @@ -23,7 +23,7 @@ custom-commands: - cshop ``` -Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect.\ +Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect. The effect should be like this: ![command-alias](./img/command-alias.png) diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/modules/datasource.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/modules/datasource.md index 6fc1bd8931..3fd3a8bdee 100644 --- a/i18n/no-NO/docusaurus-plugin-content-docs/current/modules/datasource.md +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/modules/datasource.md @@ -48,7 +48,7 @@ Execute the `/quickshop export` command in console, quickshop will export a zip ![exported data](img/database-export.png) -Stop your database, switch the datasource, and start the server.\ +Stop your database, switch the datasource, and start the server. You may noticed all shops are gone, because new datasources had no data inside, we will restore them from export. Rename that exported ZIP file to `recovery.zip`, execute `/quickshop recovery` and restart your server, all shops should back. diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/modules/itemmatcher.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/modules/itemmatcher.md index 56be243019..922907be27 100644 --- a/i18n/no-NO/docusaurus-plugin-content-docs/current/modules/itemmatcher.md +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/modules/itemmatcher.md @@ -4,7 +4,7 @@ ItemMatcher is a utility used by QuickShop-Hikari to compare the items, it is th :::caution -If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse.\ +If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse. **TL;DR: Keep default unless you know what you're doing.** ::: @@ -26,10 +26,10 @@ matcher: work-type: 1 ``` -By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility.\ +By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility. But still, you can toggle to QuickShop Item Matcher if you need to customize the comparing or running QuickShop on the server jar which have bug affect the Bukkit comparing system. -## Customize the metadata compareing +## Customize the metadata comparing Customize only works under QuickShop Item Matcher. diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md index fc2af69d2b..d04e8f2783 100644 --- a/i18n/no-NO/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md @@ -4,7 +4,7 @@ ItemStack Loader is a workaround for loading the Bukkit ItemStack. :::caution -Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossble. +Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossible. ::: diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/modules/localization.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/modules/localization.md index e9121e1a36..d47589ab9a 100644 --- a/i18n/no-NO/docusaurus-plugin-content-docs/current/modules/localization.md +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/modules/localization.md @@ -10,7 +10,7 @@ To help translate QuickShop-Hikari, please visit our [Crowdin Homepage](https:// ## Crowdin OTA -QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will overrided when you reload QuickShop-Hikari or restart your server. +QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will override when you reload QuickShop-Hikari or restart your server. Your installation will keep translations up-to-date without any touch. @@ -110,6 +110,16 @@ To disable the CrowdinOTA, please add it in the startup flag: -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager.enableCrowdinOTA=false ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +use-crowdin-ota: false +``` + ### Self-Hosted OTA Server If you self-hosted our translation server by using [CrowdinCopyDeploy](https://github.com/Ghost-chu/CrowdinCopyDeploy) tool, you're able to change the OTA server to yourself server. @@ -118,4 +128,12 @@ If you self-hosted our translation server by using [CrowdinCopyDeploy](https://g -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager= ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml +Use + +```yaml +crowdin-host: +``` \ No newline at end of file diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/modules/shops/benefit.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/modules/shops/benefit.md index 4d7a9c8f42..c59d92e6d1 100644 --- a/i18n/no-NO/docusaurus-plugin-content-docs/current/modules/shops/benefit.md +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/modules/shops/benefit.md @@ -37,3 +37,13 @@ By default, for security, QuickShop-Hikari disallow add offline players into sho ```bash -Dcom.ghostchu.quickshop.command.subcommand.SubCommand_Benefit.allowOffline=true ``` + +### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +shop.allow-offline-benefit: true +``` \ No newline at end of file diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/modules/shops/control-panel b/i18n/no-NO/docusaurus-plugin-content-docs/current/modules/shops/control-panel new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/modules/shops/control-panel @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/modules/shops/history.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/modules/shops/history.md index fa891adeab..195b64a042 100644 --- a/i18n/no-NO/docusaurus-plugin-content-docs/current/modules/shops/history.md +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/modules/shops/history.md @@ -24,7 +24,7 @@ The History GUI displays the details of each recorded transaction and other usef ### Transaction details -When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed.\ +When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed. If you are checking the history of more than one store, the player head will be replaced with an item from the corresponding store. ![history-gui](./img/history-gui.png) diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md new file mode 100644 index 0000000000..c5ed3b3fe4 --- /dev/null +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md @@ -0,0 +1,90 @@ +# Shop Types + +QuickShop supports multiple shop types, allowing shops to behave differently depending on their mode. + +The built-in shop types are: + +- Selling +- Buying +- Frozen + +Each type changes how the shop interacts with players. + +--- + +## Selling Shop + +A Selling shop allows players to: + +- Buy items from the shop owner +- Pay money to receive items + +This is the most common shop type. + +--- + +## Buying Shop + +A Buying shop allows players to: + +- Sell items to the shop owner +- Receive money in exchange + +This is commonly used for: + +- Resource collection +- Server buy-back shops +- Automated material sinks + +--- + +## Frozen Shop + +A Frozen shop temporarily disables trading. + +While frozen: + +- No buying is allowed +- No selling is allowed +- The shop remains intact +- Staff or admins can manage it + +This is useful for: + +- Temporary suspensions +- Investigation +- Event locking +- Maintenance + +--- + +## Switching Shop Types + +Shop types can be changed through: + +- Control panel +- GUI control panel +- Admin commands + +Frozen mode is also available via: + +/qs freeze + +--- + +## Custom Shop Types + +As of 6.2.x, the system supports extensible shop types internally. + +While server owners use the built-in types, the system now allows future expansion through addons. + +--- + +## Summary + +Shop types allow you to: + +- Control how money flows +- Enable buy-back mechanics +- Temporarily disable shops +- Build advanced economic systems \ No newline at end of file diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md new file mode 100644 index 0000000000..18e0a47407 --- /dev/null +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md @@ -0,0 +1,217 @@ +# Sign Layout + +QuickShop allows you to fully customize how shop signs are structured. + +You can change: + +- What appears on each line +- The order of information +- Layout per shop type +- Whether certain lines are blank + +This gives you complete control over how shops look on your server. + +--- + +## How Sign Layout Works + +Shop signs have four lines. + +Instead of being hardcoded, QuickShop uses a configurable layout system. + +Each shop type can have its own layout: + +- SELLING +- BUYING +- FROZEN + +You define what each line displays using layout keys. + +--- + +## Configuration Location + +Sign layout is configured in `config.yml` under: + +```yaml +layout: +``` + +Example default configuration: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## Available Layout Keys + +Each line value refers to a built-in layout component. + +Common layout keys include: + +- `header` – The shop header line +- `trading` – Buy/Sell direction information +- `item` – Item name +- `price` – Shop price + +These keys are automatically formatted using your language file and formatting settings. + +--- + +## Leaving a Line Blank + +To leave a line empty, use: + +```yaml +line2: "" +``` + +This is useful if you want: + +- Minimalist signs +- Cleaner layouts +- Custom spacing +- Decorative formatting + +--- + +## Customizing Per Shop Type + +Each shop type can have a different layout. + +For example: + +```yaml +layout: + + SELLING: + line1: "header" + line2: "item" + line3: "price" + line4: "" + + BUYING: + line1: "header" + line2: "price" + line3: "item" + line4: "" + + FROZEN: + line1: "header" + line2: "" + line3: "item" + line4: "Frozen" +``` + +This allows you to visually differentiate: + +- Selling shops +- Buying shops +- Frozen shops + +--- + +## Practical Examples + +### Minimal Style + +```yaml +layout: + SELLING: + line1: "item" + line2: "price" + line3: "" + line4: "" +``` + +### Compact Economy Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "price" + line3: "item" + line4: "" +``` + +### Large Clear Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## How Updates Affect Layout + +When you change the layout: + +- Existing shop signs will update automatically when refreshed. +- New shops will use the updated format immediately. + +If needed, you can reload QuickShop to apply changes. + +--- + +## Best Practices + +- Keep important information visible (price and item). +- Avoid overly complex formatting. +- Test layout changes before deploying on large servers. +- Use different layouts for BUYING and SELLING to reduce confusion. + +--- + +## Common Questions + +### Can I add more than four lines? + +No. +Minecraft signs are limited to four lines. + +### Can I add colors? + +Colors are controlled by your language file and formatting settings. + +### Can I change layout without restarting? + +Yes, but reloading or refreshing shops is recommended to ensure full update. + +--- + +## Summary + +The Sign Layout system allows you to: + +- Fully customize shop sign appearance +- Create per-type layouts +- Simplify or expand shop information +- Improve clarity for players + +All layout customization is handled inside `config.yml`. diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md new file mode 100644 index 0000000000..980bad10f2 --- /dev/null +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md @@ -0,0 +1,130 @@ +# Shop Sign Waxing + +QuickShop can automatically wax shop signs to prevent players from editing them manually. + +Waxing protects the integrity of your shop signs and helps prevent tampering, spoofing, and accidental modification. + +As of modern Minecraft versions, waxed signs cannot be edited unless they are unwaxed first. + +--- + +## What Is Sign Waxing? + +In Minecraft, waxing a sign locks it so that: + +- Players cannot edit the text +- Players cannot modify lines +- Accidental changes are prevented +- Malicious edits are blocked + +When enabled in QuickShop, shop signs are automatically waxed when created. + +--- + +## Why Use It? + +Sign waxing protects against: + +- Players editing price lines +- Changing item names on signs +- Spoofing shop information +- Accidental formatting issues +- Sign hijacking attempts + +On public servers, this feature is strongly recommended. + +--- + +## How It Works + +When a shop is created: + +1. QuickShop generates the shop sign. +2. The sign text is written. +3. The sign is automatically waxed (if enabled). + +If a shop is updated: + +- The sign will be safely updated by QuickShop. +- The wax state is maintained. + +Players cannot manually edit shop signs while waxing is enabled. + +--- + +## Configuration + +To enable or disable sign waxing, edit `config.yml`: + +```yaml +shop: + sign-wax: true +``` + +### true + +- Shop signs are automatically waxed. +- Players cannot edit the sign manually. + +### false + +- Shop signs behave like normal Minecraft signs. +- Players may edit them if permitted by the game. + +--- + +## Recommended Setting + +For most servers: + +```yaml +shop: + sign-wax: true +``` + +This ensures shop data stays accurate and secure. + +--- + +## Common Questions + +### Can admins still modify shop signs? + +QuickShop controls shop sign formatting. +Manual edits are not recommended. + +Admins should use: + +- Control panel +- Shop commands +- Direct configuration changes + +### Does waxing affect shop functionality? + +No. +Waxing only prevents manual text edits. +The shop continues to function normally. + +### Can players un-wax shop signs? + +No. +QuickShop manages the sign state automatically. + +--- + +## Best Practices + +- Keep sign-wax enabled on survival servers. +- Combine sign-wax with proper permissions. +- Avoid manually editing shop signs through other plugins. + +--- + +## Summary + +Sign Waxing: + +- Prevents tampering +- Requires no additional setup + +Enable it once and QuickShop handles the rest. \ No newline at end of file diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/modules/shops/taxes.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/modules/shops/taxes.md new file mode 100644 index 0000000000..1a273fd978 --- /dev/null +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/modules/shops/taxes.md @@ -0,0 +1,92 @@ +# Taxation System + +QuickShop includes a taxation system designed to give server owners more flexibility and control over shop-based income. + +This system was revamped as of 6.2.0.11+ + +The new system allows you to: + +- Apply tax to shop owners +- Apply tax to buyers +- Apply tax to both +- Use progressive tax brackets +- Customize tax behavior in configuration + +This system replaces the legacy tax configuration. + +--- + +## How It Works + +During a transaction: + +1. The shop price is calculated. +2. Tax is calculated based on your configuration. +3. Tax is deducted from the configured target(s). +4. Remaining funds are distributed normally. + +You can configure: + +- Flat percentage tax +- Progressive tax based on player balance +- Tax accounts +- Distribution rules + +--- + +## Progressive Tax + +The new system allows you to tax based on balance brackets. + +Example concept: + +- 0 – 10,000 balance → 1% tax +- 10,000 – 100,000 → 2% tax +- 100,000+ → 3% tax + +This helps prevent extremely wealthy players from dominating the economy. + +--- + +## Who Pays the Tax? + +You can configure whether tax applies to: + +- The shop owner +- The buyer +- Both + +This gives you flexibility depending on your economy design. + +--- + +## Configuration + +All tax-related settings are located under the `shop-tax` section in `config.yml`. + +After updating to 6.2.0.11+, review your tax configuration carefully, as the old tax system has been replaced. + +--- + +## Why Use Tax? + +The taxation system can help: + +- Remove currency from circulation +- Fund server banks or towns +- Create sink mechanics +- Balance inflation +- Reward active players + +--- + +## Summary + +The new taxation system is: + +- Flexible +- Configurable +- Balance-aware +- Designed for modern economy servers + +Make sure to review your configuration after upgrading. \ No newline at end of file diff --git a/i18n/no-NO/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md b/i18n/no-NO/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md new file mode 100644 index 0000000000..247c24712d --- /dev/null +++ b/i18n/no-NO/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md @@ -0,0 +1,161 @@ +# WorldEdit & FAWE Support + +QuickShop includes built-in protection and integration for WorldEdit and FastAsyncWorldEdit (FAWE). + +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. + +You do not need to download or install any additional compatibility plugins. + +--- + +## What This Does + +WorldEdit and FAWE allow administrators and builders to: + +- Copy and paste regions +- Replace large areas of blocks +- Mass-delete regions +- Roll back areas +- Regenerate terrain + +Without protection, these operations could: + +- Create ghost shops +- Leave orphaned shop data in the database +- Duplicate shops unintentionally +- Delete containers without cleaning up shop data +- Cause inconsistencies between world and database + +QuickShop now automatically detects and safely processes WorldEdit and FAWE operations. + +--- + +## Built-In Behavior + +When WorldEdit or FAWE modifies blocks: + +- Shops removed via WorldEdit are properly deleted from the database. +- Shop data stays synchronized with world changes. +- Ghost shops are prevented. +- Mass block replacements will not leave broken shop entries behind. + +This applies to: + +- //set +- //replace +- //cut +- //paste +- //regen +- Region deletion +- Mass container removal + +No configuration is required. + +--- + +## FAWE Support + +FastAsyncWorldEdit (FAWE) is fully supported. + +Because FAWE processes edits asynchronously, QuickShop handles: + +- Region-thread safe processing +- Async block updates +- Safe shop deletion during batch edits + +You do not need to enable anything manually. + +--- + +## Removing Shops with WorldEdit + +If you delete containers (chests, barrels, etc.) using WorldEdit: + +QuickShop will automatically: + +- Detect the block removal +- Unregister the shop +- Clean the database entry +- Prevent ghost shops + +You do not need to run `/qs cleanghost` after WorldEdit usage in normal circumstances. + +--- + +## Copying and Pasting Shops + +If you copy and paste regions that contain shops: + +- Shop data will not duplicate incorrectly. +- Shop IDs remain consistent. +- Invalid pasted shops will not auto-register unless properly created. + +This prevents accidental duplication exploits. + +--- + +## Performance + +WorldEdit and FAWE operations can modify thousands of blocks at once. + +QuickShop processes these safely and efficiently: + +- Batch-aware cleanup +- Thread-safe region access (especially on Folia) +- Minimal performance impact during mass edits + +--- + +## Configuration + +There are no specific WorldEdit configuration options in QuickShop. + +Support is automatic and always enabled if WorldEdit or FAWE is detected. + +If WorldEdit is not installed, no extra code is executed. + +--- + +## Common Questions + +### Do I need the old WorldEdit compatibility jar? + +No. + +As of 6.2.0.11, WorldEdit support is built-in and the separate compatibility module has been removed. + +### Does this work with FAWE? + +Yes. FAWE is fully supported. + +### Will shops break if I use //set air? + +No. Shops will be safely removed and cleaned up. + +### Do I need to restart after installing WorldEdit? + +No. QuickShop detects WorldEdit automatically on startup. + +--- + +## Best Practices + +Even though QuickShop safely handles WorldEdit operations, it is recommended to: + +- Avoid copying shops intentionally unless required +- Use backups before large region edits +- Test large FAWE operations on staging servers when possible + +--- + +## Summary + +QuickShop’s built-in WorldEdit and FAWE integration ensures: + +- Safe mass edits +- No ghost shops +- Automatic database cleanup +- Thread-safe processing +- No extra modules required + +WorldEdit support is now a core feature of QuickShop. \ No newline at end of file diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/addon/limited.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/addon/limited.md index 70af27e240..fae55a8c95 100644 --- a/i18n/pl-PL/docusaurus-plugin-content-docs/current/addon/limited.md +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/addon/limited.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -41,8 +35,8 @@ Limit players to purchase up to 16 items per month. /quickshop limit period MONTH ``` -The system is based on the QuickShop-Hikari calendar system.\ -The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year.\ +The system is based on the QuickShop-Hikari calendar system. +The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year. Same for days, months and hours. Available time units: diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/addon/list.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/addon/list.md index 93d182f083..f20b91fd7b 100644 --- a/i18n/pl-PL/docusaurus-plugin-content-docs/current/addon/list.md +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/addon/list.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/addon/plan.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/addon/plan.md index 52a6e79cb4..c10ef4df42 100644 --- a/i18n/pl-PL/docusaurus-plugin-content-docs/current/addon/plan.md +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/addon/plan.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -18,7 +18,7 @@ Recorded data can be displayed from Hikari v2.0.0.0 onwards, but only after vers - All shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 1000 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `5` in server scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `5` in server scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Player Scope @@ -27,7 +27,7 @@ And still is Plan limitations, the list sorting is disturbed, so the display ord - All owned shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 50 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `4` in player scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `4` in player scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Showcase diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/addon/reforges.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/addon/reforges.md index 2a14509eb7..25fff1752a 100644 --- a/i18n/pl-PL/docusaurus-plugin-content-docs/current/addon/reforges.md +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/addon/reforges.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.0.0.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md index 304d39bc05..6f9f51d250 100644 --- a/i18n/pl-PL/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.1.1.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -44,7 +38,7 @@ _This is not necessary if you are using an H2 database._ ### Prepare for convert -To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console.\ +To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console. If a player is in the server, the conversion cannot be started. Once the conversion has begun, the server will be locked during the conversion process and no players will be able to join the server during the conversion. diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/addon/shopitemonly.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/addon/shopitemonly.md index c45062f8c2..1ccfe977b3 100644 --- a/i18n/pl-PL/docusaurus-plugin-content-docs/current/addon/shopitemonly.md +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/addon/shopitemonly.md @@ -2,17 +2,11 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT - -::: - -This addon prevents players from putting non-store items into store containers.\ +This addon prevents players from putting non-store items into store containers. Does not apply to stores that use the item inventory redirection API (aka. InventoryWrapper API). This Addon will check for container (or transferring) items on events such as the player closing the container or hopper access. diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md new file mode 100644 index 0000000000..9c8b4f7407 --- /dev/null +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md @@ -0,0 +1,55 @@ +# 6.2.0.10 + +## Major Changes + +- Added support for 1.21.6 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.7 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.8 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Some internal updates for packetevents(2.9.0 is now required.) +- Updated Lands support + +## Addon Changes + +- Added MatcherPlus Addon + - Allows support for BreweryX and AdvancedItems stacks in shops with improved matching abilities +- Added FabledSkyblock Compat +- Added Dominion Compat +- Added HuskTowns Compat +- Added IridiumSkyblock Compat +- Added member-create for member creation in ARM compat +- Added admin-override and quickshop.arm.admin permission for admin overrides in ARM + +## Minor Changes + +- Added configurations for the coordinates of the display item. +- Added /qs toggledisplayall on/off server/owned + - Players need to have permission node quickshop.toggledisplayall.admin to toggle all on the server. +- Added ability to use abbreviations in /qs price and /qs create commands such as 2.5k for 2500 +- Added ability to set default display status using shop.default-display in config.yml + +## Fixes + +- Fixed issue with display item being sent to the moon on 1.21.5 +- Fixed issue where TRADE_UI interactions interfered with quick create. +- Fixed issue with displays on protocollib falling through the chest +- Fixed issue with signs on .9 and previous .10 snapshots on early versions +- Implemented some performance improvements for paper servers +- Fixed all outstanding issues with Folia usage.(thanks to RootB33R/SleazLee for contributions) + +## Possible 6.2.0.11 Features + +Here's an outline for some features that may arrive in 6.2.0.11: + +- Additional compats/addons that have been piling up. + - see: https://github.com/QuickShop-Community/QuickShop-Hikari/issues/1756 +- gradle?(interested to see compilation time uplifts) +- Update documentation +- Update configuration comments +- Update configuration system? + - auto updating? + - Allows removal of the update code +- Remove waste spigot modules? + - Any versions of 1.20 that can be discarded due to low use? +- Bug fixing, of course +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... \ No newline at end of file diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md new file mode 100644 index 0000000000..b41c88662a --- /dev/null +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md @@ -0,0 +1,173 @@ +## Outline + +- Update documentation +- Update configuration comments +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... + +# 6.2.0.11 + +## Major Changes + +- Removed Spigot Platform Modules, and stopped loading QS if Spigot is detected. This will mean that unless the protocol changes that we use for display items, QS won't need updated for each version. +- Revamped Economy Code Completely + - New classes for all economy-related systems + - Any economy-related or benefits-related events are incompatible with previous versions. +- Added sign layout customizations per-type allowing you to change how lines are configured, an empty string('') will leave an empty line for that line of the sign. + +``` + #The layout of signs for shops. + layout: + + #The layout of BUYING shops. + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of FROZEN shops. + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of SELLING shops. + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +- Add wildcard support for item blacklist patterns(thanks to bennycallanan) + - Added support for wildcard patterns in the item blacklist configuration, allowing users to block entire categories of items with simple patterns. + + - Features + - Wildcard patterns like \*_AXE and \*_SPAWN_EGG now work in blacklist configuration + - Supports \* for any characters and ? for single character matching + - Case-insensitive pattern matching +- Overhauled GUI system(thanks to Yusakidev) + - Implemented gui.yml configuration file for customizing the GUI. + - Implemented better filtering for qs browse + - Implement GUI system to be more stable, and less error prone. + - Added gui.yml for fully configurable GUI layouts and text + - Browse menu: search, sort (price/name/stock), and filter (all/buying/selling/in-stock) + - Staff menu: search functionality for player/staff selection + - Grouped item pages for better shop browsing + - Refactored all menu pages to use configurable display/lore +- Added worldedit compat to QS internally as it's widely used. +- Revamped the taxation system to be more flexible and easier to configure. + - introduced a new progressive tax system that allows you to tax based on the balance of players.(suggested by YuanYuanOwO) + - introduced the ability to tax the player interacting with the shop, the owner, or both + - all tax-related configurations have been moved under the shop-tax section of the config. this may require reconfiguration of your tax settings. + - added a new ShopEnhancedTaxEvent, deprecated the old ShopTaxEvent. + - Added a new TaxManager, and TaxProvider interfaces, this allows for custom tax providers to be added by addons/third-party developers. + +## Addons/Compats Changes + +- Added UltimateClaims compat +- Added SimpleClaimSystem compat +- Added Quests by Pika addon +- Added BetonQuest addon +- Added Pl3xMap addon +- MatcherPlus Compat Improvements + - Added support for CrazyCrates + - Added support for ExcellentCrates + - Added support for SilkSpawners. +- WorldGuard Compat Improvements(Thanks to golovin12) + - Added clear permission handling: + - Region owners and members automatically have permission to create and trade in their own regions. + - Other players must have the appropriate WorldGuard flags enabled (quickshophikari-create, quickshophikari-trade) to interact with shops. + - If a shop is located outside any region, default QuickShop behavior applies (no extra restrictions) +- Added colored markers based on shop state for bluemap(thanks to YusakiDev) +- Updated dynmap/towny addons to use the new ShopTypeEnhancedEvent instead of ShopTypeEvent. +- Removed worldedit compat, it's now included in the main plugin. +- Added support for global flags to the worldguard compat. + +## Internals/Developer APIs + +- Removed several deprecated methods and classes. +- Revamped the interaction manager. It is now more flexible and allows external additions + - This involves two classes InteractionBehavior and InteractionType. + - InteractionType details the type of interaction such as: STANDING_LEFT_CLICK_SIGN, STANDING_LEFT_CLICK_SHOP + - InteractionBehavior outlines a behavior for an InteractionType such as CONTROL_PANEL and TRADE_UI +- Added UserLimitCalculationEvent, which allows for custom limits to be applied to users. + - This is useful for limiting the number of shops a user can have, or adding on to the existing limits provided by the ranks system without needing to implement a new RankLimiter. +- Added a new ShopLayoutProvider interface, and default implementation. + - This allows for custom layouts to be used for shops, allowing for more customization. + - This also allows for developers to override the default layout provider and create their own implementation. +- How to make your own? + - Implement the classes you would like to then register with the InteractionManager: + - ```java + InteractionManager manager = QuickShop.getInstance().getInteractionManager(); + + manager.interaction(new MyTradeInteraction()); + manager.behavior(new MyTradeBehavior()); + ``` +- Replaced some Apache Commons calls that could be easily replaced with built-in java methods, reduces some calls by ~ 1100ms/method call +- Deprecated the ShopType enum, and the ShopTypeEvent. These are replaced with the new IShopType interface and implementing classes. + - The new event is ShopTypeEnhancedEvent. + - This allows for third-party addons to add their own shop types, and simplifies code checks for translations. +- Updated config system to use Boosted-yaml + - this allows for auto-updating of config files without complex update scripts + - this also allows for the config system to not be minecraft-dependent. +- Replaced logical PaperLib calls with native PaperAPI calls. + +## Minor Changes + +- Bump Java version up to 21 +- Added shop.display-allow-enchants to enable/disable enchantments for display items on shops. +- Added workaround for packetevents not supporting custom enchants on itemstacks for virtual display items. +- Using locale translations for shop-type in mode toggle icon(thanks to ExyiN) +- Bumped Residence version for the compat(thanks to YuanYuanOwO) +- add world whitelist support(thanks to wling-art) +- added /qs database save command, which saves all currently dirty-marked shops to the database. +- Split up interactions _SHOPBLOCK into _SHOPBLOCK and _CONTAINER. + - _SHOPBLOCK relates to shops, where _CONTAINER relates to shop-valid containers that are not currently shops. +- Added inventory as an option for command panel, this is useful for adding a secondary option for players to open a shop's inventory. +- Moved crowdin arguments from system properties to config.yml + - crowdin-host + - use-crowdin-ota + +## Fixes + +- Fixes issue with item price restrictions(thanks to maxcom1) +- Fixes issue with 1.20.x protocol lib displays(thanks to YuanYuanOwO) +- Fixes issue when no item is in hand for itemdebug(thanks to YuanYuanOwO) +- Fixes issue with dominion addon(thanks to YuanYuanOwO) +- Add a simple check to avoid this. If it is not own shop, reject limit request directly.(Thanks to YuanYuanOwO) +- Fix NPE by not setting tax for price in TransactionBuilder(thanks to maxcom1) +- Fixes /quickshop suggestprice to differentiate between buy/sell shops. (Thanks to MidSpike) +- PacketEvents ClassNotFoundException with ProtocolLib(thanks to wling-art) +- Reallocate block state access to region thread for shop creation(thanks to r00tbeerman) +- resolve SLF4J StaticLoggerBinder loading error(thanks to wling-art) +- sign hijacking issue by validating sign facing direction(thanks to wling-art) +- Performance improvements for QuickShop disabling to prevent potential freezes. +- Fixed issue with 1.20.4 packetevents virtual displays not staying put. +- Fixes critical issue in GriefPrevention compatibility plugin. +- Fixes issue with shop owner not getting money when benefits active. +- Fixes for lands addon on folia, Use regionThread for Folia compatibility(thanks to YusakiDev) +- Fixes for TRADE_DIRECT on stacking shops +- Fixes issue for protocollib 5.4.0 with undocumented packet changes. +- Fixes issue where item stacks could be used on creation above the max stack size. +- Fixes issue with BukkitAudiences-related crashes on 1.21.11. +- Fix issue with shop deletion when getting too impatient. +- Fix the permission check issue when a shop owned by a non-owner is transferred to someone else. (thanks to YuanYuanOwO) +- Fix ui with supertool (thanks to YuanYuanOwO) +- Fix issue with logs generating outside debug mode. +- Fix issue with /qs find. +- Fix configuration loading timing. +- Fix configuration loading/creation warning message language. +- Fix command description language key mismatch(thanks to wling-art) +- Fix qs clean command on folia(thanks to wling-art) +- Fix per-player-shop-sign on folia(thanks to wling-art) +- Fix potential recursive deadlock in virtual display packet sending(thanks to wling-art) +- Fix configuration loading/creation warning message language. +- Fix issue with /qs browse and ShopItemOnly addon not behaving properly together on folia. +- Fix issue with PLAN using outdated APIs. +- Fix issue with /qs clean on folia.(thanks to wling-art) +- Fix issue with /qs cleanghost on folia(thanks to wling-art) +- More thread safety fixes for shops on folia.(thanks to wling-art) +- Fix owner payment calculations with benefits(thanks to wling-art) \ No newline at end of file diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md index 8172f9b410..dcc3edc67d 100644 --- a/i18n/pl-PL/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md @@ -20,20 +20,20 @@ the ControlComponent object with a custom one that will replace the original dur ### Introduction of the Revamped Packet System 1. **About**: - - A modular and scalable system for managing packets related to virtual display items in Minecraft. - - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. + - A modular and scalable system for managing packets related to virtual display items in Minecraft. + - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. 2. **Custom Packet Factories**: - - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. - - Packet types: - - **Spawn Packet**: Spawns a virtual item entity at a specific location. - - **Metadata Packet**: Updates the visual properties of virtual items. - - **Velocity Packet**: Adds motion/velocity to entities (currently optional). - - **Destroy Packet**: Removes the entity from the client view. + - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. + - Packet types: + - **Spawn Packet**: Spawns a virtual item entity at a specific location. + - **Metadata Packet**: Updates the visual properties of virtual items. + - **Velocity Packet**: Adds motion/velocity to entities (currently optional). + - **Destroy Packet**: Removes the entity from the client view. 3. **Error Handling and Logging**: - - Enhanced debug logs to trace packet-related issues. - - Detailed error messages for missing factories or unregistered listeners. + - Enhanced debug logs to trace packet-related issues. + - Detailed error messages for missing factories or unregistered listeners. #### Improvements: diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md index 7775308722..c6e0948d19 100644 --- a/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md index f420997a9c..38587e3784 100644 --- a/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md index 5ed8182c9a..259c55f342 100644 --- a/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md index 924a37ac49..7fd4596a6a 100644 --- a/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,6 +10,6 @@ This is a BungeeCord plugin, you need install it within your BungeeCord's plugin ## How does it work? -BungeeCord Bridge plugins will register a `quickshop:bungee` channel for fowarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. +BungeeCord Bridge plugins will register a `quickshop:bungee` channel for forwarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. All forwarding is indicated by QuickShop-Hikari on the Spigot server and ends when it is not needed. diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md index 27d68956a8..20fbaf7a0c 100644 --- a/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,5 +10,5 @@ This compatibility module added [Chest Protect](https://www.spigotmc.org/resourc ## How does it work? -This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident.\ +This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident. It also prevents players from creating shops on ChestProtect protected containers. diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md index 220e26d8bb..e1757e7be9 100644 --- a/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/dominion.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/dominion.md new file mode 100644 index 0000000000..e1195278a8 --- /dev/null +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/dominion.md @@ -0,0 +1,138 @@ +# Dominion + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and Dominion. + +It ensures that shop creation and trading respect Dominion’s land and territory protection system. + +--- + +## What Does It Do? + +Dominion allows players or groups to claim land and define territory-based permissions. + +Without compatibility: + +- Players could create shops inside territories they do not control. +- Visitors might trade inside protected dominions. +- Dominion permission rules might not apply to shop interactions. + +The Dominion compat module ensures that: + +- Shop creation respects territory ownership. +- Shop trading follows Dominion permission settings. +- Protected land remains secure from unauthorized shop usage. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a Dominion-controlled area. +- Whether the player has permission within that territory. +- Whether Dominion rules allow shop interaction. + +If the action is not permitted by Dominion settings, QuickShop blocks it. + +If the location is outside any Dominion territory, default QuickShop behavior applies. + +--- + +## Territory Owner Control + +With this module enabled: + +- Territory owners can create and manage shops inside their dominion. +- Trusted members follow territory-based permissions. +- Outsiders are restricted unless explicitly allowed. +- Shop actions respect Dominion’s land rules automatically. + +This prevents unauthorized shop placement inside protected territories. + +--- + +## Installation + +1. Install Dominion. +2. Install the QuickShop Dominion compat module. +3. Restart your server. + +The module activates automatically if Dominion is detected. + +No manual configuration linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside dominions +whitelist-mode: false + +# Allow territory owners to override shop permissions +allow-owner-override: true +``` + +If Dominion is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For servers using Dominion: + +- Restrict shop creation to territory owners or trusted members. +- Prevent shop creation in wilderness if desired. +- Allow dominion owners to manage shop permissions. +- Review Dominion permission settings to align with shop behavior. + +This ensures protected territories remain secure and organized. + +--- + +## Common Questions + +### Can players create shops in someone else's dominion? + +Only if Dominion permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You may allow or restrict shops outside dominions. + +### What happens if Dominion is removed? + +QuickShop returns to normal behavior and stops checking Dominion territories. + +--- + +## Summary + +The Dominion compat module: + +- Enforces territory-based permissions +- Prevents unauthorized shop creation +- Protects claimed land from misuse +- Integrates seamlessly with Dominion + +It is recommended for servers running Dominion. \ No newline at end of file diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md index 743d3ae666..2ac9b10488 100644 --- a/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md new file mode 100644 index 0000000000..07ba4ada66 --- /dev/null +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md @@ -0,0 +1,133 @@ +# FabledSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and FabledSkyblock. + +It ensures that shop creation and trading properly respect island boundaries and island permissions. + +--- + +## What Does It Do? + +On Skyblock servers, players build and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Players might trade in areas they should not. +- Island protection rules might not apply to shops. + +The FabledSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members behave correctly with shops. +- Island visitors are restricted appropriately. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a FabledSkyblock island. +- Whether the player has permission on that island. +- Whether island settings allow the action. + +If the action is not permitted by island rules, QuickShop will deny it. + +--- + +## Island Ownership Rules + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow island permission settings. +- Visitors can only trade if island permissions allow it. +- Outside of islands, default QuickShop behavior applies. + +--- + +## Installation + +1. Install FabledSkyblock. +2. Install the QuickShop FabledSkyblock compat module. +3. Restart your server. + +The module activates automatically if FabledSkyblock is detected. + +No manual linking is required. + +--- + +## Configuration + +If the module provides configuration options, they will appear in its `config.yml`. + +Typical options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If FabledSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most Skyblock servers: + +- Allow shop creation only inside islands. +- Prevent trading in the void or wilderness. +- Let island owners control shop permissions. +- Use island rank systems to manage shop access. + +This helps maintain economic balance between islands. + +--- + +## Common Questions + +### Can players create shops in the void? + +Only if your configuration allows it. +Most servers disable shop creation outside islands. + +### Does this affect island war or PvP modes? + +No. +The module only checks island ownership and permissions for shop interactions. + +### What happens if FabledSkyblock is removed? + +QuickShop returns to normal behavior. + +--- + +## Summary + +The FabledSkyblock compat module: + +- Protects island economies +- Enforces island permission rules +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is strongly recommended for any server running FabledSkyblock. \ No newline at end of file diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md index 81b13d2c6b..32614d3019 100644 --- a/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md @@ -2,17 +2,17 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -GreifPrevention compatibility module added compaitibility with GF. +GreifPrevention compatibility module added compatibility with GF. ## How does it work This module allow QuickShop-Hikari check if player have permission to create or use QuickShop in specific region. -And delete shops when claim removed, untrusted, unclimed, expired, resized or subclaim created. +And delete shops when claim removed, untrusted, unclaimed, expired, resized or subclaim created. ## Configuration diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md new file mode 100644 index 0000000000..e71b34d462 --- /dev/null +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md @@ -0,0 +1,139 @@ +# HuskTowns + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and HuskTowns. + +It ensures that shop creation and trading respect town and claim permissions defined by HuskTowns. + +--- + +## What Does It Do? + +HuskTowns allows players to create towns and claim land. + +Without compatibility: + +- Players could create shops inside towns they do not belong to. +- Visitors might trade inside protected towns. +- Town permission rules might not apply to shop interactions. + +The HuskTowns compat module ensures that: + +- Shop creation respects town ownership. +- Trading follows town permission settings. +- Town members and visitors are handled correctly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a HuskTowns claim. +- Whether the player is a town member, trusted player, or outsider. +- Whether the town's permission settings allow the action. + +If the action is not permitted by town rules, QuickShop blocks it. + +Outside of town claims, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Town Owner Control + +With this module enabled: + +- Town owners can create and manage shops inside their town. +- Town members follow town-based permission settings. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect town claim protection. + +This prevents unauthorized shop placement and trading inside protected towns. + +--- + +## Installation + +1. Install HuskTowns. +2. Install the QuickShop HuskTowns compat module. +3. Restart your server. + +The module activates automatically if HuskTowns is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside towns +whitelist-mode: false + +# Allow town owners to override shop permissions +allow-owner-override: true +``` + +If HuskTowns is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For town-based survival servers: + +- Restrict shop creation to town members. +- Allow trading only where town permissions permit. +- Prevent shop creation in wilderness if desired. +- Enable owner override for better administrative control. + +This helps maintain town-based economic balance. + +--- + +## Common Questions + +### Can players create shops in another town? + +Only if that town's permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You can allow or restrict shops outside towns. + +### What happens if HuskTowns is removed? + +QuickShop returns to normal behavior and stops checking town permissions. + +--- + +## Summary + +The HuskTowns compat module: + +- Enforces town-based land permissions +- Protects towns from unauthorized shop usage +- Integrates smoothly with HuskTowns +- Requires minimal setup + +It is recommended for any server running HuskTowns. \ No newline at end of file diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md new file mode 100644 index 0000000000..3fa2995eb0 --- /dev/null +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md @@ -0,0 +1,139 @@ +# IridiumSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and IridiumSkyblock. + +It ensures that shop creation and trading respect island boundaries and island permission settings defined by IridiumSkyblock. + +--- + +## What Does It Do? + +IridiumSkyblock allows players to create and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Visitors might trade inside protected islands. +- Island protection rules might not apply correctly to shops. + +The IridiumSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members and visitors are handled properly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside an IridiumSkyblock island. +- Whether the player is the island owner, member, or visitor. +- Whether island permissions allow shop interaction. + +If the action is not permitted, QuickShop blocks it. + +Outside of islands, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Island Owner Permissions + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow the island's permission configuration. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect island protection rules. + +This prevents unauthorized shop usage inside protected islands. + +--- + +## Installation + +1. Install IridiumSkyblock. +2. Install the QuickShop IridiumSkyblock compat module. +3. Restart your server. + +The module activates automatically if IridiumSkyblock is detected. + +No additional setup is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If IridiumSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most IridiumSkyblock servers: + +- Restrict shop creation to island owners. +- Allow island members to trade if trusted. +- Prevent shop creation in the void or wilderness. +- Enable owner override for better management. + +This helps maintain balanced island economies. + +--- + +## Common Questions + +### Can players create shops outside their island? + +Only if your configuration allows it. + +Most Skyblock servers restrict shops to island areas. + +### Do island ranks affect shop permissions? + +Yes, if your island permissions are configured to control interaction rights. + +QuickShop follows island rules. + +### What happens if IridiumSkyblock is removed? + +QuickShop returns to normal behavior and stops checking island permissions. + +--- + +## Summary + +The IridiumSkyblock compat module: + +- Protects island economies +- Enforces island-based permissions +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is recommended for any server running IridiumSkyblock. diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md new file mode 100644 index 0000000000..3b4726cb9d --- /dev/null +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md @@ -0,0 +1,151 @@ +# ItemMatcherPlus + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +The ItemMatcherPlus module improves how QuickShop matches custom and plugin-modified items. + +It allows QuickShop to properly recognize and stack items created by other plugins that normally would not match using standard Bukkit item comparisons. + +This module is especially useful for servers that use: + +- Custom items +- Modified metadata +- NBT-based systems +- Advanced crate rewards +- Custom brewing systems +- Custom fishing rewards + +--- + +## What Does It Do? + +By default, Minecraft item matching checks: + +- Material type +- Basic metadata + +However, many plugins modify items with: + +- Custom NBT data +- Hidden tags +- Custom lore formats +- Unique identifiers + +Without enhanced matching: + +- Items may not stack +- Shops may refuse valid items +- Transactions may fail +- Buying/selling may not behave correctly + +ItemMatcherPlus improves compatibility and matching accuracy. + +--- + +## Supported Plugins + +ItemMatcherPlus includes built-in support for: + +- AdvancedItems +- BreweryX +- CrazyCrates +- ExcellentCrates +- PyroFishing +- SilkSpawners + +If any of these plugins are installed, QuickShop will automatically use enhanced matching logic. + +No additional configuration is required. + +--- + +## How It Works + +When a player trades with a shop: + +1. QuickShop checks the item. +2. If ItemMatcherPlus is enabled, it performs advanced matching. +3. Plugin-specific metadata is validated. +4. The item is confirmed as a match (or rejected safely). + +This allows: + +- Proper stacking of custom items +- Correct shop transactions +- Accurate buy/sell detection +- Reduced false mismatches + +--- + +## Installation + +1. Download the ItemMatcherPlus module. +2. Place the JAR into your `plugins` folder. +3. Restart your server. + +If supported plugins are detected, compatibility activates automatically. + +--- + +## Configuration + +ItemMatcherPlus does not require configuration. + +It activates automatically when: + +- The module is installed +- A supported plugin is detected + +If a supported plugin is not installed, no extra logic runs. + +--- + +## Why You Should Use It + +You should install ItemMatcherPlus if your server uses: + +- Custom fishing plugins +- Custom brewing systems +- Crate plugins with modified items +- Custom spawners +- Any plugin that modifies NBT data + +Without it, shops may not properly recognize custom items. + +--- + +## Common Questions + +### Do I need this if I don't use custom item plugins? + +No. +If you only use vanilla items, this module is not necessary. + +### Does this affect performance? + +The module only activates enhanced matching when needed. + +Normal item matching remains fast and efficient. + +### Will it break existing shops? + +No. +It improves compatibility and matching accuracy without modifying existing shop data. + +--- + +## Summary + +ItemMatcherPlus: + +- Improves item matching accuracy +- Adds support for major custom item plugins +- Prevents stacking and trade issues +- Requires no configuration +- Activates automatically + +If you run a heavily customized economy server, this module is highly recommended. \ No newline at end of file diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md index ba87606698..d4ae7d129a 100644 --- a/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/lands.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/lands.md index 06296f5779..7671fcdfe0 100644 --- a/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/lands.md +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/lands.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/openinv.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/openinv.md index c51f628615..4807d57873 100644 --- a/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/openinv.md +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/openinv.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md new file mode 100644 index 0000000000..c2136320b0 --- /dev/null +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md @@ -0,0 +1,138 @@ +# SimpleClaimSystem + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and SimpleClaimSystem. + +It ensures that shop creation and trading respect land ownership and claim permissions defined by SimpleClaimSystem. + +--- + +## What Does It Do? + +SimpleClaimSystem allows players to claim land and protect it from unauthorized interaction. + +Without compatibility: + +- Players could create shops inside claims they do not own. +- Visitors might trade inside protected areas. +- Claim protection might not apply correctly to shops. + +The SimpleClaimSystem compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops within their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a SimpleClaimSystem claim. +- Whether the player has permission within that claim. +- Whether claim rules allow shop interaction. + +If the action is not permitted by the claim, QuickShop blocks it. + +If the location is outside any claim, default QuickShop behavior applies. + +--- + +## Claim Owner Control + +With this module enabled: + +- Claim owners can create and manage shops inside their claim. +- Trusted players follow claim-based permissions. +- Visitors are restricted unless explicitly allowed. +- Claim protection rules apply automatically to shop interactions. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install SimpleClaimSystem. +2. Install the QuickShop SimpleClaimSystem compat module. +3. Restart your server. + +The module activates automatically if SimpleClaimSystem is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If SimpleClaimSystem is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Enable owner override for easier management. + +This ensures players maintain control over their protected land. + +--- + +## Common Questions + +### Can players create shops in someone else's claim? + +Only if claim permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can allow shops outside claims or restrict them. + +### What happens if SimpleClaimSystem is removed? + +QuickShop will revert to default behavior and stop checking claim permissions. + +--- + +## Summary + +The SimpleClaimSystem compat module: + +- Enforces claim-based permissions +- Prevents unauthorized shop creation +- Protects land from unwanted trading +- Requires minimal setup + +It is recommended for servers running SimpleClaimSystem. \ No newline at end of file diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md index a84dbf057b..4dfa8ae97c 100644 --- a/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/towny.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/towny.md index 52ab4818f4..b26c19d335 100644 --- a/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/towny.md +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/towny.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -26,7 +26,7 @@ Town sub-command allow you switch a quickshop between regular shop and town shop For a nation shop, the shop owner will changed to nation fake player created by Towny, and use Nation's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from nation Towny account.\ +All purchases will deposit or withdraw money from nation Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Nation Shop. @@ -35,7 +35,7 @@ If Plot type restriction is enabled, only a specific Plot type can create a Nati For a town shop, the shop owner will changed to town fake player created by Towny, and use Town's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from town Towny account.\ +All purchases will deposit or withdraw money from town Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Town Shop. @@ -88,7 +88,7 @@ bank-mode: ## Permission Override -By adjust configuration, you're allow mayor or king automaticlly grant administrator permission on all shops in their management range. +By adjust configuration, you're allow mayor or king automatically grant administrator permission on all shops in their management range. ```yaml #Should allow Mayor grant the shop administrator permission on they town. @@ -168,7 +168,7 @@ This causes Towny and QuickShop Hikari to use accounts with the same name but di You can adjust the option in configuration to enable workaround. -NOTE: It will force turned on if detected EssentialsX installed on your server.\ +NOTE: It will force turned on if detected EssentialsX installed on your server. At present, we do not provide a method for disable it. ```yaml diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md new file mode 100644 index 0000000000..0189958495 --- /dev/null +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md @@ -0,0 +1,138 @@ +# UltimateClaims + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and UltimateClaims. + +It ensures that shop creation and trading respect land claim permissions managed by UltimateClaims. + +--- + +## What Does It Do? + +On servers using land-claim plugins, players protect areas of the world from unauthorized interaction. + +Without compatibility: + +- Players may create shops inside claims they do not own. +- Visitors might trade in areas where they should not. +- Claim protection rules might not apply correctly to shops. + +The UltimateClaims compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops inside their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a claim. +- Whether the player has permission in that claim. +- Whether claim rules allow shop interaction. + +If the action violates claim settings, QuickShop blocks it. + +Outside of claims, normal QuickShop behavior applies. + +--- + +## Claim Owner Permissions + +With this module enabled: + +- Claim owners can create and manage shops within their claim. +- Trusted players follow claim permission settings. +- Visitors are restricted based on claim configuration. +- Shop actions outside of claims behave normally. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install UltimateClaims. +2. Install the QuickShop UltimateClaims compat module. +3. Restart your server. + +If UltimateClaims is detected on startup, compatibility activates automatically. + +No additional linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Common options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If UltimateClaims is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Keep owner override enabled for better control. + +This ensures players maintain full control over their protected land. + +--- + +## Common Questions + +### Can players create shops inside someone else's claim? + +Only if the claim permissions allow it. + +Otherwise, QuickShop will block the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can choose to restrict shops to claimed land only. + +### What happens if UltimateClaims is removed? + +QuickShop returns to normal behavior without claim checks. + +--- + +## Summary + +The UltimateClaims compat module: + +- Protects claimed land from unauthorized shop usage +- Enforces claim-based permissions +- Integrates smoothly with land-claim servers +- Requires minimal setup + +It is recommended for any server running UltimateClaims. \ No newline at end of file diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md index 87a71a205c..6437754503 100644 --- a/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md @@ -2,8 +2,10 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. Find out more [here](../modules/shops/worldedit.md). + +Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. \ No newline at end of file diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/development/01-getting-start.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/development/01-getting-start.md index 92b773451e..0e78e52367 100644 --- a/i18n/pl-PL/docusaurus-plugin-content-docs/current/development/01-getting-start.md +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/development/01-getting-start.md @@ -6,8 +6,8 @@ This series of articles will help you build extensions for QuickShop-Hikari or i ## License -QuickShop-Hikari is open source using the [GPLv3](https://www.gnu.org/licenses/quick-guide-gplv3.en.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari).\ -You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the GPLv3 agreement. +QuickShop-Hikari is open source using the [AGPLv3](https://www.gnu.org/licenses/agpl-3.0.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari). +You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the AGPLv3 agreement. ## 🚧Don't trust Javadoc too much @@ -48,7 +48,7 @@ QuickShop-Hikari divides operation sources into three types: - Server Main Thread - Async Thread (any other threads but not server main thread) -- Hybird +- Hybrid If you access the API through the wrong thread, QuickShop-Hikari will force a runtime error to be thrown. @@ -58,4 +58,4 @@ For APIs that may trigger network IO or long-time disk IO, you are required not You can see [Util.ensureThread()](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/3d1d271e1106ea1c83cc6068f8232ab7c7860918/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/util/Util.java#L351) and find out the requirements of the different APIs by looking up their use. APIs that do not use Util.ensureThread() are allowed to be called from any thread by default. -You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. +You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. \ No newline at end of file diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md index aa2404c594..7828d414ad 100644 --- a/i18n/pl-PL/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md @@ -10,7 +10,7 @@ ShopManager manager = api.getShopManager(); ## Getting a shop -Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates.\ +Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates. QuickShop-Hikari's store is only bound to one half of "Large Chest", so to get the store, you need to query both the cube itself and its associated cube. The good thing is that there is an API in the plugin that allows you to handle this situation very easily. @@ -71,7 +71,7 @@ manager.deleteShop(shop) // Permanently delete this store, both memory and datab ## Identify a store -Please note that store locations are technically variable and you should not use coordinates to identify a store.\ +Please note that store locations are technically variable and you should not use coordinates to identify a store. Also RuntimeRandomUniqueId should not be used to identify the store, as the name suggests, the value changes every time the server restarts, it should only be used to handle scenarios where the player interacts with the server. ```java diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md index 543f1851da..4f839ed652 100644 --- a/i18n/pl-PL/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md @@ -1,6 +1,6 @@ # 0x05 Per shop permission -QuickShop-Hikari has a per shop permission management system.\ +QuickShop-Hikari has a per shop permission management system. Therefore, for a normal permission node check is not enough, you need to attach an additional check. ## Check with shop diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/development/06-protocol-system.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/development/06-protocol-system.md index 5d37a15536..0380b789f9 100644 --- a/i18n/pl-PL/docusaurus-plugin-content-docs/current/development/06-protocol-system.md +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/development/06-protocol-system.md @@ -15,30 +15,30 @@ This documentation will guide developers through the components, implementation - **Purpose**: Manages packet handling and initialization logic. - **Interface**: `PacketHandler` - **Key Methods**: - - `Map> factories()` - - Retrieves a map of supported `PacketFactory` instances keyed by game versions. - - `void initialize()` - - Initializes the packet handler. - - `Optional> factory(String version)` - - Retrieves a `PacketFactory` for a specific game version. + - `Map> factories()` + - Retrieves a map of supported `PacketFactory` instances keyed by game versions. + - `void initialize()` + - Initializes the packet handler. + - `Optional> factory(String version)` + - Retrieves a `PacketFactory` for a specific game version. ### 2. **PacketFactory** - **Purpose**: Creates and sends specific packet types. - **Interface**: `PacketFactory` - **Supported Packets**: - - **Spawn Packet**: - - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. - - Example Use: Representing shop items visually. - - **Metadata Packet**: - - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. - - Example Use: Updating item display name or properties. - - **Velocity Packet**: - - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. - - Example Use: Custom animations for virtual items. - - **Destroy Packet**: - - Removes the entity from the client view. Created using `createDestroyPacket()`. - - Example Use: Unloading or removing a virtual display item. + - **Spawn Packet**: + - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. + - Example Use: Representing shop items visually. + - **Metadata Packet**: + - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. + - Example Use: Updating item display name or properties. + - **Velocity Packet**: + - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. + - Example Use: Custom animations for virtual items. + - **Destroy Packet**: + - Removes the entity from the client view. Created using `createDestroyPacket()`. + - Example Use: Unloading or removing a virtual display item. Developers implementing custom `PacketFactory` should ensure these packets are correctly handled and optimized for performance. @@ -46,24 +46,24 @@ Developers implementing custom `PacketFactory` should ensure these packets are c - **Purpose**: Oversees the lifecycle of virtual display items and integrates with packet handlers. - **Key Features**: - - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). - - Manages virtual display items mapped to chunks. - - Provides thread-safe operations for adding and removing display items. + - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). + - Manages virtual display items mapped to chunks. + - Provides thread-safe operations for adding and removing display items. ### 4. **VirtualDisplayItem** - **Purpose**: Represents a virtual item displayed to players. - **Key Features**: - - Generates and caches packets for spawning, metadata, velocity, and destruction. - - Manages packet senders for each player. - - Handles spawn and removal operations dynamically. + - Generates and caches packets for spawning, metadata, velocity, and destruction. + - Manages packet senders for each player. + - Handles spawn and removal operations dynamically. ### 5. **ProtocolLibHandler and PacketEventsHandler** - **Purpose**: Provide implementations of `PacketHandler` using ProtocolLib and PacketEvents, respectively. - **Differences**: - - `ProtocolLibHandler` leverages ProtocolLib API. - - `PacketEventsHandler` uses the PacketEvents library. + - `ProtocolLibHandler` leverages ProtocolLib API. + - `PacketEventsHandler` uses the PacketEvents library. --- @@ -140,11 +140,11 @@ public class CustomPacketFactory implements PacketFactory { Packet factories are provided for specific game versions through two primary implementations: - **ProtocolLib**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` - **PacketEvents**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` --- diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md new file mode 100644 index 0000000000..aebc035f87 --- /dev/null +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md @@ -0,0 +1,297 @@ +# Interaction System (Developer Guide) + +The Interaction System allows developers to fully customize how players interact with shops. + +As of 6.2.0.11, the system has been redesigned to be: + +- Modular +- Extensible +- Thread-safe +- Fully customizable by third-party addons + +This guide will walk you through: + +1. What the Interaction System is +2. Getting the `InteractionManager` +3. Understanding `InteractionType` +4. Understanding `InteractionBehavior` +5. Registering custom interactions +6. Best practices + +--- + +# Overview + +The Interaction System is composed of three main components: + +| Component | Purpose | +| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| `InteractionType` | Describes **what kind of click happened** (standing, sneaking, left-click, sign, shopblock, etc.) | +| `InteractionBehavior` | Describes **what action should happen** when that type is triggered | +| `InteractionManager` | Central registry that manages interactions and behaviors | + +This separation allows developers to: + +- Add new click types +- Add new behaviors +- Override existing ones +- Extend QuickShop without modifying core code + +--- + +# Getting the InteractionManager + +To begin registering custom interactions, you must retrieve the `InteractionManager` instance. + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +If you are working directly with the plugin instance: + +```java +InteractionManager manager = QuickShop.getInstance().getInteractionManager(); +``` + +Once obtained, you can: + +- Register new interaction types +- Register new behaviors +- Override existing behaviors + +--- + +# Understanding InteractionType + +`InteractionType` represents **how** a player interacted with a shop. + +Examples include: + +- `STANDING_LEFT_CLICK_SIGN` +- `STANDING_RIGHT_CLICK_SHOPBLOCK` +- `SNEAKING_LEFT_CLICK_CONTAINER` +- etc. + +Each `InteractionType` defines: + +- Player stance (standing/sneaking) +- Click type (left/right) +- Target (sign/shopblock/container) + +InteractionTypes do NOT define behavior — they only define the trigger. + +--- + +# Understanding InteractionBehavior + +`InteractionBehavior` defines **what happens** when an interaction is triggered. + +Examples of built-in behaviors: + +- `TRADE_INTERACTION` +- `TRADE_UI` +- `CONTROL_PANEL` +- `CONTROL_PANEL_UI` +- `NONE` + +A behavior: + +- Executes logic +- May open GUIs +- May send chat panels +- May directly trade items +- Can cancel or modify flow + +This separation makes it easy to reuse behaviors across multiple interaction types. + +--- + +# Registering Custom Interactions + +There are two things you can register: + +- A custom `InteractionType` +- A custom `InteractionBehavior` + +--- + +## Creating a Custom InteractionBehavior + +Create a class implementing `InteractionBehavior`. + +Example: + +```java +public class MyTradeBehavior implements InteractionBehavior { + + @Override + public String getKey() { + return "MY_CUSTOM_TRADE"; + } + + @Override + public void execute(InteractionClick click) { + Player player = click.getPlayer(); + Shop shop = click.getShop(); + + player.sendMessage("You triggered my custom interaction!"); + + // Add your custom logic here + } +} +``` + +Then register it: + +```java +InteractionManager manager = api.getInteractionManager(); +manager.behavior(new MyTradeBehavior()); +``` + +Now your behavior is available for use. + +--- + +## Creating a Custom InteractionType + +You may also register custom interaction types if you want to introduce new trigger definitions. + +Example: + +```java +public class MyCustomInteraction implements InteractionType { + + @Override + public String getKey() { + return "STANDING_DOUBLE_CLICK_SIGN"; + } + + @Override + public boolean matches(InteractionClick click) { + // Define custom logic to detect this interaction + return click.isStanding() + && click.isSign() + && click.isDoubleClick(); + } +} +``` + +Register it: + +```java +manager.interaction(new MyCustomInteraction()); +``` + +--- + +# Binding Types to Behaviors + +The InteractionManager internally maps interaction types to behaviors based on configuration and registration order. + +Once your behavior is registered: + +- It can be referenced in `interaction.yml` +- Or attached programmatically + +Example interaction.yml usage: + +```yaml +STANDING_LEFT_CLICK_SIGN: MY_CUSTOM_TRADE +``` + +--- + +# The InteractionClick Object + +When your behavior executes, you receive an `InteractionClick` object. + +It provides: + +- `getPlayer()` +- `getShop()` +- `getLocation()` +- `isSneaking()` +- `isSign()` +- `isShopBlock()` +- etc. + +This gives full context for safe execution. + +--- + +# Advanced: Overriding Built-in Behavior + +If you register a behavior using the same key as an existing one, your behavior can override the default. + +⚠️ Be careful when doing this — you are replacing core functionality. + +--- + +# Best Practices + +### Always Use Unique Keys + +Avoid naming collisions: + +``` +MYPLUGIN_CUSTOM_BEHAVIOR +``` + +### Keep Behavior Lightweight + +Do not block the main thread with: + +- Heavy database calls +- File IO +- Network calls + +Use async tasks if needed. + +### Respect Permissions + +Always validate: + +```java +if (!player.hasPermission("myplugin.use")) { + return; +} +``` + +### Avoid Hard Overrides Unless Necessary + +Instead of replacing built-in behaviors, consider extending them. + +--- + +# Example: Full Minimal Implementation + +```java +public class ExampleAddon { + + public void register(QuickShopAPI api) { + + InteractionManager manager = api.getInteractionManager(); + + manager.behavior(new MyTradeBehavior()); + manager.interaction(new MyCustomInteraction()); + } +} +``` + +--- + +# Conclusion + +The Interaction System is designed to allow: + +- Full extensibility +- Clean separation of triggers and actions +- Easy integration for third-party developers + +By retrieving the `InteractionManager`: + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +You gain full control over how shops respond to player actions. \ No newline at end of file diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/development/08-tax-manager.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/development/08-tax-manager.md new file mode 100644 index 0000000000..72a56f9e88 --- /dev/null +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/development/08-tax-manager.md @@ -0,0 +1,266 @@ +# Tax System (Developer Guide) + +The QuickShop tax system allows server owners and developers to define how transaction taxes are calculated, distributed, and extended. + +As of 6.2.0.11, the tax system has been fully rewritten to provide: + +- A flexible TaxManager +- Pluggable TaxProvider support +- Progressive taxation +- Tax targeting (shop owner, interacting player, or both) +- Custom extension capability for third-party addons + +This guide explains how to work with the tax system programmatically. + +--- + +# Overview + +The tax system is composed of three core components: + +TaxManager +Responsible for coordinating tax calculation and execution. + +TaxProvider +Defines how tax values are calculated. + +TaxRates +Represents calculated tax results for a transaction. + +The system is designed to allow custom providers to be registered and used without modifying core logic. + +--- + +# Getting the TaxManager + +To work with the tax system, retrieve the TaxManager from the ShopManager. + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +Once obtained, you can: + +- Access current tax configuration +- Register custom tax providers +- Calculate tax values +- Hook into tax events + +--- + +# How the Tax System Works + +During a shop transaction: + +1. A base price is determined. +2. The TaxManager selects the active TaxProvider. +3. The TaxProvider calculates applicable tax. +4. A TaxRates object is produced. +5. The system applies the tax to: + + - Shop owner + - Interacting player + - Or both (depending on configuration) + +This architecture allows tax behavior to be modified without altering transaction logic. + +--- + +# TaxProvider + +A TaxProvider defines how tax values are calculated. + +You may create your own provider to implement: + +- Progressive tax brackets +- Flat percentage tax +- Conditional tax rules +- Region-based tax +- Rank-based tax +- Time-based tax + +Example minimal provider: + +```java +public class MyCustomTaxProvider implements TaxProvider { + + @Override + public TaxRates calculateTax(TaxContext context) { + + double basePrice = context.getPrice(); + + double taxAmount = basePrice * 0.05; // 5% flat tax + + return new TaxRates() + .ownerTax(taxAmount) + .buyerTax(0.0); + } +} +``` + +Then register it: + +```java +taxManager.provider(new MyCustomTaxProvider()); +``` + +Once registered, your provider will be used for tax calculations. + +--- + +# TaxRates + +TaxRates represents the result of a tax calculation. + +It typically contains: + +- Owner tax amount +- Buyer tax amount +- Total tax impact +- Metadata (if applicable) + +The transaction system will read from TaxRates and apply deductions accordingly. + +--- + +# Progressive Taxation + +The built-in system supports progressive tax structures. + +This allows server administrators to tax based on: + +- Player balance +- Shop owner balance +- Configured tax brackets + +Example configuration concept: + +- 0–10,000 balance → 1% tax +- 10,000–100,000 → 2% tax +- 100,000+ → 3% tax + +Developers can extend or override this logic inside a custom TaxProvider. + +--- + +# Targeting Tax + +The new tax system allows taxes to be applied to: + +- Shop owner +- Interacting player +- Both + +This is controlled via configuration, but custom providers can override distribution logic by adjusting TaxRates output. + +Example: + +```java +return new TaxRates() + .ownerTax(basePrice * 0.02) + .buyerTax(basePrice * 0.01); +``` + +--- + +# Registering a Custom TaxProvider + +To replace or extend tax logic: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); + +taxManager.provider(new MyCustomTaxProvider()); +``` + +You may register only one primary provider at a time. If multiple providers are needed, implement internal delegation within your custom provider. + +--- + +# Tax Events + +The tax system integrates with the event system. + +The modern event used is: + +ShopEnhancedTaxEvent + +This replaces legacy tax events and provides improved context, including: + +- Transaction builder reference +- TaxRates object +- Modification capability before final execution + +You can listen for the event and modify tax behavior dynamically: + +```java +@EventHandler +public void onTax(ShopEnhancedTaxEvent event) { + + TaxRates rates = event.getTaxRates(); + + // Example: Give VIP players reduced owner tax + if (event.getOwner().hasPermission("vip.tax.discount")) { + rates.ownerTax(rates.getOwnerTax() * 0.5); + } +} +``` + +--- + +# Best Practices + +Always keep tax calculations lightweight. + +Avoid: + +- Heavy database queries inside calculateTax +- Blocking network calls +- Long-running computations + +If complex logic is required, pre-cache required data outside the tax execution path. + +Ensure negative tax values are not returned unless intentional. + +Always validate final amounts before applying modifications. + +Respect configuration hierarchy unless intentionally overriding it. + +--- + +# Example Full Implementation + +```java +public class ExampleTaxAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + TaxManager taxManager = manager.taxManager(); + + taxManager.provider(new MyCustomTaxProvider()); + } +} +``` + +--- + +# Conclusion + +The new tax system is designed for: + +- Flexibility +- Extensibility +- Clean separation of concerns +- Future expansion + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +You gain full control over how QuickShop calculates and applies tax during transactions. \ No newline at end of file diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/development/09-layout-provider.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/development/09-layout-provider.md new file mode 100644 index 0000000000..55e3cd3e91 --- /dev/null +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/development/09-layout-provider.md @@ -0,0 +1,275 @@ +# Shop Layout Provider (Developer Guide) + +The Shop Layout Provider system allows developers to customize how shop signs are structured and rendered. + +As of 6.2.0.11, shop layouts are no longer hardcoded. Instead, they are controlled through the `IShopLayoutProvider` interface, which allows: + +- Custom sign line ordering +- Per-shop-type layouts (BUYING, SELLING, FROZEN, or custom types) +- Dynamic layout resolution +- Complete replacement of the default layout system + +This guide explains how to access, override, and implement a custom layout provider. + +--- + +# Overview + +The layout provider controls how shop sign lines are arranged. + +Instead of hardcoding: + +Line 1 → Header +Line 2 → Trading info +Line 3 → Item +Line 4 → Price + +The system now allows full customization through: + +- Config-based layout definitions +- Custom `IShopLayoutProvider` implementations +- Runtime overrides + +The default implementation is `SimpleShopLayoutProvider`. + +--- + +# Accessing the Layout Provider + +To retrieve the current layout provider: + +```java +ShopManager manager = api.getShopManager(); +IShopLayoutProvider provider = manager.shopLayoutProvider(); +``` + +To replace the layout provider with a custom one: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Once replaced, your implementation will control how shop layouts are generated. + +--- + +# Understanding IShopLayoutProvider + +`IShopLayoutProvider` defines how layout data is retrieved and resolved. + +It is responsible for: + +- Providing layout configuration per shop type +- Determining which layout to use +- Supplying formatted line keys +- Allowing future extensibility + +The default implementation reads layout definitions from configuration and applies them based on shop type. + +--- + +# Default Layout Example + +The default configuration-based layout looks like this: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +Each line maps to a layout component key. + +An empty string (`""`) leaves that line blank. + +The layout provider resolves these keys into actual sign content. + +--- + +# Creating a Custom Layout Provider + +To override the default behavior, implement `IShopLayoutProvider`. + +Example minimal implementation: + +```java +public class MyCustomLayoutProvider implements IShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + + ShopLayout layout = new ShopLayout(); + + layout.setLine(1, "Custom Header"); + layout.setLine(2, "Owner: " + shop.getOwnerName()); + layout.setLine(3, shop.getItem().getType().name()); + layout.setLine(4, "$" + shop.getPrice()); + + return layout; + } +} +``` + +Then register it: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Your layout will now control all shop sign formatting. + +--- + +# Per-Type Layout Control + +Because the system no longer depends on the legacy ShopType enum, layouts can support: + +- Built-in types (BUYING, SELLING, FROZEN) +- Custom shop types +- Addon-defined shop types + +Your provider can determine layout logic dynamically: + +```java +@Override +public ShopLayout provideLayout(Shop shop) { + + if (shop.getShopType().key().equals("FROZEN")) { + return frozenLayout(shop); + } + + return defaultLayout(shop); +} +``` + +This allows conditional formatting, localization adjustments, or special event styling. + +--- + +# Advanced Customization + +A custom layout provider can: + +- Pull data from external plugins +- Inject dynamic placeholders +- Modify layout per player +- Apply formatting logic +- Override color schemes +- Apply region-based formatting +- Implement animated sign systems + +Because the layout provider is resolved at runtime, you can compute layouts dynamically instead of reading static config. + +--- + +# Replacing vs Extending the Default Provider + +You have two options: + +Replace entirely: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Or extend the default implementation: + +```java +public class ExtendedLayoutProvider extends SimpleShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + ShopLayout base = super.provideLayout(shop); + + base.setLine(1, "[Extended] " + base.getLine(1)); + + return base; + } +} +``` + +Extending is safer if you only want to modify small portions. + +--- + +# Best Practices + +Keep layout generation lightweight. + +Avoid: + +- Heavy database queries +- Blocking IO +- Complex network calls + +Layout generation runs during shop updates and sign refresh events. + +Always handle null values safely. + +Ensure layout line count does not exceed sign limits. + +Avoid hardcoding shop type names unless necessary. + +If your layout supports custom shop types, validate their keys properly. + +--- + +# Example Full Registration + +```java +public class LayoutAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + + manager.shopLayoutProvider(new MyCustomLayoutProvider()); + } +} +``` + +--- + +# Conclusion + +The Shop Layout Provider system allows complete control over shop sign structure. + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +``` + +And setting: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +You can redefine how every shop is displayed on the server. + +This system was designed to support: + +- Extensibility +- Custom shop types +- Localization +- Dynamic formatting +- Future expansion \ No newline at end of file diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/faq/compare-reremake.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/faq/compare-reremake.md index aaa1a9e507..6b39f02520 100644 --- a/i18n/pl-PL/docusaurus-plugin-content-docs/current/faq/compare-reremake.md +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/faq/compare-reremake.md @@ -64,7 +64,7 @@ If you are a Reremake user, you may be confused about the differences between Hi ## Which one should I use? Well, it depends on what your needs are.\ -If you have an old server (<1.20) instance, Reremake is your only choice.\ +If you have an old server ({'<'}1.20) instance, Reremake is your only choice.\ ~~If you are in China which has GFW interfere, you also should consider Reremake because it doesn't need to load libraries from Global Internet.~~ Solved in 6.0.0.0. If none of these applies, give Hikari a try! diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md index 551f579e7c..172be3a69b 100644 --- a/i18n/pl-PL/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md @@ -1,8 +1,8 @@ # Where Addons/Compacts is -Addons and Compatilibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. +Addons and Compatibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. -- Open Modrinth versions page, locate the version your're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) +- Open Modrinth versions page, locate the version you're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) - Frantically slide your mouse wheel down until the lowest end of the page. - You get it! diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/internal/database-schema.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/internal/database-schema.md index fea685e4fc..45e04adb56 100644 --- a/i18n/pl-PL/docusaurus-plugin-content-docs/current/internal/database-schema.md +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/internal/database-schema.md @@ -4,17 +4,17 @@ This chapter will explain the implementation details of QuickShop Hikari's datab ## Tables -This section explains the database tables created by QuickShop-Hikari.\ -Unless otherwise specified, the initial `qs_` in table name is the table prefix.\ +This section explains the database tables created by QuickShop-Hikari. +Unless otherwise specified, the initial `qs_` in table name is the table prefix. For the latest code definition for each table, see: [DataTables.java](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/hikari/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/database/DataTables.java) ### `data` -This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information.\ -No matter what, a data record should not be modified after it is created, until it got deleted.\ +This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information. +No matter what, a data record should not be modified after it is created, until it got deleted. Any new changes to the shop should create a new copy, apply the changes to the copy, and insert it as a new record. -Basiclly, Copy-on-write. +Basically, Copy-on-write. A data record only be deleted from the database when no any table references their `data_id`. @@ -29,7 +29,7 @@ A data record only be deleted from the database when no any table references the | unlimited | BIT NOT NULL | 0 | Indicates whether this store is an unlimited store, 0=Limited, 1=Unlimited | | hologram | BIT NOT NULL | 0 | Indicates the suspension status of this store's display item, 0=Follow global settings, 1=Disabled | | tax_account | VARCHAR(36) | NULL | The uuid for tax account, If it is not NULL, tax will be paid to the specified account | -| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serilized to JSON string | +| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serialized to JSON string | | extra | LONGTEXT | Empty Yaml | Used to store experimental settings of QuickShop Hikari or persistent data of other plugins | | inv_wrapper | VARCHAR(255) NOT NULL | N/A | Unique identifier for InventoryWrapper for this shop data entry | | inv_symbol_link | TEXT NOT NULL | N/A | Unique Inventory symbol used to pass to InventoryWrapper, for locating inventory | @@ -38,7 +38,7 @@ A data record only be deleted from the database when no any table references the ### `shops` -This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes.\ +This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes. Multiple `shop_id` can correspond to the same `data_id`. | Column Name | DataType | Default | Description | diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/modules/cmd-alias.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/modules/cmd-alias.md index 53f1577685..e6ed381c0d 100644 --- a/i18n/pl-PL/docusaurus-plugin-content-docs/current/modules/cmd-alias.md +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/modules/cmd-alias.md @@ -23,7 +23,7 @@ custom-commands: - cshop ``` -Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect.\ +Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect. The effect should be like this: ![command-alias](./img/command-alias.png) diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/modules/datasource.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/modules/datasource.md index 6fc1bd8931..3fd3a8bdee 100644 --- a/i18n/pl-PL/docusaurus-plugin-content-docs/current/modules/datasource.md +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/modules/datasource.md @@ -48,7 +48,7 @@ Execute the `/quickshop export` command in console, quickshop will export a zip ![exported data](img/database-export.png) -Stop your database, switch the datasource, and start the server.\ +Stop your database, switch the datasource, and start the server. You may noticed all shops are gone, because new datasources had no data inside, we will restore them from export. Rename that exported ZIP file to `recovery.zip`, execute `/quickshop recovery` and restart your server, all shops should back. diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/modules/itemmatcher.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/modules/itemmatcher.md index 56be243019..922907be27 100644 --- a/i18n/pl-PL/docusaurus-plugin-content-docs/current/modules/itemmatcher.md +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/modules/itemmatcher.md @@ -4,7 +4,7 @@ ItemMatcher is a utility used by QuickShop-Hikari to compare the items, it is th :::caution -If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse.\ +If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse. **TL;DR: Keep default unless you know what you're doing.** ::: @@ -26,10 +26,10 @@ matcher: work-type: 1 ``` -By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility.\ +By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility. But still, you can toggle to QuickShop Item Matcher if you need to customize the comparing or running QuickShop on the server jar which have bug affect the Bukkit comparing system. -## Customize the metadata compareing +## Customize the metadata comparing Customize only works under QuickShop Item Matcher. diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md index fc2af69d2b..d04e8f2783 100644 --- a/i18n/pl-PL/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md @@ -4,7 +4,7 @@ ItemStack Loader is a workaround for loading the Bukkit ItemStack. :::caution -Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossble. +Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossible. ::: diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/modules/localization.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/modules/localization.md index e9121e1a36..d47589ab9a 100644 --- a/i18n/pl-PL/docusaurus-plugin-content-docs/current/modules/localization.md +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/modules/localization.md @@ -10,7 +10,7 @@ To help translate QuickShop-Hikari, please visit our [Crowdin Homepage](https:// ## Crowdin OTA -QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will overrided when you reload QuickShop-Hikari or restart your server. +QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will override when you reload QuickShop-Hikari or restart your server. Your installation will keep translations up-to-date without any touch. @@ -110,6 +110,16 @@ To disable the CrowdinOTA, please add it in the startup flag: -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager.enableCrowdinOTA=false ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +use-crowdin-ota: false +``` + ### Self-Hosted OTA Server If you self-hosted our translation server by using [CrowdinCopyDeploy](https://github.com/Ghost-chu/CrowdinCopyDeploy) tool, you're able to change the OTA server to yourself server. @@ -118,4 +128,12 @@ If you self-hosted our translation server by using [CrowdinCopyDeploy](https://g -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager= ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml +Use + +```yaml +crowdin-host: +``` \ No newline at end of file diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/modules/shops/benefit.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/modules/shops/benefit.md index 4d7a9c8f42..c59d92e6d1 100644 --- a/i18n/pl-PL/docusaurus-plugin-content-docs/current/modules/shops/benefit.md +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/modules/shops/benefit.md @@ -37,3 +37,13 @@ By default, for security, QuickShop-Hikari disallow add offline players into sho ```bash -Dcom.ghostchu.quickshop.command.subcommand.SubCommand_Benefit.allowOffline=true ``` + +### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +shop.allow-offline-benefit: true +``` \ No newline at end of file diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/modules/shops/control-panel b/i18n/pl-PL/docusaurus-plugin-content-docs/current/modules/shops/control-panel new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/modules/shops/control-panel @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/modules/shops/history.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/modules/shops/history.md index fa891adeab..195b64a042 100644 --- a/i18n/pl-PL/docusaurus-plugin-content-docs/current/modules/shops/history.md +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/modules/shops/history.md @@ -24,7 +24,7 @@ The History GUI displays the details of each recorded transaction and other usef ### Transaction details -When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed.\ +When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed. If you are checking the history of more than one store, the player head will be replaced with an item from the corresponding store. ![history-gui](./img/history-gui.png) diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md new file mode 100644 index 0000000000..c5ed3b3fe4 --- /dev/null +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md @@ -0,0 +1,90 @@ +# Shop Types + +QuickShop supports multiple shop types, allowing shops to behave differently depending on their mode. + +The built-in shop types are: + +- Selling +- Buying +- Frozen + +Each type changes how the shop interacts with players. + +--- + +## Selling Shop + +A Selling shop allows players to: + +- Buy items from the shop owner +- Pay money to receive items + +This is the most common shop type. + +--- + +## Buying Shop + +A Buying shop allows players to: + +- Sell items to the shop owner +- Receive money in exchange + +This is commonly used for: + +- Resource collection +- Server buy-back shops +- Automated material sinks + +--- + +## Frozen Shop + +A Frozen shop temporarily disables trading. + +While frozen: + +- No buying is allowed +- No selling is allowed +- The shop remains intact +- Staff or admins can manage it + +This is useful for: + +- Temporary suspensions +- Investigation +- Event locking +- Maintenance + +--- + +## Switching Shop Types + +Shop types can be changed through: + +- Control panel +- GUI control panel +- Admin commands + +Frozen mode is also available via: + +/qs freeze + +--- + +## Custom Shop Types + +As of 6.2.x, the system supports extensible shop types internally. + +While server owners use the built-in types, the system now allows future expansion through addons. + +--- + +## Summary + +Shop types allow you to: + +- Control how money flows +- Enable buy-back mechanics +- Temporarily disable shops +- Build advanced economic systems \ No newline at end of file diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md new file mode 100644 index 0000000000..18e0a47407 --- /dev/null +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md @@ -0,0 +1,217 @@ +# Sign Layout + +QuickShop allows you to fully customize how shop signs are structured. + +You can change: + +- What appears on each line +- The order of information +- Layout per shop type +- Whether certain lines are blank + +This gives you complete control over how shops look on your server. + +--- + +## How Sign Layout Works + +Shop signs have four lines. + +Instead of being hardcoded, QuickShop uses a configurable layout system. + +Each shop type can have its own layout: + +- SELLING +- BUYING +- FROZEN + +You define what each line displays using layout keys. + +--- + +## Configuration Location + +Sign layout is configured in `config.yml` under: + +```yaml +layout: +``` + +Example default configuration: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## Available Layout Keys + +Each line value refers to a built-in layout component. + +Common layout keys include: + +- `header` – The shop header line +- `trading` – Buy/Sell direction information +- `item` – Item name +- `price` – Shop price + +These keys are automatically formatted using your language file and formatting settings. + +--- + +## Leaving a Line Blank + +To leave a line empty, use: + +```yaml +line2: "" +``` + +This is useful if you want: + +- Minimalist signs +- Cleaner layouts +- Custom spacing +- Decorative formatting + +--- + +## Customizing Per Shop Type + +Each shop type can have a different layout. + +For example: + +```yaml +layout: + + SELLING: + line1: "header" + line2: "item" + line3: "price" + line4: "" + + BUYING: + line1: "header" + line2: "price" + line3: "item" + line4: "" + + FROZEN: + line1: "header" + line2: "" + line3: "item" + line4: "Frozen" +``` + +This allows you to visually differentiate: + +- Selling shops +- Buying shops +- Frozen shops + +--- + +## Practical Examples + +### Minimal Style + +```yaml +layout: + SELLING: + line1: "item" + line2: "price" + line3: "" + line4: "" +``` + +### Compact Economy Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "price" + line3: "item" + line4: "" +``` + +### Large Clear Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## How Updates Affect Layout + +When you change the layout: + +- Existing shop signs will update automatically when refreshed. +- New shops will use the updated format immediately. + +If needed, you can reload QuickShop to apply changes. + +--- + +## Best Practices + +- Keep important information visible (price and item). +- Avoid overly complex formatting. +- Test layout changes before deploying on large servers. +- Use different layouts for BUYING and SELLING to reduce confusion. + +--- + +## Common Questions + +### Can I add more than four lines? + +No. +Minecraft signs are limited to four lines. + +### Can I add colors? + +Colors are controlled by your language file and formatting settings. + +### Can I change layout without restarting? + +Yes, but reloading or refreshing shops is recommended to ensure full update. + +--- + +## Summary + +The Sign Layout system allows you to: + +- Fully customize shop sign appearance +- Create per-type layouts +- Simplify or expand shop information +- Improve clarity for players + +All layout customization is handled inside `config.yml`. diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md new file mode 100644 index 0000000000..980bad10f2 --- /dev/null +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md @@ -0,0 +1,130 @@ +# Shop Sign Waxing + +QuickShop can automatically wax shop signs to prevent players from editing them manually. + +Waxing protects the integrity of your shop signs and helps prevent tampering, spoofing, and accidental modification. + +As of modern Minecraft versions, waxed signs cannot be edited unless they are unwaxed first. + +--- + +## What Is Sign Waxing? + +In Minecraft, waxing a sign locks it so that: + +- Players cannot edit the text +- Players cannot modify lines +- Accidental changes are prevented +- Malicious edits are blocked + +When enabled in QuickShop, shop signs are automatically waxed when created. + +--- + +## Why Use It? + +Sign waxing protects against: + +- Players editing price lines +- Changing item names on signs +- Spoofing shop information +- Accidental formatting issues +- Sign hijacking attempts + +On public servers, this feature is strongly recommended. + +--- + +## How It Works + +When a shop is created: + +1. QuickShop generates the shop sign. +2. The sign text is written. +3. The sign is automatically waxed (if enabled). + +If a shop is updated: + +- The sign will be safely updated by QuickShop. +- The wax state is maintained. + +Players cannot manually edit shop signs while waxing is enabled. + +--- + +## Configuration + +To enable or disable sign waxing, edit `config.yml`: + +```yaml +shop: + sign-wax: true +``` + +### true + +- Shop signs are automatically waxed. +- Players cannot edit the sign manually. + +### false + +- Shop signs behave like normal Minecraft signs. +- Players may edit them if permitted by the game. + +--- + +## Recommended Setting + +For most servers: + +```yaml +shop: + sign-wax: true +``` + +This ensures shop data stays accurate and secure. + +--- + +## Common Questions + +### Can admins still modify shop signs? + +QuickShop controls shop sign formatting. +Manual edits are not recommended. + +Admins should use: + +- Control panel +- Shop commands +- Direct configuration changes + +### Does waxing affect shop functionality? + +No. +Waxing only prevents manual text edits. +The shop continues to function normally. + +### Can players un-wax shop signs? + +No. +QuickShop manages the sign state automatically. + +--- + +## Best Practices + +- Keep sign-wax enabled on survival servers. +- Combine sign-wax with proper permissions. +- Avoid manually editing shop signs through other plugins. + +--- + +## Summary + +Sign Waxing: + +- Prevents tampering +- Requires no additional setup + +Enable it once and QuickShop handles the rest. \ No newline at end of file diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/modules/shops/taxes.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/modules/shops/taxes.md new file mode 100644 index 0000000000..1a273fd978 --- /dev/null +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/modules/shops/taxes.md @@ -0,0 +1,92 @@ +# Taxation System + +QuickShop includes a taxation system designed to give server owners more flexibility and control over shop-based income. + +This system was revamped as of 6.2.0.11+ + +The new system allows you to: + +- Apply tax to shop owners +- Apply tax to buyers +- Apply tax to both +- Use progressive tax brackets +- Customize tax behavior in configuration + +This system replaces the legacy tax configuration. + +--- + +## How It Works + +During a transaction: + +1. The shop price is calculated. +2. Tax is calculated based on your configuration. +3. Tax is deducted from the configured target(s). +4. Remaining funds are distributed normally. + +You can configure: + +- Flat percentage tax +- Progressive tax based on player balance +- Tax accounts +- Distribution rules + +--- + +## Progressive Tax + +The new system allows you to tax based on balance brackets. + +Example concept: + +- 0 – 10,000 balance → 1% tax +- 10,000 – 100,000 → 2% tax +- 100,000+ → 3% tax + +This helps prevent extremely wealthy players from dominating the economy. + +--- + +## Who Pays the Tax? + +You can configure whether tax applies to: + +- The shop owner +- The buyer +- Both + +This gives you flexibility depending on your economy design. + +--- + +## Configuration + +All tax-related settings are located under the `shop-tax` section in `config.yml`. + +After updating to 6.2.0.11+, review your tax configuration carefully, as the old tax system has been replaced. + +--- + +## Why Use Tax? + +The taxation system can help: + +- Remove currency from circulation +- Fund server banks or towns +- Create sink mechanics +- Balance inflation +- Reward active players + +--- + +## Summary + +The new taxation system is: + +- Flexible +- Configurable +- Balance-aware +- Designed for modern economy servers + +Make sure to review your configuration after upgrading. \ No newline at end of file diff --git a/i18n/pl-PL/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md b/i18n/pl-PL/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md new file mode 100644 index 0000000000..247c24712d --- /dev/null +++ b/i18n/pl-PL/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md @@ -0,0 +1,161 @@ +# WorldEdit & FAWE Support + +QuickShop includes built-in protection and integration for WorldEdit and FastAsyncWorldEdit (FAWE). + +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. + +You do not need to download or install any additional compatibility plugins. + +--- + +## What This Does + +WorldEdit and FAWE allow administrators and builders to: + +- Copy and paste regions +- Replace large areas of blocks +- Mass-delete regions +- Roll back areas +- Regenerate terrain + +Without protection, these operations could: + +- Create ghost shops +- Leave orphaned shop data in the database +- Duplicate shops unintentionally +- Delete containers without cleaning up shop data +- Cause inconsistencies between world and database + +QuickShop now automatically detects and safely processes WorldEdit and FAWE operations. + +--- + +## Built-In Behavior + +When WorldEdit or FAWE modifies blocks: + +- Shops removed via WorldEdit are properly deleted from the database. +- Shop data stays synchronized with world changes. +- Ghost shops are prevented. +- Mass block replacements will not leave broken shop entries behind. + +This applies to: + +- //set +- //replace +- //cut +- //paste +- //regen +- Region deletion +- Mass container removal + +No configuration is required. + +--- + +## FAWE Support + +FastAsyncWorldEdit (FAWE) is fully supported. + +Because FAWE processes edits asynchronously, QuickShop handles: + +- Region-thread safe processing +- Async block updates +- Safe shop deletion during batch edits + +You do not need to enable anything manually. + +--- + +## Removing Shops with WorldEdit + +If you delete containers (chests, barrels, etc.) using WorldEdit: + +QuickShop will automatically: + +- Detect the block removal +- Unregister the shop +- Clean the database entry +- Prevent ghost shops + +You do not need to run `/qs cleanghost` after WorldEdit usage in normal circumstances. + +--- + +## Copying and Pasting Shops + +If you copy and paste regions that contain shops: + +- Shop data will not duplicate incorrectly. +- Shop IDs remain consistent. +- Invalid pasted shops will not auto-register unless properly created. + +This prevents accidental duplication exploits. + +--- + +## Performance + +WorldEdit and FAWE operations can modify thousands of blocks at once. + +QuickShop processes these safely and efficiently: + +- Batch-aware cleanup +- Thread-safe region access (especially on Folia) +- Minimal performance impact during mass edits + +--- + +## Configuration + +There are no specific WorldEdit configuration options in QuickShop. + +Support is automatic and always enabled if WorldEdit or FAWE is detected. + +If WorldEdit is not installed, no extra code is executed. + +--- + +## Common Questions + +### Do I need the old WorldEdit compatibility jar? + +No. + +As of 6.2.0.11, WorldEdit support is built-in and the separate compatibility module has been removed. + +### Does this work with FAWE? + +Yes. FAWE is fully supported. + +### Will shops break if I use //set air? + +No. Shops will be safely removed and cleaned up. + +### Do I need to restart after installing WorldEdit? + +No. QuickShop detects WorldEdit automatically on startup. + +--- + +## Best Practices + +Even though QuickShop safely handles WorldEdit operations, it is recommended to: + +- Avoid copying shops intentionally unless required +- Use backups before large region edits +- Test large FAWE operations on staging servers when possible + +--- + +## Summary + +QuickShop’s built-in WorldEdit and FAWE integration ensures: + +- Safe mass edits +- No ghost shops +- Automatic database cleanup +- Thread-safe processing +- No extra modules required + +WorldEdit support is now a core feature of QuickShop. \ No newline at end of file diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/addon/limited.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/addon/limited.md index 70af27e240..fae55a8c95 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/addon/limited.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/addon/limited.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -41,8 +35,8 @@ Limit players to purchase up to 16 items per month. /quickshop limit period MONTH ``` -The system is based on the QuickShop-Hikari calendar system.\ -The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year.\ +The system is based on the QuickShop-Hikari calendar system. +The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year. Same for days, months and hours. Available time units: diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/addon/list.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/addon/list.md index 93d182f083..f20b91fd7b 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/addon/list.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/addon/list.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/addon/plan.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/addon/plan.md index 52a6e79cb4..c10ef4df42 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/addon/plan.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/addon/plan.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -18,7 +18,7 @@ Recorded data can be displayed from Hikari v2.0.0.0 onwards, but only after vers - All shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 1000 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `5` in server scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `5` in server scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Player Scope @@ -27,7 +27,7 @@ And still is Plan limitations, the list sorting is disturbed, so the display ord - All owned shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 50 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `4` in player scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `4` in player scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Showcase diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/addon/reforges.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/addon/reforges.md index 2a14509eb7..25fff1752a 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/addon/reforges.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/addon/reforges.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.0.0.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md index 304d39bc05..6f9f51d250 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.1.1.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -44,7 +38,7 @@ _This is not necessary if you are using an H2 database._ ### Prepare for convert -To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console.\ +To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console. If a player is in the server, the conversion cannot be started. Once the conversion has begun, the server will be locked during the conversion process and no players will be able to join the server during the conversion. diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/addon/shopitemonly.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/addon/shopitemonly.md index c45062f8c2..1ccfe977b3 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/addon/shopitemonly.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/addon/shopitemonly.md @@ -2,17 +2,11 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT - -::: - -This addon prevents players from putting non-store items into store containers.\ +This addon prevents players from putting non-store items into store containers. Does not apply to stores that use the item inventory redirection API (aka. InventoryWrapper API). This Addon will check for container (or transferring) items on events such as the player closing the container or hopper access. diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md new file mode 100644 index 0000000000..9c8b4f7407 --- /dev/null +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md @@ -0,0 +1,55 @@ +# 6.2.0.10 + +## Major Changes + +- Added support for 1.21.6 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.7 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.8 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Some internal updates for packetevents(2.9.0 is now required.) +- Updated Lands support + +## Addon Changes + +- Added MatcherPlus Addon + - Allows support for BreweryX and AdvancedItems stacks in shops with improved matching abilities +- Added FabledSkyblock Compat +- Added Dominion Compat +- Added HuskTowns Compat +- Added IridiumSkyblock Compat +- Added member-create for member creation in ARM compat +- Added admin-override and quickshop.arm.admin permission for admin overrides in ARM + +## Minor Changes + +- Added configurations for the coordinates of the display item. +- Added /qs toggledisplayall on/off server/owned + - Players need to have permission node quickshop.toggledisplayall.admin to toggle all on the server. +- Added ability to use abbreviations in /qs price and /qs create commands such as 2.5k for 2500 +- Added ability to set default display status using shop.default-display in config.yml + +## Fixes + +- Fixed issue with display item being sent to the moon on 1.21.5 +- Fixed issue where TRADE_UI interactions interfered with quick create. +- Fixed issue with displays on protocollib falling through the chest +- Fixed issue with signs on .9 and previous .10 snapshots on early versions +- Implemented some performance improvements for paper servers +- Fixed all outstanding issues with Folia usage.(thanks to RootB33R/SleazLee for contributions) + +## Possible 6.2.0.11 Features + +Here's an outline for some features that may arrive in 6.2.0.11: + +- Additional compats/addons that have been piling up. + - see: https://github.com/QuickShop-Community/QuickShop-Hikari/issues/1756 +- gradle?(interested to see compilation time uplifts) +- Update documentation +- Update configuration comments +- Update configuration system? + - auto updating? + - Allows removal of the update code +- Remove waste spigot modules? + - Any versions of 1.20 that can be discarded due to low use? +- Bug fixing, of course +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... \ No newline at end of file diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md new file mode 100644 index 0000000000..b41c88662a --- /dev/null +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md @@ -0,0 +1,173 @@ +## Outline + +- Update documentation +- Update configuration comments +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... + +# 6.2.0.11 + +## Major Changes + +- Removed Spigot Platform Modules, and stopped loading QS if Spigot is detected. This will mean that unless the protocol changes that we use for display items, QS won't need updated for each version. +- Revamped Economy Code Completely + - New classes for all economy-related systems + - Any economy-related or benefits-related events are incompatible with previous versions. +- Added sign layout customizations per-type allowing you to change how lines are configured, an empty string('') will leave an empty line for that line of the sign. + +``` + #The layout of signs for shops. + layout: + + #The layout of BUYING shops. + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of FROZEN shops. + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of SELLING shops. + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +- Add wildcard support for item blacklist patterns(thanks to bennycallanan) + - Added support for wildcard patterns in the item blacklist configuration, allowing users to block entire categories of items with simple patterns. + + - Features + - Wildcard patterns like \*_AXE and \*_SPAWN_EGG now work in blacklist configuration + - Supports \* for any characters and ? for single character matching + - Case-insensitive pattern matching +- Overhauled GUI system(thanks to Yusakidev) + - Implemented gui.yml configuration file for customizing the GUI. + - Implemented better filtering for qs browse + - Implement GUI system to be more stable, and less error prone. + - Added gui.yml for fully configurable GUI layouts and text + - Browse menu: search, sort (price/name/stock), and filter (all/buying/selling/in-stock) + - Staff menu: search functionality for player/staff selection + - Grouped item pages for better shop browsing + - Refactored all menu pages to use configurable display/lore +- Added worldedit compat to QS internally as it's widely used. +- Revamped the taxation system to be more flexible and easier to configure. + - introduced a new progressive tax system that allows you to tax based on the balance of players.(suggested by YuanYuanOwO) + - introduced the ability to tax the player interacting with the shop, the owner, or both + - all tax-related configurations have been moved under the shop-tax section of the config. this may require reconfiguration of your tax settings. + - added a new ShopEnhancedTaxEvent, deprecated the old ShopTaxEvent. + - Added a new TaxManager, and TaxProvider interfaces, this allows for custom tax providers to be added by addons/third-party developers. + +## Addons/Compats Changes + +- Added UltimateClaims compat +- Added SimpleClaimSystem compat +- Added Quests by Pika addon +- Added BetonQuest addon +- Added Pl3xMap addon +- MatcherPlus Compat Improvements + - Added support for CrazyCrates + - Added support for ExcellentCrates + - Added support for SilkSpawners. +- WorldGuard Compat Improvements(Thanks to golovin12) + - Added clear permission handling: + - Region owners and members automatically have permission to create and trade in their own regions. + - Other players must have the appropriate WorldGuard flags enabled (quickshophikari-create, quickshophikari-trade) to interact with shops. + - If a shop is located outside any region, default QuickShop behavior applies (no extra restrictions) +- Added colored markers based on shop state for bluemap(thanks to YusakiDev) +- Updated dynmap/towny addons to use the new ShopTypeEnhancedEvent instead of ShopTypeEvent. +- Removed worldedit compat, it's now included in the main plugin. +- Added support for global flags to the worldguard compat. + +## Internals/Developer APIs + +- Removed several deprecated methods and classes. +- Revamped the interaction manager. It is now more flexible and allows external additions + - This involves two classes InteractionBehavior and InteractionType. + - InteractionType details the type of interaction such as: STANDING_LEFT_CLICK_SIGN, STANDING_LEFT_CLICK_SHOP + - InteractionBehavior outlines a behavior for an InteractionType such as CONTROL_PANEL and TRADE_UI +- Added UserLimitCalculationEvent, which allows for custom limits to be applied to users. + - This is useful for limiting the number of shops a user can have, or adding on to the existing limits provided by the ranks system without needing to implement a new RankLimiter. +- Added a new ShopLayoutProvider interface, and default implementation. + - This allows for custom layouts to be used for shops, allowing for more customization. + - This also allows for developers to override the default layout provider and create their own implementation. +- How to make your own? + - Implement the classes you would like to then register with the InteractionManager: + - ```java + InteractionManager manager = QuickShop.getInstance().getInteractionManager(); + + manager.interaction(new MyTradeInteraction()); + manager.behavior(new MyTradeBehavior()); + ``` +- Replaced some Apache Commons calls that could be easily replaced with built-in java methods, reduces some calls by ~ 1100ms/method call +- Deprecated the ShopType enum, and the ShopTypeEvent. These are replaced with the new IShopType interface and implementing classes. + - The new event is ShopTypeEnhancedEvent. + - This allows for third-party addons to add their own shop types, and simplifies code checks for translations. +- Updated config system to use Boosted-yaml + - this allows for auto-updating of config files without complex update scripts + - this also allows for the config system to not be minecraft-dependent. +- Replaced logical PaperLib calls with native PaperAPI calls. + +## Minor Changes + +- Bump Java version up to 21 +- Added shop.display-allow-enchants to enable/disable enchantments for display items on shops. +- Added workaround for packetevents not supporting custom enchants on itemstacks for virtual display items. +- Using locale translations for shop-type in mode toggle icon(thanks to ExyiN) +- Bumped Residence version for the compat(thanks to YuanYuanOwO) +- add world whitelist support(thanks to wling-art) +- added /qs database save command, which saves all currently dirty-marked shops to the database. +- Split up interactions _SHOPBLOCK into _SHOPBLOCK and _CONTAINER. + - _SHOPBLOCK relates to shops, where _CONTAINER relates to shop-valid containers that are not currently shops. +- Added inventory as an option for command panel, this is useful for adding a secondary option for players to open a shop's inventory. +- Moved crowdin arguments from system properties to config.yml + - crowdin-host + - use-crowdin-ota + +## Fixes + +- Fixes issue with item price restrictions(thanks to maxcom1) +- Fixes issue with 1.20.x protocol lib displays(thanks to YuanYuanOwO) +- Fixes issue when no item is in hand for itemdebug(thanks to YuanYuanOwO) +- Fixes issue with dominion addon(thanks to YuanYuanOwO) +- Add a simple check to avoid this. If it is not own shop, reject limit request directly.(Thanks to YuanYuanOwO) +- Fix NPE by not setting tax for price in TransactionBuilder(thanks to maxcom1) +- Fixes /quickshop suggestprice to differentiate between buy/sell shops. (Thanks to MidSpike) +- PacketEvents ClassNotFoundException with ProtocolLib(thanks to wling-art) +- Reallocate block state access to region thread for shop creation(thanks to r00tbeerman) +- resolve SLF4J StaticLoggerBinder loading error(thanks to wling-art) +- sign hijacking issue by validating sign facing direction(thanks to wling-art) +- Performance improvements for QuickShop disabling to prevent potential freezes. +- Fixed issue with 1.20.4 packetevents virtual displays not staying put. +- Fixes critical issue in GriefPrevention compatibility plugin. +- Fixes issue with shop owner not getting money when benefits active. +- Fixes for lands addon on folia, Use regionThread for Folia compatibility(thanks to YusakiDev) +- Fixes for TRADE_DIRECT on stacking shops +- Fixes issue for protocollib 5.4.0 with undocumented packet changes. +- Fixes issue where item stacks could be used on creation above the max stack size. +- Fixes issue with BukkitAudiences-related crashes on 1.21.11. +- Fix issue with shop deletion when getting too impatient. +- Fix the permission check issue when a shop owned by a non-owner is transferred to someone else. (thanks to YuanYuanOwO) +- Fix ui with supertool (thanks to YuanYuanOwO) +- Fix issue with logs generating outside debug mode. +- Fix issue with /qs find. +- Fix configuration loading timing. +- Fix configuration loading/creation warning message language. +- Fix command description language key mismatch(thanks to wling-art) +- Fix qs clean command on folia(thanks to wling-art) +- Fix per-player-shop-sign on folia(thanks to wling-art) +- Fix potential recursive deadlock in virtual display packet sending(thanks to wling-art) +- Fix configuration loading/creation warning message language. +- Fix issue with /qs browse and ShopItemOnly addon not behaving properly together on folia. +- Fix issue with PLAN using outdated APIs. +- Fix issue with /qs clean on folia.(thanks to wling-art) +- Fix issue with /qs cleanghost on folia(thanks to wling-art) +- More thread safety fixes for shops on folia.(thanks to wling-art) +- Fix owner payment calculations with benefits(thanks to wling-art) \ No newline at end of file diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md index 8172f9b410..dcc3edc67d 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md @@ -20,20 +20,20 @@ the ControlComponent object with a custom one that will replace the original dur ### Introduction of the Revamped Packet System 1. **About**: - - A modular and scalable system for managing packets related to virtual display items in Minecraft. - - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. + - A modular and scalable system for managing packets related to virtual display items in Minecraft. + - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. 2. **Custom Packet Factories**: - - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. - - Packet types: - - **Spawn Packet**: Spawns a virtual item entity at a specific location. - - **Metadata Packet**: Updates the visual properties of virtual items. - - **Velocity Packet**: Adds motion/velocity to entities (currently optional). - - **Destroy Packet**: Removes the entity from the client view. + - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. + - Packet types: + - **Spawn Packet**: Spawns a virtual item entity at a specific location. + - **Metadata Packet**: Updates the visual properties of virtual items. + - **Velocity Packet**: Adds motion/velocity to entities (currently optional). + - **Destroy Packet**: Removes the entity from the client view. 3. **Error Handling and Logging**: - - Enhanced debug logs to trace packet-related issues. - - Detailed error messages for missing factories or unregistered listeners. + - Enhanced debug logs to trace packet-related issues. + - Detailed error messages for missing factories or unregistered listeners. #### Improvements: diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md index 7775308722..c6e0948d19 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md index f420997a9c..38587e3784 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md index 5ed8182c9a..259c55f342 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md index 924a37ac49..7fd4596a6a 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,6 +10,6 @@ This is a BungeeCord plugin, you need install it within your BungeeCord's plugin ## How does it work? -BungeeCord Bridge plugins will register a `quickshop:bungee` channel for fowarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. +BungeeCord Bridge plugins will register a `quickshop:bungee` channel for forwarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. All forwarding is indicated by QuickShop-Hikari on the Spigot server and ends when it is not needed. diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md index 27d68956a8..20fbaf7a0c 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,5 +10,5 @@ This compatibility module added [Chest Protect](https://www.spigotmc.org/resourc ## How does it work? -This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident.\ +This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident. It also prevents players from creating shops on ChestProtect protected containers. diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md index 220e26d8bb..e1757e7be9 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/dominion.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/dominion.md new file mode 100644 index 0000000000..e1195278a8 --- /dev/null +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/dominion.md @@ -0,0 +1,138 @@ +# Dominion + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and Dominion. + +It ensures that shop creation and trading respect Dominion’s land and territory protection system. + +--- + +## What Does It Do? + +Dominion allows players or groups to claim land and define territory-based permissions. + +Without compatibility: + +- Players could create shops inside territories they do not control. +- Visitors might trade inside protected dominions. +- Dominion permission rules might not apply to shop interactions. + +The Dominion compat module ensures that: + +- Shop creation respects territory ownership. +- Shop trading follows Dominion permission settings. +- Protected land remains secure from unauthorized shop usage. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a Dominion-controlled area. +- Whether the player has permission within that territory. +- Whether Dominion rules allow shop interaction. + +If the action is not permitted by Dominion settings, QuickShop blocks it. + +If the location is outside any Dominion territory, default QuickShop behavior applies. + +--- + +## Territory Owner Control + +With this module enabled: + +- Territory owners can create and manage shops inside their dominion. +- Trusted members follow territory-based permissions. +- Outsiders are restricted unless explicitly allowed. +- Shop actions respect Dominion’s land rules automatically. + +This prevents unauthorized shop placement inside protected territories. + +--- + +## Installation + +1. Install Dominion. +2. Install the QuickShop Dominion compat module. +3. Restart your server. + +The module activates automatically if Dominion is detected. + +No manual configuration linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside dominions +whitelist-mode: false + +# Allow territory owners to override shop permissions +allow-owner-override: true +``` + +If Dominion is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For servers using Dominion: + +- Restrict shop creation to territory owners or trusted members. +- Prevent shop creation in wilderness if desired. +- Allow dominion owners to manage shop permissions. +- Review Dominion permission settings to align with shop behavior. + +This ensures protected territories remain secure and organized. + +--- + +## Common Questions + +### Can players create shops in someone else's dominion? + +Only if Dominion permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You may allow or restrict shops outside dominions. + +### What happens if Dominion is removed? + +QuickShop returns to normal behavior and stops checking Dominion territories. + +--- + +## Summary + +The Dominion compat module: + +- Enforces territory-based permissions +- Prevents unauthorized shop creation +- Protects claimed land from misuse +- Integrates seamlessly with Dominion + +It is recommended for servers running Dominion. \ No newline at end of file diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md index 743d3ae666..2ac9b10488 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md new file mode 100644 index 0000000000..07ba4ada66 --- /dev/null +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md @@ -0,0 +1,133 @@ +# FabledSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and FabledSkyblock. + +It ensures that shop creation and trading properly respect island boundaries and island permissions. + +--- + +## What Does It Do? + +On Skyblock servers, players build and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Players might trade in areas they should not. +- Island protection rules might not apply to shops. + +The FabledSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members behave correctly with shops. +- Island visitors are restricted appropriately. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a FabledSkyblock island. +- Whether the player has permission on that island. +- Whether island settings allow the action. + +If the action is not permitted by island rules, QuickShop will deny it. + +--- + +## Island Ownership Rules + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow island permission settings. +- Visitors can only trade if island permissions allow it. +- Outside of islands, default QuickShop behavior applies. + +--- + +## Installation + +1. Install FabledSkyblock. +2. Install the QuickShop FabledSkyblock compat module. +3. Restart your server. + +The module activates automatically if FabledSkyblock is detected. + +No manual linking is required. + +--- + +## Configuration + +If the module provides configuration options, they will appear in its `config.yml`. + +Typical options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If FabledSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most Skyblock servers: + +- Allow shop creation only inside islands. +- Prevent trading in the void or wilderness. +- Let island owners control shop permissions. +- Use island rank systems to manage shop access. + +This helps maintain economic balance between islands. + +--- + +## Common Questions + +### Can players create shops in the void? + +Only if your configuration allows it. +Most servers disable shop creation outside islands. + +### Does this affect island war or PvP modes? + +No. +The module only checks island ownership and permissions for shop interactions. + +### What happens if FabledSkyblock is removed? + +QuickShop returns to normal behavior. + +--- + +## Summary + +The FabledSkyblock compat module: + +- Protects island economies +- Enforces island permission rules +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is strongly recommended for any server running FabledSkyblock. \ No newline at end of file diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md index 81b13d2c6b..32614d3019 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md @@ -2,17 +2,17 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -GreifPrevention compatibility module added compaitibility with GF. +GreifPrevention compatibility module added compatibility with GF. ## How does it work This module allow QuickShop-Hikari check if player have permission to create or use QuickShop in specific region. -And delete shops when claim removed, untrusted, unclimed, expired, resized or subclaim created. +And delete shops when claim removed, untrusted, unclaimed, expired, resized or subclaim created. ## Configuration diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md new file mode 100644 index 0000000000..e71b34d462 --- /dev/null +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md @@ -0,0 +1,139 @@ +# HuskTowns + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and HuskTowns. + +It ensures that shop creation and trading respect town and claim permissions defined by HuskTowns. + +--- + +## What Does It Do? + +HuskTowns allows players to create towns and claim land. + +Without compatibility: + +- Players could create shops inside towns they do not belong to. +- Visitors might trade inside protected towns. +- Town permission rules might not apply to shop interactions. + +The HuskTowns compat module ensures that: + +- Shop creation respects town ownership. +- Trading follows town permission settings. +- Town members and visitors are handled correctly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a HuskTowns claim. +- Whether the player is a town member, trusted player, or outsider. +- Whether the town's permission settings allow the action. + +If the action is not permitted by town rules, QuickShop blocks it. + +Outside of town claims, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Town Owner Control + +With this module enabled: + +- Town owners can create and manage shops inside their town. +- Town members follow town-based permission settings. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect town claim protection. + +This prevents unauthorized shop placement and trading inside protected towns. + +--- + +## Installation + +1. Install HuskTowns. +2. Install the QuickShop HuskTowns compat module. +3. Restart your server. + +The module activates automatically if HuskTowns is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside towns +whitelist-mode: false + +# Allow town owners to override shop permissions +allow-owner-override: true +``` + +If HuskTowns is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For town-based survival servers: + +- Restrict shop creation to town members. +- Allow trading only where town permissions permit. +- Prevent shop creation in wilderness if desired. +- Enable owner override for better administrative control. + +This helps maintain town-based economic balance. + +--- + +## Common Questions + +### Can players create shops in another town? + +Only if that town's permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You can allow or restrict shops outside towns. + +### What happens if HuskTowns is removed? + +QuickShop returns to normal behavior and stops checking town permissions. + +--- + +## Summary + +The HuskTowns compat module: + +- Enforces town-based land permissions +- Protects towns from unauthorized shop usage +- Integrates smoothly with HuskTowns +- Requires minimal setup + +It is recommended for any server running HuskTowns. \ No newline at end of file diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md new file mode 100644 index 0000000000..3fa2995eb0 --- /dev/null +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md @@ -0,0 +1,139 @@ +# IridiumSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and IridiumSkyblock. + +It ensures that shop creation and trading respect island boundaries and island permission settings defined by IridiumSkyblock. + +--- + +## What Does It Do? + +IridiumSkyblock allows players to create and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Visitors might trade inside protected islands. +- Island protection rules might not apply correctly to shops. + +The IridiumSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members and visitors are handled properly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside an IridiumSkyblock island. +- Whether the player is the island owner, member, or visitor. +- Whether island permissions allow shop interaction. + +If the action is not permitted, QuickShop blocks it. + +Outside of islands, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Island Owner Permissions + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow the island's permission configuration. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect island protection rules. + +This prevents unauthorized shop usage inside protected islands. + +--- + +## Installation + +1. Install IridiumSkyblock. +2. Install the QuickShop IridiumSkyblock compat module. +3. Restart your server. + +The module activates automatically if IridiumSkyblock is detected. + +No additional setup is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If IridiumSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most IridiumSkyblock servers: + +- Restrict shop creation to island owners. +- Allow island members to trade if trusted. +- Prevent shop creation in the void or wilderness. +- Enable owner override for better management. + +This helps maintain balanced island economies. + +--- + +## Common Questions + +### Can players create shops outside their island? + +Only if your configuration allows it. + +Most Skyblock servers restrict shops to island areas. + +### Do island ranks affect shop permissions? + +Yes, if your island permissions are configured to control interaction rights. + +QuickShop follows island rules. + +### What happens if IridiumSkyblock is removed? + +QuickShop returns to normal behavior and stops checking island permissions. + +--- + +## Summary + +The IridiumSkyblock compat module: + +- Protects island economies +- Enforces island-based permissions +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is recommended for any server running IridiumSkyblock. diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md new file mode 100644 index 0000000000..3b4726cb9d --- /dev/null +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md @@ -0,0 +1,151 @@ +# ItemMatcherPlus + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +The ItemMatcherPlus module improves how QuickShop matches custom and plugin-modified items. + +It allows QuickShop to properly recognize and stack items created by other plugins that normally would not match using standard Bukkit item comparisons. + +This module is especially useful for servers that use: + +- Custom items +- Modified metadata +- NBT-based systems +- Advanced crate rewards +- Custom brewing systems +- Custom fishing rewards + +--- + +## What Does It Do? + +By default, Minecraft item matching checks: + +- Material type +- Basic metadata + +However, many plugins modify items with: + +- Custom NBT data +- Hidden tags +- Custom lore formats +- Unique identifiers + +Without enhanced matching: + +- Items may not stack +- Shops may refuse valid items +- Transactions may fail +- Buying/selling may not behave correctly + +ItemMatcherPlus improves compatibility and matching accuracy. + +--- + +## Supported Plugins + +ItemMatcherPlus includes built-in support for: + +- AdvancedItems +- BreweryX +- CrazyCrates +- ExcellentCrates +- PyroFishing +- SilkSpawners + +If any of these plugins are installed, QuickShop will automatically use enhanced matching logic. + +No additional configuration is required. + +--- + +## How It Works + +When a player trades with a shop: + +1. QuickShop checks the item. +2. If ItemMatcherPlus is enabled, it performs advanced matching. +3. Plugin-specific metadata is validated. +4. The item is confirmed as a match (or rejected safely). + +This allows: + +- Proper stacking of custom items +- Correct shop transactions +- Accurate buy/sell detection +- Reduced false mismatches + +--- + +## Installation + +1. Download the ItemMatcherPlus module. +2. Place the JAR into your `plugins` folder. +3. Restart your server. + +If supported plugins are detected, compatibility activates automatically. + +--- + +## Configuration + +ItemMatcherPlus does not require configuration. + +It activates automatically when: + +- The module is installed +- A supported plugin is detected + +If a supported plugin is not installed, no extra logic runs. + +--- + +## Why You Should Use It + +You should install ItemMatcherPlus if your server uses: + +- Custom fishing plugins +- Custom brewing systems +- Crate plugins with modified items +- Custom spawners +- Any plugin that modifies NBT data + +Without it, shops may not properly recognize custom items. + +--- + +## Common Questions + +### Do I need this if I don't use custom item plugins? + +No. +If you only use vanilla items, this module is not necessary. + +### Does this affect performance? + +The module only activates enhanced matching when needed. + +Normal item matching remains fast and efficient. + +### Will it break existing shops? + +No. +It improves compatibility and matching accuracy without modifying existing shop data. + +--- + +## Summary + +ItemMatcherPlus: + +- Improves item matching accuracy +- Adds support for major custom item plugins +- Prevents stacking and trade issues +- Requires no configuration +- Activates automatically + +If you run a heavily customized economy server, this module is highly recommended. \ No newline at end of file diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md index ba87606698..d4ae7d129a 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/lands.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/lands.md index 06296f5779..7671fcdfe0 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/lands.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/lands.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/openinv.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/openinv.md index c51f628615..4807d57873 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/openinv.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/openinv.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md new file mode 100644 index 0000000000..c2136320b0 --- /dev/null +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md @@ -0,0 +1,138 @@ +# SimpleClaimSystem + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and SimpleClaimSystem. + +It ensures that shop creation and trading respect land ownership and claim permissions defined by SimpleClaimSystem. + +--- + +## What Does It Do? + +SimpleClaimSystem allows players to claim land and protect it from unauthorized interaction. + +Without compatibility: + +- Players could create shops inside claims they do not own. +- Visitors might trade inside protected areas. +- Claim protection might not apply correctly to shops. + +The SimpleClaimSystem compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops within their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a SimpleClaimSystem claim. +- Whether the player has permission within that claim. +- Whether claim rules allow shop interaction. + +If the action is not permitted by the claim, QuickShop blocks it. + +If the location is outside any claim, default QuickShop behavior applies. + +--- + +## Claim Owner Control + +With this module enabled: + +- Claim owners can create and manage shops inside their claim. +- Trusted players follow claim-based permissions. +- Visitors are restricted unless explicitly allowed. +- Claim protection rules apply automatically to shop interactions. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install SimpleClaimSystem. +2. Install the QuickShop SimpleClaimSystem compat module. +3. Restart your server. + +The module activates automatically if SimpleClaimSystem is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If SimpleClaimSystem is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Enable owner override for easier management. + +This ensures players maintain control over their protected land. + +--- + +## Common Questions + +### Can players create shops in someone else's claim? + +Only if claim permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can allow shops outside claims or restrict them. + +### What happens if SimpleClaimSystem is removed? + +QuickShop will revert to default behavior and stop checking claim permissions. + +--- + +## Summary + +The SimpleClaimSystem compat module: + +- Enforces claim-based permissions +- Prevents unauthorized shop creation +- Protects land from unwanted trading +- Requires minimal setup + +It is recommended for servers running SimpleClaimSystem. \ No newline at end of file diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md index a84dbf057b..4dfa8ae97c 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/towny.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/towny.md index 52ab4818f4..b26c19d335 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/towny.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/towny.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -26,7 +26,7 @@ Town sub-command allow you switch a quickshop between regular shop and town shop For a nation shop, the shop owner will changed to nation fake player created by Towny, and use Nation's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from nation Towny account.\ +All purchases will deposit or withdraw money from nation Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Nation Shop. @@ -35,7 +35,7 @@ If Plot type restriction is enabled, only a specific Plot type can create a Nati For a town shop, the shop owner will changed to town fake player created by Towny, and use Town's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from town Towny account.\ +All purchases will deposit or withdraw money from town Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Town Shop. @@ -88,7 +88,7 @@ bank-mode: ## Permission Override -By adjust configuration, you're allow mayor or king automaticlly grant administrator permission on all shops in their management range. +By adjust configuration, you're allow mayor or king automatically grant administrator permission on all shops in their management range. ```yaml #Should allow Mayor grant the shop administrator permission on they town. @@ -168,7 +168,7 @@ This causes Towny and QuickShop Hikari to use accounts with the same name but di You can adjust the option in configuration to enable workaround. -NOTE: It will force turned on if detected EssentialsX installed on your server.\ +NOTE: It will force turned on if detected EssentialsX installed on your server. At present, we do not provide a method for disable it. ```yaml diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md new file mode 100644 index 0000000000..0189958495 --- /dev/null +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md @@ -0,0 +1,138 @@ +# UltimateClaims + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and UltimateClaims. + +It ensures that shop creation and trading respect land claim permissions managed by UltimateClaims. + +--- + +## What Does It Do? + +On servers using land-claim plugins, players protect areas of the world from unauthorized interaction. + +Without compatibility: + +- Players may create shops inside claims they do not own. +- Visitors might trade in areas where they should not. +- Claim protection rules might not apply correctly to shops. + +The UltimateClaims compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops inside their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a claim. +- Whether the player has permission in that claim. +- Whether claim rules allow shop interaction. + +If the action violates claim settings, QuickShop blocks it. + +Outside of claims, normal QuickShop behavior applies. + +--- + +## Claim Owner Permissions + +With this module enabled: + +- Claim owners can create and manage shops within their claim. +- Trusted players follow claim permission settings. +- Visitors are restricted based on claim configuration. +- Shop actions outside of claims behave normally. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install UltimateClaims. +2. Install the QuickShop UltimateClaims compat module. +3. Restart your server. + +If UltimateClaims is detected on startup, compatibility activates automatically. + +No additional linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Common options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If UltimateClaims is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Keep owner override enabled for better control. + +This ensures players maintain full control over their protected land. + +--- + +## Common Questions + +### Can players create shops inside someone else's claim? + +Only if the claim permissions allow it. + +Otherwise, QuickShop will block the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can choose to restrict shops to claimed land only. + +### What happens if UltimateClaims is removed? + +QuickShop returns to normal behavior without claim checks. + +--- + +## Summary + +The UltimateClaims compat module: + +- Protects claimed land from unauthorized shop usage +- Enforces claim-based permissions +- Integrates smoothly with land-claim servers +- Requires minimal setup + +It is recommended for any server running UltimateClaims. \ No newline at end of file diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md index 87a71a205c..6437754503 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md @@ -2,8 +2,10 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. Find out more [here](../modules/shops/worldedit.md). + +Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. \ No newline at end of file diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/development/01-getting-start.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/development/01-getting-start.md index 92b773451e..0e78e52367 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/development/01-getting-start.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/development/01-getting-start.md @@ -6,8 +6,8 @@ This series of articles will help you build extensions for QuickShop-Hikari or i ## License -QuickShop-Hikari is open source using the [GPLv3](https://www.gnu.org/licenses/quick-guide-gplv3.en.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari).\ -You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the GPLv3 agreement. +QuickShop-Hikari is open source using the [AGPLv3](https://www.gnu.org/licenses/agpl-3.0.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari). +You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the AGPLv3 agreement. ## 🚧Don't trust Javadoc too much @@ -48,7 +48,7 @@ QuickShop-Hikari divides operation sources into three types: - Server Main Thread - Async Thread (any other threads but not server main thread) -- Hybird +- Hybrid If you access the API through the wrong thread, QuickShop-Hikari will force a runtime error to be thrown. @@ -58,4 +58,4 @@ For APIs that may trigger network IO or long-time disk IO, you are required not You can see [Util.ensureThread()](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/3d1d271e1106ea1c83cc6068f8232ab7c7860918/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/util/Util.java#L351) and find out the requirements of the different APIs by looking up their use. APIs that do not use Util.ensureThread() are allowed to be called from any thread by default. -You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. +You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. \ No newline at end of file diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md index aa2404c594..7828d414ad 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md @@ -10,7 +10,7 @@ ShopManager manager = api.getShopManager(); ## Getting a shop -Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates.\ +Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates. QuickShop-Hikari's store is only bound to one half of "Large Chest", so to get the store, you need to query both the cube itself and its associated cube. The good thing is that there is an API in the plugin that allows you to handle this situation very easily. @@ -71,7 +71,7 @@ manager.deleteShop(shop) // Permanently delete this store, both memory and datab ## Identify a store -Please note that store locations are technically variable and you should not use coordinates to identify a store.\ +Please note that store locations are technically variable and you should not use coordinates to identify a store. Also RuntimeRandomUniqueId should not be used to identify the store, as the name suggests, the value changes every time the server restarts, it should only be used to handle scenarios where the player interacts with the server. ```java diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md index 543f1851da..4f839ed652 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md @@ -1,6 +1,6 @@ # 0x05 Per shop permission -QuickShop-Hikari has a per shop permission management system.\ +QuickShop-Hikari has a per shop permission management system. Therefore, for a normal permission node check is not enough, you need to attach an additional check. ## Check with shop diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/development/06-protocol-system.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/development/06-protocol-system.md index 5d37a15536..0380b789f9 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/development/06-protocol-system.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/development/06-protocol-system.md @@ -15,30 +15,30 @@ This documentation will guide developers through the components, implementation - **Purpose**: Manages packet handling and initialization logic. - **Interface**: `PacketHandler` - **Key Methods**: - - `Map> factories()` - - Retrieves a map of supported `PacketFactory` instances keyed by game versions. - - `void initialize()` - - Initializes the packet handler. - - `Optional> factory(String version)` - - Retrieves a `PacketFactory` for a specific game version. + - `Map> factories()` + - Retrieves a map of supported `PacketFactory` instances keyed by game versions. + - `void initialize()` + - Initializes the packet handler. + - `Optional> factory(String version)` + - Retrieves a `PacketFactory` for a specific game version. ### 2. **PacketFactory** - **Purpose**: Creates and sends specific packet types. - **Interface**: `PacketFactory` - **Supported Packets**: - - **Spawn Packet**: - - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. - - Example Use: Representing shop items visually. - - **Metadata Packet**: - - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. - - Example Use: Updating item display name or properties. - - **Velocity Packet**: - - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. - - Example Use: Custom animations for virtual items. - - **Destroy Packet**: - - Removes the entity from the client view. Created using `createDestroyPacket()`. - - Example Use: Unloading or removing a virtual display item. + - **Spawn Packet**: + - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. + - Example Use: Representing shop items visually. + - **Metadata Packet**: + - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. + - Example Use: Updating item display name or properties. + - **Velocity Packet**: + - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. + - Example Use: Custom animations for virtual items. + - **Destroy Packet**: + - Removes the entity from the client view. Created using `createDestroyPacket()`. + - Example Use: Unloading or removing a virtual display item. Developers implementing custom `PacketFactory` should ensure these packets are correctly handled and optimized for performance. @@ -46,24 +46,24 @@ Developers implementing custom `PacketFactory` should ensure these packets are c - **Purpose**: Oversees the lifecycle of virtual display items and integrates with packet handlers. - **Key Features**: - - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). - - Manages virtual display items mapped to chunks. - - Provides thread-safe operations for adding and removing display items. + - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). + - Manages virtual display items mapped to chunks. + - Provides thread-safe operations for adding and removing display items. ### 4. **VirtualDisplayItem** - **Purpose**: Represents a virtual item displayed to players. - **Key Features**: - - Generates and caches packets for spawning, metadata, velocity, and destruction. - - Manages packet senders for each player. - - Handles spawn and removal operations dynamically. + - Generates and caches packets for spawning, metadata, velocity, and destruction. + - Manages packet senders for each player. + - Handles spawn and removal operations dynamically. ### 5. **ProtocolLibHandler and PacketEventsHandler** - **Purpose**: Provide implementations of `PacketHandler` using ProtocolLib and PacketEvents, respectively. - **Differences**: - - `ProtocolLibHandler` leverages ProtocolLib API. - - `PacketEventsHandler` uses the PacketEvents library. + - `ProtocolLibHandler` leverages ProtocolLib API. + - `PacketEventsHandler` uses the PacketEvents library. --- @@ -140,11 +140,11 @@ public class CustomPacketFactory implements PacketFactory { Packet factories are provided for specific game versions through two primary implementations: - **ProtocolLib**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` - **PacketEvents**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` --- diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md new file mode 100644 index 0000000000..aebc035f87 --- /dev/null +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md @@ -0,0 +1,297 @@ +# Interaction System (Developer Guide) + +The Interaction System allows developers to fully customize how players interact with shops. + +As of 6.2.0.11, the system has been redesigned to be: + +- Modular +- Extensible +- Thread-safe +- Fully customizable by third-party addons + +This guide will walk you through: + +1. What the Interaction System is +2. Getting the `InteractionManager` +3. Understanding `InteractionType` +4. Understanding `InteractionBehavior` +5. Registering custom interactions +6. Best practices + +--- + +# Overview + +The Interaction System is composed of three main components: + +| Component | Purpose | +| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| `InteractionType` | Describes **what kind of click happened** (standing, sneaking, left-click, sign, shopblock, etc.) | +| `InteractionBehavior` | Describes **what action should happen** when that type is triggered | +| `InteractionManager` | Central registry that manages interactions and behaviors | + +This separation allows developers to: + +- Add new click types +- Add new behaviors +- Override existing ones +- Extend QuickShop without modifying core code + +--- + +# Getting the InteractionManager + +To begin registering custom interactions, you must retrieve the `InteractionManager` instance. + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +If you are working directly with the plugin instance: + +```java +InteractionManager manager = QuickShop.getInstance().getInteractionManager(); +``` + +Once obtained, you can: + +- Register new interaction types +- Register new behaviors +- Override existing behaviors + +--- + +# Understanding InteractionType + +`InteractionType` represents **how** a player interacted with a shop. + +Examples include: + +- `STANDING_LEFT_CLICK_SIGN` +- `STANDING_RIGHT_CLICK_SHOPBLOCK` +- `SNEAKING_LEFT_CLICK_CONTAINER` +- etc. + +Each `InteractionType` defines: + +- Player stance (standing/sneaking) +- Click type (left/right) +- Target (sign/shopblock/container) + +InteractionTypes do NOT define behavior — they only define the trigger. + +--- + +# Understanding InteractionBehavior + +`InteractionBehavior` defines **what happens** when an interaction is triggered. + +Examples of built-in behaviors: + +- `TRADE_INTERACTION` +- `TRADE_UI` +- `CONTROL_PANEL` +- `CONTROL_PANEL_UI` +- `NONE` + +A behavior: + +- Executes logic +- May open GUIs +- May send chat panels +- May directly trade items +- Can cancel or modify flow + +This separation makes it easy to reuse behaviors across multiple interaction types. + +--- + +# Registering Custom Interactions + +There are two things you can register: + +- A custom `InteractionType` +- A custom `InteractionBehavior` + +--- + +## Creating a Custom InteractionBehavior + +Create a class implementing `InteractionBehavior`. + +Example: + +```java +public class MyTradeBehavior implements InteractionBehavior { + + @Override + public String getKey() { + return "MY_CUSTOM_TRADE"; + } + + @Override + public void execute(InteractionClick click) { + Player player = click.getPlayer(); + Shop shop = click.getShop(); + + player.sendMessage("You triggered my custom interaction!"); + + // Add your custom logic here + } +} +``` + +Then register it: + +```java +InteractionManager manager = api.getInteractionManager(); +manager.behavior(new MyTradeBehavior()); +``` + +Now your behavior is available for use. + +--- + +## Creating a Custom InteractionType + +You may also register custom interaction types if you want to introduce new trigger definitions. + +Example: + +```java +public class MyCustomInteraction implements InteractionType { + + @Override + public String getKey() { + return "STANDING_DOUBLE_CLICK_SIGN"; + } + + @Override + public boolean matches(InteractionClick click) { + // Define custom logic to detect this interaction + return click.isStanding() + && click.isSign() + && click.isDoubleClick(); + } +} +``` + +Register it: + +```java +manager.interaction(new MyCustomInteraction()); +``` + +--- + +# Binding Types to Behaviors + +The InteractionManager internally maps interaction types to behaviors based on configuration and registration order. + +Once your behavior is registered: + +- It can be referenced in `interaction.yml` +- Or attached programmatically + +Example interaction.yml usage: + +```yaml +STANDING_LEFT_CLICK_SIGN: MY_CUSTOM_TRADE +``` + +--- + +# The InteractionClick Object + +When your behavior executes, you receive an `InteractionClick` object. + +It provides: + +- `getPlayer()` +- `getShop()` +- `getLocation()` +- `isSneaking()` +- `isSign()` +- `isShopBlock()` +- etc. + +This gives full context for safe execution. + +--- + +# Advanced: Overriding Built-in Behavior + +If you register a behavior using the same key as an existing one, your behavior can override the default. + +⚠️ Be careful when doing this — you are replacing core functionality. + +--- + +# Best Practices + +### Always Use Unique Keys + +Avoid naming collisions: + +``` +MYPLUGIN_CUSTOM_BEHAVIOR +``` + +### Keep Behavior Lightweight + +Do not block the main thread with: + +- Heavy database calls +- File IO +- Network calls + +Use async tasks if needed. + +### Respect Permissions + +Always validate: + +```java +if (!player.hasPermission("myplugin.use")) { + return; +} +``` + +### Avoid Hard Overrides Unless Necessary + +Instead of replacing built-in behaviors, consider extending them. + +--- + +# Example: Full Minimal Implementation + +```java +public class ExampleAddon { + + public void register(QuickShopAPI api) { + + InteractionManager manager = api.getInteractionManager(); + + manager.behavior(new MyTradeBehavior()); + manager.interaction(new MyCustomInteraction()); + } +} +``` + +--- + +# Conclusion + +The Interaction System is designed to allow: + +- Full extensibility +- Clean separation of triggers and actions +- Easy integration for third-party developers + +By retrieving the `InteractionManager`: + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +You gain full control over how shops respond to player actions. \ No newline at end of file diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/development/08-tax-manager.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/development/08-tax-manager.md new file mode 100644 index 0000000000..72a56f9e88 --- /dev/null +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/development/08-tax-manager.md @@ -0,0 +1,266 @@ +# Tax System (Developer Guide) + +The QuickShop tax system allows server owners and developers to define how transaction taxes are calculated, distributed, and extended. + +As of 6.2.0.11, the tax system has been fully rewritten to provide: + +- A flexible TaxManager +- Pluggable TaxProvider support +- Progressive taxation +- Tax targeting (shop owner, interacting player, or both) +- Custom extension capability for third-party addons + +This guide explains how to work with the tax system programmatically. + +--- + +# Overview + +The tax system is composed of three core components: + +TaxManager +Responsible for coordinating tax calculation and execution. + +TaxProvider +Defines how tax values are calculated. + +TaxRates +Represents calculated tax results for a transaction. + +The system is designed to allow custom providers to be registered and used without modifying core logic. + +--- + +# Getting the TaxManager + +To work with the tax system, retrieve the TaxManager from the ShopManager. + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +Once obtained, you can: + +- Access current tax configuration +- Register custom tax providers +- Calculate tax values +- Hook into tax events + +--- + +# How the Tax System Works + +During a shop transaction: + +1. A base price is determined. +2. The TaxManager selects the active TaxProvider. +3. The TaxProvider calculates applicable tax. +4. A TaxRates object is produced. +5. The system applies the tax to: + + - Shop owner + - Interacting player + - Or both (depending on configuration) + +This architecture allows tax behavior to be modified without altering transaction logic. + +--- + +# TaxProvider + +A TaxProvider defines how tax values are calculated. + +You may create your own provider to implement: + +- Progressive tax brackets +- Flat percentage tax +- Conditional tax rules +- Region-based tax +- Rank-based tax +- Time-based tax + +Example minimal provider: + +```java +public class MyCustomTaxProvider implements TaxProvider { + + @Override + public TaxRates calculateTax(TaxContext context) { + + double basePrice = context.getPrice(); + + double taxAmount = basePrice * 0.05; // 5% flat tax + + return new TaxRates() + .ownerTax(taxAmount) + .buyerTax(0.0); + } +} +``` + +Then register it: + +```java +taxManager.provider(new MyCustomTaxProvider()); +``` + +Once registered, your provider will be used for tax calculations. + +--- + +# TaxRates + +TaxRates represents the result of a tax calculation. + +It typically contains: + +- Owner tax amount +- Buyer tax amount +- Total tax impact +- Metadata (if applicable) + +The transaction system will read from TaxRates and apply deductions accordingly. + +--- + +# Progressive Taxation + +The built-in system supports progressive tax structures. + +This allows server administrators to tax based on: + +- Player balance +- Shop owner balance +- Configured tax brackets + +Example configuration concept: + +- 0–10,000 balance → 1% tax +- 10,000–100,000 → 2% tax +- 100,000+ → 3% tax + +Developers can extend or override this logic inside a custom TaxProvider. + +--- + +# Targeting Tax + +The new tax system allows taxes to be applied to: + +- Shop owner +- Interacting player +- Both + +This is controlled via configuration, but custom providers can override distribution logic by adjusting TaxRates output. + +Example: + +```java +return new TaxRates() + .ownerTax(basePrice * 0.02) + .buyerTax(basePrice * 0.01); +``` + +--- + +# Registering a Custom TaxProvider + +To replace or extend tax logic: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); + +taxManager.provider(new MyCustomTaxProvider()); +``` + +You may register only one primary provider at a time. If multiple providers are needed, implement internal delegation within your custom provider. + +--- + +# Tax Events + +The tax system integrates with the event system. + +The modern event used is: + +ShopEnhancedTaxEvent + +This replaces legacy tax events and provides improved context, including: + +- Transaction builder reference +- TaxRates object +- Modification capability before final execution + +You can listen for the event and modify tax behavior dynamically: + +```java +@EventHandler +public void onTax(ShopEnhancedTaxEvent event) { + + TaxRates rates = event.getTaxRates(); + + // Example: Give VIP players reduced owner tax + if (event.getOwner().hasPermission("vip.tax.discount")) { + rates.ownerTax(rates.getOwnerTax() * 0.5); + } +} +``` + +--- + +# Best Practices + +Always keep tax calculations lightweight. + +Avoid: + +- Heavy database queries inside calculateTax +- Blocking network calls +- Long-running computations + +If complex logic is required, pre-cache required data outside the tax execution path. + +Ensure negative tax values are not returned unless intentional. + +Always validate final amounts before applying modifications. + +Respect configuration hierarchy unless intentionally overriding it. + +--- + +# Example Full Implementation + +```java +public class ExampleTaxAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + TaxManager taxManager = manager.taxManager(); + + taxManager.provider(new MyCustomTaxProvider()); + } +} +``` + +--- + +# Conclusion + +The new tax system is designed for: + +- Flexibility +- Extensibility +- Clean separation of concerns +- Future expansion + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +You gain full control over how QuickShop calculates and applies tax during transactions. \ No newline at end of file diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/development/09-layout-provider.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/development/09-layout-provider.md new file mode 100644 index 0000000000..55e3cd3e91 --- /dev/null +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/development/09-layout-provider.md @@ -0,0 +1,275 @@ +# Shop Layout Provider (Developer Guide) + +The Shop Layout Provider system allows developers to customize how shop signs are structured and rendered. + +As of 6.2.0.11, shop layouts are no longer hardcoded. Instead, they are controlled through the `IShopLayoutProvider` interface, which allows: + +- Custom sign line ordering +- Per-shop-type layouts (BUYING, SELLING, FROZEN, or custom types) +- Dynamic layout resolution +- Complete replacement of the default layout system + +This guide explains how to access, override, and implement a custom layout provider. + +--- + +# Overview + +The layout provider controls how shop sign lines are arranged. + +Instead of hardcoding: + +Line 1 → Header +Line 2 → Trading info +Line 3 → Item +Line 4 → Price + +The system now allows full customization through: + +- Config-based layout definitions +- Custom `IShopLayoutProvider` implementations +- Runtime overrides + +The default implementation is `SimpleShopLayoutProvider`. + +--- + +# Accessing the Layout Provider + +To retrieve the current layout provider: + +```java +ShopManager manager = api.getShopManager(); +IShopLayoutProvider provider = manager.shopLayoutProvider(); +``` + +To replace the layout provider with a custom one: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Once replaced, your implementation will control how shop layouts are generated. + +--- + +# Understanding IShopLayoutProvider + +`IShopLayoutProvider` defines how layout data is retrieved and resolved. + +It is responsible for: + +- Providing layout configuration per shop type +- Determining which layout to use +- Supplying formatted line keys +- Allowing future extensibility + +The default implementation reads layout definitions from configuration and applies them based on shop type. + +--- + +# Default Layout Example + +The default configuration-based layout looks like this: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +Each line maps to a layout component key. + +An empty string (`""`) leaves that line blank. + +The layout provider resolves these keys into actual sign content. + +--- + +# Creating a Custom Layout Provider + +To override the default behavior, implement `IShopLayoutProvider`. + +Example minimal implementation: + +```java +public class MyCustomLayoutProvider implements IShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + + ShopLayout layout = new ShopLayout(); + + layout.setLine(1, "Custom Header"); + layout.setLine(2, "Owner: " + shop.getOwnerName()); + layout.setLine(3, shop.getItem().getType().name()); + layout.setLine(4, "$" + shop.getPrice()); + + return layout; + } +} +``` + +Then register it: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Your layout will now control all shop sign formatting. + +--- + +# Per-Type Layout Control + +Because the system no longer depends on the legacy ShopType enum, layouts can support: + +- Built-in types (BUYING, SELLING, FROZEN) +- Custom shop types +- Addon-defined shop types + +Your provider can determine layout logic dynamically: + +```java +@Override +public ShopLayout provideLayout(Shop shop) { + + if (shop.getShopType().key().equals("FROZEN")) { + return frozenLayout(shop); + } + + return defaultLayout(shop); +} +``` + +This allows conditional formatting, localization adjustments, or special event styling. + +--- + +# Advanced Customization + +A custom layout provider can: + +- Pull data from external plugins +- Inject dynamic placeholders +- Modify layout per player +- Apply formatting logic +- Override color schemes +- Apply region-based formatting +- Implement animated sign systems + +Because the layout provider is resolved at runtime, you can compute layouts dynamically instead of reading static config. + +--- + +# Replacing vs Extending the Default Provider + +You have two options: + +Replace entirely: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Or extend the default implementation: + +```java +public class ExtendedLayoutProvider extends SimpleShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + ShopLayout base = super.provideLayout(shop); + + base.setLine(1, "[Extended] " + base.getLine(1)); + + return base; + } +} +``` + +Extending is safer if you only want to modify small portions. + +--- + +# Best Practices + +Keep layout generation lightweight. + +Avoid: + +- Heavy database queries +- Blocking IO +- Complex network calls + +Layout generation runs during shop updates and sign refresh events. + +Always handle null values safely. + +Ensure layout line count does not exceed sign limits. + +Avoid hardcoding shop type names unless necessary. + +If your layout supports custom shop types, validate their keys properly. + +--- + +# Example Full Registration + +```java +public class LayoutAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + + manager.shopLayoutProvider(new MyCustomLayoutProvider()); + } +} +``` + +--- + +# Conclusion + +The Shop Layout Provider system allows complete control over shop sign structure. + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +``` + +And setting: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +You can redefine how every shop is displayed on the server. + +This system was designed to support: + +- Extensibility +- Custom shop types +- Localization +- Dynamic formatting +- Future expansion \ No newline at end of file diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/faq/compare-reremake.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/faq/compare-reremake.md index aaa1a9e507..6b39f02520 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/faq/compare-reremake.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/faq/compare-reremake.md @@ -64,7 +64,7 @@ If you are a Reremake user, you may be confused about the differences between Hi ## Which one should I use? Well, it depends on what your needs are.\ -If you have an old server (<1.20) instance, Reremake is your only choice.\ +If you have an old server ({'<'}1.20) instance, Reremake is your only choice.\ ~~If you are in China which has GFW interfere, you also should consider Reremake because it doesn't need to load libraries from Global Internet.~~ Solved in 6.0.0.0. If none of these applies, give Hikari a try! diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md index 551f579e7c..172be3a69b 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md @@ -1,8 +1,8 @@ # Where Addons/Compacts is -Addons and Compatilibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. +Addons and Compatibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. -- Open Modrinth versions page, locate the version your're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) +- Open Modrinth versions page, locate the version you're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) - Frantically slide your mouse wheel down until the lowest end of the page. - You get it! diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/internal/database-schema.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/internal/database-schema.md index fea685e4fc..45e04adb56 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/internal/database-schema.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/internal/database-schema.md @@ -4,17 +4,17 @@ This chapter will explain the implementation details of QuickShop Hikari's datab ## Tables -This section explains the database tables created by QuickShop-Hikari.\ -Unless otherwise specified, the initial `qs_` in table name is the table prefix.\ +This section explains the database tables created by QuickShop-Hikari. +Unless otherwise specified, the initial `qs_` in table name is the table prefix. For the latest code definition for each table, see: [DataTables.java](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/hikari/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/database/DataTables.java) ### `data` -This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information.\ -No matter what, a data record should not be modified after it is created, until it got deleted.\ +This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information. +No matter what, a data record should not be modified after it is created, until it got deleted. Any new changes to the shop should create a new copy, apply the changes to the copy, and insert it as a new record. -Basiclly, Copy-on-write. +Basically, Copy-on-write. A data record only be deleted from the database when no any table references their `data_id`. @@ -29,7 +29,7 @@ A data record only be deleted from the database when no any table references the | unlimited | BIT NOT NULL | 0 | Indicates whether this store is an unlimited store, 0=Limited, 1=Unlimited | | hologram | BIT NOT NULL | 0 | Indicates the suspension status of this store's display item, 0=Follow global settings, 1=Disabled | | tax_account | VARCHAR(36) | NULL | The uuid for tax account, If it is not NULL, tax will be paid to the specified account | -| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serilized to JSON string | +| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serialized to JSON string | | extra | LONGTEXT | Empty Yaml | Used to store experimental settings of QuickShop Hikari or persistent data of other plugins | | inv_wrapper | VARCHAR(255) NOT NULL | N/A | Unique identifier for InventoryWrapper for this shop data entry | | inv_symbol_link | TEXT NOT NULL | N/A | Unique Inventory symbol used to pass to InventoryWrapper, for locating inventory | @@ -38,7 +38,7 @@ A data record only be deleted from the database when no any table references the ### `shops` -This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes.\ +This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes. Multiple `shop_id` can correspond to the same `data_id`. | Column Name | DataType | Default | Description | diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/modules/cmd-alias.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/modules/cmd-alias.md index 53f1577685..e6ed381c0d 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/modules/cmd-alias.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/modules/cmd-alias.md @@ -23,7 +23,7 @@ custom-commands: - cshop ``` -Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect.\ +Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect. The effect should be like this: ![command-alias](./img/command-alias.png) diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/modules/datasource.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/modules/datasource.md index 6fc1bd8931..3fd3a8bdee 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/modules/datasource.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/modules/datasource.md @@ -48,7 +48,7 @@ Execute the `/quickshop export` command in console, quickshop will export a zip ![exported data](img/database-export.png) -Stop your database, switch the datasource, and start the server.\ +Stop your database, switch the datasource, and start the server. You may noticed all shops are gone, because new datasources had no data inside, we will restore them from export. Rename that exported ZIP file to `recovery.zip`, execute `/quickshop recovery` and restart your server, all shops should back. diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/modules/itemmatcher.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/modules/itemmatcher.md index 56be243019..922907be27 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/modules/itemmatcher.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/modules/itemmatcher.md @@ -4,7 +4,7 @@ ItemMatcher is a utility used by QuickShop-Hikari to compare the items, it is th :::caution -If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse.\ +If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse. **TL;DR: Keep default unless you know what you're doing.** ::: @@ -26,10 +26,10 @@ matcher: work-type: 1 ``` -By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility.\ +By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility. But still, you can toggle to QuickShop Item Matcher if you need to customize the comparing or running QuickShop on the server jar which have bug affect the Bukkit comparing system. -## Customize the metadata compareing +## Customize the metadata comparing Customize only works under QuickShop Item Matcher. diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md index fc2af69d2b..d04e8f2783 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md @@ -4,7 +4,7 @@ ItemStack Loader is a workaround for loading the Bukkit ItemStack. :::caution -Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossble. +Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossible. ::: diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/modules/localization.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/modules/localization.md index e9121e1a36..d47589ab9a 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/modules/localization.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/modules/localization.md @@ -10,7 +10,7 @@ To help translate QuickShop-Hikari, please visit our [Crowdin Homepage](https:// ## Crowdin OTA -QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will overrided when you reload QuickShop-Hikari or restart your server. +QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will override when you reload QuickShop-Hikari or restart your server. Your installation will keep translations up-to-date without any touch. @@ -110,6 +110,16 @@ To disable the CrowdinOTA, please add it in the startup flag: -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager.enableCrowdinOTA=false ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +use-crowdin-ota: false +``` + ### Self-Hosted OTA Server If you self-hosted our translation server by using [CrowdinCopyDeploy](https://github.com/Ghost-chu/CrowdinCopyDeploy) tool, you're able to change the OTA server to yourself server. @@ -118,4 +128,12 @@ If you self-hosted our translation server by using [CrowdinCopyDeploy](https://g -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager= ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml +Use + +```yaml +crowdin-host: +``` \ No newline at end of file diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/modules/shops/benefit.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/modules/shops/benefit.md index 4d7a9c8f42..c59d92e6d1 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/modules/shops/benefit.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/modules/shops/benefit.md @@ -37,3 +37,13 @@ By default, for security, QuickShop-Hikari disallow add offline players into sho ```bash -Dcom.ghostchu.quickshop.command.subcommand.SubCommand_Benefit.allowOffline=true ``` + +### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +shop.allow-offline-benefit: true +``` \ No newline at end of file diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/modules/shops/control-panel b/i18n/pt-BR/docusaurus-plugin-content-docs/current/modules/shops/control-panel new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/modules/shops/control-panel @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/modules/shops/history.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/modules/shops/history.md index fa891adeab..195b64a042 100644 --- a/i18n/pt-BR/docusaurus-plugin-content-docs/current/modules/shops/history.md +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/modules/shops/history.md @@ -24,7 +24,7 @@ The History GUI displays the details of each recorded transaction and other usef ### Transaction details -When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed.\ +When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed. If you are checking the history of more than one store, the player head will be replaced with an item from the corresponding store. ![history-gui](./img/history-gui.png) diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md new file mode 100644 index 0000000000..c5ed3b3fe4 --- /dev/null +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md @@ -0,0 +1,90 @@ +# Shop Types + +QuickShop supports multiple shop types, allowing shops to behave differently depending on their mode. + +The built-in shop types are: + +- Selling +- Buying +- Frozen + +Each type changes how the shop interacts with players. + +--- + +## Selling Shop + +A Selling shop allows players to: + +- Buy items from the shop owner +- Pay money to receive items + +This is the most common shop type. + +--- + +## Buying Shop + +A Buying shop allows players to: + +- Sell items to the shop owner +- Receive money in exchange + +This is commonly used for: + +- Resource collection +- Server buy-back shops +- Automated material sinks + +--- + +## Frozen Shop + +A Frozen shop temporarily disables trading. + +While frozen: + +- No buying is allowed +- No selling is allowed +- The shop remains intact +- Staff or admins can manage it + +This is useful for: + +- Temporary suspensions +- Investigation +- Event locking +- Maintenance + +--- + +## Switching Shop Types + +Shop types can be changed through: + +- Control panel +- GUI control panel +- Admin commands + +Frozen mode is also available via: + +/qs freeze + +--- + +## Custom Shop Types + +As of 6.2.x, the system supports extensible shop types internally. + +While server owners use the built-in types, the system now allows future expansion through addons. + +--- + +## Summary + +Shop types allow you to: + +- Control how money flows +- Enable buy-back mechanics +- Temporarily disable shops +- Build advanced economic systems \ No newline at end of file diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md new file mode 100644 index 0000000000..18e0a47407 --- /dev/null +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md @@ -0,0 +1,217 @@ +# Sign Layout + +QuickShop allows you to fully customize how shop signs are structured. + +You can change: + +- What appears on each line +- The order of information +- Layout per shop type +- Whether certain lines are blank + +This gives you complete control over how shops look on your server. + +--- + +## How Sign Layout Works + +Shop signs have four lines. + +Instead of being hardcoded, QuickShop uses a configurable layout system. + +Each shop type can have its own layout: + +- SELLING +- BUYING +- FROZEN + +You define what each line displays using layout keys. + +--- + +## Configuration Location + +Sign layout is configured in `config.yml` under: + +```yaml +layout: +``` + +Example default configuration: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## Available Layout Keys + +Each line value refers to a built-in layout component. + +Common layout keys include: + +- `header` – The shop header line +- `trading` – Buy/Sell direction information +- `item` – Item name +- `price` – Shop price + +These keys are automatically formatted using your language file and formatting settings. + +--- + +## Leaving a Line Blank + +To leave a line empty, use: + +```yaml +line2: "" +``` + +This is useful if you want: + +- Minimalist signs +- Cleaner layouts +- Custom spacing +- Decorative formatting + +--- + +## Customizing Per Shop Type + +Each shop type can have a different layout. + +For example: + +```yaml +layout: + + SELLING: + line1: "header" + line2: "item" + line3: "price" + line4: "" + + BUYING: + line1: "header" + line2: "price" + line3: "item" + line4: "" + + FROZEN: + line1: "header" + line2: "" + line3: "item" + line4: "Frozen" +``` + +This allows you to visually differentiate: + +- Selling shops +- Buying shops +- Frozen shops + +--- + +## Practical Examples + +### Minimal Style + +```yaml +layout: + SELLING: + line1: "item" + line2: "price" + line3: "" + line4: "" +``` + +### Compact Economy Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "price" + line3: "item" + line4: "" +``` + +### Large Clear Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## How Updates Affect Layout + +When you change the layout: + +- Existing shop signs will update automatically when refreshed. +- New shops will use the updated format immediately. + +If needed, you can reload QuickShop to apply changes. + +--- + +## Best Practices + +- Keep important information visible (price and item). +- Avoid overly complex formatting. +- Test layout changes before deploying on large servers. +- Use different layouts for BUYING and SELLING to reduce confusion. + +--- + +## Common Questions + +### Can I add more than four lines? + +No. +Minecraft signs are limited to four lines. + +### Can I add colors? + +Colors are controlled by your language file and formatting settings. + +### Can I change layout without restarting? + +Yes, but reloading or refreshing shops is recommended to ensure full update. + +--- + +## Summary + +The Sign Layout system allows you to: + +- Fully customize shop sign appearance +- Create per-type layouts +- Simplify or expand shop information +- Improve clarity for players + +All layout customization is handled inside `config.yml`. diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md new file mode 100644 index 0000000000..980bad10f2 --- /dev/null +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md @@ -0,0 +1,130 @@ +# Shop Sign Waxing + +QuickShop can automatically wax shop signs to prevent players from editing them manually. + +Waxing protects the integrity of your shop signs and helps prevent tampering, spoofing, and accidental modification. + +As of modern Minecraft versions, waxed signs cannot be edited unless they are unwaxed first. + +--- + +## What Is Sign Waxing? + +In Minecraft, waxing a sign locks it so that: + +- Players cannot edit the text +- Players cannot modify lines +- Accidental changes are prevented +- Malicious edits are blocked + +When enabled in QuickShop, shop signs are automatically waxed when created. + +--- + +## Why Use It? + +Sign waxing protects against: + +- Players editing price lines +- Changing item names on signs +- Spoofing shop information +- Accidental formatting issues +- Sign hijacking attempts + +On public servers, this feature is strongly recommended. + +--- + +## How It Works + +When a shop is created: + +1. QuickShop generates the shop sign. +2. The sign text is written. +3. The sign is automatically waxed (if enabled). + +If a shop is updated: + +- The sign will be safely updated by QuickShop. +- The wax state is maintained. + +Players cannot manually edit shop signs while waxing is enabled. + +--- + +## Configuration + +To enable or disable sign waxing, edit `config.yml`: + +```yaml +shop: + sign-wax: true +``` + +### true + +- Shop signs are automatically waxed. +- Players cannot edit the sign manually. + +### false + +- Shop signs behave like normal Minecraft signs. +- Players may edit them if permitted by the game. + +--- + +## Recommended Setting + +For most servers: + +```yaml +shop: + sign-wax: true +``` + +This ensures shop data stays accurate and secure. + +--- + +## Common Questions + +### Can admins still modify shop signs? + +QuickShop controls shop sign formatting. +Manual edits are not recommended. + +Admins should use: + +- Control panel +- Shop commands +- Direct configuration changes + +### Does waxing affect shop functionality? + +No. +Waxing only prevents manual text edits. +The shop continues to function normally. + +### Can players un-wax shop signs? + +No. +QuickShop manages the sign state automatically. + +--- + +## Best Practices + +- Keep sign-wax enabled on survival servers. +- Combine sign-wax with proper permissions. +- Avoid manually editing shop signs through other plugins. + +--- + +## Summary + +Sign Waxing: + +- Prevents tampering +- Requires no additional setup + +Enable it once and QuickShop handles the rest. \ No newline at end of file diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/modules/shops/taxes.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/modules/shops/taxes.md new file mode 100644 index 0000000000..1a273fd978 --- /dev/null +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/modules/shops/taxes.md @@ -0,0 +1,92 @@ +# Taxation System + +QuickShop includes a taxation system designed to give server owners more flexibility and control over shop-based income. + +This system was revamped as of 6.2.0.11+ + +The new system allows you to: + +- Apply tax to shop owners +- Apply tax to buyers +- Apply tax to both +- Use progressive tax brackets +- Customize tax behavior in configuration + +This system replaces the legacy tax configuration. + +--- + +## How It Works + +During a transaction: + +1. The shop price is calculated. +2. Tax is calculated based on your configuration. +3. Tax is deducted from the configured target(s). +4. Remaining funds are distributed normally. + +You can configure: + +- Flat percentage tax +- Progressive tax based on player balance +- Tax accounts +- Distribution rules + +--- + +## Progressive Tax + +The new system allows you to tax based on balance brackets. + +Example concept: + +- 0 – 10,000 balance → 1% tax +- 10,000 – 100,000 → 2% tax +- 100,000+ → 3% tax + +This helps prevent extremely wealthy players from dominating the economy. + +--- + +## Who Pays the Tax? + +You can configure whether tax applies to: + +- The shop owner +- The buyer +- Both + +This gives you flexibility depending on your economy design. + +--- + +## Configuration + +All tax-related settings are located under the `shop-tax` section in `config.yml`. + +After updating to 6.2.0.11+, review your tax configuration carefully, as the old tax system has been replaced. + +--- + +## Why Use Tax? + +The taxation system can help: + +- Remove currency from circulation +- Fund server banks or towns +- Create sink mechanics +- Balance inflation +- Reward active players + +--- + +## Summary + +The new taxation system is: + +- Flexible +- Configurable +- Balance-aware +- Designed for modern economy servers + +Make sure to review your configuration after upgrading. \ No newline at end of file diff --git a/i18n/pt-BR/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md b/i18n/pt-BR/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md new file mode 100644 index 0000000000..247c24712d --- /dev/null +++ b/i18n/pt-BR/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md @@ -0,0 +1,161 @@ +# WorldEdit & FAWE Support + +QuickShop includes built-in protection and integration for WorldEdit and FastAsyncWorldEdit (FAWE). + +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. + +You do not need to download or install any additional compatibility plugins. + +--- + +## What This Does + +WorldEdit and FAWE allow administrators and builders to: + +- Copy and paste regions +- Replace large areas of blocks +- Mass-delete regions +- Roll back areas +- Regenerate terrain + +Without protection, these operations could: + +- Create ghost shops +- Leave orphaned shop data in the database +- Duplicate shops unintentionally +- Delete containers without cleaning up shop data +- Cause inconsistencies between world and database + +QuickShop now automatically detects and safely processes WorldEdit and FAWE operations. + +--- + +## Built-In Behavior + +When WorldEdit or FAWE modifies blocks: + +- Shops removed via WorldEdit are properly deleted from the database. +- Shop data stays synchronized with world changes. +- Ghost shops are prevented. +- Mass block replacements will not leave broken shop entries behind. + +This applies to: + +- //set +- //replace +- //cut +- //paste +- //regen +- Region deletion +- Mass container removal + +No configuration is required. + +--- + +## FAWE Support + +FastAsyncWorldEdit (FAWE) is fully supported. + +Because FAWE processes edits asynchronously, QuickShop handles: + +- Region-thread safe processing +- Async block updates +- Safe shop deletion during batch edits + +You do not need to enable anything manually. + +--- + +## Removing Shops with WorldEdit + +If you delete containers (chests, barrels, etc.) using WorldEdit: + +QuickShop will automatically: + +- Detect the block removal +- Unregister the shop +- Clean the database entry +- Prevent ghost shops + +You do not need to run `/qs cleanghost` after WorldEdit usage in normal circumstances. + +--- + +## Copying and Pasting Shops + +If you copy and paste regions that contain shops: + +- Shop data will not duplicate incorrectly. +- Shop IDs remain consistent. +- Invalid pasted shops will not auto-register unless properly created. + +This prevents accidental duplication exploits. + +--- + +## Performance + +WorldEdit and FAWE operations can modify thousands of blocks at once. + +QuickShop processes these safely and efficiently: + +- Batch-aware cleanup +- Thread-safe region access (especially on Folia) +- Minimal performance impact during mass edits + +--- + +## Configuration + +There are no specific WorldEdit configuration options in QuickShop. + +Support is automatic and always enabled if WorldEdit or FAWE is detected. + +If WorldEdit is not installed, no extra code is executed. + +--- + +## Common Questions + +### Do I need the old WorldEdit compatibility jar? + +No. + +As of 6.2.0.11, WorldEdit support is built-in and the separate compatibility module has been removed. + +### Does this work with FAWE? + +Yes. FAWE is fully supported. + +### Will shops break if I use //set air? + +No. Shops will be safely removed and cleaned up. + +### Do I need to restart after installing WorldEdit? + +No. QuickShop detects WorldEdit automatically on startup. + +--- + +## Best Practices + +Even though QuickShop safely handles WorldEdit operations, it is recommended to: + +- Avoid copying shops intentionally unless required +- Use backups before large region edits +- Test large FAWE operations on staging servers when possible + +--- + +## Summary + +QuickShop’s built-in WorldEdit and FAWE integration ensures: + +- Safe mass edits +- No ghost shops +- Automatic database cleanup +- Thread-safe processing +- No extra modules required + +WorldEdit support is now a core feature of QuickShop. \ No newline at end of file diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/addon/limited.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/addon/limited.md index 70af27e240..fae55a8c95 100644 --- a/i18n/pt-PT/docusaurus-plugin-content-docs/current/addon/limited.md +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/addon/limited.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -41,8 +35,8 @@ Limit players to purchase up to 16 items per month. /quickshop limit period MONTH ``` -The system is based on the QuickShop-Hikari calendar system.\ -The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year.\ +The system is based on the QuickShop-Hikari calendar system. +The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year. Same for days, months and hours. Available time units: diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/addon/list.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/addon/list.md index 93d182f083..f20b91fd7b 100644 --- a/i18n/pt-PT/docusaurus-plugin-content-docs/current/addon/list.md +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/addon/list.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/addon/plan.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/addon/plan.md index 52a6e79cb4..c10ef4df42 100644 --- a/i18n/pt-PT/docusaurus-plugin-content-docs/current/addon/plan.md +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/addon/plan.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -18,7 +18,7 @@ Recorded data can be displayed from Hikari v2.0.0.0 onwards, but only after vers - All shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 1000 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `5` in server scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `5` in server scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Player Scope @@ -27,7 +27,7 @@ And still is Plan limitations, the list sorting is disturbed, so the display ord - All owned shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 50 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `4` in player scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `4` in player scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Showcase diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/addon/reforges.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/addon/reforges.md index 2a14509eb7..25fff1752a 100644 --- a/i18n/pt-PT/docusaurus-plugin-content-docs/current/addon/reforges.md +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/addon/reforges.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.0.0.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md index 304d39bc05..6f9f51d250 100644 --- a/i18n/pt-PT/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.1.1.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -44,7 +38,7 @@ _This is not necessary if you are using an H2 database._ ### Prepare for convert -To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console.\ +To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console. If a player is in the server, the conversion cannot be started. Once the conversion has begun, the server will be locked during the conversion process and no players will be able to join the server during the conversion. diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/addon/shopitemonly.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/addon/shopitemonly.md index c45062f8c2..1ccfe977b3 100644 --- a/i18n/pt-PT/docusaurus-plugin-content-docs/current/addon/shopitemonly.md +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/addon/shopitemonly.md @@ -2,17 +2,11 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT - -::: - -This addon prevents players from putting non-store items into store containers.\ +This addon prevents players from putting non-store items into store containers. Does not apply to stores that use the item inventory redirection API (aka. InventoryWrapper API). This Addon will check for container (or transferring) items on events such as the player closing the container or hopper access. diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md new file mode 100644 index 0000000000..9c8b4f7407 --- /dev/null +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md @@ -0,0 +1,55 @@ +# 6.2.0.10 + +## Major Changes + +- Added support for 1.21.6 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.7 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.8 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Some internal updates for packetevents(2.9.0 is now required.) +- Updated Lands support + +## Addon Changes + +- Added MatcherPlus Addon + - Allows support for BreweryX and AdvancedItems stacks in shops with improved matching abilities +- Added FabledSkyblock Compat +- Added Dominion Compat +- Added HuskTowns Compat +- Added IridiumSkyblock Compat +- Added member-create for member creation in ARM compat +- Added admin-override and quickshop.arm.admin permission for admin overrides in ARM + +## Minor Changes + +- Added configurations for the coordinates of the display item. +- Added /qs toggledisplayall on/off server/owned + - Players need to have permission node quickshop.toggledisplayall.admin to toggle all on the server. +- Added ability to use abbreviations in /qs price and /qs create commands such as 2.5k for 2500 +- Added ability to set default display status using shop.default-display in config.yml + +## Fixes + +- Fixed issue with display item being sent to the moon on 1.21.5 +- Fixed issue where TRADE_UI interactions interfered with quick create. +- Fixed issue with displays on protocollib falling through the chest +- Fixed issue with signs on .9 and previous .10 snapshots on early versions +- Implemented some performance improvements for paper servers +- Fixed all outstanding issues with Folia usage.(thanks to RootB33R/SleazLee for contributions) + +## Possible 6.2.0.11 Features + +Here's an outline for some features that may arrive in 6.2.0.11: + +- Additional compats/addons that have been piling up. + - see: https://github.com/QuickShop-Community/QuickShop-Hikari/issues/1756 +- gradle?(interested to see compilation time uplifts) +- Update documentation +- Update configuration comments +- Update configuration system? + - auto updating? + - Allows removal of the update code +- Remove waste spigot modules? + - Any versions of 1.20 that can be discarded due to low use? +- Bug fixing, of course +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... \ No newline at end of file diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md new file mode 100644 index 0000000000..b41c88662a --- /dev/null +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md @@ -0,0 +1,173 @@ +## Outline + +- Update documentation +- Update configuration comments +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... + +# 6.2.0.11 + +## Major Changes + +- Removed Spigot Platform Modules, and stopped loading QS if Spigot is detected. This will mean that unless the protocol changes that we use for display items, QS won't need updated for each version. +- Revamped Economy Code Completely + - New classes for all economy-related systems + - Any economy-related or benefits-related events are incompatible with previous versions. +- Added sign layout customizations per-type allowing you to change how lines are configured, an empty string('') will leave an empty line for that line of the sign. + +``` + #The layout of signs for shops. + layout: + + #The layout of BUYING shops. + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of FROZEN shops. + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of SELLING shops. + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +- Add wildcard support for item blacklist patterns(thanks to bennycallanan) + - Added support for wildcard patterns in the item blacklist configuration, allowing users to block entire categories of items with simple patterns. + + - Features + - Wildcard patterns like \*_AXE and \*_SPAWN_EGG now work in blacklist configuration + - Supports \* for any characters and ? for single character matching + - Case-insensitive pattern matching +- Overhauled GUI system(thanks to Yusakidev) + - Implemented gui.yml configuration file for customizing the GUI. + - Implemented better filtering for qs browse + - Implement GUI system to be more stable, and less error prone. + - Added gui.yml for fully configurable GUI layouts and text + - Browse menu: search, sort (price/name/stock), and filter (all/buying/selling/in-stock) + - Staff menu: search functionality for player/staff selection + - Grouped item pages for better shop browsing + - Refactored all menu pages to use configurable display/lore +- Added worldedit compat to QS internally as it's widely used. +- Revamped the taxation system to be more flexible and easier to configure. + - introduced a new progressive tax system that allows you to tax based on the balance of players.(suggested by YuanYuanOwO) + - introduced the ability to tax the player interacting with the shop, the owner, or both + - all tax-related configurations have been moved under the shop-tax section of the config. this may require reconfiguration of your tax settings. + - added a new ShopEnhancedTaxEvent, deprecated the old ShopTaxEvent. + - Added a new TaxManager, and TaxProvider interfaces, this allows for custom tax providers to be added by addons/third-party developers. + +## Addons/Compats Changes + +- Added UltimateClaims compat +- Added SimpleClaimSystem compat +- Added Quests by Pika addon +- Added BetonQuest addon +- Added Pl3xMap addon +- MatcherPlus Compat Improvements + - Added support for CrazyCrates + - Added support for ExcellentCrates + - Added support for SilkSpawners. +- WorldGuard Compat Improvements(Thanks to golovin12) + - Added clear permission handling: + - Region owners and members automatically have permission to create and trade in their own regions. + - Other players must have the appropriate WorldGuard flags enabled (quickshophikari-create, quickshophikari-trade) to interact with shops. + - If a shop is located outside any region, default QuickShop behavior applies (no extra restrictions) +- Added colored markers based on shop state for bluemap(thanks to YusakiDev) +- Updated dynmap/towny addons to use the new ShopTypeEnhancedEvent instead of ShopTypeEvent. +- Removed worldedit compat, it's now included in the main plugin. +- Added support for global flags to the worldguard compat. + +## Internals/Developer APIs + +- Removed several deprecated methods and classes. +- Revamped the interaction manager. It is now more flexible and allows external additions + - This involves two classes InteractionBehavior and InteractionType. + - InteractionType details the type of interaction such as: STANDING_LEFT_CLICK_SIGN, STANDING_LEFT_CLICK_SHOP + - InteractionBehavior outlines a behavior for an InteractionType such as CONTROL_PANEL and TRADE_UI +- Added UserLimitCalculationEvent, which allows for custom limits to be applied to users. + - This is useful for limiting the number of shops a user can have, or adding on to the existing limits provided by the ranks system without needing to implement a new RankLimiter. +- Added a new ShopLayoutProvider interface, and default implementation. + - This allows for custom layouts to be used for shops, allowing for more customization. + - This also allows for developers to override the default layout provider and create their own implementation. +- How to make your own? + - Implement the classes you would like to then register with the InteractionManager: + - ```java + InteractionManager manager = QuickShop.getInstance().getInteractionManager(); + + manager.interaction(new MyTradeInteraction()); + manager.behavior(new MyTradeBehavior()); + ``` +- Replaced some Apache Commons calls that could be easily replaced with built-in java methods, reduces some calls by ~ 1100ms/method call +- Deprecated the ShopType enum, and the ShopTypeEvent. These are replaced with the new IShopType interface and implementing classes. + - The new event is ShopTypeEnhancedEvent. + - This allows for third-party addons to add their own shop types, and simplifies code checks for translations. +- Updated config system to use Boosted-yaml + - this allows for auto-updating of config files without complex update scripts + - this also allows for the config system to not be minecraft-dependent. +- Replaced logical PaperLib calls with native PaperAPI calls. + +## Minor Changes + +- Bump Java version up to 21 +- Added shop.display-allow-enchants to enable/disable enchantments for display items on shops. +- Added workaround for packetevents not supporting custom enchants on itemstacks for virtual display items. +- Using locale translations for shop-type in mode toggle icon(thanks to ExyiN) +- Bumped Residence version for the compat(thanks to YuanYuanOwO) +- add world whitelist support(thanks to wling-art) +- added /qs database save command, which saves all currently dirty-marked shops to the database. +- Split up interactions _SHOPBLOCK into _SHOPBLOCK and _CONTAINER. + - _SHOPBLOCK relates to shops, where _CONTAINER relates to shop-valid containers that are not currently shops. +- Added inventory as an option for command panel, this is useful for adding a secondary option for players to open a shop's inventory. +- Moved crowdin arguments from system properties to config.yml + - crowdin-host + - use-crowdin-ota + +## Fixes + +- Fixes issue with item price restrictions(thanks to maxcom1) +- Fixes issue with 1.20.x protocol lib displays(thanks to YuanYuanOwO) +- Fixes issue when no item is in hand for itemdebug(thanks to YuanYuanOwO) +- Fixes issue with dominion addon(thanks to YuanYuanOwO) +- Add a simple check to avoid this. If it is not own shop, reject limit request directly.(Thanks to YuanYuanOwO) +- Fix NPE by not setting tax for price in TransactionBuilder(thanks to maxcom1) +- Fixes /quickshop suggestprice to differentiate between buy/sell shops. (Thanks to MidSpike) +- PacketEvents ClassNotFoundException with ProtocolLib(thanks to wling-art) +- Reallocate block state access to region thread for shop creation(thanks to r00tbeerman) +- resolve SLF4J StaticLoggerBinder loading error(thanks to wling-art) +- sign hijacking issue by validating sign facing direction(thanks to wling-art) +- Performance improvements for QuickShop disabling to prevent potential freezes. +- Fixed issue with 1.20.4 packetevents virtual displays not staying put. +- Fixes critical issue in GriefPrevention compatibility plugin. +- Fixes issue with shop owner not getting money when benefits active. +- Fixes for lands addon on folia, Use regionThread for Folia compatibility(thanks to YusakiDev) +- Fixes for TRADE_DIRECT on stacking shops +- Fixes issue for protocollib 5.4.0 with undocumented packet changes. +- Fixes issue where item stacks could be used on creation above the max stack size. +- Fixes issue with BukkitAudiences-related crashes on 1.21.11. +- Fix issue with shop deletion when getting too impatient. +- Fix the permission check issue when a shop owned by a non-owner is transferred to someone else. (thanks to YuanYuanOwO) +- Fix ui with supertool (thanks to YuanYuanOwO) +- Fix issue with logs generating outside debug mode. +- Fix issue with /qs find. +- Fix configuration loading timing. +- Fix configuration loading/creation warning message language. +- Fix command description language key mismatch(thanks to wling-art) +- Fix qs clean command on folia(thanks to wling-art) +- Fix per-player-shop-sign on folia(thanks to wling-art) +- Fix potential recursive deadlock in virtual display packet sending(thanks to wling-art) +- Fix configuration loading/creation warning message language. +- Fix issue with /qs browse and ShopItemOnly addon not behaving properly together on folia. +- Fix issue with PLAN using outdated APIs. +- Fix issue with /qs clean on folia.(thanks to wling-art) +- Fix issue with /qs cleanghost on folia(thanks to wling-art) +- More thread safety fixes for shops on folia.(thanks to wling-art) +- Fix owner payment calculations with benefits(thanks to wling-art) \ No newline at end of file diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md index 8172f9b410..dcc3edc67d 100644 --- a/i18n/pt-PT/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md @@ -20,20 +20,20 @@ the ControlComponent object with a custom one that will replace the original dur ### Introduction of the Revamped Packet System 1. **About**: - - A modular and scalable system for managing packets related to virtual display items in Minecraft. - - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. + - A modular and scalable system for managing packets related to virtual display items in Minecraft. + - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. 2. **Custom Packet Factories**: - - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. - - Packet types: - - **Spawn Packet**: Spawns a virtual item entity at a specific location. - - **Metadata Packet**: Updates the visual properties of virtual items. - - **Velocity Packet**: Adds motion/velocity to entities (currently optional). - - **Destroy Packet**: Removes the entity from the client view. + - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. + - Packet types: + - **Spawn Packet**: Spawns a virtual item entity at a specific location. + - **Metadata Packet**: Updates the visual properties of virtual items. + - **Velocity Packet**: Adds motion/velocity to entities (currently optional). + - **Destroy Packet**: Removes the entity from the client view. 3. **Error Handling and Logging**: - - Enhanced debug logs to trace packet-related issues. - - Detailed error messages for missing factories or unregistered listeners. + - Enhanced debug logs to trace packet-related issues. + - Detailed error messages for missing factories or unregistered listeners. #### Improvements: diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md index 7775308722..c6e0948d19 100644 --- a/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md index f420997a9c..38587e3784 100644 --- a/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md index 5ed8182c9a..259c55f342 100644 --- a/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md index 924a37ac49..7fd4596a6a 100644 --- a/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,6 +10,6 @@ This is a BungeeCord plugin, you need install it within your BungeeCord's plugin ## How does it work? -BungeeCord Bridge plugins will register a `quickshop:bungee` channel for fowarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. +BungeeCord Bridge plugins will register a `quickshop:bungee` channel for forwarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. All forwarding is indicated by QuickShop-Hikari on the Spigot server and ends when it is not needed. diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md index 27d68956a8..20fbaf7a0c 100644 --- a/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,5 +10,5 @@ This compatibility module added [Chest Protect](https://www.spigotmc.org/resourc ## How does it work? -This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident.\ +This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident. It also prevents players from creating shops on ChestProtect protected containers. diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md index 220e26d8bb..e1757e7be9 100644 --- a/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/dominion.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/dominion.md new file mode 100644 index 0000000000..e1195278a8 --- /dev/null +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/dominion.md @@ -0,0 +1,138 @@ +# Dominion + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and Dominion. + +It ensures that shop creation and trading respect Dominion’s land and territory protection system. + +--- + +## What Does It Do? + +Dominion allows players or groups to claim land and define territory-based permissions. + +Without compatibility: + +- Players could create shops inside territories they do not control. +- Visitors might trade inside protected dominions. +- Dominion permission rules might not apply to shop interactions. + +The Dominion compat module ensures that: + +- Shop creation respects territory ownership. +- Shop trading follows Dominion permission settings. +- Protected land remains secure from unauthorized shop usage. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a Dominion-controlled area. +- Whether the player has permission within that territory. +- Whether Dominion rules allow shop interaction. + +If the action is not permitted by Dominion settings, QuickShop blocks it. + +If the location is outside any Dominion territory, default QuickShop behavior applies. + +--- + +## Territory Owner Control + +With this module enabled: + +- Territory owners can create and manage shops inside their dominion. +- Trusted members follow territory-based permissions. +- Outsiders are restricted unless explicitly allowed. +- Shop actions respect Dominion’s land rules automatically. + +This prevents unauthorized shop placement inside protected territories. + +--- + +## Installation + +1. Install Dominion. +2. Install the QuickShop Dominion compat module. +3. Restart your server. + +The module activates automatically if Dominion is detected. + +No manual configuration linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside dominions +whitelist-mode: false + +# Allow territory owners to override shop permissions +allow-owner-override: true +``` + +If Dominion is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For servers using Dominion: + +- Restrict shop creation to territory owners or trusted members. +- Prevent shop creation in wilderness if desired. +- Allow dominion owners to manage shop permissions. +- Review Dominion permission settings to align with shop behavior. + +This ensures protected territories remain secure and organized. + +--- + +## Common Questions + +### Can players create shops in someone else's dominion? + +Only if Dominion permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You may allow or restrict shops outside dominions. + +### What happens if Dominion is removed? + +QuickShop returns to normal behavior and stops checking Dominion territories. + +--- + +## Summary + +The Dominion compat module: + +- Enforces territory-based permissions +- Prevents unauthorized shop creation +- Protects claimed land from misuse +- Integrates seamlessly with Dominion + +It is recommended for servers running Dominion. \ No newline at end of file diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md index 743d3ae666..2ac9b10488 100644 --- a/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md new file mode 100644 index 0000000000..07ba4ada66 --- /dev/null +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md @@ -0,0 +1,133 @@ +# FabledSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and FabledSkyblock. + +It ensures that shop creation and trading properly respect island boundaries and island permissions. + +--- + +## What Does It Do? + +On Skyblock servers, players build and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Players might trade in areas they should not. +- Island protection rules might not apply to shops. + +The FabledSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members behave correctly with shops. +- Island visitors are restricted appropriately. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a FabledSkyblock island. +- Whether the player has permission on that island. +- Whether island settings allow the action. + +If the action is not permitted by island rules, QuickShop will deny it. + +--- + +## Island Ownership Rules + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow island permission settings. +- Visitors can only trade if island permissions allow it. +- Outside of islands, default QuickShop behavior applies. + +--- + +## Installation + +1. Install FabledSkyblock. +2. Install the QuickShop FabledSkyblock compat module. +3. Restart your server. + +The module activates automatically if FabledSkyblock is detected. + +No manual linking is required. + +--- + +## Configuration + +If the module provides configuration options, they will appear in its `config.yml`. + +Typical options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If FabledSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most Skyblock servers: + +- Allow shop creation only inside islands. +- Prevent trading in the void or wilderness. +- Let island owners control shop permissions. +- Use island rank systems to manage shop access. + +This helps maintain economic balance between islands. + +--- + +## Common Questions + +### Can players create shops in the void? + +Only if your configuration allows it. +Most servers disable shop creation outside islands. + +### Does this affect island war or PvP modes? + +No. +The module only checks island ownership and permissions for shop interactions. + +### What happens if FabledSkyblock is removed? + +QuickShop returns to normal behavior. + +--- + +## Summary + +The FabledSkyblock compat module: + +- Protects island economies +- Enforces island permission rules +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is strongly recommended for any server running FabledSkyblock. \ No newline at end of file diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md index 81b13d2c6b..32614d3019 100644 --- a/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md @@ -2,17 +2,17 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -GreifPrevention compatibility module added compaitibility with GF. +GreifPrevention compatibility module added compatibility with GF. ## How does it work This module allow QuickShop-Hikari check if player have permission to create or use QuickShop in specific region. -And delete shops when claim removed, untrusted, unclimed, expired, resized or subclaim created. +And delete shops when claim removed, untrusted, unclaimed, expired, resized or subclaim created. ## Configuration diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md new file mode 100644 index 0000000000..e71b34d462 --- /dev/null +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md @@ -0,0 +1,139 @@ +# HuskTowns + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and HuskTowns. + +It ensures that shop creation and trading respect town and claim permissions defined by HuskTowns. + +--- + +## What Does It Do? + +HuskTowns allows players to create towns and claim land. + +Without compatibility: + +- Players could create shops inside towns they do not belong to. +- Visitors might trade inside protected towns. +- Town permission rules might not apply to shop interactions. + +The HuskTowns compat module ensures that: + +- Shop creation respects town ownership. +- Trading follows town permission settings. +- Town members and visitors are handled correctly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a HuskTowns claim. +- Whether the player is a town member, trusted player, or outsider. +- Whether the town's permission settings allow the action. + +If the action is not permitted by town rules, QuickShop blocks it. + +Outside of town claims, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Town Owner Control + +With this module enabled: + +- Town owners can create and manage shops inside their town. +- Town members follow town-based permission settings. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect town claim protection. + +This prevents unauthorized shop placement and trading inside protected towns. + +--- + +## Installation + +1. Install HuskTowns. +2. Install the QuickShop HuskTowns compat module. +3. Restart your server. + +The module activates automatically if HuskTowns is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside towns +whitelist-mode: false + +# Allow town owners to override shop permissions +allow-owner-override: true +``` + +If HuskTowns is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For town-based survival servers: + +- Restrict shop creation to town members. +- Allow trading only where town permissions permit. +- Prevent shop creation in wilderness if desired. +- Enable owner override for better administrative control. + +This helps maintain town-based economic balance. + +--- + +## Common Questions + +### Can players create shops in another town? + +Only if that town's permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You can allow or restrict shops outside towns. + +### What happens if HuskTowns is removed? + +QuickShop returns to normal behavior and stops checking town permissions. + +--- + +## Summary + +The HuskTowns compat module: + +- Enforces town-based land permissions +- Protects towns from unauthorized shop usage +- Integrates smoothly with HuskTowns +- Requires minimal setup + +It is recommended for any server running HuskTowns. \ No newline at end of file diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md new file mode 100644 index 0000000000..3fa2995eb0 --- /dev/null +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md @@ -0,0 +1,139 @@ +# IridiumSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and IridiumSkyblock. + +It ensures that shop creation and trading respect island boundaries and island permission settings defined by IridiumSkyblock. + +--- + +## What Does It Do? + +IridiumSkyblock allows players to create and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Visitors might trade inside protected islands. +- Island protection rules might not apply correctly to shops. + +The IridiumSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members and visitors are handled properly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside an IridiumSkyblock island. +- Whether the player is the island owner, member, or visitor. +- Whether island permissions allow shop interaction. + +If the action is not permitted, QuickShop blocks it. + +Outside of islands, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Island Owner Permissions + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow the island's permission configuration. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect island protection rules. + +This prevents unauthorized shop usage inside protected islands. + +--- + +## Installation + +1. Install IridiumSkyblock. +2. Install the QuickShop IridiumSkyblock compat module. +3. Restart your server. + +The module activates automatically if IridiumSkyblock is detected. + +No additional setup is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If IridiumSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most IridiumSkyblock servers: + +- Restrict shop creation to island owners. +- Allow island members to trade if trusted. +- Prevent shop creation in the void or wilderness. +- Enable owner override for better management. + +This helps maintain balanced island economies. + +--- + +## Common Questions + +### Can players create shops outside their island? + +Only if your configuration allows it. + +Most Skyblock servers restrict shops to island areas. + +### Do island ranks affect shop permissions? + +Yes, if your island permissions are configured to control interaction rights. + +QuickShop follows island rules. + +### What happens if IridiumSkyblock is removed? + +QuickShop returns to normal behavior and stops checking island permissions. + +--- + +## Summary + +The IridiumSkyblock compat module: + +- Protects island economies +- Enforces island-based permissions +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is recommended for any server running IridiumSkyblock. diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md new file mode 100644 index 0000000000..3b4726cb9d --- /dev/null +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md @@ -0,0 +1,151 @@ +# ItemMatcherPlus + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +The ItemMatcherPlus module improves how QuickShop matches custom and plugin-modified items. + +It allows QuickShop to properly recognize and stack items created by other plugins that normally would not match using standard Bukkit item comparisons. + +This module is especially useful for servers that use: + +- Custom items +- Modified metadata +- NBT-based systems +- Advanced crate rewards +- Custom brewing systems +- Custom fishing rewards + +--- + +## What Does It Do? + +By default, Minecraft item matching checks: + +- Material type +- Basic metadata + +However, many plugins modify items with: + +- Custom NBT data +- Hidden tags +- Custom lore formats +- Unique identifiers + +Without enhanced matching: + +- Items may not stack +- Shops may refuse valid items +- Transactions may fail +- Buying/selling may not behave correctly + +ItemMatcherPlus improves compatibility and matching accuracy. + +--- + +## Supported Plugins + +ItemMatcherPlus includes built-in support for: + +- AdvancedItems +- BreweryX +- CrazyCrates +- ExcellentCrates +- PyroFishing +- SilkSpawners + +If any of these plugins are installed, QuickShop will automatically use enhanced matching logic. + +No additional configuration is required. + +--- + +## How It Works + +When a player trades with a shop: + +1. QuickShop checks the item. +2. If ItemMatcherPlus is enabled, it performs advanced matching. +3. Plugin-specific metadata is validated. +4. The item is confirmed as a match (or rejected safely). + +This allows: + +- Proper stacking of custom items +- Correct shop transactions +- Accurate buy/sell detection +- Reduced false mismatches + +--- + +## Installation + +1. Download the ItemMatcherPlus module. +2. Place the JAR into your `plugins` folder. +3. Restart your server. + +If supported plugins are detected, compatibility activates automatically. + +--- + +## Configuration + +ItemMatcherPlus does not require configuration. + +It activates automatically when: + +- The module is installed +- A supported plugin is detected + +If a supported plugin is not installed, no extra logic runs. + +--- + +## Why You Should Use It + +You should install ItemMatcherPlus if your server uses: + +- Custom fishing plugins +- Custom brewing systems +- Crate plugins with modified items +- Custom spawners +- Any plugin that modifies NBT data + +Without it, shops may not properly recognize custom items. + +--- + +## Common Questions + +### Do I need this if I don't use custom item plugins? + +No. +If you only use vanilla items, this module is not necessary. + +### Does this affect performance? + +The module only activates enhanced matching when needed. + +Normal item matching remains fast and efficient. + +### Will it break existing shops? + +No. +It improves compatibility and matching accuracy without modifying existing shop data. + +--- + +## Summary + +ItemMatcherPlus: + +- Improves item matching accuracy +- Adds support for major custom item plugins +- Prevents stacking and trade issues +- Requires no configuration +- Activates automatically + +If you run a heavily customized economy server, this module is highly recommended. \ No newline at end of file diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md index ba87606698..d4ae7d129a 100644 --- a/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/lands.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/lands.md index 06296f5779..7671fcdfe0 100644 --- a/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/lands.md +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/lands.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/openinv.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/openinv.md index c51f628615..4807d57873 100644 --- a/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/openinv.md +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/openinv.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md new file mode 100644 index 0000000000..c2136320b0 --- /dev/null +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md @@ -0,0 +1,138 @@ +# SimpleClaimSystem + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and SimpleClaimSystem. + +It ensures that shop creation and trading respect land ownership and claim permissions defined by SimpleClaimSystem. + +--- + +## What Does It Do? + +SimpleClaimSystem allows players to claim land and protect it from unauthorized interaction. + +Without compatibility: + +- Players could create shops inside claims they do not own. +- Visitors might trade inside protected areas. +- Claim protection might not apply correctly to shops. + +The SimpleClaimSystem compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops within their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a SimpleClaimSystem claim. +- Whether the player has permission within that claim. +- Whether claim rules allow shop interaction. + +If the action is not permitted by the claim, QuickShop blocks it. + +If the location is outside any claim, default QuickShop behavior applies. + +--- + +## Claim Owner Control + +With this module enabled: + +- Claim owners can create and manage shops inside their claim. +- Trusted players follow claim-based permissions. +- Visitors are restricted unless explicitly allowed. +- Claim protection rules apply automatically to shop interactions. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install SimpleClaimSystem. +2. Install the QuickShop SimpleClaimSystem compat module. +3. Restart your server. + +The module activates automatically if SimpleClaimSystem is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If SimpleClaimSystem is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Enable owner override for easier management. + +This ensures players maintain control over their protected land. + +--- + +## Common Questions + +### Can players create shops in someone else's claim? + +Only if claim permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can allow shops outside claims or restrict them. + +### What happens if SimpleClaimSystem is removed? + +QuickShop will revert to default behavior and stop checking claim permissions. + +--- + +## Summary + +The SimpleClaimSystem compat module: + +- Enforces claim-based permissions +- Prevents unauthorized shop creation +- Protects land from unwanted trading +- Requires minimal setup + +It is recommended for servers running SimpleClaimSystem. \ No newline at end of file diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md index a84dbf057b..4dfa8ae97c 100644 --- a/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/towny.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/towny.md index 52ab4818f4..b26c19d335 100644 --- a/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/towny.md +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/towny.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -26,7 +26,7 @@ Town sub-command allow you switch a quickshop between regular shop and town shop For a nation shop, the shop owner will changed to nation fake player created by Towny, and use Nation's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from nation Towny account.\ +All purchases will deposit or withdraw money from nation Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Nation Shop. @@ -35,7 +35,7 @@ If Plot type restriction is enabled, only a specific Plot type can create a Nati For a town shop, the shop owner will changed to town fake player created by Towny, and use Town's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from town Towny account.\ +All purchases will deposit or withdraw money from town Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Town Shop. @@ -88,7 +88,7 @@ bank-mode: ## Permission Override -By adjust configuration, you're allow mayor or king automaticlly grant administrator permission on all shops in their management range. +By adjust configuration, you're allow mayor or king automatically grant administrator permission on all shops in their management range. ```yaml #Should allow Mayor grant the shop administrator permission on they town. @@ -168,7 +168,7 @@ This causes Towny and QuickShop Hikari to use accounts with the same name but di You can adjust the option in configuration to enable workaround. -NOTE: It will force turned on if detected EssentialsX installed on your server.\ +NOTE: It will force turned on if detected EssentialsX installed on your server. At present, we do not provide a method for disable it. ```yaml diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md new file mode 100644 index 0000000000..0189958495 --- /dev/null +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md @@ -0,0 +1,138 @@ +# UltimateClaims + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and UltimateClaims. + +It ensures that shop creation and trading respect land claim permissions managed by UltimateClaims. + +--- + +## What Does It Do? + +On servers using land-claim plugins, players protect areas of the world from unauthorized interaction. + +Without compatibility: + +- Players may create shops inside claims they do not own. +- Visitors might trade in areas where they should not. +- Claim protection rules might not apply correctly to shops. + +The UltimateClaims compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops inside their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a claim. +- Whether the player has permission in that claim. +- Whether claim rules allow shop interaction. + +If the action violates claim settings, QuickShop blocks it. + +Outside of claims, normal QuickShop behavior applies. + +--- + +## Claim Owner Permissions + +With this module enabled: + +- Claim owners can create and manage shops within their claim. +- Trusted players follow claim permission settings. +- Visitors are restricted based on claim configuration. +- Shop actions outside of claims behave normally. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install UltimateClaims. +2. Install the QuickShop UltimateClaims compat module. +3. Restart your server. + +If UltimateClaims is detected on startup, compatibility activates automatically. + +No additional linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Common options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If UltimateClaims is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Keep owner override enabled for better control. + +This ensures players maintain full control over their protected land. + +--- + +## Common Questions + +### Can players create shops inside someone else's claim? + +Only if the claim permissions allow it. + +Otherwise, QuickShop will block the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can choose to restrict shops to claimed land only. + +### What happens if UltimateClaims is removed? + +QuickShop returns to normal behavior without claim checks. + +--- + +## Summary + +The UltimateClaims compat module: + +- Protects claimed land from unauthorized shop usage +- Enforces claim-based permissions +- Integrates smoothly with land-claim servers +- Requires minimal setup + +It is recommended for any server running UltimateClaims. \ No newline at end of file diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md index 87a71a205c..6437754503 100644 --- a/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md @@ -2,8 +2,10 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. Find out more [here](../modules/shops/worldedit.md). + +Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. \ No newline at end of file diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/development/01-getting-start.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/development/01-getting-start.md index 92b773451e..0e78e52367 100644 --- a/i18n/pt-PT/docusaurus-plugin-content-docs/current/development/01-getting-start.md +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/development/01-getting-start.md @@ -6,8 +6,8 @@ This series of articles will help you build extensions for QuickShop-Hikari or i ## License -QuickShop-Hikari is open source using the [GPLv3](https://www.gnu.org/licenses/quick-guide-gplv3.en.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari).\ -You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the GPLv3 agreement. +QuickShop-Hikari is open source using the [AGPLv3](https://www.gnu.org/licenses/agpl-3.0.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari). +You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the AGPLv3 agreement. ## 🚧Don't trust Javadoc too much @@ -48,7 +48,7 @@ QuickShop-Hikari divides operation sources into three types: - Server Main Thread - Async Thread (any other threads but not server main thread) -- Hybird +- Hybrid If you access the API through the wrong thread, QuickShop-Hikari will force a runtime error to be thrown. @@ -58,4 +58,4 @@ For APIs that may trigger network IO or long-time disk IO, you are required not You can see [Util.ensureThread()](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/3d1d271e1106ea1c83cc6068f8232ab7c7860918/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/util/Util.java#L351) and find out the requirements of the different APIs by looking up their use. APIs that do not use Util.ensureThread() are allowed to be called from any thread by default. -You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. +You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. \ No newline at end of file diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md index aa2404c594..7828d414ad 100644 --- a/i18n/pt-PT/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md @@ -10,7 +10,7 @@ ShopManager manager = api.getShopManager(); ## Getting a shop -Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates.\ +Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates. QuickShop-Hikari's store is only bound to one half of "Large Chest", so to get the store, you need to query both the cube itself and its associated cube. The good thing is that there is an API in the plugin that allows you to handle this situation very easily. @@ -71,7 +71,7 @@ manager.deleteShop(shop) // Permanently delete this store, both memory and datab ## Identify a store -Please note that store locations are technically variable and you should not use coordinates to identify a store.\ +Please note that store locations are technically variable and you should not use coordinates to identify a store. Also RuntimeRandomUniqueId should not be used to identify the store, as the name suggests, the value changes every time the server restarts, it should only be used to handle scenarios where the player interacts with the server. ```java diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md index 543f1851da..4f839ed652 100644 --- a/i18n/pt-PT/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md @@ -1,6 +1,6 @@ # 0x05 Per shop permission -QuickShop-Hikari has a per shop permission management system.\ +QuickShop-Hikari has a per shop permission management system. Therefore, for a normal permission node check is not enough, you need to attach an additional check. ## Check with shop diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/development/06-protocol-system.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/development/06-protocol-system.md index 5d37a15536..0380b789f9 100644 --- a/i18n/pt-PT/docusaurus-plugin-content-docs/current/development/06-protocol-system.md +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/development/06-protocol-system.md @@ -15,30 +15,30 @@ This documentation will guide developers through the components, implementation - **Purpose**: Manages packet handling and initialization logic. - **Interface**: `PacketHandler` - **Key Methods**: - - `Map> factories()` - - Retrieves a map of supported `PacketFactory` instances keyed by game versions. - - `void initialize()` - - Initializes the packet handler. - - `Optional> factory(String version)` - - Retrieves a `PacketFactory` for a specific game version. + - `Map> factories()` + - Retrieves a map of supported `PacketFactory` instances keyed by game versions. + - `void initialize()` + - Initializes the packet handler. + - `Optional> factory(String version)` + - Retrieves a `PacketFactory` for a specific game version. ### 2. **PacketFactory** - **Purpose**: Creates and sends specific packet types. - **Interface**: `PacketFactory` - **Supported Packets**: - - **Spawn Packet**: - - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. - - Example Use: Representing shop items visually. - - **Metadata Packet**: - - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. - - Example Use: Updating item display name or properties. - - **Velocity Packet**: - - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. - - Example Use: Custom animations for virtual items. - - **Destroy Packet**: - - Removes the entity from the client view. Created using `createDestroyPacket()`. - - Example Use: Unloading or removing a virtual display item. + - **Spawn Packet**: + - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. + - Example Use: Representing shop items visually. + - **Metadata Packet**: + - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. + - Example Use: Updating item display name or properties. + - **Velocity Packet**: + - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. + - Example Use: Custom animations for virtual items. + - **Destroy Packet**: + - Removes the entity from the client view. Created using `createDestroyPacket()`. + - Example Use: Unloading or removing a virtual display item. Developers implementing custom `PacketFactory` should ensure these packets are correctly handled and optimized for performance. @@ -46,24 +46,24 @@ Developers implementing custom `PacketFactory` should ensure these packets are c - **Purpose**: Oversees the lifecycle of virtual display items and integrates with packet handlers. - **Key Features**: - - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). - - Manages virtual display items mapped to chunks. - - Provides thread-safe operations for adding and removing display items. + - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). + - Manages virtual display items mapped to chunks. + - Provides thread-safe operations for adding and removing display items. ### 4. **VirtualDisplayItem** - **Purpose**: Represents a virtual item displayed to players. - **Key Features**: - - Generates and caches packets for spawning, metadata, velocity, and destruction. - - Manages packet senders for each player. - - Handles spawn and removal operations dynamically. + - Generates and caches packets for spawning, metadata, velocity, and destruction. + - Manages packet senders for each player. + - Handles spawn and removal operations dynamically. ### 5. **ProtocolLibHandler and PacketEventsHandler** - **Purpose**: Provide implementations of `PacketHandler` using ProtocolLib and PacketEvents, respectively. - **Differences**: - - `ProtocolLibHandler` leverages ProtocolLib API. - - `PacketEventsHandler` uses the PacketEvents library. + - `ProtocolLibHandler` leverages ProtocolLib API. + - `PacketEventsHandler` uses the PacketEvents library. --- @@ -140,11 +140,11 @@ public class CustomPacketFactory implements PacketFactory { Packet factories are provided for specific game versions through two primary implementations: - **ProtocolLib**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` - **PacketEvents**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` --- diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md new file mode 100644 index 0000000000..aebc035f87 --- /dev/null +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md @@ -0,0 +1,297 @@ +# Interaction System (Developer Guide) + +The Interaction System allows developers to fully customize how players interact with shops. + +As of 6.2.0.11, the system has been redesigned to be: + +- Modular +- Extensible +- Thread-safe +- Fully customizable by third-party addons + +This guide will walk you through: + +1. What the Interaction System is +2. Getting the `InteractionManager` +3. Understanding `InteractionType` +4. Understanding `InteractionBehavior` +5. Registering custom interactions +6. Best practices + +--- + +# Overview + +The Interaction System is composed of three main components: + +| Component | Purpose | +| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| `InteractionType` | Describes **what kind of click happened** (standing, sneaking, left-click, sign, shopblock, etc.) | +| `InteractionBehavior` | Describes **what action should happen** when that type is triggered | +| `InteractionManager` | Central registry that manages interactions and behaviors | + +This separation allows developers to: + +- Add new click types +- Add new behaviors +- Override existing ones +- Extend QuickShop without modifying core code + +--- + +# Getting the InteractionManager + +To begin registering custom interactions, you must retrieve the `InteractionManager` instance. + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +If you are working directly with the plugin instance: + +```java +InteractionManager manager = QuickShop.getInstance().getInteractionManager(); +``` + +Once obtained, you can: + +- Register new interaction types +- Register new behaviors +- Override existing behaviors + +--- + +# Understanding InteractionType + +`InteractionType` represents **how** a player interacted with a shop. + +Examples include: + +- `STANDING_LEFT_CLICK_SIGN` +- `STANDING_RIGHT_CLICK_SHOPBLOCK` +- `SNEAKING_LEFT_CLICK_CONTAINER` +- etc. + +Each `InteractionType` defines: + +- Player stance (standing/sneaking) +- Click type (left/right) +- Target (sign/shopblock/container) + +InteractionTypes do NOT define behavior — they only define the trigger. + +--- + +# Understanding InteractionBehavior + +`InteractionBehavior` defines **what happens** when an interaction is triggered. + +Examples of built-in behaviors: + +- `TRADE_INTERACTION` +- `TRADE_UI` +- `CONTROL_PANEL` +- `CONTROL_PANEL_UI` +- `NONE` + +A behavior: + +- Executes logic +- May open GUIs +- May send chat panels +- May directly trade items +- Can cancel or modify flow + +This separation makes it easy to reuse behaviors across multiple interaction types. + +--- + +# Registering Custom Interactions + +There are two things you can register: + +- A custom `InteractionType` +- A custom `InteractionBehavior` + +--- + +## Creating a Custom InteractionBehavior + +Create a class implementing `InteractionBehavior`. + +Example: + +```java +public class MyTradeBehavior implements InteractionBehavior { + + @Override + public String getKey() { + return "MY_CUSTOM_TRADE"; + } + + @Override + public void execute(InteractionClick click) { + Player player = click.getPlayer(); + Shop shop = click.getShop(); + + player.sendMessage("You triggered my custom interaction!"); + + // Add your custom logic here + } +} +``` + +Then register it: + +```java +InteractionManager manager = api.getInteractionManager(); +manager.behavior(new MyTradeBehavior()); +``` + +Now your behavior is available for use. + +--- + +## Creating a Custom InteractionType + +You may also register custom interaction types if you want to introduce new trigger definitions. + +Example: + +```java +public class MyCustomInteraction implements InteractionType { + + @Override + public String getKey() { + return "STANDING_DOUBLE_CLICK_SIGN"; + } + + @Override + public boolean matches(InteractionClick click) { + // Define custom logic to detect this interaction + return click.isStanding() + && click.isSign() + && click.isDoubleClick(); + } +} +``` + +Register it: + +```java +manager.interaction(new MyCustomInteraction()); +``` + +--- + +# Binding Types to Behaviors + +The InteractionManager internally maps interaction types to behaviors based on configuration and registration order. + +Once your behavior is registered: + +- It can be referenced in `interaction.yml` +- Or attached programmatically + +Example interaction.yml usage: + +```yaml +STANDING_LEFT_CLICK_SIGN: MY_CUSTOM_TRADE +``` + +--- + +# The InteractionClick Object + +When your behavior executes, you receive an `InteractionClick` object. + +It provides: + +- `getPlayer()` +- `getShop()` +- `getLocation()` +- `isSneaking()` +- `isSign()` +- `isShopBlock()` +- etc. + +This gives full context for safe execution. + +--- + +# Advanced: Overriding Built-in Behavior + +If you register a behavior using the same key as an existing one, your behavior can override the default. + +⚠️ Be careful when doing this — you are replacing core functionality. + +--- + +# Best Practices + +### Always Use Unique Keys + +Avoid naming collisions: + +``` +MYPLUGIN_CUSTOM_BEHAVIOR +``` + +### Keep Behavior Lightweight + +Do not block the main thread with: + +- Heavy database calls +- File IO +- Network calls + +Use async tasks if needed. + +### Respect Permissions + +Always validate: + +```java +if (!player.hasPermission("myplugin.use")) { + return; +} +``` + +### Avoid Hard Overrides Unless Necessary + +Instead of replacing built-in behaviors, consider extending them. + +--- + +# Example: Full Minimal Implementation + +```java +public class ExampleAddon { + + public void register(QuickShopAPI api) { + + InteractionManager manager = api.getInteractionManager(); + + manager.behavior(new MyTradeBehavior()); + manager.interaction(new MyCustomInteraction()); + } +} +``` + +--- + +# Conclusion + +The Interaction System is designed to allow: + +- Full extensibility +- Clean separation of triggers and actions +- Easy integration for third-party developers + +By retrieving the `InteractionManager`: + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +You gain full control over how shops respond to player actions. \ No newline at end of file diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/development/08-tax-manager.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/development/08-tax-manager.md new file mode 100644 index 0000000000..72a56f9e88 --- /dev/null +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/development/08-tax-manager.md @@ -0,0 +1,266 @@ +# Tax System (Developer Guide) + +The QuickShop tax system allows server owners and developers to define how transaction taxes are calculated, distributed, and extended. + +As of 6.2.0.11, the tax system has been fully rewritten to provide: + +- A flexible TaxManager +- Pluggable TaxProvider support +- Progressive taxation +- Tax targeting (shop owner, interacting player, or both) +- Custom extension capability for third-party addons + +This guide explains how to work with the tax system programmatically. + +--- + +# Overview + +The tax system is composed of three core components: + +TaxManager +Responsible for coordinating tax calculation and execution. + +TaxProvider +Defines how tax values are calculated. + +TaxRates +Represents calculated tax results for a transaction. + +The system is designed to allow custom providers to be registered and used without modifying core logic. + +--- + +# Getting the TaxManager + +To work with the tax system, retrieve the TaxManager from the ShopManager. + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +Once obtained, you can: + +- Access current tax configuration +- Register custom tax providers +- Calculate tax values +- Hook into tax events + +--- + +# How the Tax System Works + +During a shop transaction: + +1. A base price is determined. +2. The TaxManager selects the active TaxProvider. +3. The TaxProvider calculates applicable tax. +4. A TaxRates object is produced. +5. The system applies the tax to: + + - Shop owner + - Interacting player + - Or both (depending on configuration) + +This architecture allows tax behavior to be modified without altering transaction logic. + +--- + +# TaxProvider + +A TaxProvider defines how tax values are calculated. + +You may create your own provider to implement: + +- Progressive tax brackets +- Flat percentage tax +- Conditional tax rules +- Region-based tax +- Rank-based tax +- Time-based tax + +Example minimal provider: + +```java +public class MyCustomTaxProvider implements TaxProvider { + + @Override + public TaxRates calculateTax(TaxContext context) { + + double basePrice = context.getPrice(); + + double taxAmount = basePrice * 0.05; // 5% flat tax + + return new TaxRates() + .ownerTax(taxAmount) + .buyerTax(0.0); + } +} +``` + +Then register it: + +```java +taxManager.provider(new MyCustomTaxProvider()); +``` + +Once registered, your provider will be used for tax calculations. + +--- + +# TaxRates + +TaxRates represents the result of a tax calculation. + +It typically contains: + +- Owner tax amount +- Buyer tax amount +- Total tax impact +- Metadata (if applicable) + +The transaction system will read from TaxRates and apply deductions accordingly. + +--- + +# Progressive Taxation + +The built-in system supports progressive tax structures. + +This allows server administrators to tax based on: + +- Player balance +- Shop owner balance +- Configured tax brackets + +Example configuration concept: + +- 0–10,000 balance → 1% tax +- 10,000–100,000 → 2% tax +- 100,000+ → 3% tax + +Developers can extend or override this logic inside a custom TaxProvider. + +--- + +# Targeting Tax + +The new tax system allows taxes to be applied to: + +- Shop owner +- Interacting player +- Both + +This is controlled via configuration, but custom providers can override distribution logic by adjusting TaxRates output. + +Example: + +```java +return new TaxRates() + .ownerTax(basePrice * 0.02) + .buyerTax(basePrice * 0.01); +``` + +--- + +# Registering a Custom TaxProvider + +To replace or extend tax logic: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); + +taxManager.provider(new MyCustomTaxProvider()); +``` + +You may register only one primary provider at a time. If multiple providers are needed, implement internal delegation within your custom provider. + +--- + +# Tax Events + +The tax system integrates with the event system. + +The modern event used is: + +ShopEnhancedTaxEvent + +This replaces legacy tax events and provides improved context, including: + +- Transaction builder reference +- TaxRates object +- Modification capability before final execution + +You can listen for the event and modify tax behavior dynamically: + +```java +@EventHandler +public void onTax(ShopEnhancedTaxEvent event) { + + TaxRates rates = event.getTaxRates(); + + // Example: Give VIP players reduced owner tax + if (event.getOwner().hasPermission("vip.tax.discount")) { + rates.ownerTax(rates.getOwnerTax() * 0.5); + } +} +``` + +--- + +# Best Practices + +Always keep tax calculations lightweight. + +Avoid: + +- Heavy database queries inside calculateTax +- Blocking network calls +- Long-running computations + +If complex logic is required, pre-cache required data outside the tax execution path. + +Ensure negative tax values are not returned unless intentional. + +Always validate final amounts before applying modifications. + +Respect configuration hierarchy unless intentionally overriding it. + +--- + +# Example Full Implementation + +```java +public class ExampleTaxAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + TaxManager taxManager = manager.taxManager(); + + taxManager.provider(new MyCustomTaxProvider()); + } +} +``` + +--- + +# Conclusion + +The new tax system is designed for: + +- Flexibility +- Extensibility +- Clean separation of concerns +- Future expansion + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +You gain full control over how QuickShop calculates and applies tax during transactions. \ No newline at end of file diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/development/09-layout-provider.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/development/09-layout-provider.md new file mode 100644 index 0000000000..55e3cd3e91 --- /dev/null +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/development/09-layout-provider.md @@ -0,0 +1,275 @@ +# Shop Layout Provider (Developer Guide) + +The Shop Layout Provider system allows developers to customize how shop signs are structured and rendered. + +As of 6.2.0.11, shop layouts are no longer hardcoded. Instead, they are controlled through the `IShopLayoutProvider` interface, which allows: + +- Custom sign line ordering +- Per-shop-type layouts (BUYING, SELLING, FROZEN, or custom types) +- Dynamic layout resolution +- Complete replacement of the default layout system + +This guide explains how to access, override, and implement a custom layout provider. + +--- + +# Overview + +The layout provider controls how shop sign lines are arranged. + +Instead of hardcoding: + +Line 1 → Header +Line 2 → Trading info +Line 3 → Item +Line 4 → Price + +The system now allows full customization through: + +- Config-based layout definitions +- Custom `IShopLayoutProvider` implementations +- Runtime overrides + +The default implementation is `SimpleShopLayoutProvider`. + +--- + +# Accessing the Layout Provider + +To retrieve the current layout provider: + +```java +ShopManager manager = api.getShopManager(); +IShopLayoutProvider provider = manager.shopLayoutProvider(); +``` + +To replace the layout provider with a custom one: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Once replaced, your implementation will control how shop layouts are generated. + +--- + +# Understanding IShopLayoutProvider + +`IShopLayoutProvider` defines how layout data is retrieved and resolved. + +It is responsible for: + +- Providing layout configuration per shop type +- Determining which layout to use +- Supplying formatted line keys +- Allowing future extensibility + +The default implementation reads layout definitions from configuration and applies them based on shop type. + +--- + +# Default Layout Example + +The default configuration-based layout looks like this: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +Each line maps to a layout component key. + +An empty string (`""`) leaves that line blank. + +The layout provider resolves these keys into actual sign content. + +--- + +# Creating a Custom Layout Provider + +To override the default behavior, implement `IShopLayoutProvider`. + +Example minimal implementation: + +```java +public class MyCustomLayoutProvider implements IShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + + ShopLayout layout = new ShopLayout(); + + layout.setLine(1, "Custom Header"); + layout.setLine(2, "Owner: " + shop.getOwnerName()); + layout.setLine(3, shop.getItem().getType().name()); + layout.setLine(4, "$" + shop.getPrice()); + + return layout; + } +} +``` + +Then register it: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Your layout will now control all shop sign formatting. + +--- + +# Per-Type Layout Control + +Because the system no longer depends on the legacy ShopType enum, layouts can support: + +- Built-in types (BUYING, SELLING, FROZEN) +- Custom shop types +- Addon-defined shop types + +Your provider can determine layout logic dynamically: + +```java +@Override +public ShopLayout provideLayout(Shop shop) { + + if (shop.getShopType().key().equals("FROZEN")) { + return frozenLayout(shop); + } + + return defaultLayout(shop); +} +``` + +This allows conditional formatting, localization adjustments, or special event styling. + +--- + +# Advanced Customization + +A custom layout provider can: + +- Pull data from external plugins +- Inject dynamic placeholders +- Modify layout per player +- Apply formatting logic +- Override color schemes +- Apply region-based formatting +- Implement animated sign systems + +Because the layout provider is resolved at runtime, you can compute layouts dynamically instead of reading static config. + +--- + +# Replacing vs Extending the Default Provider + +You have two options: + +Replace entirely: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Or extend the default implementation: + +```java +public class ExtendedLayoutProvider extends SimpleShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + ShopLayout base = super.provideLayout(shop); + + base.setLine(1, "[Extended] " + base.getLine(1)); + + return base; + } +} +``` + +Extending is safer if you only want to modify small portions. + +--- + +# Best Practices + +Keep layout generation lightweight. + +Avoid: + +- Heavy database queries +- Blocking IO +- Complex network calls + +Layout generation runs during shop updates and sign refresh events. + +Always handle null values safely. + +Ensure layout line count does not exceed sign limits. + +Avoid hardcoding shop type names unless necessary. + +If your layout supports custom shop types, validate their keys properly. + +--- + +# Example Full Registration + +```java +public class LayoutAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + + manager.shopLayoutProvider(new MyCustomLayoutProvider()); + } +} +``` + +--- + +# Conclusion + +The Shop Layout Provider system allows complete control over shop sign structure. + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +``` + +And setting: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +You can redefine how every shop is displayed on the server. + +This system was designed to support: + +- Extensibility +- Custom shop types +- Localization +- Dynamic formatting +- Future expansion \ No newline at end of file diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/faq/compare-reremake.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/faq/compare-reremake.md index aaa1a9e507..6b39f02520 100644 --- a/i18n/pt-PT/docusaurus-plugin-content-docs/current/faq/compare-reremake.md +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/faq/compare-reremake.md @@ -64,7 +64,7 @@ If you are a Reremake user, you may be confused about the differences between Hi ## Which one should I use? Well, it depends on what your needs are.\ -If you have an old server (<1.20) instance, Reremake is your only choice.\ +If you have an old server ({'<'}1.20) instance, Reremake is your only choice.\ ~~If you are in China which has GFW interfere, you also should consider Reremake because it doesn't need to load libraries from Global Internet.~~ Solved in 6.0.0.0. If none of these applies, give Hikari a try! diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md index 551f579e7c..172be3a69b 100644 --- a/i18n/pt-PT/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md @@ -1,8 +1,8 @@ # Where Addons/Compacts is -Addons and Compatilibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. +Addons and Compatibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. -- Open Modrinth versions page, locate the version your're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) +- Open Modrinth versions page, locate the version you're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) - Frantically slide your mouse wheel down until the lowest end of the page. - You get it! diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/internal/database-schema.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/internal/database-schema.md index fea685e4fc..45e04adb56 100644 --- a/i18n/pt-PT/docusaurus-plugin-content-docs/current/internal/database-schema.md +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/internal/database-schema.md @@ -4,17 +4,17 @@ This chapter will explain the implementation details of QuickShop Hikari's datab ## Tables -This section explains the database tables created by QuickShop-Hikari.\ -Unless otherwise specified, the initial `qs_` in table name is the table prefix.\ +This section explains the database tables created by QuickShop-Hikari. +Unless otherwise specified, the initial `qs_` in table name is the table prefix. For the latest code definition for each table, see: [DataTables.java](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/hikari/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/database/DataTables.java) ### `data` -This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information.\ -No matter what, a data record should not be modified after it is created, until it got deleted.\ +This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information. +No matter what, a data record should not be modified after it is created, until it got deleted. Any new changes to the shop should create a new copy, apply the changes to the copy, and insert it as a new record. -Basiclly, Copy-on-write. +Basically, Copy-on-write. A data record only be deleted from the database when no any table references their `data_id`. @@ -29,7 +29,7 @@ A data record only be deleted from the database when no any table references the | unlimited | BIT NOT NULL | 0 | Indicates whether this store is an unlimited store, 0=Limited, 1=Unlimited | | hologram | BIT NOT NULL | 0 | Indicates the suspension status of this store's display item, 0=Follow global settings, 1=Disabled | | tax_account | VARCHAR(36) | NULL | The uuid for tax account, If it is not NULL, tax will be paid to the specified account | -| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serilized to JSON string | +| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serialized to JSON string | | extra | LONGTEXT | Empty Yaml | Used to store experimental settings of QuickShop Hikari or persistent data of other plugins | | inv_wrapper | VARCHAR(255) NOT NULL | N/A | Unique identifier for InventoryWrapper for this shop data entry | | inv_symbol_link | TEXT NOT NULL | N/A | Unique Inventory symbol used to pass to InventoryWrapper, for locating inventory | @@ -38,7 +38,7 @@ A data record only be deleted from the database when no any table references the ### `shops` -This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes.\ +This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes. Multiple `shop_id` can correspond to the same `data_id`. | Column Name | DataType | Default | Description | diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/modules/cmd-alias.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/modules/cmd-alias.md index 53f1577685..e6ed381c0d 100644 --- a/i18n/pt-PT/docusaurus-plugin-content-docs/current/modules/cmd-alias.md +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/modules/cmd-alias.md @@ -23,7 +23,7 @@ custom-commands: - cshop ``` -Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect.\ +Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect. The effect should be like this: ![command-alias](./img/command-alias.png) diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/modules/datasource.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/modules/datasource.md index 6fc1bd8931..3fd3a8bdee 100644 --- a/i18n/pt-PT/docusaurus-plugin-content-docs/current/modules/datasource.md +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/modules/datasource.md @@ -48,7 +48,7 @@ Execute the `/quickshop export` command in console, quickshop will export a zip ![exported data](img/database-export.png) -Stop your database, switch the datasource, and start the server.\ +Stop your database, switch the datasource, and start the server. You may noticed all shops are gone, because new datasources had no data inside, we will restore them from export. Rename that exported ZIP file to `recovery.zip`, execute `/quickshop recovery` and restart your server, all shops should back. diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/modules/itemmatcher.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/modules/itemmatcher.md index 56be243019..922907be27 100644 --- a/i18n/pt-PT/docusaurus-plugin-content-docs/current/modules/itemmatcher.md +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/modules/itemmatcher.md @@ -4,7 +4,7 @@ ItemMatcher is a utility used by QuickShop-Hikari to compare the items, it is th :::caution -If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse.\ +If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse. **TL;DR: Keep default unless you know what you're doing.** ::: @@ -26,10 +26,10 @@ matcher: work-type: 1 ``` -By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility.\ +By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility. But still, you can toggle to QuickShop Item Matcher if you need to customize the comparing or running QuickShop on the server jar which have bug affect the Bukkit comparing system. -## Customize the metadata compareing +## Customize the metadata comparing Customize only works under QuickShop Item Matcher. diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md index fc2af69d2b..d04e8f2783 100644 --- a/i18n/pt-PT/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md @@ -4,7 +4,7 @@ ItemStack Loader is a workaround for loading the Bukkit ItemStack. :::caution -Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossble. +Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossible. ::: diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/modules/localization.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/modules/localization.md index e9121e1a36..d47589ab9a 100644 --- a/i18n/pt-PT/docusaurus-plugin-content-docs/current/modules/localization.md +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/modules/localization.md @@ -10,7 +10,7 @@ To help translate QuickShop-Hikari, please visit our [Crowdin Homepage](https:// ## Crowdin OTA -QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will overrided when you reload QuickShop-Hikari or restart your server. +QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will override when you reload QuickShop-Hikari or restart your server. Your installation will keep translations up-to-date without any touch. @@ -110,6 +110,16 @@ To disable the CrowdinOTA, please add it in the startup flag: -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager.enableCrowdinOTA=false ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +use-crowdin-ota: false +``` + ### Self-Hosted OTA Server If you self-hosted our translation server by using [CrowdinCopyDeploy](https://github.com/Ghost-chu/CrowdinCopyDeploy) tool, you're able to change the OTA server to yourself server. @@ -118,4 +128,12 @@ If you self-hosted our translation server by using [CrowdinCopyDeploy](https://g -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager= ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml +Use + +```yaml +crowdin-host: +``` \ No newline at end of file diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/modules/shops/benefit.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/modules/shops/benefit.md index 4d7a9c8f42..c59d92e6d1 100644 --- a/i18n/pt-PT/docusaurus-plugin-content-docs/current/modules/shops/benefit.md +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/modules/shops/benefit.md @@ -37,3 +37,13 @@ By default, for security, QuickShop-Hikari disallow add offline players into sho ```bash -Dcom.ghostchu.quickshop.command.subcommand.SubCommand_Benefit.allowOffline=true ``` + +### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +shop.allow-offline-benefit: true +``` \ No newline at end of file diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/modules/shops/control-panel b/i18n/pt-PT/docusaurus-plugin-content-docs/current/modules/shops/control-panel new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/modules/shops/control-panel @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/modules/shops/history.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/modules/shops/history.md index fa891adeab..195b64a042 100644 --- a/i18n/pt-PT/docusaurus-plugin-content-docs/current/modules/shops/history.md +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/modules/shops/history.md @@ -24,7 +24,7 @@ The History GUI displays the details of each recorded transaction and other usef ### Transaction details -When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed.\ +When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed. If you are checking the history of more than one store, the player head will be replaced with an item from the corresponding store. ![history-gui](./img/history-gui.png) diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md new file mode 100644 index 0000000000..c5ed3b3fe4 --- /dev/null +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md @@ -0,0 +1,90 @@ +# Shop Types + +QuickShop supports multiple shop types, allowing shops to behave differently depending on their mode. + +The built-in shop types are: + +- Selling +- Buying +- Frozen + +Each type changes how the shop interacts with players. + +--- + +## Selling Shop + +A Selling shop allows players to: + +- Buy items from the shop owner +- Pay money to receive items + +This is the most common shop type. + +--- + +## Buying Shop + +A Buying shop allows players to: + +- Sell items to the shop owner +- Receive money in exchange + +This is commonly used for: + +- Resource collection +- Server buy-back shops +- Automated material sinks + +--- + +## Frozen Shop + +A Frozen shop temporarily disables trading. + +While frozen: + +- No buying is allowed +- No selling is allowed +- The shop remains intact +- Staff or admins can manage it + +This is useful for: + +- Temporary suspensions +- Investigation +- Event locking +- Maintenance + +--- + +## Switching Shop Types + +Shop types can be changed through: + +- Control panel +- GUI control panel +- Admin commands + +Frozen mode is also available via: + +/qs freeze + +--- + +## Custom Shop Types + +As of 6.2.x, the system supports extensible shop types internally. + +While server owners use the built-in types, the system now allows future expansion through addons. + +--- + +## Summary + +Shop types allow you to: + +- Control how money flows +- Enable buy-back mechanics +- Temporarily disable shops +- Build advanced economic systems \ No newline at end of file diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md new file mode 100644 index 0000000000..18e0a47407 --- /dev/null +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md @@ -0,0 +1,217 @@ +# Sign Layout + +QuickShop allows you to fully customize how shop signs are structured. + +You can change: + +- What appears on each line +- The order of information +- Layout per shop type +- Whether certain lines are blank + +This gives you complete control over how shops look on your server. + +--- + +## How Sign Layout Works + +Shop signs have four lines. + +Instead of being hardcoded, QuickShop uses a configurable layout system. + +Each shop type can have its own layout: + +- SELLING +- BUYING +- FROZEN + +You define what each line displays using layout keys. + +--- + +## Configuration Location + +Sign layout is configured in `config.yml` under: + +```yaml +layout: +``` + +Example default configuration: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## Available Layout Keys + +Each line value refers to a built-in layout component. + +Common layout keys include: + +- `header` – The shop header line +- `trading` – Buy/Sell direction information +- `item` – Item name +- `price` – Shop price + +These keys are automatically formatted using your language file and formatting settings. + +--- + +## Leaving a Line Blank + +To leave a line empty, use: + +```yaml +line2: "" +``` + +This is useful if you want: + +- Minimalist signs +- Cleaner layouts +- Custom spacing +- Decorative formatting + +--- + +## Customizing Per Shop Type + +Each shop type can have a different layout. + +For example: + +```yaml +layout: + + SELLING: + line1: "header" + line2: "item" + line3: "price" + line4: "" + + BUYING: + line1: "header" + line2: "price" + line3: "item" + line4: "" + + FROZEN: + line1: "header" + line2: "" + line3: "item" + line4: "Frozen" +``` + +This allows you to visually differentiate: + +- Selling shops +- Buying shops +- Frozen shops + +--- + +## Practical Examples + +### Minimal Style + +```yaml +layout: + SELLING: + line1: "item" + line2: "price" + line3: "" + line4: "" +``` + +### Compact Economy Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "price" + line3: "item" + line4: "" +``` + +### Large Clear Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## How Updates Affect Layout + +When you change the layout: + +- Existing shop signs will update automatically when refreshed. +- New shops will use the updated format immediately. + +If needed, you can reload QuickShop to apply changes. + +--- + +## Best Practices + +- Keep important information visible (price and item). +- Avoid overly complex formatting. +- Test layout changes before deploying on large servers. +- Use different layouts for BUYING and SELLING to reduce confusion. + +--- + +## Common Questions + +### Can I add more than four lines? + +No. +Minecraft signs are limited to four lines. + +### Can I add colors? + +Colors are controlled by your language file and formatting settings. + +### Can I change layout without restarting? + +Yes, but reloading or refreshing shops is recommended to ensure full update. + +--- + +## Summary + +The Sign Layout system allows you to: + +- Fully customize shop sign appearance +- Create per-type layouts +- Simplify or expand shop information +- Improve clarity for players + +All layout customization is handled inside `config.yml`. diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md new file mode 100644 index 0000000000..980bad10f2 --- /dev/null +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md @@ -0,0 +1,130 @@ +# Shop Sign Waxing + +QuickShop can automatically wax shop signs to prevent players from editing them manually. + +Waxing protects the integrity of your shop signs and helps prevent tampering, spoofing, and accidental modification. + +As of modern Minecraft versions, waxed signs cannot be edited unless they are unwaxed first. + +--- + +## What Is Sign Waxing? + +In Minecraft, waxing a sign locks it so that: + +- Players cannot edit the text +- Players cannot modify lines +- Accidental changes are prevented +- Malicious edits are blocked + +When enabled in QuickShop, shop signs are automatically waxed when created. + +--- + +## Why Use It? + +Sign waxing protects against: + +- Players editing price lines +- Changing item names on signs +- Spoofing shop information +- Accidental formatting issues +- Sign hijacking attempts + +On public servers, this feature is strongly recommended. + +--- + +## How It Works + +When a shop is created: + +1. QuickShop generates the shop sign. +2. The sign text is written. +3. The sign is automatically waxed (if enabled). + +If a shop is updated: + +- The sign will be safely updated by QuickShop. +- The wax state is maintained. + +Players cannot manually edit shop signs while waxing is enabled. + +--- + +## Configuration + +To enable or disable sign waxing, edit `config.yml`: + +```yaml +shop: + sign-wax: true +``` + +### true + +- Shop signs are automatically waxed. +- Players cannot edit the sign manually. + +### false + +- Shop signs behave like normal Minecraft signs. +- Players may edit them if permitted by the game. + +--- + +## Recommended Setting + +For most servers: + +```yaml +shop: + sign-wax: true +``` + +This ensures shop data stays accurate and secure. + +--- + +## Common Questions + +### Can admins still modify shop signs? + +QuickShop controls shop sign formatting. +Manual edits are not recommended. + +Admins should use: + +- Control panel +- Shop commands +- Direct configuration changes + +### Does waxing affect shop functionality? + +No. +Waxing only prevents manual text edits. +The shop continues to function normally. + +### Can players un-wax shop signs? + +No. +QuickShop manages the sign state automatically. + +--- + +## Best Practices + +- Keep sign-wax enabled on survival servers. +- Combine sign-wax with proper permissions. +- Avoid manually editing shop signs through other plugins. + +--- + +## Summary + +Sign Waxing: + +- Prevents tampering +- Requires no additional setup + +Enable it once and QuickShop handles the rest. \ No newline at end of file diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/modules/shops/taxes.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/modules/shops/taxes.md new file mode 100644 index 0000000000..1a273fd978 --- /dev/null +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/modules/shops/taxes.md @@ -0,0 +1,92 @@ +# Taxation System + +QuickShop includes a taxation system designed to give server owners more flexibility and control over shop-based income. + +This system was revamped as of 6.2.0.11+ + +The new system allows you to: + +- Apply tax to shop owners +- Apply tax to buyers +- Apply tax to both +- Use progressive tax brackets +- Customize tax behavior in configuration + +This system replaces the legacy tax configuration. + +--- + +## How It Works + +During a transaction: + +1. The shop price is calculated. +2. Tax is calculated based on your configuration. +3. Tax is deducted from the configured target(s). +4. Remaining funds are distributed normally. + +You can configure: + +- Flat percentage tax +- Progressive tax based on player balance +- Tax accounts +- Distribution rules + +--- + +## Progressive Tax + +The new system allows you to tax based on balance brackets. + +Example concept: + +- 0 – 10,000 balance → 1% tax +- 10,000 – 100,000 → 2% tax +- 100,000+ → 3% tax + +This helps prevent extremely wealthy players from dominating the economy. + +--- + +## Who Pays the Tax? + +You can configure whether tax applies to: + +- The shop owner +- The buyer +- Both + +This gives you flexibility depending on your economy design. + +--- + +## Configuration + +All tax-related settings are located under the `shop-tax` section in `config.yml`. + +After updating to 6.2.0.11+, review your tax configuration carefully, as the old tax system has been replaced. + +--- + +## Why Use Tax? + +The taxation system can help: + +- Remove currency from circulation +- Fund server banks or towns +- Create sink mechanics +- Balance inflation +- Reward active players + +--- + +## Summary + +The new taxation system is: + +- Flexible +- Configurable +- Balance-aware +- Designed for modern economy servers + +Make sure to review your configuration after upgrading. \ No newline at end of file diff --git a/i18n/pt-PT/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md b/i18n/pt-PT/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md new file mode 100644 index 0000000000..247c24712d --- /dev/null +++ b/i18n/pt-PT/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md @@ -0,0 +1,161 @@ +# WorldEdit & FAWE Support + +QuickShop includes built-in protection and integration for WorldEdit and FastAsyncWorldEdit (FAWE). + +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. + +You do not need to download or install any additional compatibility plugins. + +--- + +## What This Does + +WorldEdit and FAWE allow administrators and builders to: + +- Copy and paste regions +- Replace large areas of blocks +- Mass-delete regions +- Roll back areas +- Regenerate terrain + +Without protection, these operations could: + +- Create ghost shops +- Leave orphaned shop data in the database +- Duplicate shops unintentionally +- Delete containers without cleaning up shop data +- Cause inconsistencies between world and database + +QuickShop now automatically detects and safely processes WorldEdit and FAWE operations. + +--- + +## Built-In Behavior + +When WorldEdit or FAWE modifies blocks: + +- Shops removed via WorldEdit are properly deleted from the database. +- Shop data stays synchronized with world changes. +- Ghost shops are prevented. +- Mass block replacements will not leave broken shop entries behind. + +This applies to: + +- //set +- //replace +- //cut +- //paste +- //regen +- Region deletion +- Mass container removal + +No configuration is required. + +--- + +## FAWE Support + +FastAsyncWorldEdit (FAWE) is fully supported. + +Because FAWE processes edits asynchronously, QuickShop handles: + +- Region-thread safe processing +- Async block updates +- Safe shop deletion during batch edits + +You do not need to enable anything manually. + +--- + +## Removing Shops with WorldEdit + +If you delete containers (chests, barrels, etc.) using WorldEdit: + +QuickShop will automatically: + +- Detect the block removal +- Unregister the shop +- Clean the database entry +- Prevent ghost shops + +You do not need to run `/qs cleanghost` after WorldEdit usage in normal circumstances. + +--- + +## Copying and Pasting Shops + +If you copy and paste regions that contain shops: + +- Shop data will not duplicate incorrectly. +- Shop IDs remain consistent. +- Invalid pasted shops will not auto-register unless properly created. + +This prevents accidental duplication exploits. + +--- + +## Performance + +WorldEdit and FAWE operations can modify thousands of blocks at once. + +QuickShop processes these safely and efficiently: + +- Batch-aware cleanup +- Thread-safe region access (especially on Folia) +- Minimal performance impact during mass edits + +--- + +## Configuration + +There are no specific WorldEdit configuration options in QuickShop. + +Support is automatic and always enabled if WorldEdit or FAWE is detected. + +If WorldEdit is not installed, no extra code is executed. + +--- + +## Common Questions + +### Do I need the old WorldEdit compatibility jar? + +No. + +As of 6.2.0.11, WorldEdit support is built-in and the separate compatibility module has been removed. + +### Does this work with FAWE? + +Yes. FAWE is fully supported. + +### Will shops break if I use //set air? + +No. Shops will be safely removed and cleaned up. + +### Do I need to restart after installing WorldEdit? + +No. QuickShop detects WorldEdit automatically on startup. + +--- + +## Best Practices + +Even though QuickShop safely handles WorldEdit operations, it is recommended to: + +- Avoid copying shops intentionally unless required +- Use backups before large region edits +- Test large FAWE operations on staging servers when possible + +--- + +## Summary + +QuickShop’s built-in WorldEdit and FAWE integration ensures: + +- Safe mass edits +- No ghost shops +- Automatic database cleanup +- Thread-safe processing +- No extra modules required + +WorldEdit support is now a core feature of QuickShop. \ No newline at end of file diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/addon/limited.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/addon/limited.md index 70af27e240..fae55a8c95 100644 --- a/i18n/ro-RO/docusaurus-plugin-content-docs/current/addon/limited.md +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/addon/limited.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -41,8 +35,8 @@ Limit players to purchase up to 16 items per month. /quickshop limit period MONTH ``` -The system is based on the QuickShop-Hikari calendar system.\ -The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year.\ +The system is based on the QuickShop-Hikari calendar system. +The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year. Same for days, months and hours. Available time units: diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/addon/list.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/addon/list.md index 93d182f083..f20b91fd7b 100644 --- a/i18n/ro-RO/docusaurus-plugin-content-docs/current/addon/list.md +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/addon/list.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/addon/plan.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/addon/plan.md index 52a6e79cb4..c10ef4df42 100644 --- a/i18n/ro-RO/docusaurus-plugin-content-docs/current/addon/plan.md +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/addon/plan.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -18,7 +18,7 @@ Recorded data can be displayed from Hikari v2.0.0.0 onwards, but only after vers - All shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 1000 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `5` in server scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `5` in server scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Player Scope @@ -27,7 +27,7 @@ And still is Plan limitations, the list sorting is disturbed, so the display ord - All owned shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 50 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `4` in player scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `4` in player scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Showcase diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/addon/reforges.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/addon/reforges.md index 2a14509eb7..25fff1752a 100644 --- a/i18n/ro-RO/docusaurus-plugin-content-docs/current/addon/reforges.md +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/addon/reforges.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.0.0.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md index 304d39bc05..6f9f51d250 100644 --- a/i18n/ro-RO/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.1.1.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -44,7 +38,7 @@ _This is not necessary if you are using an H2 database._ ### Prepare for convert -To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console.\ +To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console. If a player is in the server, the conversion cannot be started. Once the conversion has begun, the server will be locked during the conversion process and no players will be able to join the server during the conversion. diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/addon/shopitemonly.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/addon/shopitemonly.md index c45062f8c2..1ccfe977b3 100644 --- a/i18n/ro-RO/docusaurus-plugin-content-docs/current/addon/shopitemonly.md +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/addon/shopitemonly.md @@ -2,17 +2,11 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT - -::: - -This addon prevents players from putting non-store items into store containers.\ +This addon prevents players from putting non-store items into store containers. Does not apply to stores that use the item inventory redirection API (aka. InventoryWrapper API). This Addon will check for container (or transferring) items on events such as the player closing the container or hopper access. diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md new file mode 100644 index 0000000000..9c8b4f7407 --- /dev/null +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md @@ -0,0 +1,55 @@ +# 6.2.0.10 + +## Major Changes + +- Added support for 1.21.6 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.7 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.8 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Some internal updates for packetevents(2.9.0 is now required.) +- Updated Lands support + +## Addon Changes + +- Added MatcherPlus Addon + - Allows support for BreweryX and AdvancedItems stacks in shops with improved matching abilities +- Added FabledSkyblock Compat +- Added Dominion Compat +- Added HuskTowns Compat +- Added IridiumSkyblock Compat +- Added member-create for member creation in ARM compat +- Added admin-override and quickshop.arm.admin permission for admin overrides in ARM + +## Minor Changes + +- Added configurations for the coordinates of the display item. +- Added /qs toggledisplayall on/off server/owned + - Players need to have permission node quickshop.toggledisplayall.admin to toggle all on the server. +- Added ability to use abbreviations in /qs price and /qs create commands such as 2.5k for 2500 +- Added ability to set default display status using shop.default-display in config.yml + +## Fixes + +- Fixed issue with display item being sent to the moon on 1.21.5 +- Fixed issue where TRADE_UI interactions interfered with quick create. +- Fixed issue with displays on protocollib falling through the chest +- Fixed issue with signs on .9 and previous .10 snapshots on early versions +- Implemented some performance improvements for paper servers +- Fixed all outstanding issues with Folia usage.(thanks to RootB33R/SleazLee for contributions) + +## Possible 6.2.0.11 Features + +Here's an outline for some features that may arrive in 6.2.0.11: + +- Additional compats/addons that have been piling up. + - see: https://github.com/QuickShop-Community/QuickShop-Hikari/issues/1756 +- gradle?(interested to see compilation time uplifts) +- Update documentation +- Update configuration comments +- Update configuration system? + - auto updating? + - Allows removal of the update code +- Remove waste spigot modules? + - Any versions of 1.20 that can be discarded due to low use? +- Bug fixing, of course +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... \ No newline at end of file diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md new file mode 100644 index 0000000000..b41c88662a --- /dev/null +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md @@ -0,0 +1,173 @@ +## Outline + +- Update documentation +- Update configuration comments +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... + +# 6.2.0.11 + +## Major Changes + +- Removed Spigot Platform Modules, and stopped loading QS if Spigot is detected. This will mean that unless the protocol changes that we use for display items, QS won't need updated for each version. +- Revamped Economy Code Completely + - New classes for all economy-related systems + - Any economy-related or benefits-related events are incompatible with previous versions. +- Added sign layout customizations per-type allowing you to change how lines are configured, an empty string('') will leave an empty line for that line of the sign. + +``` + #The layout of signs for shops. + layout: + + #The layout of BUYING shops. + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of FROZEN shops. + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of SELLING shops. + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +- Add wildcard support for item blacklist patterns(thanks to bennycallanan) + - Added support for wildcard patterns in the item blacklist configuration, allowing users to block entire categories of items with simple patterns. + + - Features + - Wildcard patterns like \*_AXE and \*_SPAWN_EGG now work in blacklist configuration + - Supports \* for any characters and ? for single character matching + - Case-insensitive pattern matching +- Overhauled GUI system(thanks to Yusakidev) + - Implemented gui.yml configuration file for customizing the GUI. + - Implemented better filtering for qs browse + - Implement GUI system to be more stable, and less error prone. + - Added gui.yml for fully configurable GUI layouts and text + - Browse menu: search, sort (price/name/stock), and filter (all/buying/selling/in-stock) + - Staff menu: search functionality for player/staff selection + - Grouped item pages for better shop browsing + - Refactored all menu pages to use configurable display/lore +- Added worldedit compat to QS internally as it's widely used. +- Revamped the taxation system to be more flexible and easier to configure. + - introduced a new progressive tax system that allows you to tax based on the balance of players.(suggested by YuanYuanOwO) + - introduced the ability to tax the player interacting with the shop, the owner, or both + - all tax-related configurations have been moved under the shop-tax section of the config. this may require reconfiguration of your tax settings. + - added a new ShopEnhancedTaxEvent, deprecated the old ShopTaxEvent. + - Added a new TaxManager, and TaxProvider interfaces, this allows for custom tax providers to be added by addons/third-party developers. + +## Addons/Compats Changes + +- Added UltimateClaims compat +- Added SimpleClaimSystem compat +- Added Quests by Pika addon +- Added BetonQuest addon +- Added Pl3xMap addon +- MatcherPlus Compat Improvements + - Added support for CrazyCrates + - Added support for ExcellentCrates + - Added support for SilkSpawners. +- WorldGuard Compat Improvements(Thanks to golovin12) + - Added clear permission handling: + - Region owners and members automatically have permission to create and trade in their own regions. + - Other players must have the appropriate WorldGuard flags enabled (quickshophikari-create, quickshophikari-trade) to interact with shops. + - If a shop is located outside any region, default QuickShop behavior applies (no extra restrictions) +- Added colored markers based on shop state for bluemap(thanks to YusakiDev) +- Updated dynmap/towny addons to use the new ShopTypeEnhancedEvent instead of ShopTypeEvent. +- Removed worldedit compat, it's now included in the main plugin. +- Added support for global flags to the worldguard compat. + +## Internals/Developer APIs + +- Removed several deprecated methods and classes. +- Revamped the interaction manager. It is now more flexible and allows external additions + - This involves two classes InteractionBehavior and InteractionType. + - InteractionType details the type of interaction such as: STANDING_LEFT_CLICK_SIGN, STANDING_LEFT_CLICK_SHOP + - InteractionBehavior outlines a behavior for an InteractionType such as CONTROL_PANEL and TRADE_UI +- Added UserLimitCalculationEvent, which allows for custom limits to be applied to users. + - This is useful for limiting the number of shops a user can have, or adding on to the existing limits provided by the ranks system without needing to implement a new RankLimiter. +- Added a new ShopLayoutProvider interface, and default implementation. + - This allows for custom layouts to be used for shops, allowing for more customization. + - This also allows for developers to override the default layout provider and create their own implementation. +- How to make your own? + - Implement the classes you would like to then register with the InteractionManager: + - ```java + InteractionManager manager = QuickShop.getInstance().getInteractionManager(); + + manager.interaction(new MyTradeInteraction()); + manager.behavior(new MyTradeBehavior()); + ``` +- Replaced some Apache Commons calls that could be easily replaced with built-in java methods, reduces some calls by ~ 1100ms/method call +- Deprecated the ShopType enum, and the ShopTypeEvent. These are replaced with the new IShopType interface and implementing classes. + - The new event is ShopTypeEnhancedEvent. + - This allows for third-party addons to add their own shop types, and simplifies code checks for translations. +- Updated config system to use Boosted-yaml + - this allows for auto-updating of config files without complex update scripts + - this also allows for the config system to not be minecraft-dependent. +- Replaced logical PaperLib calls with native PaperAPI calls. + +## Minor Changes + +- Bump Java version up to 21 +- Added shop.display-allow-enchants to enable/disable enchantments for display items on shops. +- Added workaround for packetevents not supporting custom enchants on itemstacks for virtual display items. +- Using locale translations for shop-type in mode toggle icon(thanks to ExyiN) +- Bumped Residence version for the compat(thanks to YuanYuanOwO) +- add world whitelist support(thanks to wling-art) +- added /qs database save command, which saves all currently dirty-marked shops to the database. +- Split up interactions _SHOPBLOCK into _SHOPBLOCK and _CONTAINER. + - _SHOPBLOCK relates to shops, where _CONTAINER relates to shop-valid containers that are not currently shops. +- Added inventory as an option for command panel, this is useful for adding a secondary option for players to open a shop's inventory. +- Moved crowdin arguments from system properties to config.yml + - crowdin-host + - use-crowdin-ota + +## Fixes + +- Fixes issue with item price restrictions(thanks to maxcom1) +- Fixes issue with 1.20.x protocol lib displays(thanks to YuanYuanOwO) +- Fixes issue when no item is in hand for itemdebug(thanks to YuanYuanOwO) +- Fixes issue with dominion addon(thanks to YuanYuanOwO) +- Add a simple check to avoid this. If it is not own shop, reject limit request directly.(Thanks to YuanYuanOwO) +- Fix NPE by not setting tax for price in TransactionBuilder(thanks to maxcom1) +- Fixes /quickshop suggestprice to differentiate between buy/sell shops. (Thanks to MidSpike) +- PacketEvents ClassNotFoundException with ProtocolLib(thanks to wling-art) +- Reallocate block state access to region thread for shop creation(thanks to r00tbeerman) +- resolve SLF4J StaticLoggerBinder loading error(thanks to wling-art) +- sign hijacking issue by validating sign facing direction(thanks to wling-art) +- Performance improvements for QuickShop disabling to prevent potential freezes. +- Fixed issue with 1.20.4 packetevents virtual displays not staying put. +- Fixes critical issue in GriefPrevention compatibility plugin. +- Fixes issue with shop owner not getting money when benefits active. +- Fixes for lands addon on folia, Use regionThread for Folia compatibility(thanks to YusakiDev) +- Fixes for TRADE_DIRECT on stacking shops +- Fixes issue for protocollib 5.4.0 with undocumented packet changes. +- Fixes issue where item stacks could be used on creation above the max stack size. +- Fixes issue with BukkitAudiences-related crashes on 1.21.11. +- Fix issue with shop deletion when getting too impatient. +- Fix the permission check issue when a shop owned by a non-owner is transferred to someone else. (thanks to YuanYuanOwO) +- Fix ui with supertool (thanks to YuanYuanOwO) +- Fix issue with logs generating outside debug mode. +- Fix issue with /qs find. +- Fix configuration loading timing. +- Fix configuration loading/creation warning message language. +- Fix command description language key mismatch(thanks to wling-art) +- Fix qs clean command on folia(thanks to wling-art) +- Fix per-player-shop-sign on folia(thanks to wling-art) +- Fix potential recursive deadlock in virtual display packet sending(thanks to wling-art) +- Fix configuration loading/creation warning message language. +- Fix issue with /qs browse and ShopItemOnly addon not behaving properly together on folia. +- Fix issue with PLAN using outdated APIs. +- Fix issue with /qs clean on folia.(thanks to wling-art) +- Fix issue with /qs cleanghost on folia(thanks to wling-art) +- More thread safety fixes for shops on folia.(thanks to wling-art) +- Fix owner payment calculations with benefits(thanks to wling-art) \ No newline at end of file diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md index 8172f9b410..dcc3edc67d 100644 --- a/i18n/ro-RO/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md @@ -20,20 +20,20 @@ the ControlComponent object with a custom one that will replace the original dur ### Introduction of the Revamped Packet System 1. **About**: - - A modular and scalable system for managing packets related to virtual display items in Minecraft. - - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. + - A modular and scalable system for managing packets related to virtual display items in Minecraft. + - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. 2. **Custom Packet Factories**: - - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. - - Packet types: - - **Spawn Packet**: Spawns a virtual item entity at a specific location. - - **Metadata Packet**: Updates the visual properties of virtual items. - - **Velocity Packet**: Adds motion/velocity to entities (currently optional). - - **Destroy Packet**: Removes the entity from the client view. + - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. + - Packet types: + - **Spawn Packet**: Spawns a virtual item entity at a specific location. + - **Metadata Packet**: Updates the visual properties of virtual items. + - **Velocity Packet**: Adds motion/velocity to entities (currently optional). + - **Destroy Packet**: Removes the entity from the client view. 3. **Error Handling and Logging**: - - Enhanced debug logs to trace packet-related issues. - - Detailed error messages for missing factories or unregistered listeners. + - Enhanced debug logs to trace packet-related issues. + - Detailed error messages for missing factories or unregistered listeners. #### Improvements: diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md index 7775308722..c6e0948d19 100644 --- a/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md index f420997a9c..38587e3784 100644 --- a/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md index 5ed8182c9a..259c55f342 100644 --- a/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md index 924a37ac49..7fd4596a6a 100644 --- a/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,6 +10,6 @@ This is a BungeeCord plugin, you need install it within your BungeeCord's plugin ## How does it work? -BungeeCord Bridge plugins will register a `quickshop:bungee` channel for fowarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. +BungeeCord Bridge plugins will register a `quickshop:bungee` channel for forwarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. All forwarding is indicated by QuickShop-Hikari on the Spigot server and ends when it is not needed. diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md index 27d68956a8..20fbaf7a0c 100644 --- a/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,5 +10,5 @@ This compatibility module added [Chest Protect](https://www.spigotmc.org/resourc ## How does it work? -This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident.\ +This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident. It also prevents players from creating shops on ChestProtect protected containers. diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md index 220e26d8bb..e1757e7be9 100644 --- a/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/dominion.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/dominion.md new file mode 100644 index 0000000000..e1195278a8 --- /dev/null +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/dominion.md @@ -0,0 +1,138 @@ +# Dominion + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and Dominion. + +It ensures that shop creation and trading respect Dominion’s land and territory protection system. + +--- + +## What Does It Do? + +Dominion allows players or groups to claim land and define territory-based permissions. + +Without compatibility: + +- Players could create shops inside territories they do not control. +- Visitors might trade inside protected dominions. +- Dominion permission rules might not apply to shop interactions. + +The Dominion compat module ensures that: + +- Shop creation respects territory ownership. +- Shop trading follows Dominion permission settings. +- Protected land remains secure from unauthorized shop usage. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a Dominion-controlled area. +- Whether the player has permission within that territory. +- Whether Dominion rules allow shop interaction. + +If the action is not permitted by Dominion settings, QuickShop blocks it. + +If the location is outside any Dominion territory, default QuickShop behavior applies. + +--- + +## Territory Owner Control + +With this module enabled: + +- Territory owners can create and manage shops inside their dominion. +- Trusted members follow territory-based permissions. +- Outsiders are restricted unless explicitly allowed. +- Shop actions respect Dominion’s land rules automatically. + +This prevents unauthorized shop placement inside protected territories. + +--- + +## Installation + +1. Install Dominion. +2. Install the QuickShop Dominion compat module. +3. Restart your server. + +The module activates automatically if Dominion is detected. + +No manual configuration linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside dominions +whitelist-mode: false + +# Allow territory owners to override shop permissions +allow-owner-override: true +``` + +If Dominion is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For servers using Dominion: + +- Restrict shop creation to territory owners or trusted members. +- Prevent shop creation in wilderness if desired. +- Allow dominion owners to manage shop permissions. +- Review Dominion permission settings to align with shop behavior. + +This ensures protected territories remain secure and organized. + +--- + +## Common Questions + +### Can players create shops in someone else's dominion? + +Only if Dominion permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You may allow or restrict shops outside dominions. + +### What happens if Dominion is removed? + +QuickShop returns to normal behavior and stops checking Dominion territories. + +--- + +## Summary + +The Dominion compat module: + +- Enforces territory-based permissions +- Prevents unauthorized shop creation +- Protects claimed land from misuse +- Integrates seamlessly with Dominion + +It is recommended for servers running Dominion. \ No newline at end of file diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md index 743d3ae666..2ac9b10488 100644 --- a/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md new file mode 100644 index 0000000000..07ba4ada66 --- /dev/null +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md @@ -0,0 +1,133 @@ +# FabledSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and FabledSkyblock. + +It ensures that shop creation and trading properly respect island boundaries and island permissions. + +--- + +## What Does It Do? + +On Skyblock servers, players build and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Players might trade in areas they should not. +- Island protection rules might not apply to shops. + +The FabledSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members behave correctly with shops. +- Island visitors are restricted appropriately. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a FabledSkyblock island. +- Whether the player has permission on that island. +- Whether island settings allow the action. + +If the action is not permitted by island rules, QuickShop will deny it. + +--- + +## Island Ownership Rules + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow island permission settings. +- Visitors can only trade if island permissions allow it. +- Outside of islands, default QuickShop behavior applies. + +--- + +## Installation + +1. Install FabledSkyblock. +2. Install the QuickShop FabledSkyblock compat module. +3. Restart your server. + +The module activates automatically if FabledSkyblock is detected. + +No manual linking is required. + +--- + +## Configuration + +If the module provides configuration options, they will appear in its `config.yml`. + +Typical options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If FabledSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most Skyblock servers: + +- Allow shop creation only inside islands. +- Prevent trading in the void or wilderness. +- Let island owners control shop permissions. +- Use island rank systems to manage shop access. + +This helps maintain economic balance between islands. + +--- + +## Common Questions + +### Can players create shops in the void? + +Only if your configuration allows it. +Most servers disable shop creation outside islands. + +### Does this affect island war or PvP modes? + +No. +The module only checks island ownership and permissions for shop interactions. + +### What happens if FabledSkyblock is removed? + +QuickShop returns to normal behavior. + +--- + +## Summary + +The FabledSkyblock compat module: + +- Protects island economies +- Enforces island permission rules +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is strongly recommended for any server running FabledSkyblock. \ No newline at end of file diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md index 81b13d2c6b..32614d3019 100644 --- a/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md @@ -2,17 +2,17 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -GreifPrevention compatibility module added compaitibility with GF. +GreifPrevention compatibility module added compatibility with GF. ## How does it work This module allow QuickShop-Hikari check if player have permission to create or use QuickShop in specific region. -And delete shops when claim removed, untrusted, unclimed, expired, resized or subclaim created. +And delete shops when claim removed, untrusted, unclaimed, expired, resized or subclaim created. ## Configuration diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md new file mode 100644 index 0000000000..e71b34d462 --- /dev/null +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md @@ -0,0 +1,139 @@ +# HuskTowns + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and HuskTowns. + +It ensures that shop creation and trading respect town and claim permissions defined by HuskTowns. + +--- + +## What Does It Do? + +HuskTowns allows players to create towns and claim land. + +Without compatibility: + +- Players could create shops inside towns they do not belong to. +- Visitors might trade inside protected towns. +- Town permission rules might not apply to shop interactions. + +The HuskTowns compat module ensures that: + +- Shop creation respects town ownership. +- Trading follows town permission settings. +- Town members and visitors are handled correctly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a HuskTowns claim. +- Whether the player is a town member, trusted player, or outsider. +- Whether the town's permission settings allow the action. + +If the action is not permitted by town rules, QuickShop blocks it. + +Outside of town claims, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Town Owner Control + +With this module enabled: + +- Town owners can create and manage shops inside their town. +- Town members follow town-based permission settings. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect town claim protection. + +This prevents unauthorized shop placement and trading inside protected towns. + +--- + +## Installation + +1. Install HuskTowns. +2. Install the QuickShop HuskTowns compat module. +3. Restart your server. + +The module activates automatically if HuskTowns is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside towns +whitelist-mode: false + +# Allow town owners to override shop permissions +allow-owner-override: true +``` + +If HuskTowns is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For town-based survival servers: + +- Restrict shop creation to town members. +- Allow trading only where town permissions permit. +- Prevent shop creation in wilderness if desired. +- Enable owner override for better administrative control. + +This helps maintain town-based economic balance. + +--- + +## Common Questions + +### Can players create shops in another town? + +Only if that town's permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You can allow or restrict shops outside towns. + +### What happens if HuskTowns is removed? + +QuickShop returns to normal behavior and stops checking town permissions. + +--- + +## Summary + +The HuskTowns compat module: + +- Enforces town-based land permissions +- Protects towns from unauthorized shop usage +- Integrates smoothly with HuskTowns +- Requires minimal setup + +It is recommended for any server running HuskTowns. \ No newline at end of file diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md new file mode 100644 index 0000000000..3fa2995eb0 --- /dev/null +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md @@ -0,0 +1,139 @@ +# IridiumSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and IridiumSkyblock. + +It ensures that shop creation and trading respect island boundaries and island permission settings defined by IridiumSkyblock. + +--- + +## What Does It Do? + +IridiumSkyblock allows players to create and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Visitors might trade inside protected islands. +- Island protection rules might not apply correctly to shops. + +The IridiumSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members and visitors are handled properly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside an IridiumSkyblock island. +- Whether the player is the island owner, member, or visitor. +- Whether island permissions allow shop interaction. + +If the action is not permitted, QuickShop blocks it. + +Outside of islands, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Island Owner Permissions + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow the island's permission configuration. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect island protection rules. + +This prevents unauthorized shop usage inside protected islands. + +--- + +## Installation + +1. Install IridiumSkyblock. +2. Install the QuickShop IridiumSkyblock compat module. +3. Restart your server. + +The module activates automatically if IridiumSkyblock is detected. + +No additional setup is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If IridiumSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most IridiumSkyblock servers: + +- Restrict shop creation to island owners. +- Allow island members to trade if trusted. +- Prevent shop creation in the void or wilderness. +- Enable owner override for better management. + +This helps maintain balanced island economies. + +--- + +## Common Questions + +### Can players create shops outside their island? + +Only if your configuration allows it. + +Most Skyblock servers restrict shops to island areas. + +### Do island ranks affect shop permissions? + +Yes, if your island permissions are configured to control interaction rights. + +QuickShop follows island rules. + +### What happens if IridiumSkyblock is removed? + +QuickShop returns to normal behavior and stops checking island permissions. + +--- + +## Summary + +The IridiumSkyblock compat module: + +- Protects island economies +- Enforces island-based permissions +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is recommended for any server running IridiumSkyblock. diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md new file mode 100644 index 0000000000..3b4726cb9d --- /dev/null +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md @@ -0,0 +1,151 @@ +# ItemMatcherPlus + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +The ItemMatcherPlus module improves how QuickShop matches custom and plugin-modified items. + +It allows QuickShop to properly recognize and stack items created by other plugins that normally would not match using standard Bukkit item comparisons. + +This module is especially useful for servers that use: + +- Custom items +- Modified metadata +- NBT-based systems +- Advanced crate rewards +- Custom brewing systems +- Custom fishing rewards + +--- + +## What Does It Do? + +By default, Minecraft item matching checks: + +- Material type +- Basic metadata + +However, many plugins modify items with: + +- Custom NBT data +- Hidden tags +- Custom lore formats +- Unique identifiers + +Without enhanced matching: + +- Items may not stack +- Shops may refuse valid items +- Transactions may fail +- Buying/selling may not behave correctly + +ItemMatcherPlus improves compatibility and matching accuracy. + +--- + +## Supported Plugins + +ItemMatcherPlus includes built-in support for: + +- AdvancedItems +- BreweryX +- CrazyCrates +- ExcellentCrates +- PyroFishing +- SilkSpawners + +If any of these plugins are installed, QuickShop will automatically use enhanced matching logic. + +No additional configuration is required. + +--- + +## How It Works + +When a player trades with a shop: + +1. QuickShop checks the item. +2. If ItemMatcherPlus is enabled, it performs advanced matching. +3. Plugin-specific metadata is validated. +4. The item is confirmed as a match (or rejected safely). + +This allows: + +- Proper stacking of custom items +- Correct shop transactions +- Accurate buy/sell detection +- Reduced false mismatches + +--- + +## Installation + +1. Download the ItemMatcherPlus module. +2. Place the JAR into your `plugins` folder. +3. Restart your server. + +If supported plugins are detected, compatibility activates automatically. + +--- + +## Configuration + +ItemMatcherPlus does not require configuration. + +It activates automatically when: + +- The module is installed +- A supported plugin is detected + +If a supported plugin is not installed, no extra logic runs. + +--- + +## Why You Should Use It + +You should install ItemMatcherPlus if your server uses: + +- Custom fishing plugins +- Custom brewing systems +- Crate plugins with modified items +- Custom spawners +- Any plugin that modifies NBT data + +Without it, shops may not properly recognize custom items. + +--- + +## Common Questions + +### Do I need this if I don't use custom item plugins? + +No. +If you only use vanilla items, this module is not necessary. + +### Does this affect performance? + +The module only activates enhanced matching when needed. + +Normal item matching remains fast and efficient. + +### Will it break existing shops? + +No. +It improves compatibility and matching accuracy without modifying existing shop data. + +--- + +## Summary + +ItemMatcherPlus: + +- Improves item matching accuracy +- Adds support for major custom item plugins +- Prevents stacking and trade issues +- Requires no configuration +- Activates automatically + +If you run a heavily customized economy server, this module is highly recommended. \ No newline at end of file diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md index ba87606698..d4ae7d129a 100644 --- a/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/lands.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/lands.md index 06296f5779..7671fcdfe0 100644 --- a/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/lands.md +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/lands.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/openinv.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/openinv.md index c51f628615..4807d57873 100644 --- a/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/openinv.md +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/openinv.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md new file mode 100644 index 0000000000..c2136320b0 --- /dev/null +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md @@ -0,0 +1,138 @@ +# SimpleClaimSystem + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and SimpleClaimSystem. + +It ensures that shop creation and trading respect land ownership and claim permissions defined by SimpleClaimSystem. + +--- + +## What Does It Do? + +SimpleClaimSystem allows players to claim land and protect it from unauthorized interaction. + +Without compatibility: + +- Players could create shops inside claims they do not own. +- Visitors might trade inside protected areas. +- Claim protection might not apply correctly to shops. + +The SimpleClaimSystem compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops within their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a SimpleClaimSystem claim. +- Whether the player has permission within that claim. +- Whether claim rules allow shop interaction. + +If the action is not permitted by the claim, QuickShop blocks it. + +If the location is outside any claim, default QuickShop behavior applies. + +--- + +## Claim Owner Control + +With this module enabled: + +- Claim owners can create and manage shops inside their claim. +- Trusted players follow claim-based permissions. +- Visitors are restricted unless explicitly allowed. +- Claim protection rules apply automatically to shop interactions. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install SimpleClaimSystem. +2. Install the QuickShop SimpleClaimSystem compat module. +3. Restart your server. + +The module activates automatically if SimpleClaimSystem is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If SimpleClaimSystem is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Enable owner override for easier management. + +This ensures players maintain control over their protected land. + +--- + +## Common Questions + +### Can players create shops in someone else's claim? + +Only if claim permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can allow shops outside claims or restrict them. + +### What happens if SimpleClaimSystem is removed? + +QuickShop will revert to default behavior and stop checking claim permissions. + +--- + +## Summary + +The SimpleClaimSystem compat module: + +- Enforces claim-based permissions +- Prevents unauthorized shop creation +- Protects land from unwanted trading +- Requires minimal setup + +It is recommended for servers running SimpleClaimSystem. \ No newline at end of file diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md index a84dbf057b..4dfa8ae97c 100644 --- a/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/towny.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/towny.md index 52ab4818f4..b26c19d335 100644 --- a/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/towny.md +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/towny.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -26,7 +26,7 @@ Town sub-command allow you switch a quickshop between regular shop and town shop For a nation shop, the shop owner will changed to nation fake player created by Towny, and use Nation's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from nation Towny account.\ +All purchases will deposit or withdraw money from nation Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Nation Shop. @@ -35,7 +35,7 @@ If Plot type restriction is enabled, only a specific Plot type can create a Nati For a town shop, the shop owner will changed to town fake player created by Towny, and use Town's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from town Towny account.\ +All purchases will deposit or withdraw money from town Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Town Shop. @@ -88,7 +88,7 @@ bank-mode: ## Permission Override -By adjust configuration, you're allow mayor or king automaticlly grant administrator permission on all shops in their management range. +By adjust configuration, you're allow mayor or king automatically grant administrator permission on all shops in their management range. ```yaml #Should allow Mayor grant the shop administrator permission on they town. @@ -168,7 +168,7 @@ This causes Towny and QuickShop Hikari to use accounts with the same name but di You can adjust the option in configuration to enable workaround. -NOTE: It will force turned on if detected EssentialsX installed on your server.\ +NOTE: It will force turned on if detected EssentialsX installed on your server. At present, we do not provide a method for disable it. ```yaml diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md new file mode 100644 index 0000000000..0189958495 --- /dev/null +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md @@ -0,0 +1,138 @@ +# UltimateClaims + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and UltimateClaims. + +It ensures that shop creation and trading respect land claim permissions managed by UltimateClaims. + +--- + +## What Does It Do? + +On servers using land-claim plugins, players protect areas of the world from unauthorized interaction. + +Without compatibility: + +- Players may create shops inside claims they do not own. +- Visitors might trade in areas where they should not. +- Claim protection rules might not apply correctly to shops. + +The UltimateClaims compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops inside their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a claim. +- Whether the player has permission in that claim. +- Whether claim rules allow shop interaction. + +If the action violates claim settings, QuickShop blocks it. + +Outside of claims, normal QuickShop behavior applies. + +--- + +## Claim Owner Permissions + +With this module enabled: + +- Claim owners can create and manage shops within their claim. +- Trusted players follow claim permission settings. +- Visitors are restricted based on claim configuration. +- Shop actions outside of claims behave normally. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install UltimateClaims. +2. Install the QuickShop UltimateClaims compat module. +3. Restart your server. + +If UltimateClaims is detected on startup, compatibility activates automatically. + +No additional linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Common options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If UltimateClaims is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Keep owner override enabled for better control. + +This ensures players maintain full control over their protected land. + +--- + +## Common Questions + +### Can players create shops inside someone else's claim? + +Only if the claim permissions allow it. + +Otherwise, QuickShop will block the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can choose to restrict shops to claimed land only. + +### What happens if UltimateClaims is removed? + +QuickShop returns to normal behavior without claim checks. + +--- + +## Summary + +The UltimateClaims compat module: + +- Protects claimed land from unauthorized shop usage +- Enforces claim-based permissions +- Integrates smoothly with land-claim servers +- Requires minimal setup + +It is recommended for any server running UltimateClaims. \ No newline at end of file diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md index 87a71a205c..6437754503 100644 --- a/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md @@ -2,8 +2,10 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. Find out more [here](../modules/shops/worldedit.md). + +Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. \ No newline at end of file diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/development/01-getting-start.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/development/01-getting-start.md index 92b773451e..0e78e52367 100644 --- a/i18n/ro-RO/docusaurus-plugin-content-docs/current/development/01-getting-start.md +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/development/01-getting-start.md @@ -6,8 +6,8 @@ This series of articles will help you build extensions for QuickShop-Hikari or i ## License -QuickShop-Hikari is open source using the [GPLv3](https://www.gnu.org/licenses/quick-guide-gplv3.en.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari).\ -You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the GPLv3 agreement. +QuickShop-Hikari is open source using the [AGPLv3](https://www.gnu.org/licenses/agpl-3.0.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari). +You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the AGPLv3 agreement. ## 🚧Don't trust Javadoc too much @@ -48,7 +48,7 @@ QuickShop-Hikari divides operation sources into three types: - Server Main Thread - Async Thread (any other threads but not server main thread) -- Hybird +- Hybrid If you access the API through the wrong thread, QuickShop-Hikari will force a runtime error to be thrown. @@ -58,4 +58,4 @@ For APIs that may trigger network IO or long-time disk IO, you are required not You can see [Util.ensureThread()](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/3d1d271e1106ea1c83cc6068f8232ab7c7860918/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/util/Util.java#L351) and find out the requirements of the different APIs by looking up their use. APIs that do not use Util.ensureThread() are allowed to be called from any thread by default. -You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. +You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. \ No newline at end of file diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md index aa2404c594..7828d414ad 100644 --- a/i18n/ro-RO/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md @@ -10,7 +10,7 @@ ShopManager manager = api.getShopManager(); ## Getting a shop -Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates.\ +Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates. QuickShop-Hikari's store is only bound to one half of "Large Chest", so to get the store, you need to query both the cube itself and its associated cube. The good thing is that there is an API in the plugin that allows you to handle this situation very easily. @@ -71,7 +71,7 @@ manager.deleteShop(shop) // Permanently delete this store, both memory and datab ## Identify a store -Please note that store locations are technically variable and you should not use coordinates to identify a store.\ +Please note that store locations are technically variable and you should not use coordinates to identify a store. Also RuntimeRandomUniqueId should not be used to identify the store, as the name suggests, the value changes every time the server restarts, it should only be used to handle scenarios where the player interacts with the server. ```java diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md index 543f1851da..4f839ed652 100644 --- a/i18n/ro-RO/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md @@ -1,6 +1,6 @@ # 0x05 Per shop permission -QuickShop-Hikari has a per shop permission management system.\ +QuickShop-Hikari has a per shop permission management system. Therefore, for a normal permission node check is not enough, you need to attach an additional check. ## Check with shop diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/development/06-protocol-system.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/development/06-protocol-system.md index 5d37a15536..0380b789f9 100644 --- a/i18n/ro-RO/docusaurus-plugin-content-docs/current/development/06-protocol-system.md +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/development/06-protocol-system.md @@ -15,30 +15,30 @@ This documentation will guide developers through the components, implementation - **Purpose**: Manages packet handling and initialization logic. - **Interface**: `PacketHandler` - **Key Methods**: - - `Map> factories()` - - Retrieves a map of supported `PacketFactory` instances keyed by game versions. - - `void initialize()` - - Initializes the packet handler. - - `Optional> factory(String version)` - - Retrieves a `PacketFactory` for a specific game version. + - `Map> factories()` + - Retrieves a map of supported `PacketFactory` instances keyed by game versions. + - `void initialize()` + - Initializes the packet handler. + - `Optional> factory(String version)` + - Retrieves a `PacketFactory` for a specific game version. ### 2. **PacketFactory** - **Purpose**: Creates and sends specific packet types. - **Interface**: `PacketFactory` - **Supported Packets**: - - **Spawn Packet**: - - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. - - Example Use: Representing shop items visually. - - **Metadata Packet**: - - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. - - Example Use: Updating item display name or properties. - - **Velocity Packet**: - - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. - - Example Use: Custom animations for virtual items. - - **Destroy Packet**: - - Removes the entity from the client view. Created using `createDestroyPacket()`. - - Example Use: Unloading or removing a virtual display item. + - **Spawn Packet**: + - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. + - Example Use: Representing shop items visually. + - **Metadata Packet**: + - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. + - Example Use: Updating item display name or properties. + - **Velocity Packet**: + - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. + - Example Use: Custom animations for virtual items. + - **Destroy Packet**: + - Removes the entity from the client view. Created using `createDestroyPacket()`. + - Example Use: Unloading or removing a virtual display item. Developers implementing custom `PacketFactory` should ensure these packets are correctly handled and optimized for performance. @@ -46,24 +46,24 @@ Developers implementing custom `PacketFactory` should ensure these packets are c - **Purpose**: Oversees the lifecycle of virtual display items and integrates with packet handlers. - **Key Features**: - - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). - - Manages virtual display items mapped to chunks. - - Provides thread-safe operations for adding and removing display items. + - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). + - Manages virtual display items mapped to chunks. + - Provides thread-safe operations for adding and removing display items. ### 4. **VirtualDisplayItem** - **Purpose**: Represents a virtual item displayed to players. - **Key Features**: - - Generates and caches packets for spawning, metadata, velocity, and destruction. - - Manages packet senders for each player. - - Handles spawn and removal operations dynamically. + - Generates and caches packets for spawning, metadata, velocity, and destruction. + - Manages packet senders for each player. + - Handles spawn and removal operations dynamically. ### 5. **ProtocolLibHandler and PacketEventsHandler** - **Purpose**: Provide implementations of `PacketHandler` using ProtocolLib and PacketEvents, respectively. - **Differences**: - - `ProtocolLibHandler` leverages ProtocolLib API. - - `PacketEventsHandler` uses the PacketEvents library. + - `ProtocolLibHandler` leverages ProtocolLib API. + - `PacketEventsHandler` uses the PacketEvents library. --- @@ -140,11 +140,11 @@ public class CustomPacketFactory implements PacketFactory { Packet factories are provided for specific game versions through two primary implementations: - **ProtocolLib**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` - **PacketEvents**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` --- diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md new file mode 100644 index 0000000000..aebc035f87 --- /dev/null +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md @@ -0,0 +1,297 @@ +# Interaction System (Developer Guide) + +The Interaction System allows developers to fully customize how players interact with shops. + +As of 6.2.0.11, the system has been redesigned to be: + +- Modular +- Extensible +- Thread-safe +- Fully customizable by third-party addons + +This guide will walk you through: + +1. What the Interaction System is +2. Getting the `InteractionManager` +3. Understanding `InteractionType` +4. Understanding `InteractionBehavior` +5. Registering custom interactions +6. Best practices + +--- + +# Overview + +The Interaction System is composed of three main components: + +| Component | Purpose | +| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| `InteractionType` | Describes **what kind of click happened** (standing, sneaking, left-click, sign, shopblock, etc.) | +| `InteractionBehavior` | Describes **what action should happen** when that type is triggered | +| `InteractionManager` | Central registry that manages interactions and behaviors | + +This separation allows developers to: + +- Add new click types +- Add new behaviors +- Override existing ones +- Extend QuickShop without modifying core code + +--- + +# Getting the InteractionManager + +To begin registering custom interactions, you must retrieve the `InteractionManager` instance. + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +If you are working directly with the plugin instance: + +```java +InteractionManager manager = QuickShop.getInstance().getInteractionManager(); +``` + +Once obtained, you can: + +- Register new interaction types +- Register new behaviors +- Override existing behaviors + +--- + +# Understanding InteractionType + +`InteractionType` represents **how** a player interacted with a shop. + +Examples include: + +- `STANDING_LEFT_CLICK_SIGN` +- `STANDING_RIGHT_CLICK_SHOPBLOCK` +- `SNEAKING_LEFT_CLICK_CONTAINER` +- etc. + +Each `InteractionType` defines: + +- Player stance (standing/sneaking) +- Click type (left/right) +- Target (sign/shopblock/container) + +InteractionTypes do NOT define behavior — they only define the trigger. + +--- + +# Understanding InteractionBehavior + +`InteractionBehavior` defines **what happens** when an interaction is triggered. + +Examples of built-in behaviors: + +- `TRADE_INTERACTION` +- `TRADE_UI` +- `CONTROL_PANEL` +- `CONTROL_PANEL_UI` +- `NONE` + +A behavior: + +- Executes logic +- May open GUIs +- May send chat panels +- May directly trade items +- Can cancel or modify flow + +This separation makes it easy to reuse behaviors across multiple interaction types. + +--- + +# Registering Custom Interactions + +There are two things you can register: + +- A custom `InteractionType` +- A custom `InteractionBehavior` + +--- + +## Creating a Custom InteractionBehavior + +Create a class implementing `InteractionBehavior`. + +Example: + +```java +public class MyTradeBehavior implements InteractionBehavior { + + @Override + public String getKey() { + return "MY_CUSTOM_TRADE"; + } + + @Override + public void execute(InteractionClick click) { + Player player = click.getPlayer(); + Shop shop = click.getShop(); + + player.sendMessage("You triggered my custom interaction!"); + + // Add your custom logic here + } +} +``` + +Then register it: + +```java +InteractionManager manager = api.getInteractionManager(); +manager.behavior(new MyTradeBehavior()); +``` + +Now your behavior is available for use. + +--- + +## Creating a Custom InteractionType + +You may also register custom interaction types if you want to introduce new trigger definitions. + +Example: + +```java +public class MyCustomInteraction implements InteractionType { + + @Override + public String getKey() { + return "STANDING_DOUBLE_CLICK_SIGN"; + } + + @Override + public boolean matches(InteractionClick click) { + // Define custom logic to detect this interaction + return click.isStanding() + && click.isSign() + && click.isDoubleClick(); + } +} +``` + +Register it: + +```java +manager.interaction(new MyCustomInteraction()); +``` + +--- + +# Binding Types to Behaviors + +The InteractionManager internally maps interaction types to behaviors based on configuration and registration order. + +Once your behavior is registered: + +- It can be referenced in `interaction.yml` +- Or attached programmatically + +Example interaction.yml usage: + +```yaml +STANDING_LEFT_CLICK_SIGN: MY_CUSTOM_TRADE +``` + +--- + +# The InteractionClick Object + +When your behavior executes, you receive an `InteractionClick` object. + +It provides: + +- `getPlayer()` +- `getShop()` +- `getLocation()` +- `isSneaking()` +- `isSign()` +- `isShopBlock()` +- etc. + +This gives full context for safe execution. + +--- + +# Advanced: Overriding Built-in Behavior + +If you register a behavior using the same key as an existing one, your behavior can override the default. + +⚠️ Be careful when doing this — you are replacing core functionality. + +--- + +# Best Practices + +### Always Use Unique Keys + +Avoid naming collisions: + +``` +MYPLUGIN_CUSTOM_BEHAVIOR +``` + +### Keep Behavior Lightweight + +Do not block the main thread with: + +- Heavy database calls +- File IO +- Network calls + +Use async tasks if needed. + +### Respect Permissions + +Always validate: + +```java +if (!player.hasPermission("myplugin.use")) { + return; +} +``` + +### Avoid Hard Overrides Unless Necessary + +Instead of replacing built-in behaviors, consider extending them. + +--- + +# Example: Full Minimal Implementation + +```java +public class ExampleAddon { + + public void register(QuickShopAPI api) { + + InteractionManager manager = api.getInteractionManager(); + + manager.behavior(new MyTradeBehavior()); + manager.interaction(new MyCustomInteraction()); + } +} +``` + +--- + +# Conclusion + +The Interaction System is designed to allow: + +- Full extensibility +- Clean separation of triggers and actions +- Easy integration for third-party developers + +By retrieving the `InteractionManager`: + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +You gain full control over how shops respond to player actions. \ No newline at end of file diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/development/08-tax-manager.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/development/08-tax-manager.md new file mode 100644 index 0000000000..72a56f9e88 --- /dev/null +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/development/08-tax-manager.md @@ -0,0 +1,266 @@ +# Tax System (Developer Guide) + +The QuickShop tax system allows server owners and developers to define how transaction taxes are calculated, distributed, and extended. + +As of 6.2.0.11, the tax system has been fully rewritten to provide: + +- A flexible TaxManager +- Pluggable TaxProvider support +- Progressive taxation +- Tax targeting (shop owner, interacting player, or both) +- Custom extension capability for third-party addons + +This guide explains how to work with the tax system programmatically. + +--- + +# Overview + +The tax system is composed of three core components: + +TaxManager +Responsible for coordinating tax calculation and execution. + +TaxProvider +Defines how tax values are calculated. + +TaxRates +Represents calculated tax results for a transaction. + +The system is designed to allow custom providers to be registered and used without modifying core logic. + +--- + +# Getting the TaxManager + +To work with the tax system, retrieve the TaxManager from the ShopManager. + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +Once obtained, you can: + +- Access current tax configuration +- Register custom tax providers +- Calculate tax values +- Hook into tax events + +--- + +# How the Tax System Works + +During a shop transaction: + +1. A base price is determined. +2. The TaxManager selects the active TaxProvider. +3. The TaxProvider calculates applicable tax. +4. A TaxRates object is produced. +5. The system applies the tax to: + + - Shop owner + - Interacting player + - Or both (depending on configuration) + +This architecture allows tax behavior to be modified without altering transaction logic. + +--- + +# TaxProvider + +A TaxProvider defines how tax values are calculated. + +You may create your own provider to implement: + +- Progressive tax brackets +- Flat percentage tax +- Conditional tax rules +- Region-based tax +- Rank-based tax +- Time-based tax + +Example minimal provider: + +```java +public class MyCustomTaxProvider implements TaxProvider { + + @Override + public TaxRates calculateTax(TaxContext context) { + + double basePrice = context.getPrice(); + + double taxAmount = basePrice * 0.05; // 5% flat tax + + return new TaxRates() + .ownerTax(taxAmount) + .buyerTax(0.0); + } +} +``` + +Then register it: + +```java +taxManager.provider(new MyCustomTaxProvider()); +``` + +Once registered, your provider will be used for tax calculations. + +--- + +# TaxRates + +TaxRates represents the result of a tax calculation. + +It typically contains: + +- Owner tax amount +- Buyer tax amount +- Total tax impact +- Metadata (if applicable) + +The transaction system will read from TaxRates and apply deductions accordingly. + +--- + +# Progressive Taxation + +The built-in system supports progressive tax structures. + +This allows server administrators to tax based on: + +- Player balance +- Shop owner balance +- Configured tax brackets + +Example configuration concept: + +- 0–10,000 balance → 1% tax +- 10,000–100,000 → 2% tax +- 100,000+ → 3% tax + +Developers can extend or override this logic inside a custom TaxProvider. + +--- + +# Targeting Tax + +The new tax system allows taxes to be applied to: + +- Shop owner +- Interacting player +- Both + +This is controlled via configuration, but custom providers can override distribution logic by adjusting TaxRates output. + +Example: + +```java +return new TaxRates() + .ownerTax(basePrice * 0.02) + .buyerTax(basePrice * 0.01); +``` + +--- + +# Registering a Custom TaxProvider + +To replace or extend tax logic: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); + +taxManager.provider(new MyCustomTaxProvider()); +``` + +You may register only one primary provider at a time. If multiple providers are needed, implement internal delegation within your custom provider. + +--- + +# Tax Events + +The tax system integrates with the event system. + +The modern event used is: + +ShopEnhancedTaxEvent + +This replaces legacy tax events and provides improved context, including: + +- Transaction builder reference +- TaxRates object +- Modification capability before final execution + +You can listen for the event and modify tax behavior dynamically: + +```java +@EventHandler +public void onTax(ShopEnhancedTaxEvent event) { + + TaxRates rates = event.getTaxRates(); + + // Example: Give VIP players reduced owner tax + if (event.getOwner().hasPermission("vip.tax.discount")) { + rates.ownerTax(rates.getOwnerTax() * 0.5); + } +} +``` + +--- + +# Best Practices + +Always keep tax calculations lightweight. + +Avoid: + +- Heavy database queries inside calculateTax +- Blocking network calls +- Long-running computations + +If complex logic is required, pre-cache required data outside the tax execution path. + +Ensure negative tax values are not returned unless intentional. + +Always validate final amounts before applying modifications. + +Respect configuration hierarchy unless intentionally overriding it. + +--- + +# Example Full Implementation + +```java +public class ExampleTaxAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + TaxManager taxManager = manager.taxManager(); + + taxManager.provider(new MyCustomTaxProvider()); + } +} +``` + +--- + +# Conclusion + +The new tax system is designed for: + +- Flexibility +- Extensibility +- Clean separation of concerns +- Future expansion + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +You gain full control over how QuickShop calculates and applies tax during transactions. \ No newline at end of file diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/development/09-layout-provider.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/development/09-layout-provider.md new file mode 100644 index 0000000000..55e3cd3e91 --- /dev/null +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/development/09-layout-provider.md @@ -0,0 +1,275 @@ +# Shop Layout Provider (Developer Guide) + +The Shop Layout Provider system allows developers to customize how shop signs are structured and rendered. + +As of 6.2.0.11, shop layouts are no longer hardcoded. Instead, they are controlled through the `IShopLayoutProvider` interface, which allows: + +- Custom sign line ordering +- Per-shop-type layouts (BUYING, SELLING, FROZEN, or custom types) +- Dynamic layout resolution +- Complete replacement of the default layout system + +This guide explains how to access, override, and implement a custom layout provider. + +--- + +# Overview + +The layout provider controls how shop sign lines are arranged. + +Instead of hardcoding: + +Line 1 → Header +Line 2 → Trading info +Line 3 → Item +Line 4 → Price + +The system now allows full customization through: + +- Config-based layout definitions +- Custom `IShopLayoutProvider` implementations +- Runtime overrides + +The default implementation is `SimpleShopLayoutProvider`. + +--- + +# Accessing the Layout Provider + +To retrieve the current layout provider: + +```java +ShopManager manager = api.getShopManager(); +IShopLayoutProvider provider = manager.shopLayoutProvider(); +``` + +To replace the layout provider with a custom one: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Once replaced, your implementation will control how shop layouts are generated. + +--- + +# Understanding IShopLayoutProvider + +`IShopLayoutProvider` defines how layout data is retrieved and resolved. + +It is responsible for: + +- Providing layout configuration per shop type +- Determining which layout to use +- Supplying formatted line keys +- Allowing future extensibility + +The default implementation reads layout definitions from configuration and applies them based on shop type. + +--- + +# Default Layout Example + +The default configuration-based layout looks like this: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +Each line maps to a layout component key. + +An empty string (`""`) leaves that line blank. + +The layout provider resolves these keys into actual sign content. + +--- + +# Creating a Custom Layout Provider + +To override the default behavior, implement `IShopLayoutProvider`. + +Example minimal implementation: + +```java +public class MyCustomLayoutProvider implements IShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + + ShopLayout layout = new ShopLayout(); + + layout.setLine(1, "Custom Header"); + layout.setLine(2, "Owner: " + shop.getOwnerName()); + layout.setLine(3, shop.getItem().getType().name()); + layout.setLine(4, "$" + shop.getPrice()); + + return layout; + } +} +``` + +Then register it: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Your layout will now control all shop sign formatting. + +--- + +# Per-Type Layout Control + +Because the system no longer depends on the legacy ShopType enum, layouts can support: + +- Built-in types (BUYING, SELLING, FROZEN) +- Custom shop types +- Addon-defined shop types + +Your provider can determine layout logic dynamically: + +```java +@Override +public ShopLayout provideLayout(Shop shop) { + + if (shop.getShopType().key().equals("FROZEN")) { + return frozenLayout(shop); + } + + return defaultLayout(shop); +} +``` + +This allows conditional formatting, localization adjustments, or special event styling. + +--- + +# Advanced Customization + +A custom layout provider can: + +- Pull data from external plugins +- Inject dynamic placeholders +- Modify layout per player +- Apply formatting logic +- Override color schemes +- Apply region-based formatting +- Implement animated sign systems + +Because the layout provider is resolved at runtime, you can compute layouts dynamically instead of reading static config. + +--- + +# Replacing vs Extending the Default Provider + +You have two options: + +Replace entirely: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Or extend the default implementation: + +```java +public class ExtendedLayoutProvider extends SimpleShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + ShopLayout base = super.provideLayout(shop); + + base.setLine(1, "[Extended] " + base.getLine(1)); + + return base; + } +} +``` + +Extending is safer if you only want to modify small portions. + +--- + +# Best Practices + +Keep layout generation lightweight. + +Avoid: + +- Heavy database queries +- Blocking IO +- Complex network calls + +Layout generation runs during shop updates and sign refresh events. + +Always handle null values safely. + +Ensure layout line count does not exceed sign limits. + +Avoid hardcoding shop type names unless necessary. + +If your layout supports custom shop types, validate their keys properly. + +--- + +# Example Full Registration + +```java +public class LayoutAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + + manager.shopLayoutProvider(new MyCustomLayoutProvider()); + } +} +``` + +--- + +# Conclusion + +The Shop Layout Provider system allows complete control over shop sign structure. + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +``` + +And setting: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +You can redefine how every shop is displayed on the server. + +This system was designed to support: + +- Extensibility +- Custom shop types +- Localization +- Dynamic formatting +- Future expansion \ No newline at end of file diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/faq/compare-reremake.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/faq/compare-reremake.md index aaa1a9e507..6b39f02520 100644 --- a/i18n/ro-RO/docusaurus-plugin-content-docs/current/faq/compare-reremake.md +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/faq/compare-reremake.md @@ -64,7 +64,7 @@ If you are a Reremake user, you may be confused about the differences between Hi ## Which one should I use? Well, it depends on what your needs are.\ -If you have an old server (<1.20) instance, Reremake is your only choice.\ +If you have an old server ({'<'}1.20) instance, Reremake is your only choice.\ ~~If you are in China which has GFW interfere, you also should consider Reremake because it doesn't need to load libraries from Global Internet.~~ Solved in 6.0.0.0. If none of these applies, give Hikari a try! diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md index 551f579e7c..172be3a69b 100644 --- a/i18n/ro-RO/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md @@ -1,8 +1,8 @@ # Where Addons/Compacts is -Addons and Compatilibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. +Addons and Compatibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. -- Open Modrinth versions page, locate the version your're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) +- Open Modrinth versions page, locate the version you're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) - Frantically slide your mouse wheel down until the lowest end of the page. - You get it! diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/internal/database-schema.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/internal/database-schema.md index fea685e4fc..45e04adb56 100644 --- a/i18n/ro-RO/docusaurus-plugin-content-docs/current/internal/database-schema.md +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/internal/database-schema.md @@ -4,17 +4,17 @@ This chapter will explain the implementation details of QuickShop Hikari's datab ## Tables -This section explains the database tables created by QuickShop-Hikari.\ -Unless otherwise specified, the initial `qs_` in table name is the table prefix.\ +This section explains the database tables created by QuickShop-Hikari. +Unless otherwise specified, the initial `qs_` in table name is the table prefix. For the latest code definition for each table, see: [DataTables.java](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/hikari/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/database/DataTables.java) ### `data` -This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information.\ -No matter what, a data record should not be modified after it is created, until it got deleted.\ +This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information. +No matter what, a data record should not be modified after it is created, until it got deleted. Any new changes to the shop should create a new copy, apply the changes to the copy, and insert it as a new record. -Basiclly, Copy-on-write. +Basically, Copy-on-write. A data record only be deleted from the database when no any table references their `data_id`. @@ -29,7 +29,7 @@ A data record only be deleted from the database when no any table references the | unlimited | BIT NOT NULL | 0 | Indicates whether this store is an unlimited store, 0=Limited, 1=Unlimited | | hologram | BIT NOT NULL | 0 | Indicates the suspension status of this store's display item, 0=Follow global settings, 1=Disabled | | tax_account | VARCHAR(36) | NULL | The uuid for tax account, If it is not NULL, tax will be paid to the specified account | -| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serilized to JSON string | +| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serialized to JSON string | | extra | LONGTEXT | Empty Yaml | Used to store experimental settings of QuickShop Hikari or persistent data of other plugins | | inv_wrapper | VARCHAR(255) NOT NULL | N/A | Unique identifier for InventoryWrapper for this shop data entry | | inv_symbol_link | TEXT NOT NULL | N/A | Unique Inventory symbol used to pass to InventoryWrapper, for locating inventory | @@ -38,7 +38,7 @@ A data record only be deleted from the database when no any table references the ### `shops` -This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes.\ +This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes. Multiple `shop_id` can correspond to the same `data_id`. | Column Name | DataType | Default | Description | diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/cmd-alias.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/cmd-alias.md index 53f1577685..e6ed381c0d 100644 --- a/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/cmd-alias.md +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/cmd-alias.md @@ -23,7 +23,7 @@ custom-commands: - cshop ``` -Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect.\ +Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect. The effect should be like this: ![command-alias](./img/command-alias.png) diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/datasource.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/datasource.md index 6fc1bd8931..3fd3a8bdee 100644 --- a/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/datasource.md +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/datasource.md @@ -48,7 +48,7 @@ Execute the `/quickshop export` command in console, quickshop will export a zip ![exported data](img/database-export.png) -Stop your database, switch the datasource, and start the server.\ +Stop your database, switch the datasource, and start the server. You may noticed all shops are gone, because new datasources had no data inside, we will restore them from export. Rename that exported ZIP file to `recovery.zip`, execute `/quickshop recovery` and restart your server, all shops should back. diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/itemmatcher.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/itemmatcher.md index 56be243019..922907be27 100644 --- a/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/itemmatcher.md +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/itemmatcher.md @@ -4,7 +4,7 @@ ItemMatcher is a utility used by QuickShop-Hikari to compare the items, it is th :::caution -If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse.\ +If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse. **TL;DR: Keep default unless you know what you're doing.** ::: @@ -26,10 +26,10 @@ matcher: work-type: 1 ``` -By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility.\ +By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility. But still, you can toggle to QuickShop Item Matcher if you need to customize the comparing or running QuickShop on the server jar which have bug affect the Bukkit comparing system. -## Customize the metadata compareing +## Customize the metadata comparing Customize only works under QuickShop Item Matcher. diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md index fc2af69d2b..d04e8f2783 100644 --- a/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md @@ -4,7 +4,7 @@ ItemStack Loader is a workaround for loading the Bukkit ItemStack. :::caution -Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossble. +Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossible. ::: diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/localization.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/localization.md index e9121e1a36..d47589ab9a 100644 --- a/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/localization.md +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/localization.md @@ -10,7 +10,7 @@ To help translate QuickShop-Hikari, please visit our [Crowdin Homepage](https:// ## Crowdin OTA -QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will overrided when you reload QuickShop-Hikari or restart your server. +QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will override when you reload QuickShop-Hikari or restart your server. Your installation will keep translations up-to-date without any touch. @@ -110,6 +110,16 @@ To disable the CrowdinOTA, please add it in the startup flag: -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager.enableCrowdinOTA=false ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +use-crowdin-ota: false +``` + ### Self-Hosted OTA Server If you self-hosted our translation server by using [CrowdinCopyDeploy](https://github.com/Ghost-chu/CrowdinCopyDeploy) tool, you're able to change the OTA server to yourself server. @@ -118,4 +128,12 @@ If you self-hosted our translation server by using [CrowdinCopyDeploy](https://g -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager= ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml +Use + +```yaml +crowdin-host: +``` \ No newline at end of file diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/shops/benefit.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/shops/benefit.md index 4d7a9c8f42..c59d92e6d1 100644 --- a/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/shops/benefit.md +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/shops/benefit.md @@ -37,3 +37,13 @@ By default, for security, QuickShop-Hikari disallow add offline players into sho ```bash -Dcom.ghostchu.quickshop.command.subcommand.SubCommand_Benefit.allowOffline=true ``` + +### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +shop.allow-offline-benefit: true +``` \ No newline at end of file diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/shops/control-panel b/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/shops/control-panel new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/shops/control-panel @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/shops/history.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/shops/history.md index fa891adeab..195b64a042 100644 --- a/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/shops/history.md +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/shops/history.md @@ -24,7 +24,7 @@ The History GUI displays the details of each recorded transaction and other usef ### Transaction details -When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed.\ +When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed. If you are checking the history of more than one store, the player head will be replaced with an item from the corresponding store. ![history-gui](./img/history-gui.png) diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md new file mode 100644 index 0000000000..c5ed3b3fe4 --- /dev/null +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md @@ -0,0 +1,90 @@ +# Shop Types + +QuickShop supports multiple shop types, allowing shops to behave differently depending on their mode. + +The built-in shop types are: + +- Selling +- Buying +- Frozen + +Each type changes how the shop interacts with players. + +--- + +## Selling Shop + +A Selling shop allows players to: + +- Buy items from the shop owner +- Pay money to receive items + +This is the most common shop type. + +--- + +## Buying Shop + +A Buying shop allows players to: + +- Sell items to the shop owner +- Receive money in exchange + +This is commonly used for: + +- Resource collection +- Server buy-back shops +- Automated material sinks + +--- + +## Frozen Shop + +A Frozen shop temporarily disables trading. + +While frozen: + +- No buying is allowed +- No selling is allowed +- The shop remains intact +- Staff or admins can manage it + +This is useful for: + +- Temporary suspensions +- Investigation +- Event locking +- Maintenance + +--- + +## Switching Shop Types + +Shop types can be changed through: + +- Control panel +- GUI control panel +- Admin commands + +Frozen mode is also available via: + +/qs freeze + +--- + +## Custom Shop Types + +As of 6.2.x, the system supports extensible shop types internally. + +While server owners use the built-in types, the system now allows future expansion through addons. + +--- + +## Summary + +Shop types allow you to: + +- Control how money flows +- Enable buy-back mechanics +- Temporarily disable shops +- Build advanced economic systems \ No newline at end of file diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md new file mode 100644 index 0000000000..18e0a47407 --- /dev/null +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md @@ -0,0 +1,217 @@ +# Sign Layout + +QuickShop allows you to fully customize how shop signs are structured. + +You can change: + +- What appears on each line +- The order of information +- Layout per shop type +- Whether certain lines are blank + +This gives you complete control over how shops look on your server. + +--- + +## How Sign Layout Works + +Shop signs have four lines. + +Instead of being hardcoded, QuickShop uses a configurable layout system. + +Each shop type can have its own layout: + +- SELLING +- BUYING +- FROZEN + +You define what each line displays using layout keys. + +--- + +## Configuration Location + +Sign layout is configured in `config.yml` under: + +```yaml +layout: +``` + +Example default configuration: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## Available Layout Keys + +Each line value refers to a built-in layout component. + +Common layout keys include: + +- `header` – The shop header line +- `trading` – Buy/Sell direction information +- `item` – Item name +- `price` – Shop price + +These keys are automatically formatted using your language file and formatting settings. + +--- + +## Leaving a Line Blank + +To leave a line empty, use: + +```yaml +line2: "" +``` + +This is useful if you want: + +- Minimalist signs +- Cleaner layouts +- Custom spacing +- Decorative formatting + +--- + +## Customizing Per Shop Type + +Each shop type can have a different layout. + +For example: + +```yaml +layout: + + SELLING: + line1: "header" + line2: "item" + line3: "price" + line4: "" + + BUYING: + line1: "header" + line2: "price" + line3: "item" + line4: "" + + FROZEN: + line1: "header" + line2: "" + line3: "item" + line4: "Frozen" +``` + +This allows you to visually differentiate: + +- Selling shops +- Buying shops +- Frozen shops + +--- + +## Practical Examples + +### Minimal Style + +```yaml +layout: + SELLING: + line1: "item" + line2: "price" + line3: "" + line4: "" +``` + +### Compact Economy Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "price" + line3: "item" + line4: "" +``` + +### Large Clear Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## How Updates Affect Layout + +When you change the layout: + +- Existing shop signs will update automatically when refreshed. +- New shops will use the updated format immediately. + +If needed, you can reload QuickShop to apply changes. + +--- + +## Best Practices + +- Keep important information visible (price and item). +- Avoid overly complex formatting. +- Test layout changes before deploying on large servers. +- Use different layouts for BUYING and SELLING to reduce confusion. + +--- + +## Common Questions + +### Can I add more than four lines? + +No. +Minecraft signs are limited to four lines. + +### Can I add colors? + +Colors are controlled by your language file and formatting settings. + +### Can I change layout without restarting? + +Yes, but reloading or refreshing shops is recommended to ensure full update. + +--- + +## Summary + +The Sign Layout system allows you to: + +- Fully customize shop sign appearance +- Create per-type layouts +- Simplify or expand shop information +- Improve clarity for players + +All layout customization is handled inside `config.yml`. diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md index abcc288db7..2a0d52d788 100644 --- a/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/shops/sign-material.md @@ -8,19 +8,6 @@ This feature added in 6.0.0.0. By default, QuickShop-Hikari uses the default brand material from the configuration file, but you can modify it to other brands for your store with the command. -## Configuration - -```yaml - #The wall sign material. - #ACACIA_WALL_SIGN - #BIRCH_WALL_SIGN - #DARK_OAK_WALL_SIGN - #JUNGLE_WALL_SIGN - #OAK_WALL_SIGN - #SPRUCE_WALL_SIGN - sign-material: OAK_WALL_SIGN -``` - ## Change the material Use command `/quickshop sign ` to change your shop sign material. diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md new file mode 100644 index 0000000000..980bad10f2 --- /dev/null +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md @@ -0,0 +1,130 @@ +# Shop Sign Waxing + +QuickShop can automatically wax shop signs to prevent players from editing them manually. + +Waxing protects the integrity of your shop signs and helps prevent tampering, spoofing, and accidental modification. + +As of modern Minecraft versions, waxed signs cannot be edited unless they are unwaxed first. + +--- + +## What Is Sign Waxing? + +In Minecraft, waxing a sign locks it so that: + +- Players cannot edit the text +- Players cannot modify lines +- Accidental changes are prevented +- Malicious edits are blocked + +When enabled in QuickShop, shop signs are automatically waxed when created. + +--- + +## Why Use It? + +Sign waxing protects against: + +- Players editing price lines +- Changing item names on signs +- Spoofing shop information +- Accidental formatting issues +- Sign hijacking attempts + +On public servers, this feature is strongly recommended. + +--- + +## How It Works + +When a shop is created: + +1. QuickShop generates the shop sign. +2. The sign text is written. +3. The sign is automatically waxed (if enabled). + +If a shop is updated: + +- The sign will be safely updated by QuickShop. +- The wax state is maintained. + +Players cannot manually edit shop signs while waxing is enabled. + +--- + +## Configuration + +To enable or disable sign waxing, edit `config.yml`: + +```yaml +shop: + sign-wax: true +``` + +### true + +- Shop signs are automatically waxed. +- Players cannot edit the sign manually. + +### false + +- Shop signs behave like normal Minecraft signs. +- Players may edit them if permitted by the game. + +--- + +## Recommended Setting + +For most servers: + +```yaml +shop: + sign-wax: true +``` + +This ensures shop data stays accurate and secure. + +--- + +## Common Questions + +### Can admins still modify shop signs? + +QuickShop controls shop sign formatting. +Manual edits are not recommended. + +Admins should use: + +- Control panel +- Shop commands +- Direct configuration changes + +### Does waxing affect shop functionality? + +No. +Waxing only prevents manual text edits. +The shop continues to function normally. + +### Can players un-wax shop signs? + +No. +QuickShop manages the sign state automatically. + +--- + +## Best Practices + +- Keep sign-wax enabled on survival servers. +- Combine sign-wax with proper permissions. +- Avoid manually editing shop signs through other plugins. + +--- + +## Summary + +Sign Waxing: + +- Prevents tampering +- Requires no additional setup + +Enable it once and QuickShop handles the rest. \ No newline at end of file diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/shops/taxes.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/shops/taxes.md new file mode 100644 index 0000000000..1a273fd978 --- /dev/null +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/shops/taxes.md @@ -0,0 +1,92 @@ +# Taxation System + +QuickShop includes a taxation system designed to give server owners more flexibility and control over shop-based income. + +This system was revamped as of 6.2.0.11+ + +The new system allows you to: + +- Apply tax to shop owners +- Apply tax to buyers +- Apply tax to both +- Use progressive tax brackets +- Customize tax behavior in configuration + +This system replaces the legacy tax configuration. + +--- + +## How It Works + +During a transaction: + +1. The shop price is calculated. +2. Tax is calculated based on your configuration. +3. Tax is deducted from the configured target(s). +4. Remaining funds are distributed normally. + +You can configure: + +- Flat percentage tax +- Progressive tax based on player balance +- Tax accounts +- Distribution rules + +--- + +## Progressive Tax + +The new system allows you to tax based on balance brackets. + +Example concept: + +- 0 – 10,000 balance → 1% tax +- 10,000 – 100,000 → 2% tax +- 100,000+ → 3% tax + +This helps prevent extremely wealthy players from dominating the economy. + +--- + +## Who Pays the Tax? + +You can configure whether tax applies to: + +- The shop owner +- The buyer +- Both + +This gives you flexibility depending on your economy design. + +--- + +## Configuration + +All tax-related settings are located under the `shop-tax` section in `config.yml`. + +After updating to 6.2.0.11+, review your tax configuration carefully, as the old tax system has been replaced. + +--- + +## Why Use Tax? + +The taxation system can help: + +- Remove currency from circulation +- Fund server banks or towns +- Create sink mechanics +- Balance inflation +- Reward active players + +--- + +## Summary + +The new taxation system is: + +- Flexible +- Configurable +- Balance-aware +- Designed for modern economy servers + +Make sure to review your configuration after upgrading. \ No newline at end of file diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md new file mode 100644 index 0000000000..247c24712d --- /dev/null +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md @@ -0,0 +1,161 @@ +# WorldEdit & FAWE Support + +QuickShop includes built-in protection and integration for WorldEdit and FastAsyncWorldEdit (FAWE). + +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. + +You do not need to download or install any additional compatibility plugins. + +--- + +## What This Does + +WorldEdit and FAWE allow administrators and builders to: + +- Copy and paste regions +- Replace large areas of blocks +- Mass-delete regions +- Roll back areas +- Regenerate terrain + +Without protection, these operations could: + +- Create ghost shops +- Leave orphaned shop data in the database +- Duplicate shops unintentionally +- Delete containers without cleaning up shop data +- Cause inconsistencies between world and database + +QuickShop now automatically detects and safely processes WorldEdit and FAWE operations. + +--- + +## Built-In Behavior + +When WorldEdit or FAWE modifies blocks: + +- Shops removed via WorldEdit are properly deleted from the database. +- Shop data stays synchronized with world changes. +- Ghost shops are prevented. +- Mass block replacements will not leave broken shop entries behind. + +This applies to: + +- //set +- //replace +- //cut +- //paste +- //regen +- Region deletion +- Mass container removal + +No configuration is required. + +--- + +## FAWE Support + +FastAsyncWorldEdit (FAWE) is fully supported. + +Because FAWE processes edits asynchronously, QuickShop handles: + +- Region-thread safe processing +- Async block updates +- Safe shop deletion during batch edits + +You do not need to enable anything manually. + +--- + +## Removing Shops with WorldEdit + +If you delete containers (chests, barrels, etc.) using WorldEdit: + +QuickShop will automatically: + +- Detect the block removal +- Unregister the shop +- Clean the database entry +- Prevent ghost shops + +You do not need to run `/qs cleanghost` after WorldEdit usage in normal circumstances. + +--- + +## Copying and Pasting Shops + +If you copy and paste regions that contain shops: + +- Shop data will not duplicate incorrectly. +- Shop IDs remain consistent. +- Invalid pasted shops will not auto-register unless properly created. + +This prevents accidental duplication exploits. + +--- + +## Performance + +WorldEdit and FAWE operations can modify thousands of blocks at once. + +QuickShop processes these safely and efficiently: + +- Batch-aware cleanup +- Thread-safe region access (especially on Folia) +- Minimal performance impact during mass edits + +--- + +## Configuration + +There are no specific WorldEdit configuration options in QuickShop. + +Support is automatic and always enabled if WorldEdit or FAWE is detected. + +If WorldEdit is not installed, no extra code is executed. + +--- + +## Common Questions + +### Do I need the old WorldEdit compatibility jar? + +No. + +As of 6.2.0.11, WorldEdit support is built-in and the separate compatibility module has been removed. + +### Does this work with FAWE? + +Yes. FAWE is fully supported. + +### Will shops break if I use //set air? + +No. Shops will be safely removed and cleaned up. + +### Do I need to restart after installing WorldEdit? + +No. QuickShop detects WorldEdit automatically on startup. + +--- + +## Best Practices + +Even though QuickShop safely handles WorldEdit operations, it is recommended to: + +- Avoid copying shops intentionally unless required +- Use backups before large region edits +- Test large FAWE operations on staging servers when possible + +--- + +## Summary + +QuickShop’s built-in WorldEdit and FAWE integration ensures: + +- Safe mass edits +- No ghost shops +- Automatic database cleanup +- Thread-safe processing +- No extra modules required + +WorldEdit support is now a core feature of QuickShop. \ No newline at end of file diff --git a/i18n/ro-RO/docusaurus-plugin-content-docs/current/setup/install.md b/i18n/ro-RO/docusaurus-plugin-content-docs/current/setup/install.md index fd02cfa1cc..2fc7851f3b 100644 --- a/i18n/ro-RO/docusaurus-plugin-content-docs/current/setup/install.md +++ b/i18n/ro-RO/docusaurus-plugin-content-docs/current/setup/install.md @@ -1,13 +1,14 @@ # Installation -This page will walk you through the process of installing QuickShop-Hikari on your Spigot server. +This page will walk you through the process of installing QuickShop-Hikari on your PaperMC server. ## Requirements -- A [Spigot][spigot]-based Minecraft server (1.20 or higher, Java 21) - - You can also use [Paper][paper], which is a fork of Spigot for better compatibility, more features and higher performance. +- A [Paper][paper]-based Minecraft server (1.20 or higher, Java 21) - [Vault][vault] for bridging the economy system between QuickShop and your economy plugins. -- [ProtocolLib][plib] for virtual display item, Per-player localization. +- For virtual item displays, and per-player localization you need a supported protocol library: + - [ProtocolLib][plib] + - [PacketEvents][https://www.spigotmc.org/resources/packetevents-api.80279/] - Any Vault compatible economy plugin, such as [XConomy][xconomy], If you have [EssentialsX][essx], it will also works well. - A permission management plugin like [LuckPerms][luckperm]. @@ -15,13 +16,17 @@ In this document, we assume that you are using the latest version of QuickShop-H ## Installing dependencies -Before installing QuickShop-Hikari, you should make sure that you have all dependencies installed, including [Vault][vault], [ProtocolLib][plib], [XConomy][xconomy] (or [EssentialsX][essx] if you want) and [LuckPerms][luckperm]! +Before installing QuickShop-Hikari, you should make sure that you have all dependencies installed, including [Vault][vault], [ProtocolLib][plib] or \[PacketEvents]\[https\://www\.spigotmc.org/resources/packetevents-api.80279/], [XConomy][xconomy] (or [EssentialsX][essx] if you want) and [LuckPerms][luckperm]! Download the plugins and drop them into `plugins` folder and you're all set! +## Configuring the Display Protocol + +If you have both ProtocolLib and PacketEvents, and you want to utilize PacketEvents for your display items, you'll need to set it as such in config.yml: `shop. display-protocol: 'packetevents'` + ## Installing QuickShop-Hikari -Download the latest version of QuickShop-Hikari from [Modrinth][qs-modrinth], if you find multiple files that have `Compat-` prefix in file name, ignore them in this step.\ +Download the latest version of QuickShop-Hikari from [Modrinth][qs-modrinth], if you find multiple files that have `Compat-` prefix in file name, ignore them in this step. The only file you need to download should have a **Primary** tag like this in the image below: ![download primary file](./img/download-primary.png) @@ -52,12 +57,11 @@ For advanced permission setup, you can check [here](./permissions.md). Now QuickShop-Hikari is running on your server, for more settings, check the navigation panel on the left and see different sections. -[spigot]: https://www.spigotmc.org/wiki/buildtools/ [paper]: https://papermc.io/ -[vault]: https://www.spigotmc.org/resources/34315/ -[xconomy]: https://www.spigotmc.org/resources/75669/ +[vault]: https://www.spigotmc.org/resources/vaultunlocked.117277/ +[xconomy]: https://www.spigotmc.org/resources/xconomy.75669/ [essx]: https://modrinth.com/plugin/essentialsx -[plib]: https://www.spigotmc.org/resources/1997 +[plib]: https://www.spigotmc.org/resources/protocollib.1997/ [luckperm]: https://luckperms.net/ [qs-modrinth]: https://modrinth.com/plugin/quickshop-hikari [dc]: https://discord.gg/Bu3dVtmsD3 diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/addon/limited.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/addon/limited.md index 70af27e240..fae55a8c95 100644 --- a/i18n/ru-RU/docusaurus-plugin-content-docs/current/addon/limited.md +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/addon/limited.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -41,8 +35,8 @@ Limit players to purchase up to 16 items per month. /quickshop limit period MONTH ``` -The system is based on the QuickShop-Hikari calendar system.\ -The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year.\ +The system is based on the QuickShop-Hikari calendar system. +The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year. Same for days, months and hours. Available time units: diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/addon/list.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/addon/list.md index 93d182f083..f20b91fd7b 100644 --- a/i18n/ru-RU/docusaurus-plugin-content-docs/current/addon/list.md +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/addon/list.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/addon/plan.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/addon/plan.md index 52a6e79cb4..c10ef4df42 100644 --- a/i18n/ru-RU/docusaurus-plugin-content-docs/current/addon/plan.md +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/addon/plan.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -18,7 +18,7 @@ Recorded data can be displayed from Hikari v2.0.0.0 onwards, but only after vers - All shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 1000 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `5` in server scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `5` in server scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Player Scope @@ -27,7 +27,7 @@ And still is Plan limitations, the list sorting is disturbed, so the display ord - All owned shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 50 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `4` in player scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `4` in player scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Showcase diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/addon/reforges.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/addon/reforges.md index 2a14509eb7..25fff1752a 100644 --- a/i18n/ru-RU/docusaurus-plugin-content-docs/current/addon/reforges.md +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/addon/reforges.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.0.0.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md index 304d39bc05..6f9f51d250 100644 --- a/i18n/ru-RU/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.1.1.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -44,7 +38,7 @@ _This is not necessary if you are using an H2 database._ ### Prepare for convert -To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console.\ +To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console. If a player is in the server, the conversion cannot be started. Once the conversion has begun, the server will be locked during the conversion process and no players will be able to join the server during the conversion. diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/addon/shopitemonly.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/addon/shopitemonly.md index c45062f8c2..1ccfe977b3 100644 --- a/i18n/ru-RU/docusaurus-plugin-content-docs/current/addon/shopitemonly.md +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/addon/shopitemonly.md @@ -2,17 +2,11 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT - -::: - -This addon prevents players from putting non-store items into store containers.\ +This addon prevents players from putting non-store items into store containers. Does not apply to stores that use the item inventory redirection API (aka. InventoryWrapper API). This Addon will check for container (or transferring) items on events such as the player closing the container or hopper access. diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md new file mode 100644 index 0000000000..9c8b4f7407 --- /dev/null +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md @@ -0,0 +1,55 @@ +# 6.2.0.10 + +## Major Changes + +- Added support for 1.21.6 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.7 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.8 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Some internal updates for packetevents(2.9.0 is now required.) +- Updated Lands support + +## Addon Changes + +- Added MatcherPlus Addon + - Allows support for BreweryX and AdvancedItems stacks in shops with improved matching abilities +- Added FabledSkyblock Compat +- Added Dominion Compat +- Added HuskTowns Compat +- Added IridiumSkyblock Compat +- Added member-create for member creation in ARM compat +- Added admin-override and quickshop.arm.admin permission for admin overrides in ARM + +## Minor Changes + +- Added configurations for the coordinates of the display item. +- Added /qs toggledisplayall on/off server/owned + - Players need to have permission node quickshop.toggledisplayall.admin to toggle all on the server. +- Added ability to use abbreviations in /qs price and /qs create commands such as 2.5k for 2500 +- Added ability to set default display status using shop.default-display in config.yml + +## Fixes + +- Fixed issue with display item being sent to the moon on 1.21.5 +- Fixed issue where TRADE_UI interactions interfered with quick create. +- Fixed issue with displays on protocollib falling through the chest +- Fixed issue with signs on .9 and previous .10 snapshots on early versions +- Implemented some performance improvements for paper servers +- Fixed all outstanding issues with Folia usage.(thanks to RootB33R/SleazLee for contributions) + +## Possible 6.2.0.11 Features + +Here's an outline for some features that may arrive in 6.2.0.11: + +- Additional compats/addons that have been piling up. + - see: https://github.com/QuickShop-Community/QuickShop-Hikari/issues/1756 +- gradle?(interested to see compilation time uplifts) +- Update documentation +- Update configuration comments +- Update configuration system? + - auto updating? + - Allows removal of the update code +- Remove waste spigot modules? + - Any versions of 1.20 that can be discarded due to low use? +- Bug fixing, of course +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... \ No newline at end of file diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md new file mode 100644 index 0000000000..b41c88662a --- /dev/null +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md @@ -0,0 +1,173 @@ +## Outline + +- Update documentation +- Update configuration comments +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... + +# 6.2.0.11 + +## Major Changes + +- Removed Spigot Platform Modules, and stopped loading QS if Spigot is detected. This will mean that unless the protocol changes that we use for display items, QS won't need updated for each version. +- Revamped Economy Code Completely + - New classes for all economy-related systems + - Any economy-related or benefits-related events are incompatible with previous versions. +- Added sign layout customizations per-type allowing you to change how lines are configured, an empty string('') will leave an empty line for that line of the sign. + +``` + #The layout of signs for shops. + layout: + + #The layout of BUYING shops. + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of FROZEN shops. + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of SELLING shops. + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +- Add wildcard support for item blacklist patterns(thanks to bennycallanan) + - Added support for wildcard patterns in the item blacklist configuration, allowing users to block entire categories of items with simple patterns. + + - Features + - Wildcard patterns like \*_AXE and \*_SPAWN_EGG now work in blacklist configuration + - Supports \* for any characters and ? for single character matching + - Case-insensitive pattern matching +- Overhauled GUI system(thanks to Yusakidev) + - Implemented gui.yml configuration file for customizing the GUI. + - Implemented better filtering for qs browse + - Implement GUI system to be more stable, and less error prone. + - Added gui.yml for fully configurable GUI layouts and text + - Browse menu: search, sort (price/name/stock), and filter (all/buying/selling/in-stock) + - Staff menu: search functionality for player/staff selection + - Grouped item pages for better shop browsing + - Refactored all menu pages to use configurable display/lore +- Added worldedit compat to QS internally as it's widely used. +- Revamped the taxation system to be more flexible and easier to configure. + - introduced a new progressive tax system that allows you to tax based on the balance of players.(suggested by YuanYuanOwO) + - introduced the ability to tax the player interacting with the shop, the owner, or both + - all tax-related configurations have been moved under the shop-tax section of the config. this may require reconfiguration of your tax settings. + - added a new ShopEnhancedTaxEvent, deprecated the old ShopTaxEvent. + - Added a new TaxManager, and TaxProvider interfaces, this allows for custom tax providers to be added by addons/third-party developers. + +## Addons/Compats Changes + +- Added UltimateClaims compat +- Added SimpleClaimSystem compat +- Added Quests by Pika addon +- Added BetonQuest addon +- Added Pl3xMap addon +- MatcherPlus Compat Improvements + - Added support for CrazyCrates + - Added support for ExcellentCrates + - Added support for SilkSpawners. +- WorldGuard Compat Improvements(Thanks to golovin12) + - Added clear permission handling: + - Region owners and members automatically have permission to create and trade in their own regions. + - Other players must have the appropriate WorldGuard flags enabled (quickshophikari-create, quickshophikari-trade) to interact with shops. + - If a shop is located outside any region, default QuickShop behavior applies (no extra restrictions) +- Added colored markers based on shop state for bluemap(thanks to YusakiDev) +- Updated dynmap/towny addons to use the new ShopTypeEnhancedEvent instead of ShopTypeEvent. +- Removed worldedit compat, it's now included in the main plugin. +- Added support for global flags to the worldguard compat. + +## Internals/Developer APIs + +- Removed several deprecated methods and classes. +- Revamped the interaction manager. It is now more flexible and allows external additions + - This involves two classes InteractionBehavior and InteractionType. + - InteractionType details the type of interaction such as: STANDING_LEFT_CLICK_SIGN, STANDING_LEFT_CLICK_SHOP + - InteractionBehavior outlines a behavior for an InteractionType such as CONTROL_PANEL and TRADE_UI +- Added UserLimitCalculationEvent, which allows for custom limits to be applied to users. + - This is useful for limiting the number of shops a user can have, or adding on to the existing limits provided by the ranks system without needing to implement a new RankLimiter. +- Added a new ShopLayoutProvider interface, and default implementation. + - This allows for custom layouts to be used for shops, allowing for more customization. + - This also allows for developers to override the default layout provider and create their own implementation. +- How to make your own? + - Implement the classes you would like to then register with the InteractionManager: + - ```java + InteractionManager manager = QuickShop.getInstance().getInteractionManager(); + + manager.interaction(new MyTradeInteraction()); + manager.behavior(new MyTradeBehavior()); + ``` +- Replaced some Apache Commons calls that could be easily replaced with built-in java methods, reduces some calls by ~ 1100ms/method call +- Deprecated the ShopType enum, and the ShopTypeEvent. These are replaced with the new IShopType interface and implementing classes. + - The new event is ShopTypeEnhancedEvent. + - This allows for third-party addons to add their own shop types, and simplifies code checks for translations. +- Updated config system to use Boosted-yaml + - this allows for auto-updating of config files without complex update scripts + - this also allows for the config system to not be minecraft-dependent. +- Replaced logical PaperLib calls with native PaperAPI calls. + +## Minor Changes + +- Bump Java version up to 21 +- Added shop.display-allow-enchants to enable/disable enchantments for display items on shops. +- Added workaround for packetevents not supporting custom enchants on itemstacks for virtual display items. +- Using locale translations for shop-type in mode toggle icon(thanks to ExyiN) +- Bumped Residence version for the compat(thanks to YuanYuanOwO) +- add world whitelist support(thanks to wling-art) +- added /qs database save command, which saves all currently dirty-marked shops to the database. +- Split up interactions _SHOPBLOCK into _SHOPBLOCK and _CONTAINER. + - _SHOPBLOCK relates to shops, where _CONTAINER relates to shop-valid containers that are not currently shops. +- Added inventory as an option for command panel, this is useful for adding a secondary option for players to open a shop's inventory. +- Moved crowdin arguments from system properties to config.yml + - crowdin-host + - use-crowdin-ota + +## Fixes + +- Fixes issue with item price restrictions(thanks to maxcom1) +- Fixes issue with 1.20.x protocol lib displays(thanks to YuanYuanOwO) +- Fixes issue when no item is in hand for itemdebug(thanks to YuanYuanOwO) +- Fixes issue with dominion addon(thanks to YuanYuanOwO) +- Add a simple check to avoid this. If it is not own shop, reject limit request directly.(Thanks to YuanYuanOwO) +- Fix NPE by not setting tax for price in TransactionBuilder(thanks to maxcom1) +- Fixes /quickshop suggestprice to differentiate between buy/sell shops. (Thanks to MidSpike) +- PacketEvents ClassNotFoundException with ProtocolLib(thanks to wling-art) +- Reallocate block state access to region thread for shop creation(thanks to r00tbeerman) +- resolve SLF4J StaticLoggerBinder loading error(thanks to wling-art) +- sign hijacking issue by validating sign facing direction(thanks to wling-art) +- Performance improvements for QuickShop disabling to prevent potential freezes. +- Fixed issue with 1.20.4 packetevents virtual displays not staying put. +- Fixes critical issue in GriefPrevention compatibility plugin. +- Fixes issue with shop owner not getting money when benefits active. +- Fixes for lands addon on folia, Use regionThread for Folia compatibility(thanks to YusakiDev) +- Fixes for TRADE_DIRECT on stacking shops +- Fixes issue for protocollib 5.4.0 with undocumented packet changes. +- Fixes issue where item stacks could be used on creation above the max stack size. +- Fixes issue with BukkitAudiences-related crashes on 1.21.11. +- Fix issue with shop deletion when getting too impatient. +- Fix the permission check issue when a shop owned by a non-owner is transferred to someone else. (thanks to YuanYuanOwO) +- Fix ui with supertool (thanks to YuanYuanOwO) +- Fix issue with logs generating outside debug mode. +- Fix issue with /qs find. +- Fix configuration loading timing. +- Fix configuration loading/creation warning message language. +- Fix command description language key mismatch(thanks to wling-art) +- Fix qs clean command on folia(thanks to wling-art) +- Fix per-player-shop-sign on folia(thanks to wling-art) +- Fix potential recursive deadlock in virtual display packet sending(thanks to wling-art) +- Fix configuration loading/creation warning message language. +- Fix issue with /qs browse and ShopItemOnly addon not behaving properly together on folia. +- Fix issue with PLAN using outdated APIs. +- Fix issue with /qs clean on folia.(thanks to wling-art) +- Fix issue with /qs cleanghost on folia(thanks to wling-art) +- More thread safety fixes for shops on folia.(thanks to wling-art) +- Fix owner payment calculations with benefits(thanks to wling-art) \ No newline at end of file diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md index 8172f9b410..dcc3edc67d 100644 --- a/i18n/ru-RU/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md @@ -20,20 +20,20 @@ the ControlComponent object with a custom one that will replace the original dur ### Introduction of the Revamped Packet System 1. **About**: - - A modular and scalable system for managing packets related to virtual display items in Minecraft. - - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. + - A modular and scalable system for managing packets related to virtual display items in Minecraft. + - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. 2. **Custom Packet Factories**: - - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. - - Packet types: - - **Spawn Packet**: Spawns a virtual item entity at a specific location. - - **Metadata Packet**: Updates the visual properties of virtual items. - - **Velocity Packet**: Adds motion/velocity to entities (currently optional). - - **Destroy Packet**: Removes the entity from the client view. + - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. + - Packet types: + - **Spawn Packet**: Spawns a virtual item entity at a specific location. + - **Metadata Packet**: Updates the visual properties of virtual items. + - **Velocity Packet**: Adds motion/velocity to entities (currently optional). + - **Destroy Packet**: Removes the entity from the client view. 3. **Error Handling and Logging**: - - Enhanced debug logs to trace packet-related issues. - - Detailed error messages for missing factories or unregistered listeners. + - Enhanced debug logs to trace packet-related issues. + - Detailed error messages for missing factories or unregistered listeners. #### Improvements: diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md index 7775308722..c6e0948d19 100644 --- a/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md index f420997a9c..38587e3784 100644 --- a/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md index 5ed8182c9a..259c55f342 100644 --- a/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md index 924a37ac49..7fd4596a6a 100644 --- a/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,6 +10,6 @@ This is a BungeeCord plugin, you need install it within your BungeeCord's plugin ## How does it work? -BungeeCord Bridge plugins will register a `quickshop:bungee` channel for fowarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. +BungeeCord Bridge plugins will register a `quickshop:bungee` channel for forwarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. All forwarding is indicated by QuickShop-Hikari on the Spigot server and ends when it is not needed. diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md index 27d68956a8..20fbaf7a0c 100644 --- a/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,5 +10,5 @@ This compatibility module added [Chest Protect](https://www.spigotmc.org/resourc ## How does it work? -This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident.\ +This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident. It also prevents players from creating shops on ChestProtect protected containers. diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md index 220e26d8bb..e1757e7be9 100644 --- a/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/dominion.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/dominion.md new file mode 100644 index 0000000000..e1195278a8 --- /dev/null +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/dominion.md @@ -0,0 +1,138 @@ +# Dominion + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and Dominion. + +It ensures that shop creation and trading respect Dominion’s land and territory protection system. + +--- + +## What Does It Do? + +Dominion allows players or groups to claim land and define territory-based permissions. + +Without compatibility: + +- Players could create shops inside territories they do not control. +- Visitors might trade inside protected dominions. +- Dominion permission rules might not apply to shop interactions. + +The Dominion compat module ensures that: + +- Shop creation respects territory ownership. +- Shop trading follows Dominion permission settings. +- Protected land remains secure from unauthorized shop usage. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a Dominion-controlled area. +- Whether the player has permission within that territory. +- Whether Dominion rules allow shop interaction. + +If the action is not permitted by Dominion settings, QuickShop blocks it. + +If the location is outside any Dominion territory, default QuickShop behavior applies. + +--- + +## Territory Owner Control + +With this module enabled: + +- Territory owners can create and manage shops inside their dominion. +- Trusted members follow territory-based permissions. +- Outsiders are restricted unless explicitly allowed. +- Shop actions respect Dominion’s land rules automatically. + +This prevents unauthorized shop placement inside protected territories. + +--- + +## Installation + +1. Install Dominion. +2. Install the QuickShop Dominion compat module. +3. Restart your server. + +The module activates automatically if Dominion is detected. + +No manual configuration linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside dominions +whitelist-mode: false + +# Allow territory owners to override shop permissions +allow-owner-override: true +``` + +If Dominion is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For servers using Dominion: + +- Restrict shop creation to territory owners or trusted members. +- Prevent shop creation in wilderness if desired. +- Allow dominion owners to manage shop permissions. +- Review Dominion permission settings to align with shop behavior. + +This ensures protected territories remain secure and organized. + +--- + +## Common Questions + +### Can players create shops in someone else's dominion? + +Only if Dominion permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You may allow or restrict shops outside dominions. + +### What happens if Dominion is removed? + +QuickShop returns to normal behavior and stops checking Dominion territories. + +--- + +## Summary + +The Dominion compat module: + +- Enforces territory-based permissions +- Prevents unauthorized shop creation +- Protects claimed land from misuse +- Integrates seamlessly with Dominion + +It is recommended for servers running Dominion. \ No newline at end of file diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md index 743d3ae666..2ac9b10488 100644 --- a/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md new file mode 100644 index 0000000000..07ba4ada66 --- /dev/null +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md @@ -0,0 +1,133 @@ +# FabledSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and FabledSkyblock. + +It ensures that shop creation and trading properly respect island boundaries and island permissions. + +--- + +## What Does It Do? + +On Skyblock servers, players build and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Players might trade in areas they should not. +- Island protection rules might not apply to shops. + +The FabledSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members behave correctly with shops. +- Island visitors are restricted appropriately. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a FabledSkyblock island. +- Whether the player has permission on that island. +- Whether island settings allow the action. + +If the action is not permitted by island rules, QuickShop will deny it. + +--- + +## Island Ownership Rules + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow island permission settings. +- Visitors can only trade if island permissions allow it. +- Outside of islands, default QuickShop behavior applies. + +--- + +## Installation + +1. Install FabledSkyblock. +2. Install the QuickShop FabledSkyblock compat module. +3. Restart your server. + +The module activates automatically if FabledSkyblock is detected. + +No manual linking is required. + +--- + +## Configuration + +If the module provides configuration options, they will appear in its `config.yml`. + +Typical options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If FabledSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most Skyblock servers: + +- Allow shop creation only inside islands. +- Prevent trading in the void or wilderness. +- Let island owners control shop permissions. +- Use island rank systems to manage shop access. + +This helps maintain economic balance between islands. + +--- + +## Common Questions + +### Can players create shops in the void? + +Only if your configuration allows it. +Most servers disable shop creation outside islands. + +### Does this affect island war or PvP modes? + +No. +The module only checks island ownership and permissions for shop interactions. + +### What happens if FabledSkyblock is removed? + +QuickShop returns to normal behavior. + +--- + +## Summary + +The FabledSkyblock compat module: + +- Protects island economies +- Enforces island permission rules +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is strongly recommended for any server running FabledSkyblock. \ No newline at end of file diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md index 81b13d2c6b..32614d3019 100644 --- a/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md @@ -2,17 +2,17 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -GreifPrevention compatibility module added compaitibility with GF. +GreifPrevention compatibility module added compatibility with GF. ## How does it work This module allow QuickShop-Hikari check if player have permission to create or use QuickShop in specific region. -And delete shops when claim removed, untrusted, unclimed, expired, resized or subclaim created. +And delete shops when claim removed, untrusted, unclaimed, expired, resized or subclaim created. ## Configuration diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md new file mode 100644 index 0000000000..e71b34d462 --- /dev/null +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md @@ -0,0 +1,139 @@ +# HuskTowns + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and HuskTowns. + +It ensures that shop creation and trading respect town and claim permissions defined by HuskTowns. + +--- + +## What Does It Do? + +HuskTowns allows players to create towns and claim land. + +Without compatibility: + +- Players could create shops inside towns they do not belong to. +- Visitors might trade inside protected towns. +- Town permission rules might not apply to shop interactions. + +The HuskTowns compat module ensures that: + +- Shop creation respects town ownership. +- Trading follows town permission settings. +- Town members and visitors are handled correctly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a HuskTowns claim. +- Whether the player is a town member, trusted player, or outsider. +- Whether the town's permission settings allow the action. + +If the action is not permitted by town rules, QuickShop blocks it. + +Outside of town claims, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Town Owner Control + +With this module enabled: + +- Town owners can create and manage shops inside their town. +- Town members follow town-based permission settings. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect town claim protection. + +This prevents unauthorized shop placement and trading inside protected towns. + +--- + +## Installation + +1. Install HuskTowns. +2. Install the QuickShop HuskTowns compat module. +3. Restart your server. + +The module activates automatically if HuskTowns is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside towns +whitelist-mode: false + +# Allow town owners to override shop permissions +allow-owner-override: true +``` + +If HuskTowns is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For town-based survival servers: + +- Restrict shop creation to town members. +- Allow trading only where town permissions permit. +- Prevent shop creation in wilderness if desired. +- Enable owner override for better administrative control. + +This helps maintain town-based economic balance. + +--- + +## Common Questions + +### Can players create shops in another town? + +Only if that town's permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You can allow or restrict shops outside towns. + +### What happens if HuskTowns is removed? + +QuickShop returns to normal behavior and stops checking town permissions. + +--- + +## Summary + +The HuskTowns compat module: + +- Enforces town-based land permissions +- Protects towns from unauthorized shop usage +- Integrates smoothly with HuskTowns +- Requires minimal setup + +It is recommended for any server running HuskTowns. \ No newline at end of file diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md new file mode 100644 index 0000000000..3fa2995eb0 --- /dev/null +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md @@ -0,0 +1,139 @@ +# IridiumSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and IridiumSkyblock. + +It ensures that shop creation and trading respect island boundaries and island permission settings defined by IridiumSkyblock. + +--- + +## What Does It Do? + +IridiumSkyblock allows players to create and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Visitors might trade inside protected islands. +- Island protection rules might not apply correctly to shops. + +The IridiumSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members and visitors are handled properly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside an IridiumSkyblock island. +- Whether the player is the island owner, member, or visitor. +- Whether island permissions allow shop interaction. + +If the action is not permitted, QuickShop blocks it. + +Outside of islands, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Island Owner Permissions + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow the island's permission configuration. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect island protection rules. + +This prevents unauthorized shop usage inside protected islands. + +--- + +## Installation + +1. Install IridiumSkyblock. +2. Install the QuickShop IridiumSkyblock compat module. +3. Restart your server. + +The module activates automatically if IridiumSkyblock is detected. + +No additional setup is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If IridiumSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most IridiumSkyblock servers: + +- Restrict shop creation to island owners. +- Allow island members to trade if trusted. +- Prevent shop creation in the void or wilderness. +- Enable owner override for better management. + +This helps maintain balanced island economies. + +--- + +## Common Questions + +### Can players create shops outside their island? + +Only if your configuration allows it. + +Most Skyblock servers restrict shops to island areas. + +### Do island ranks affect shop permissions? + +Yes, if your island permissions are configured to control interaction rights. + +QuickShop follows island rules. + +### What happens if IridiumSkyblock is removed? + +QuickShop returns to normal behavior and stops checking island permissions. + +--- + +## Summary + +The IridiumSkyblock compat module: + +- Protects island economies +- Enforces island-based permissions +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is recommended for any server running IridiumSkyblock. diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md new file mode 100644 index 0000000000..3b4726cb9d --- /dev/null +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md @@ -0,0 +1,151 @@ +# ItemMatcherPlus + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +The ItemMatcherPlus module improves how QuickShop matches custom and plugin-modified items. + +It allows QuickShop to properly recognize and stack items created by other plugins that normally would not match using standard Bukkit item comparisons. + +This module is especially useful for servers that use: + +- Custom items +- Modified metadata +- NBT-based systems +- Advanced crate rewards +- Custom brewing systems +- Custom fishing rewards + +--- + +## What Does It Do? + +By default, Minecraft item matching checks: + +- Material type +- Basic metadata + +However, many plugins modify items with: + +- Custom NBT data +- Hidden tags +- Custom lore formats +- Unique identifiers + +Without enhanced matching: + +- Items may not stack +- Shops may refuse valid items +- Transactions may fail +- Buying/selling may not behave correctly + +ItemMatcherPlus improves compatibility and matching accuracy. + +--- + +## Supported Plugins + +ItemMatcherPlus includes built-in support for: + +- AdvancedItems +- BreweryX +- CrazyCrates +- ExcellentCrates +- PyroFishing +- SilkSpawners + +If any of these plugins are installed, QuickShop will automatically use enhanced matching logic. + +No additional configuration is required. + +--- + +## How It Works + +When a player trades with a shop: + +1. QuickShop checks the item. +2. If ItemMatcherPlus is enabled, it performs advanced matching. +3. Plugin-specific metadata is validated. +4. The item is confirmed as a match (or rejected safely). + +This allows: + +- Proper stacking of custom items +- Correct shop transactions +- Accurate buy/sell detection +- Reduced false mismatches + +--- + +## Installation + +1. Download the ItemMatcherPlus module. +2. Place the JAR into your `plugins` folder. +3. Restart your server. + +If supported plugins are detected, compatibility activates automatically. + +--- + +## Configuration + +ItemMatcherPlus does not require configuration. + +It activates automatically when: + +- The module is installed +- A supported plugin is detected + +If a supported plugin is not installed, no extra logic runs. + +--- + +## Why You Should Use It + +You should install ItemMatcherPlus if your server uses: + +- Custom fishing plugins +- Custom brewing systems +- Crate plugins with modified items +- Custom spawners +- Any plugin that modifies NBT data + +Without it, shops may not properly recognize custom items. + +--- + +## Common Questions + +### Do I need this if I don't use custom item plugins? + +No. +If you only use vanilla items, this module is not necessary. + +### Does this affect performance? + +The module only activates enhanced matching when needed. + +Normal item matching remains fast and efficient. + +### Will it break existing shops? + +No. +It improves compatibility and matching accuracy without modifying existing shop data. + +--- + +## Summary + +ItemMatcherPlus: + +- Improves item matching accuracy +- Adds support for major custom item plugins +- Prevents stacking and trade issues +- Requires no configuration +- Activates automatically + +If you run a heavily customized economy server, this module is highly recommended. \ No newline at end of file diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md index ba87606698..d4ae7d129a 100644 --- a/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/lands.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/lands.md index 06296f5779..7671fcdfe0 100644 --- a/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/lands.md +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/lands.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/openinv.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/openinv.md index c51f628615..4807d57873 100644 --- a/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/openinv.md +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/openinv.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md new file mode 100644 index 0000000000..c2136320b0 --- /dev/null +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md @@ -0,0 +1,138 @@ +# SimpleClaimSystem + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and SimpleClaimSystem. + +It ensures that shop creation and trading respect land ownership and claim permissions defined by SimpleClaimSystem. + +--- + +## What Does It Do? + +SimpleClaimSystem allows players to claim land and protect it from unauthorized interaction. + +Without compatibility: + +- Players could create shops inside claims they do not own. +- Visitors might trade inside protected areas. +- Claim protection might not apply correctly to shops. + +The SimpleClaimSystem compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops within their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a SimpleClaimSystem claim. +- Whether the player has permission within that claim. +- Whether claim rules allow shop interaction. + +If the action is not permitted by the claim, QuickShop blocks it. + +If the location is outside any claim, default QuickShop behavior applies. + +--- + +## Claim Owner Control + +With this module enabled: + +- Claim owners can create and manage shops inside their claim. +- Trusted players follow claim-based permissions. +- Visitors are restricted unless explicitly allowed. +- Claim protection rules apply automatically to shop interactions. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install SimpleClaimSystem. +2. Install the QuickShop SimpleClaimSystem compat module. +3. Restart your server. + +The module activates automatically if SimpleClaimSystem is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If SimpleClaimSystem is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Enable owner override for easier management. + +This ensures players maintain control over their protected land. + +--- + +## Common Questions + +### Can players create shops in someone else's claim? + +Only if claim permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can allow shops outside claims or restrict them. + +### What happens if SimpleClaimSystem is removed? + +QuickShop will revert to default behavior and stop checking claim permissions. + +--- + +## Summary + +The SimpleClaimSystem compat module: + +- Enforces claim-based permissions +- Prevents unauthorized shop creation +- Protects land from unwanted trading +- Requires minimal setup + +It is recommended for servers running SimpleClaimSystem. \ No newline at end of file diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md index a84dbf057b..4dfa8ae97c 100644 --- a/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/towny.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/towny.md index 52ab4818f4..b26c19d335 100644 --- a/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/towny.md +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/towny.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -26,7 +26,7 @@ Town sub-command allow you switch a quickshop between regular shop and town shop For a nation shop, the shop owner will changed to nation fake player created by Towny, and use Nation's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from nation Towny account.\ +All purchases will deposit or withdraw money from nation Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Nation Shop. @@ -35,7 +35,7 @@ If Plot type restriction is enabled, only a specific Plot type can create a Nati For a town shop, the shop owner will changed to town fake player created by Towny, and use Town's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from town Towny account.\ +All purchases will deposit or withdraw money from town Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Town Shop. @@ -88,7 +88,7 @@ bank-mode: ## Permission Override -By adjust configuration, you're allow mayor or king automaticlly grant administrator permission on all shops in their management range. +By adjust configuration, you're allow mayor or king automatically grant administrator permission on all shops in their management range. ```yaml #Should allow Mayor grant the shop administrator permission on they town. @@ -168,7 +168,7 @@ This causes Towny and QuickShop Hikari to use accounts with the same name but di You can adjust the option in configuration to enable workaround. -NOTE: It will force turned on if detected EssentialsX installed on your server.\ +NOTE: It will force turned on if detected EssentialsX installed on your server. At present, we do not provide a method for disable it. ```yaml diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md new file mode 100644 index 0000000000..0189958495 --- /dev/null +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md @@ -0,0 +1,138 @@ +# UltimateClaims + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and UltimateClaims. + +It ensures that shop creation and trading respect land claim permissions managed by UltimateClaims. + +--- + +## What Does It Do? + +On servers using land-claim plugins, players protect areas of the world from unauthorized interaction. + +Without compatibility: + +- Players may create shops inside claims they do not own. +- Visitors might trade in areas where they should not. +- Claim protection rules might not apply correctly to shops. + +The UltimateClaims compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops inside their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a claim. +- Whether the player has permission in that claim. +- Whether claim rules allow shop interaction. + +If the action violates claim settings, QuickShop blocks it. + +Outside of claims, normal QuickShop behavior applies. + +--- + +## Claim Owner Permissions + +With this module enabled: + +- Claim owners can create and manage shops within their claim. +- Trusted players follow claim permission settings. +- Visitors are restricted based on claim configuration. +- Shop actions outside of claims behave normally. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install UltimateClaims. +2. Install the QuickShop UltimateClaims compat module. +3. Restart your server. + +If UltimateClaims is detected on startup, compatibility activates automatically. + +No additional linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Common options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If UltimateClaims is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Keep owner override enabled for better control. + +This ensures players maintain full control over their protected land. + +--- + +## Common Questions + +### Can players create shops inside someone else's claim? + +Only if the claim permissions allow it. + +Otherwise, QuickShop will block the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can choose to restrict shops to claimed land only. + +### What happens if UltimateClaims is removed? + +QuickShop returns to normal behavior without claim checks. + +--- + +## Summary + +The UltimateClaims compat module: + +- Protects claimed land from unauthorized shop usage +- Enforces claim-based permissions +- Integrates smoothly with land-claim servers +- Requires minimal setup + +It is recommended for any server running UltimateClaims. \ No newline at end of file diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md index 87a71a205c..6437754503 100644 --- a/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md @@ -2,8 +2,10 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. Find out more [here](../modules/shops/worldedit.md). + +Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. \ No newline at end of file diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/development/01-getting-start.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/development/01-getting-start.md index 92b773451e..0e78e52367 100644 --- a/i18n/ru-RU/docusaurus-plugin-content-docs/current/development/01-getting-start.md +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/development/01-getting-start.md @@ -6,8 +6,8 @@ This series of articles will help you build extensions for QuickShop-Hikari or i ## License -QuickShop-Hikari is open source using the [GPLv3](https://www.gnu.org/licenses/quick-guide-gplv3.en.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari).\ -You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the GPLv3 agreement. +QuickShop-Hikari is open source using the [AGPLv3](https://www.gnu.org/licenses/agpl-3.0.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari). +You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the AGPLv3 agreement. ## 🚧Don't trust Javadoc too much @@ -48,7 +48,7 @@ QuickShop-Hikari divides operation sources into three types: - Server Main Thread - Async Thread (any other threads but not server main thread) -- Hybird +- Hybrid If you access the API through the wrong thread, QuickShop-Hikari will force a runtime error to be thrown. @@ -58,4 +58,4 @@ For APIs that may trigger network IO or long-time disk IO, you are required not You can see [Util.ensureThread()](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/3d1d271e1106ea1c83cc6068f8232ab7c7860918/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/util/Util.java#L351) and find out the requirements of the different APIs by looking up their use. APIs that do not use Util.ensureThread() are allowed to be called from any thread by default. -You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. +You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. \ No newline at end of file diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md index aa2404c594..7828d414ad 100644 --- a/i18n/ru-RU/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md @@ -10,7 +10,7 @@ ShopManager manager = api.getShopManager(); ## Getting a shop -Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates.\ +Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates. QuickShop-Hikari's store is only bound to one half of "Large Chest", so to get the store, you need to query both the cube itself and its associated cube. The good thing is that there is an API in the plugin that allows you to handle this situation very easily. @@ -71,7 +71,7 @@ manager.deleteShop(shop) // Permanently delete this store, both memory and datab ## Identify a store -Please note that store locations are technically variable and you should not use coordinates to identify a store.\ +Please note that store locations are technically variable and you should not use coordinates to identify a store. Also RuntimeRandomUniqueId should not be used to identify the store, as the name suggests, the value changes every time the server restarts, it should only be used to handle scenarios where the player interacts with the server. ```java diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md index 543f1851da..4f839ed652 100644 --- a/i18n/ru-RU/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md @@ -1,6 +1,6 @@ # 0x05 Per shop permission -QuickShop-Hikari has a per shop permission management system.\ +QuickShop-Hikari has a per shop permission management system. Therefore, for a normal permission node check is not enough, you need to attach an additional check. ## Check with shop diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/development/06-protocol-system.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/development/06-protocol-system.md index 5d37a15536..0380b789f9 100644 --- a/i18n/ru-RU/docusaurus-plugin-content-docs/current/development/06-protocol-system.md +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/development/06-protocol-system.md @@ -15,30 +15,30 @@ This documentation will guide developers through the components, implementation - **Purpose**: Manages packet handling and initialization logic. - **Interface**: `PacketHandler` - **Key Methods**: - - `Map> factories()` - - Retrieves a map of supported `PacketFactory` instances keyed by game versions. - - `void initialize()` - - Initializes the packet handler. - - `Optional> factory(String version)` - - Retrieves a `PacketFactory` for a specific game version. + - `Map> factories()` + - Retrieves a map of supported `PacketFactory` instances keyed by game versions. + - `void initialize()` + - Initializes the packet handler. + - `Optional> factory(String version)` + - Retrieves a `PacketFactory` for a specific game version. ### 2. **PacketFactory** - **Purpose**: Creates and sends specific packet types. - **Interface**: `PacketFactory` - **Supported Packets**: - - **Spawn Packet**: - - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. - - Example Use: Representing shop items visually. - - **Metadata Packet**: - - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. - - Example Use: Updating item display name or properties. - - **Velocity Packet**: - - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. - - Example Use: Custom animations for virtual items. - - **Destroy Packet**: - - Removes the entity from the client view. Created using `createDestroyPacket()`. - - Example Use: Unloading or removing a virtual display item. + - **Spawn Packet**: + - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. + - Example Use: Representing shop items visually. + - **Metadata Packet**: + - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. + - Example Use: Updating item display name or properties. + - **Velocity Packet**: + - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. + - Example Use: Custom animations for virtual items. + - **Destroy Packet**: + - Removes the entity from the client view. Created using `createDestroyPacket()`. + - Example Use: Unloading or removing a virtual display item. Developers implementing custom `PacketFactory` should ensure these packets are correctly handled and optimized for performance. @@ -46,24 +46,24 @@ Developers implementing custom `PacketFactory` should ensure these packets are c - **Purpose**: Oversees the lifecycle of virtual display items and integrates with packet handlers. - **Key Features**: - - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). - - Manages virtual display items mapped to chunks. - - Provides thread-safe operations for adding and removing display items. + - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). + - Manages virtual display items mapped to chunks. + - Provides thread-safe operations for adding and removing display items. ### 4. **VirtualDisplayItem** - **Purpose**: Represents a virtual item displayed to players. - **Key Features**: - - Generates and caches packets for spawning, metadata, velocity, and destruction. - - Manages packet senders for each player. - - Handles spawn and removal operations dynamically. + - Generates and caches packets for spawning, metadata, velocity, and destruction. + - Manages packet senders for each player. + - Handles spawn and removal operations dynamically. ### 5. **ProtocolLibHandler and PacketEventsHandler** - **Purpose**: Provide implementations of `PacketHandler` using ProtocolLib and PacketEvents, respectively. - **Differences**: - - `ProtocolLibHandler` leverages ProtocolLib API. - - `PacketEventsHandler` uses the PacketEvents library. + - `ProtocolLibHandler` leverages ProtocolLib API. + - `PacketEventsHandler` uses the PacketEvents library. --- @@ -140,11 +140,11 @@ public class CustomPacketFactory implements PacketFactory { Packet factories are provided for specific game versions through two primary implementations: - **ProtocolLib**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` - **PacketEvents**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` --- diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md new file mode 100644 index 0000000000..aebc035f87 --- /dev/null +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md @@ -0,0 +1,297 @@ +# Interaction System (Developer Guide) + +The Interaction System allows developers to fully customize how players interact with shops. + +As of 6.2.0.11, the system has been redesigned to be: + +- Modular +- Extensible +- Thread-safe +- Fully customizable by third-party addons + +This guide will walk you through: + +1. What the Interaction System is +2. Getting the `InteractionManager` +3. Understanding `InteractionType` +4. Understanding `InteractionBehavior` +5. Registering custom interactions +6. Best practices + +--- + +# Overview + +The Interaction System is composed of three main components: + +| Component | Purpose | +| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| `InteractionType` | Describes **what kind of click happened** (standing, sneaking, left-click, sign, shopblock, etc.) | +| `InteractionBehavior` | Describes **what action should happen** when that type is triggered | +| `InteractionManager` | Central registry that manages interactions and behaviors | + +This separation allows developers to: + +- Add new click types +- Add new behaviors +- Override existing ones +- Extend QuickShop without modifying core code + +--- + +# Getting the InteractionManager + +To begin registering custom interactions, you must retrieve the `InteractionManager` instance. + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +If you are working directly with the plugin instance: + +```java +InteractionManager manager = QuickShop.getInstance().getInteractionManager(); +``` + +Once obtained, you can: + +- Register new interaction types +- Register new behaviors +- Override existing behaviors + +--- + +# Understanding InteractionType + +`InteractionType` represents **how** a player interacted with a shop. + +Examples include: + +- `STANDING_LEFT_CLICK_SIGN` +- `STANDING_RIGHT_CLICK_SHOPBLOCK` +- `SNEAKING_LEFT_CLICK_CONTAINER` +- etc. + +Each `InteractionType` defines: + +- Player stance (standing/sneaking) +- Click type (left/right) +- Target (sign/shopblock/container) + +InteractionTypes do NOT define behavior — they only define the trigger. + +--- + +# Understanding InteractionBehavior + +`InteractionBehavior` defines **what happens** when an interaction is triggered. + +Examples of built-in behaviors: + +- `TRADE_INTERACTION` +- `TRADE_UI` +- `CONTROL_PANEL` +- `CONTROL_PANEL_UI` +- `NONE` + +A behavior: + +- Executes logic +- May open GUIs +- May send chat panels +- May directly trade items +- Can cancel or modify flow + +This separation makes it easy to reuse behaviors across multiple interaction types. + +--- + +# Registering Custom Interactions + +There are two things you can register: + +- A custom `InteractionType` +- A custom `InteractionBehavior` + +--- + +## Creating a Custom InteractionBehavior + +Create a class implementing `InteractionBehavior`. + +Example: + +```java +public class MyTradeBehavior implements InteractionBehavior { + + @Override + public String getKey() { + return "MY_CUSTOM_TRADE"; + } + + @Override + public void execute(InteractionClick click) { + Player player = click.getPlayer(); + Shop shop = click.getShop(); + + player.sendMessage("You triggered my custom interaction!"); + + // Add your custom logic here + } +} +``` + +Then register it: + +```java +InteractionManager manager = api.getInteractionManager(); +manager.behavior(new MyTradeBehavior()); +``` + +Now your behavior is available for use. + +--- + +## Creating a Custom InteractionType + +You may also register custom interaction types if you want to introduce new trigger definitions. + +Example: + +```java +public class MyCustomInteraction implements InteractionType { + + @Override + public String getKey() { + return "STANDING_DOUBLE_CLICK_SIGN"; + } + + @Override + public boolean matches(InteractionClick click) { + // Define custom logic to detect this interaction + return click.isStanding() + && click.isSign() + && click.isDoubleClick(); + } +} +``` + +Register it: + +```java +manager.interaction(new MyCustomInteraction()); +``` + +--- + +# Binding Types to Behaviors + +The InteractionManager internally maps interaction types to behaviors based on configuration and registration order. + +Once your behavior is registered: + +- It can be referenced in `interaction.yml` +- Or attached programmatically + +Example interaction.yml usage: + +```yaml +STANDING_LEFT_CLICK_SIGN: MY_CUSTOM_TRADE +``` + +--- + +# The InteractionClick Object + +When your behavior executes, you receive an `InteractionClick` object. + +It provides: + +- `getPlayer()` +- `getShop()` +- `getLocation()` +- `isSneaking()` +- `isSign()` +- `isShopBlock()` +- etc. + +This gives full context for safe execution. + +--- + +# Advanced: Overriding Built-in Behavior + +If you register a behavior using the same key as an existing one, your behavior can override the default. + +⚠️ Be careful when doing this — you are replacing core functionality. + +--- + +# Best Practices + +### Always Use Unique Keys + +Avoid naming collisions: + +``` +MYPLUGIN_CUSTOM_BEHAVIOR +``` + +### Keep Behavior Lightweight + +Do not block the main thread with: + +- Heavy database calls +- File IO +- Network calls + +Use async tasks if needed. + +### Respect Permissions + +Always validate: + +```java +if (!player.hasPermission("myplugin.use")) { + return; +} +``` + +### Avoid Hard Overrides Unless Necessary + +Instead of replacing built-in behaviors, consider extending them. + +--- + +# Example: Full Minimal Implementation + +```java +public class ExampleAddon { + + public void register(QuickShopAPI api) { + + InteractionManager manager = api.getInteractionManager(); + + manager.behavior(new MyTradeBehavior()); + manager.interaction(new MyCustomInteraction()); + } +} +``` + +--- + +# Conclusion + +The Interaction System is designed to allow: + +- Full extensibility +- Clean separation of triggers and actions +- Easy integration for third-party developers + +By retrieving the `InteractionManager`: + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +You gain full control over how shops respond to player actions. \ No newline at end of file diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/development/08-tax-manager.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/development/08-tax-manager.md new file mode 100644 index 0000000000..72a56f9e88 --- /dev/null +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/development/08-tax-manager.md @@ -0,0 +1,266 @@ +# Tax System (Developer Guide) + +The QuickShop tax system allows server owners and developers to define how transaction taxes are calculated, distributed, and extended. + +As of 6.2.0.11, the tax system has been fully rewritten to provide: + +- A flexible TaxManager +- Pluggable TaxProvider support +- Progressive taxation +- Tax targeting (shop owner, interacting player, or both) +- Custom extension capability for third-party addons + +This guide explains how to work with the tax system programmatically. + +--- + +# Overview + +The tax system is composed of three core components: + +TaxManager +Responsible for coordinating tax calculation and execution. + +TaxProvider +Defines how tax values are calculated. + +TaxRates +Represents calculated tax results for a transaction. + +The system is designed to allow custom providers to be registered and used without modifying core logic. + +--- + +# Getting the TaxManager + +To work with the tax system, retrieve the TaxManager from the ShopManager. + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +Once obtained, you can: + +- Access current tax configuration +- Register custom tax providers +- Calculate tax values +- Hook into tax events + +--- + +# How the Tax System Works + +During a shop transaction: + +1. A base price is determined. +2. The TaxManager selects the active TaxProvider. +3. The TaxProvider calculates applicable tax. +4. A TaxRates object is produced. +5. The system applies the tax to: + + - Shop owner + - Interacting player + - Or both (depending on configuration) + +This architecture allows tax behavior to be modified without altering transaction logic. + +--- + +# TaxProvider + +A TaxProvider defines how tax values are calculated. + +You may create your own provider to implement: + +- Progressive tax brackets +- Flat percentage tax +- Conditional tax rules +- Region-based tax +- Rank-based tax +- Time-based tax + +Example minimal provider: + +```java +public class MyCustomTaxProvider implements TaxProvider { + + @Override + public TaxRates calculateTax(TaxContext context) { + + double basePrice = context.getPrice(); + + double taxAmount = basePrice * 0.05; // 5% flat tax + + return new TaxRates() + .ownerTax(taxAmount) + .buyerTax(0.0); + } +} +``` + +Then register it: + +```java +taxManager.provider(new MyCustomTaxProvider()); +``` + +Once registered, your provider will be used for tax calculations. + +--- + +# TaxRates + +TaxRates represents the result of a tax calculation. + +It typically contains: + +- Owner tax amount +- Buyer tax amount +- Total tax impact +- Metadata (if applicable) + +The transaction system will read from TaxRates and apply deductions accordingly. + +--- + +# Progressive Taxation + +The built-in system supports progressive tax structures. + +This allows server administrators to tax based on: + +- Player balance +- Shop owner balance +- Configured tax brackets + +Example configuration concept: + +- 0–10,000 balance → 1% tax +- 10,000–100,000 → 2% tax +- 100,000+ → 3% tax + +Developers can extend or override this logic inside a custom TaxProvider. + +--- + +# Targeting Tax + +The new tax system allows taxes to be applied to: + +- Shop owner +- Interacting player +- Both + +This is controlled via configuration, but custom providers can override distribution logic by adjusting TaxRates output. + +Example: + +```java +return new TaxRates() + .ownerTax(basePrice * 0.02) + .buyerTax(basePrice * 0.01); +``` + +--- + +# Registering a Custom TaxProvider + +To replace or extend tax logic: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); + +taxManager.provider(new MyCustomTaxProvider()); +``` + +You may register only one primary provider at a time. If multiple providers are needed, implement internal delegation within your custom provider. + +--- + +# Tax Events + +The tax system integrates with the event system. + +The modern event used is: + +ShopEnhancedTaxEvent + +This replaces legacy tax events and provides improved context, including: + +- Transaction builder reference +- TaxRates object +- Modification capability before final execution + +You can listen for the event and modify tax behavior dynamically: + +```java +@EventHandler +public void onTax(ShopEnhancedTaxEvent event) { + + TaxRates rates = event.getTaxRates(); + + // Example: Give VIP players reduced owner tax + if (event.getOwner().hasPermission("vip.tax.discount")) { + rates.ownerTax(rates.getOwnerTax() * 0.5); + } +} +``` + +--- + +# Best Practices + +Always keep tax calculations lightweight. + +Avoid: + +- Heavy database queries inside calculateTax +- Blocking network calls +- Long-running computations + +If complex logic is required, pre-cache required data outside the tax execution path. + +Ensure negative tax values are not returned unless intentional. + +Always validate final amounts before applying modifications. + +Respect configuration hierarchy unless intentionally overriding it. + +--- + +# Example Full Implementation + +```java +public class ExampleTaxAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + TaxManager taxManager = manager.taxManager(); + + taxManager.provider(new MyCustomTaxProvider()); + } +} +``` + +--- + +# Conclusion + +The new tax system is designed for: + +- Flexibility +- Extensibility +- Clean separation of concerns +- Future expansion + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +You gain full control over how QuickShop calculates and applies tax during transactions. \ No newline at end of file diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/development/09-layout-provider.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/development/09-layout-provider.md new file mode 100644 index 0000000000..55e3cd3e91 --- /dev/null +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/development/09-layout-provider.md @@ -0,0 +1,275 @@ +# Shop Layout Provider (Developer Guide) + +The Shop Layout Provider system allows developers to customize how shop signs are structured and rendered. + +As of 6.2.0.11, shop layouts are no longer hardcoded. Instead, they are controlled through the `IShopLayoutProvider` interface, which allows: + +- Custom sign line ordering +- Per-shop-type layouts (BUYING, SELLING, FROZEN, or custom types) +- Dynamic layout resolution +- Complete replacement of the default layout system + +This guide explains how to access, override, and implement a custom layout provider. + +--- + +# Overview + +The layout provider controls how shop sign lines are arranged. + +Instead of hardcoding: + +Line 1 → Header +Line 2 → Trading info +Line 3 → Item +Line 4 → Price + +The system now allows full customization through: + +- Config-based layout definitions +- Custom `IShopLayoutProvider` implementations +- Runtime overrides + +The default implementation is `SimpleShopLayoutProvider`. + +--- + +# Accessing the Layout Provider + +To retrieve the current layout provider: + +```java +ShopManager manager = api.getShopManager(); +IShopLayoutProvider provider = manager.shopLayoutProvider(); +``` + +To replace the layout provider with a custom one: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Once replaced, your implementation will control how shop layouts are generated. + +--- + +# Understanding IShopLayoutProvider + +`IShopLayoutProvider` defines how layout data is retrieved and resolved. + +It is responsible for: + +- Providing layout configuration per shop type +- Determining which layout to use +- Supplying formatted line keys +- Allowing future extensibility + +The default implementation reads layout definitions from configuration and applies them based on shop type. + +--- + +# Default Layout Example + +The default configuration-based layout looks like this: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +Each line maps to a layout component key. + +An empty string (`""`) leaves that line blank. + +The layout provider resolves these keys into actual sign content. + +--- + +# Creating a Custom Layout Provider + +To override the default behavior, implement `IShopLayoutProvider`. + +Example minimal implementation: + +```java +public class MyCustomLayoutProvider implements IShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + + ShopLayout layout = new ShopLayout(); + + layout.setLine(1, "Custom Header"); + layout.setLine(2, "Owner: " + shop.getOwnerName()); + layout.setLine(3, shop.getItem().getType().name()); + layout.setLine(4, "$" + shop.getPrice()); + + return layout; + } +} +``` + +Then register it: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Your layout will now control all shop sign formatting. + +--- + +# Per-Type Layout Control + +Because the system no longer depends on the legacy ShopType enum, layouts can support: + +- Built-in types (BUYING, SELLING, FROZEN) +- Custom shop types +- Addon-defined shop types + +Your provider can determine layout logic dynamically: + +```java +@Override +public ShopLayout provideLayout(Shop shop) { + + if (shop.getShopType().key().equals("FROZEN")) { + return frozenLayout(shop); + } + + return defaultLayout(shop); +} +``` + +This allows conditional formatting, localization adjustments, or special event styling. + +--- + +# Advanced Customization + +A custom layout provider can: + +- Pull data from external plugins +- Inject dynamic placeholders +- Modify layout per player +- Apply formatting logic +- Override color schemes +- Apply region-based formatting +- Implement animated sign systems + +Because the layout provider is resolved at runtime, you can compute layouts dynamically instead of reading static config. + +--- + +# Replacing vs Extending the Default Provider + +You have two options: + +Replace entirely: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Or extend the default implementation: + +```java +public class ExtendedLayoutProvider extends SimpleShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + ShopLayout base = super.provideLayout(shop); + + base.setLine(1, "[Extended] " + base.getLine(1)); + + return base; + } +} +``` + +Extending is safer if you only want to modify small portions. + +--- + +# Best Practices + +Keep layout generation lightweight. + +Avoid: + +- Heavy database queries +- Blocking IO +- Complex network calls + +Layout generation runs during shop updates and sign refresh events. + +Always handle null values safely. + +Ensure layout line count does not exceed sign limits. + +Avoid hardcoding shop type names unless necessary. + +If your layout supports custom shop types, validate their keys properly. + +--- + +# Example Full Registration + +```java +public class LayoutAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + + manager.shopLayoutProvider(new MyCustomLayoutProvider()); + } +} +``` + +--- + +# Conclusion + +The Shop Layout Provider system allows complete control over shop sign structure. + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +``` + +And setting: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +You can redefine how every shop is displayed on the server. + +This system was designed to support: + +- Extensibility +- Custom shop types +- Localization +- Dynamic formatting +- Future expansion \ No newline at end of file diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/faq/compare-reremake.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/faq/compare-reremake.md index aaa1a9e507..6b39f02520 100644 --- a/i18n/ru-RU/docusaurus-plugin-content-docs/current/faq/compare-reremake.md +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/faq/compare-reremake.md @@ -64,7 +64,7 @@ If you are a Reremake user, you may be confused about the differences between Hi ## Which one should I use? Well, it depends on what your needs are.\ -If you have an old server (<1.20) instance, Reremake is your only choice.\ +If you have an old server ({'<'}1.20) instance, Reremake is your only choice.\ ~~If you are in China which has GFW interfere, you also should consider Reremake because it doesn't need to load libraries from Global Internet.~~ Solved in 6.0.0.0. If none of these applies, give Hikari a try! diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md index 551f579e7c..172be3a69b 100644 --- a/i18n/ru-RU/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md @@ -1,8 +1,8 @@ # Where Addons/Compacts is -Addons and Compatilibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. +Addons and Compatibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. -- Open Modrinth versions page, locate the version your're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) +- Open Modrinth versions page, locate the version you're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) - Frantically slide your mouse wheel down until the lowest end of the page. - You get it! diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/internal/database-schema.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/internal/database-schema.md index fea685e4fc..45e04adb56 100644 --- a/i18n/ru-RU/docusaurus-plugin-content-docs/current/internal/database-schema.md +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/internal/database-schema.md @@ -4,17 +4,17 @@ This chapter will explain the implementation details of QuickShop Hikari's datab ## Tables -This section explains the database tables created by QuickShop-Hikari.\ -Unless otherwise specified, the initial `qs_` in table name is the table prefix.\ +This section explains the database tables created by QuickShop-Hikari. +Unless otherwise specified, the initial `qs_` in table name is the table prefix. For the latest code definition for each table, see: [DataTables.java](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/hikari/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/database/DataTables.java) ### `data` -This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information.\ -No matter what, a data record should not be modified after it is created, until it got deleted.\ +This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information. +No matter what, a data record should not be modified after it is created, until it got deleted. Any new changes to the shop should create a new copy, apply the changes to the copy, and insert it as a new record. -Basiclly, Copy-on-write. +Basically, Copy-on-write. A data record only be deleted from the database when no any table references their `data_id`. @@ -29,7 +29,7 @@ A data record only be deleted from the database when no any table references the | unlimited | BIT NOT NULL | 0 | Indicates whether this store is an unlimited store, 0=Limited, 1=Unlimited | | hologram | BIT NOT NULL | 0 | Indicates the suspension status of this store's display item, 0=Follow global settings, 1=Disabled | | tax_account | VARCHAR(36) | NULL | The uuid for tax account, If it is not NULL, tax will be paid to the specified account | -| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serilized to JSON string | +| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serialized to JSON string | | extra | LONGTEXT | Empty Yaml | Used to store experimental settings of QuickShop Hikari or persistent data of other plugins | | inv_wrapper | VARCHAR(255) NOT NULL | N/A | Unique identifier for InventoryWrapper for this shop data entry | | inv_symbol_link | TEXT NOT NULL | N/A | Unique Inventory symbol used to pass to InventoryWrapper, for locating inventory | @@ -38,7 +38,7 @@ A data record only be deleted from the database when no any table references the ### `shops` -This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes.\ +This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes. Multiple `shop_id` can correspond to the same `data_id`. | Column Name | DataType | Default | Description | diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/modules/cmd-alias.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/modules/cmd-alias.md index 53f1577685..e6ed381c0d 100644 --- a/i18n/ru-RU/docusaurus-plugin-content-docs/current/modules/cmd-alias.md +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/modules/cmd-alias.md @@ -23,7 +23,7 @@ custom-commands: - cshop ``` -Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect.\ +Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect. The effect should be like this: ![command-alias](./img/command-alias.png) diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/modules/datasource.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/modules/datasource.md index 6fc1bd8931..3fd3a8bdee 100644 --- a/i18n/ru-RU/docusaurus-plugin-content-docs/current/modules/datasource.md +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/modules/datasource.md @@ -48,7 +48,7 @@ Execute the `/quickshop export` command in console, quickshop will export a zip ![exported data](img/database-export.png) -Stop your database, switch the datasource, and start the server.\ +Stop your database, switch the datasource, and start the server. You may noticed all shops are gone, because new datasources had no data inside, we will restore them from export. Rename that exported ZIP file to `recovery.zip`, execute `/quickshop recovery` and restart your server, all shops should back. diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/modules/itemmatcher.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/modules/itemmatcher.md index 56be243019..922907be27 100644 --- a/i18n/ru-RU/docusaurus-plugin-content-docs/current/modules/itemmatcher.md +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/modules/itemmatcher.md @@ -4,7 +4,7 @@ ItemMatcher is a utility used by QuickShop-Hikari to compare the items, it is th :::caution -If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse.\ +If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse. **TL;DR: Keep default unless you know what you're doing.** ::: @@ -26,10 +26,10 @@ matcher: work-type: 1 ``` -By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility.\ +By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility. But still, you can toggle to QuickShop Item Matcher if you need to customize the comparing or running QuickShop on the server jar which have bug affect the Bukkit comparing system. -## Customize the metadata compareing +## Customize the metadata comparing Customize only works under QuickShop Item Matcher. diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md index fc2af69d2b..d04e8f2783 100644 --- a/i18n/ru-RU/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md @@ -4,7 +4,7 @@ ItemStack Loader is a workaround for loading the Bukkit ItemStack. :::caution -Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossble. +Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossible. ::: diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/modules/localization.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/modules/localization.md index e9121e1a36..d47589ab9a 100644 --- a/i18n/ru-RU/docusaurus-plugin-content-docs/current/modules/localization.md +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/modules/localization.md @@ -10,7 +10,7 @@ To help translate QuickShop-Hikari, please visit our [Crowdin Homepage](https:// ## Crowdin OTA -QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will overrided when you reload QuickShop-Hikari or restart your server. +QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will override when you reload QuickShop-Hikari or restart your server. Your installation will keep translations up-to-date without any touch. @@ -110,6 +110,16 @@ To disable the CrowdinOTA, please add it in the startup flag: -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager.enableCrowdinOTA=false ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +use-crowdin-ota: false +``` + ### Self-Hosted OTA Server If you self-hosted our translation server by using [CrowdinCopyDeploy](https://github.com/Ghost-chu/CrowdinCopyDeploy) tool, you're able to change the OTA server to yourself server. @@ -118,4 +128,12 @@ If you self-hosted our translation server by using [CrowdinCopyDeploy](https://g -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager= ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml +Use + +```yaml +crowdin-host: +``` \ No newline at end of file diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/modules/shops/benefit.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/modules/shops/benefit.md index 4d7a9c8f42..c59d92e6d1 100644 --- a/i18n/ru-RU/docusaurus-plugin-content-docs/current/modules/shops/benefit.md +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/modules/shops/benefit.md @@ -37,3 +37,13 @@ By default, for security, QuickShop-Hikari disallow add offline players into sho ```bash -Dcom.ghostchu.quickshop.command.subcommand.SubCommand_Benefit.allowOffline=true ``` + +### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +shop.allow-offline-benefit: true +``` \ No newline at end of file diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/modules/shops/control-panel b/i18n/ru-RU/docusaurus-plugin-content-docs/current/modules/shops/control-panel new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/modules/shops/control-panel @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/modules/shops/history.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/modules/shops/history.md index fa891adeab..195b64a042 100644 --- a/i18n/ru-RU/docusaurus-plugin-content-docs/current/modules/shops/history.md +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/modules/shops/history.md @@ -24,7 +24,7 @@ The History GUI displays the details of each recorded transaction and other usef ### Transaction details -When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed.\ +When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed. If you are checking the history of more than one store, the player head will be replaced with an item from the corresponding store. ![history-gui](./img/history-gui.png) diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md new file mode 100644 index 0000000000..c5ed3b3fe4 --- /dev/null +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md @@ -0,0 +1,90 @@ +# Shop Types + +QuickShop supports multiple shop types, allowing shops to behave differently depending on their mode. + +The built-in shop types are: + +- Selling +- Buying +- Frozen + +Each type changes how the shop interacts with players. + +--- + +## Selling Shop + +A Selling shop allows players to: + +- Buy items from the shop owner +- Pay money to receive items + +This is the most common shop type. + +--- + +## Buying Shop + +A Buying shop allows players to: + +- Sell items to the shop owner +- Receive money in exchange + +This is commonly used for: + +- Resource collection +- Server buy-back shops +- Automated material sinks + +--- + +## Frozen Shop + +A Frozen shop temporarily disables trading. + +While frozen: + +- No buying is allowed +- No selling is allowed +- The shop remains intact +- Staff or admins can manage it + +This is useful for: + +- Temporary suspensions +- Investigation +- Event locking +- Maintenance + +--- + +## Switching Shop Types + +Shop types can be changed through: + +- Control panel +- GUI control panel +- Admin commands + +Frozen mode is also available via: + +/qs freeze + +--- + +## Custom Shop Types + +As of 6.2.x, the system supports extensible shop types internally. + +While server owners use the built-in types, the system now allows future expansion through addons. + +--- + +## Summary + +Shop types allow you to: + +- Control how money flows +- Enable buy-back mechanics +- Temporarily disable shops +- Build advanced economic systems \ No newline at end of file diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md new file mode 100644 index 0000000000..18e0a47407 --- /dev/null +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md @@ -0,0 +1,217 @@ +# Sign Layout + +QuickShop allows you to fully customize how shop signs are structured. + +You can change: + +- What appears on each line +- The order of information +- Layout per shop type +- Whether certain lines are blank + +This gives you complete control over how shops look on your server. + +--- + +## How Sign Layout Works + +Shop signs have four lines. + +Instead of being hardcoded, QuickShop uses a configurable layout system. + +Each shop type can have its own layout: + +- SELLING +- BUYING +- FROZEN + +You define what each line displays using layout keys. + +--- + +## Configuration Location + +Sign layout is configured in `config.yml` under: + +```yaml +layout: +``` + +Example default configuration: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## Available Layout Keys + +Each line value refers to a built-in layout component. + +Common layout keys include: + +- `header` – The shop header line +- `trading` – Buy/Sell direction information +- `item` – Item name +- `price` – Shop price + +These keys are automatically formatted using your language file and formatting settings. + +--- + +## Leaving a Line Blank + +To leave a line empty, use: + +```yaml +line2: "" +``` + +This is useful if you want: + +- Minimalist signs +- Cleaner layouts +- Custom spacing +- Decorative formatting + +--- + +## Customizing Per Shop Type + +Each shop type can have a different layout. + +For example: + +```yaml +layout: + + SELLING: + line1: "header" + line2: "item" + line3: "price" + line4: "" + + BUYING: + line1: "header" + line2: "price" + line3: "item" + line4: "" + + FROZEN: + line1: "header" + line2: "" + line3: "item" + line4: "Frozen" +``` + +This allows you to visually differentiate: + +- Selling shops +- Buying shops +- Frozen shops + +--- + +## Practical Examples + +### Minimal Style + +```yaml +layout: + SELLING: + line1: "item" + line2: "price" + line3: "" + line4: "" +``` + +### Compact Economy Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "price" + line3: "item" + line4: "" +``` + +### Large Clear Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## How Updates Affect Layout + +When you change the layout: + +- Existing shop signs will update automatically when refreshed. +- New shops will use the updated format immediately. + +If needed, you can reload QuickShop to apply changes. + +--- + +## Best Practices + +- Keep important information visible (price and item). +- Avoid overly complex formatting. +- Test layout changes before deploying on large servers. +- Use different layouts for BUYING and SELLING to reduce confusion. + +--- + +## Common Questions + +### Can I add more than four lines? + +No. +Minecraft signs are limited to four lines. + +### Can I add colors? + +Colors are controlled by your language file and formatting settings. + +### Can I change layout without restarting? + +Yes, but reloading or refreshing shops is recommended to ensure full update. + +--- + +## Summary + +The Sign Layout system allows you to: + +- Fully customize shop sign appearance +- Create per-type layouts +- Simplify or expand shop information +- Improve clarity for players + +All layout customization is handled inside `config.yml`. diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md new file mode 100644 index 0000000000..980bad10f2 --- /dev/null +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md @@ -0,0 +1,130 @@ +# Shop Sign Waxing + +QuickShop can automatically wax shop signs to prevent players from editing them manually. + +Waxing protects the integrity of your shop signs and helps prevent tampering, spoofing, and accidental modification. + +As of modern Minecraft versions, waxed signs cannot be edited unless they are unwaxed first. + +--- + +## What Is Sign Waxing? + +In Minecraft, waxing a sign locks it so that: + +- Players cannot edit the text +- Players cannot modify lines +- Accidental changes are prevented +- Malicious edits are blocked + +When enabled in QuickShop, shop signs are automatically waxed when created. + +--- + +## Why Use It? + +Sign waxing protects against: + +- Players editing price lines +- Changing item names on signs +- Spoofing shop information +- Accidental formatting issues +- Sign hijacking attempts + +On public servers, this feature is strongly recommended. + +--- + +## How It Works + +When a shop is created: + +1. QuickShop generates the shop sign. +2. The sign text is written. +3. The sign is automatically waxed (if enabled). + +If a shop is updated: + +- The sign will be safely updated by QuickShop. +- The wax state is maintained. + +Players cannot manually edit shop signs while waxing is enabled. + +--- + +## Configuration + +To enable or disable sign waxing, edit `config.yml`: + +```yaml +shop: + sign-wax: true +``` + +### true + +- Shop signs are automatically waxed. +- Players cannot edit the sign manually. + +### false + +- Shop signs behave like normal Minecraft signs. +- Players may edit them if permitted by the game. + +--- + +## Recommended Setting + +For most servers: + +```yaml +shop: + sign-wax: true +``` + +This ensures shop data stays accurate and secure. + +--- + +## Common Questions + +### Can admins still modify shop signs? + +QuickShop controls shop sign formatting. +Manual edits are not recommended. + +Admins should use: + +- Control panel +- Shop commands +- Direct configuration changes + +### Does waxing affect shop functionality? + +No. +Waxing only prevents manual text edits. +The shop continues to function normally. + +### Can players un-wax shop signs? + +No. +QuickShop manages the sign state automatically. + +--- + +## Best Practices + +- Keep sign-wax enabled on survival servers. +- Combine sign-wax with proper permissions. +- Avoid manually editing shop signs through other plugins. + +--- + +## Summary + +Sign Waxing: + +- Prevents tampering +- Requires no additional setup + +Enable it once and QuickShop handles the rest. \ No newline at end of file diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/modules/shops/taxes.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/modules/shops/taxes.md new file mode 100644 index 0000000000..1a273fd978 --- /dev/null +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/modules/shops/taxes.md @@ -0,0 +1,92 @@ +# Taxation System + +QuickShop includes a taxation system designed to give server owners more flexibility and control over shop-based income. + +This system was revamped as of 6.2.0.11+ + +The new system allows you to: + +- Apply tax to shop owners +- Apply tax to buyers +- Apply tax to both +- Use progressive tax brackets +- Customize tax behavior in configuration + +This system replaces the legacy tax configuration. + +--- + +## How It Works + +During a transaction: + +1. The shop price is calculated. +2. Tax is calculated based on your configuration. +3. Tax is deducted from the configured target(s). +4. Remaining funds are distributed normally. + +You can configure: + +- Flat percentage tax +- Progressive tax based on player balance +- Tax accounts +- Distribution rules + +--- + +## Progressive Tax + +The new system allows you to tax based on balance brackets. + +Example concept: + +- 0 – 10,000 balance → 1% tax +- 10,000 – 100,000 → 2% tax +- 100,000+ → 3% tax + +This helps prevent extremely wealthy players from dominating the economy. + +--- + +## Who Pays the Tax? + +You can configure whether tax applies to: + +- The shop owner +- The buyer +- Both + +This gives you flexibility depending on your economy design. + +--- + +## Configuration + +All tax-related settings are located under the `shop-tax` section in `config.yml`. + +After updating to 6.2.0.11+, review your tax configuration carefully, as the old tax system has been replaced. + +--- + +## Why Use Tax? + +The taxation system can help: + +- Remove currency from circulation +- Fund server banks or towns +- Create sink mechanics +- Balance inflation +- Reward active players + +--- + +## Summary + +The new taxation system is: + +- Flexible +- Configurable +- Balance-aware +- Designed for modern economy servers + +Make sure to review your configuration after upgrading. \ No newline at end of file diff --git a/i18n/ru-RU/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md b/i18n/ru-RU/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md new file mode 100644 index 0000000000..247c24712d --- /dev/null +++ b/i18n/ru-RU/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md @@ -0,0 +1,161 @@ +# WorldEdit & FAWE Support + +QuickShop includes built-in protection and integration for WorldEdit and FastAsyncWorldEdit (FAWE). + +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. + +You do not need to download or install any additional compatibility plugins. + +--- + +## What This Does + +WorldEdit and FAWE allow administrators and builders to: + +- Copy and paste regions +- Replace large areas of blocks +- Mass-delete regions +- Roll back areas +- Regenerate terrain + +Without protection, these operations could: + +- Create ghost shops +- Leave orphaned shop data in the database +- Duplicate shops unintentionally +- Delete containers without cleaning up shop data +- Cause inconsistencies between world and database + +QuickShop now automatically detects and safely processes WorldEdit and FAWE operations. + +--- + +## Built-In Behavior + +When WorldEdit or FAWE modifies blocks: + +- Shops removed via WorldEdit are properly deleted from the database. +- Shop data stays synchronized with world changes. +- Ghost shops are prevented. +- Mass block replacements will not leave broken shop entries behind. + +This applies to: + +- //set +- //replace +- //cut +- //paste +- //regen +- Region deletion +- Mass container removal + +No configuration is required. + +--- + +## FAWE Support + +FastAsyncWorldEdit (FAWE) is fully supported. + +Because FAWE processes edits asynchronously, QuickShop handles: + +- Region-thread safe processing +- Async block updates +- Safe shop deletion during batch edits + +You do not need to enable anything manually. + +--- + +## Removing Shops with WorldEdit + +If you delete containers (chests, barrels, etc.) using WorldEdit: + +QuickShop will automatically: + +- Detect the block removal +- Unregister the shop +- Clean the database entry +- Prevent ghost shops + +You do not need to run `/qs cleanghost` after WorldEdit usage in normal circumstances. + +--- + +## Copying and Pasting Shops + +If you copy and paste regions that contain shops: + +- Shop data will not duplicate incorrectly. +- Shop IDs remain consistent. +- Invalid pasted shops will not auto-register unless properly created. + +This prevents accidental duplication exploits. + +--- + +## Performance + +WorldEdit and FAWE operations can modify thousands of blocks at once. + +QuickShop processes these safely and efficiently: + +- Batch-aware cleanup +- Thread-safe region access (especially on Folia) +- Minimal performance impact during mass edits + +--- + +## Configuration + +There are no specific WorldEdit configuration options in QuickShop. + +Support is automatic and always enabled if WorldEdit or FAWE is detected. + +If WorldEdit is not installed, no extra code is executed. + +--- + +## Common Questions + +### Do I need the old WorldEdit compatibility jar? + +No. + +As of 6.2.0.11, WorldEdit support is built-in and the separate compatibility module has been removed. + +### Does this work with FAWE? + +Yes. FAWE is fully supported. + +### Will shops break if I use //set air? + +No. Shops will be safely removed and cleaned up. + +### Do I need to restart after installing WorldEdit? + +No. QuickShop detects WorldEdit automatically on startup. + +--- + +## Best Practices + +Even though QuickShop safely handles WorldEdit operations, it is recommended to: + +- Avoid copying shops intentionally unless required +- Use backups before large region edits +- Test large FAWE operations on staging servers when possible + +--- + +## Summary + +QuickShop’s built-in WorldEdit and FAWE integration ensures: + +- Safe mass edits +- No ghost shops +- Automatic database cleanup +- Thread-safe processing +- No extra modules required + +WorldEdit support is now a core feature of QuickShop. \ No newline at end of file diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/addon/limited.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/addon/limited.md index 70af27e240..fae55a8c95 100644 --- a/i18n/sr-SP/docusaurus-plugin-content-docs/current/addon/limited.md +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/addon/limited.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -41,8 +35,8 @@ Limit players to purchase up to 16 items per month. /quickshop limit period MONTH ``` -The system is based on the QuickShop-Hikari calendar system.\ -The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year.\ +The system is based on the QuickShop-Hikari calendar system. +The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year. Same for days, months and hours. Available time units: diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/addon/list.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/addon/list.md index 93d182f083..f20b91fd7b 100644 --- a/i18n/sr-SP/docusaurus-plugin-content-docs/current/addon/list.md +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/addon/list.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/addon/plan.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/addon/plan.md index 52a6e79cb4..c10ef4df42 100644 --- a/i18n/sr-SP/docusaurus-plugin-content-docs/current/addon/plan.md +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/addon/plan.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -18,7 +18,7 @@ Recorded data can be displayed from Hikari v2.0.0.0 onwards, but only after vers - All shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 1000 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `5` in server scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `5` in server scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Player Scope @@ -27,7 +27,7 @@ And still is Plan limitations, the list sorting is disturbed, so the display ord - All owned shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 50 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `4` in player scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `4` in player scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Showcase diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/addon/reforges.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/addon/reforges.md index 2a14509eb7..25fff1752a 100644 --- a/i18n/sr-SP/docusaurus-plugin-content-docs/current/addon/reforges.md +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/addon/reforges.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.0.0.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md index 304d39bc05..6f9f51d250 100644 --- a/i18n/sr-SP/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.1.1.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -44,7 +38,7 @@ _This is not necessary if you are using an H2 database._ ### Prepare for convert -To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console.\ +To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console. If a player is in the server, the conversion cannot be started. Once the conversion has begun, the server will be locked during the conversion process and no players will be able to join the server during the conversion. diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/addon/shopitemonly.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/addon/shopitemonly.md index c45062f8c2..1ccfe977b3 100644 --- a/i18n/sr-SP/docusaurus-plugin-content-docs/current/addon/shopitemonly.md +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/addon/shopitemonly.md @@ -2,17 +2,11 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT - -::: - -This addon prevents players from putting non-store items into store containers.\ +This addon prevents players from putting non-store items into store containers. Does not apply to stores that use the item inventory redirection API (aka. InventoryWrapper API). This Addon will check for container (or transferring) items on events such as the player closing the container or hopper access. diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md new file mode 100644 index 0000000000..9c8b4f7407 --- /dev/null +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md @@ -0,0 +1,55 @@ +# 6.2.0.10 + +## Major Changes + +- Added support for 1.21.6 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.7 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.8 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Some internal updates for packetevents(2.9.0 is now required.) +- Updated Lands support + +## Addon Changes + +- Added MatcherPlus Addon + - Allows support for BreweryX and AdvancedItems stacks in shops with improved matching abilities +- Added FabledSkyblock Compat +- Added Dominion Compat +- Added HuskTowns Compat +- Added IridiumSkyblock Compat +- Added member-create for member creation in ARM compat +- Added admin-override and quickshop.arm.admin permission for admin overrides in ARM + +## Minor Changes + +- Added configurations for the coordinates of the display item. +- Added /qs toggledisplayall on/off server/owned + - Players need to have permission node quickshop.toggledisplayall.admin to toggle all on the server. +- Added ability to use abbreviations in /qs price and /qs create commands such as 2.5k for 2500 +- Added ability to set default display status using shop.default-display in config.yml + +## Fixes + +- Fixed issue with display item being sent to the moon on 1.21.5 +- Fixed issue where TRADE_UI interactions interfered with quick create. +- Fixed issue with displays on protocollib falling through the chest +- Fixed issue with signs on .9 and previous .10 snapshots on early versions +- Implemented some performance improvements for paper servers +- Fixed all outstanding issues with Folia usage.(thanks to RootB33R/SleazLee for contributions) + +## Possible 6.2.0.11 Features + +Here's an outline for some features that may arrive in 6.2.0.11: + +- Additional compats/addons that have been piling up. + - see: https://github.com/QuickShop-Community/QuickShop-Hikari/issues/1756 +- gradle?(interested to see compilation time uplifts) +- Update documentation +- Update configuration comments +- Update configuration system? + - auto updating? + - Allows removal of the update code +- Remove waste spigot modules? + - Any versions of 1.20 that can be discarded due to low use? +- Bug fixing, of course +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... \ No newline at end of file diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md new file mode 100644 index 0000000000..b41c88662a --- /dev/null +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md @@ -0,0 +1,173 @@ +## Outline + +- Update documentation +- Update configuration comments +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... + +# 6.2.0.11 + +## Major Changes + +- Removed Spigot Platform Modules, and stopped loading QS if Spigot is detected. This will mean that unless the protocol changes that we use for display items, QS won't need updated for each version. +- Revamped Economy Code Completely + - New classes for all economy-related systems + - Any economy-related or benefits-related events are incompatible with previous versions. +- Added sign layout customizations per-type allowing you to change how lines are configured, an empty string('') will leave an empty line for that line of the sign. + +``` + #The layout of signs for shops. + layout: + + #The layout of BUYING shops. + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of FROZEN shops. + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of SELLING shops. + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +- Add wildcard support for item blacklist patterns(thanks to bennycallanan) + - Added support for wildcard patterns in the item blacklist configuration, allowing users to block entire categories of items with simple patterns. + + - Features + - Wildcard patterns like \*_AXE and \*_SPAWN_EGG now work in blacklist configuration + - Supports \* for any characters and ? for single character matching + - Case-insensitive pattern matching +- Overhauled GUI system(thanks to Yusakidev) + - Implemented gui.yml configuration file for customizing the GUI. + - Implemented better filtering for qs browse + - Implement GUI system to be more stable, and less error prone. + - Added gui.yml for fully configurable GUI layouts and text + - Browse menu: search, sort (price/name/stock), and filter (all/buying/selling/in-stock) + - Staff menu: search functionality for player/staff selection + - Grouped item pages for better shop browsing + - Refactored all menu pages to use configurable display/lore +- Added worldedit compat to QS internally as it's widely used. +- Revamped the taxation system to be more flexible and easier to configure. + - introduced a new progressive tax system that allows you to tax based on the balance of players.(suggested by YuanYuanOwO) + - introduced the ability to tax the player interacting with the shop, the owner, or both + - all tax-related configurations have been moved under the shop-tax section of the config. this may require reconfiguration of your tax settings. + - added a new ShopEnhancedTaxEvent, deprecated the old ShopTaxEvent. + - Added a new TaxManager, and TaxProvider interfaces, this allows for custom tax providers to be added by addons/third-party developers. + +## Addons/Compats Changes + +- Added UltimateClaims compat +- Added SimpleClaimSystem compat +- Added Quests by Pika addon +- Added BetonQuest addon +- Added Pl3xMap addon +- MatcherPlus Compat Improvements + - Added support for CrazyCrates + - Added support for ExcellentCrates + - Added support for SilkSpawners. +- WorldGuard Compat Improvements(Thanks to golovin12) + - Added clear permission handling: + - Region owners and members automatically have permission to create and trade in their own regions. + - Other players must have the appropriate WorldGuard flags enabled (quickshophikari-create, quickshophikari-trade) to interact with shops. + - If a shop is located outside any region, default QuickShop behavior applies (no extra restrictions) +- Added colored markers based on shop state for bluemap(thanks to YusakiDev) +- Updated dynmap/towny addons to use the new ShopTypeEnhancedEvent instead of ShopTypeEvent. +- Removed worldedit compat, it's now included in the main plugin. +- Added support for global flags to the worldguard compat. + +## Internals/Developer APIs + +- Removed several deprecated methods and classes. +- Revamped the interaction manager. It is now more flexible and allows external additions + - This involves two classes InteractionBehavior and InteractionType. + - InteractionType details the type of interaction such as: STANDING_LEFT_CLICK_SIGN, STANDING_LEFT_CLICK_SHOP + - InteractionBehavior outlines a behavior for an InteractionType such as CONTROL_PANEL and TRADE_UI +- Added UserLimitCalculationEvent, which allows for custom limits to be applied to users. + - This is useful for limiting the number of shops a user can have, or adding on to the existing limits provided by the ranks system without needing to implement a new RankLimiter. +- Added a new ShopLayoutProvider interface, and default implementation. + - This allows for custom layouts to be used for shops, allowing for more customization. + - This also allows for developers to override the default layout provider and create their own implementation. +- How to make your own? + - Implement the classes you would like to then register with the InteractionManager: + - ```java + InteractionManager manager = QuickShop.getInstance().getInteractionManager(); + + manager.interaction(new MyTradeInteraction()); + manager.behavior(new MyTradeBehavior()); + ``` +- Replaced some Apache Commons calls that could be easily replaced with built-in java methods, reduces some calls by ~ 1100ms/method call +- Deprecated the ShopType enum, and the ShopTypeEvent. These are replaced with the new IShopType interface and implementing classes. + - The new event is ShopTypeEnhancedEvent. + - This allows for third-party addons to add their own shop types, and simplifies code checks for translations. +- Updated config system to use Boosted-yaml + - this allows for auto-updating of config files without complex update scripts + - this also allows for the config system to not be minecraft-dependent. +- Replaced logical PaperLib calls with native PaperAPI calls. + +## Minor Changes + +- Bump Java version up to 21 +- Added shop.display-allow-enchants to enable/disable enchantments for display items on shops. +- Added workaround for packetevents not supporting custom enchants on itemstacks for virtual display items. +- Using locale translations for shop-type in mode toggle icon(thanks to ExyiN) +- Bumped Residence version for the compat(thanks to YuanYuanOwO) +- add world whitelist support(thanks to wling-art) +- added /qs database save command, which saves all currently dirty-marked shops to the database. +- Split up interactions _SHOPBLOCK into _SHOPBLOCK and _CONTAINER. + - _SHOPBLOCK relates to shops, where _CONTAINER relates to shop-valid containers that are not currently shops. +- Added inventory as an option for command panel, this is useful for adding a secondary option for players to open a shop's inventory. +- Moved crowdin arguments from system properties to config.yml + - crowdin-host + - use-crowdin-ota + +## Fixes + +- Fixes issue with item price restrictions(thanks to maxcom1) +- Fixes issue with 1.20.x protocol lib displays(thanks to YuanYuanOwO) +- Fixes issue when no item is in hand for itemdebug(thanks to YuanYuanOwO) +- Fixes issue with dominion addon(thanks to YuanYuanOwO) +- Add a simple check to avoid this. If it is not own shop, reject limit request directly.(Thanks to YuanYuanOwO) +- Fix NPE by not setting tax for price in TransactionBuilder(thanks to maxcom1) +- Fixes /quickshop suggestprice to differentiate between buy/sell shops. (Thanks to MidSpike) +- PacketEvents ClassNotFoundException with ProtocolLib(thanks to wling-art) +- Reallocate block state access to region thread for shop creation(thanks to r00tbeerman) +- resolve SLF4J StaticLoggerBinder loading error(thanks to wling-art) +- sign hijacking issue by validating sign facing direction(thanks to wling-art) +- Performance improvements for QuickShop disabling to prevent potential freezes. +- Fixed issue with 1.20.4 packetevents virtual displays not staying put. +- Fixes critical issue in GriefPrevention compatibility plugin. +- Fixes issue with shop owner not getting money when benefits active. +- Fixes for lands addon on folia, Use regionThread for Folia compatibility(thanks to YusakiDev) +- Fixes for TRADE_DIRECT on stacking shops +- Fixes issue for protocollib 5.4.0 with undocumented packet changes. +- Fixes issue where item stacks could be used on creation above the max stack size. +- Fixes issue with BukkitAudiences-related crashes on 1.21.11. +- Fix issue with shop deletion when getting too impatient. +- Fix the permission check issue when a shop owned by a non-owner is transferred to someone else. (thanks to YuanYuanOwO) +- Fix ui with supertool (thanks to YuanYuanOwO) +- Fix issue with logs generating outside debug mode. +- Fix issue with /qs find. +- Fix configuration loading timing. +- Fix configuration loading/creation warning message language. +- Fix command description language key mismatch(thanks to wling-art) +- Fix qs clean command on folia(thanks to wling-art) +- Fix per-player-shop-sign on folia(thanks to wling-art) +- Fix potential recursive deadlock in virtual display packet sending(thanks to wling-art) +- Fix configuration loading/creation warning message language. +- Fix issue with /qs browse and ShopItemOnly addon not behaving properly together on folia. +- Fix issue with PLAN using outdated APIs. +- Fix issue with /qs clean on folia.(thanks to wling-art) +- Fix issue with /qs cleanghost on folia(thanks to wling-art) +- More thread safety fixes for shops on folia.(thanks to wling-art) +- Fix owner payment calculations with benefits(thanks to wling-art) \ No newline at end of file diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md index 8172f9b410..dcc3edc67d 100644 --- a/i18n/sr-SP/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md @@ -20,20 +20,20 @@ the ControlComponent object with a custom one that will replace the original dur ### Introduction of the Revamped Packet System 1. **About**: - - A modular and scalable system for managing packets related to virtual display items in Minecraft. - - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. + - A modular and scalable system for managing packets related to virtual display items in Minecraft. + - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. 2. **Custom Packet Factories**: - - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. - - Packet types: - - **Spawn Packet**: Spawns a virtual item entity at a specific location. - - **Metadata Packet**: Updates the visual properties of virtual items. - - **Velocity Packet**: Adds motion/velocity to entities (currently optional). - - **Destroy Packet**: Removes the entity from the client view. + - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. + - Packet types: + - **Spawn Packet**: Spawns a virtual item entity at a specific location. + - **Metadata Packet**: Updates the visual properties of virtual items. + - **Velocity Packet**: Adds motion/velocity to entities (currently optional). + - **Destroy Packet**: Removes the entity from the client view. 3. **Error Handling and Logging**: - - Enhanced debug logs to trace packet-related issues. - - Detailed error messages for missing factories or unregistered listeners. + - Enhanced debug logs to trace packet-related issues. + - Detailed error messages for missing factories or unregistered listeners. #### Improvements: diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md index 7775308722..c6e0948d19 100644 --- a/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md index f420997a9c..38587e3784 100644 --- a/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md index 5ed8182c9a..259c55f342 100644 --- a/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md index 924a37ac49..7fd4596a6a 100644 --- a/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,6 +10,6 @@ This is a BungeeCord plugin, you need install it within your BungeeCord's plugin ## How does it work? -BungeeCord Bridge plugins will register a `quickshop:bungee` channel for fowarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. +BungeeCord Bridge plugins will register a `quickshop:bungee` channel for forwarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. All forwarding is indicated by QuickShop-Hikari on the Spigot server and ends when it is not needed. diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md index 27d68956a8..20fbaf7a0c 100644 --- a/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,5 +10,5 @@ This compatibility module added [Chest Protect](https://www.spigotmc.org/resourc ## How does it work? -This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident.\ +This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident. It also prevents players from creating shops on ChestProtect protected containers. diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md index 220e26d8bb..e1757e7be9 100644 --- a/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/dominion.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/dominion.md new file mode 100644 index 0000000000..e1195278a8 --- /dev/null +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/dominion.md @@ -0,0 +1,138 @@ +# Dominion + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and Dominion. + +It ensures that shop creation and trading respect Dominion’s land and territory protection system. + +--- + +## What Does It Do? + +Dominion allows players or groups to claim land and define territory-based permissions. + +Without compatibility: + +- Players could create shops inside territories they do not control. +- Visitors might trade inside protected dominions. +- Dominion permission rules might not apply to shop interactions. + +The Dominion compat module ensures that: + +- Shop creation respects territory ownership. +- Shop trading follows Dominion permission settings. +- Protected land remains secure from unauthorized shop usage. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a Dominion-controlled area. +- Whether the player has permission within that territory. +- Whether Dominion rules allow shop interaction. + +If the action is not permitted by Dominion settings, QuickShop blocks it. + +If the location is outside any Dominion territory, default QuickShop behavior applies. + +--- + +## Territory Owner Control + +With this module enabled: + +- Territory owners can create and manage shops inside their dominion. +- Trusted members follow territory-based permissions. +- Outsiders are restricted unless explicitly allowed. +- Shop actions respect Dominion’s land rules automatically. + +This prevents unauthorized shop placement inside protected territories. + +--- + +## Installation + +1. Install Dominion. +2. Install the QuickShop Dominion compat module. +3. Restart your server. + +The module activates automatically if Dominion is detected. + +No manual configuration linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside dominions +whitelist-mode: false + +# Allow territory owners to override shop permissions +allow-owner-override: true +``` + +If Dominion is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For servers using Dominion: + +- Restrict shop creation to territory owners or trusted members. +- Prevent shop creation in wilderness if desired. +- Allow dominion owners to manage shop permissions. +- Review Dominion permission settings to align with shop behavior. + +This ensures protected territories remain secure and organized. + +--- + +## Common Questions + +### Can players create shops in someone else's dominion? + +Only if Dominion permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You may allow or restrict shops outside dominions. + +### What happens if Dominion is removed? + +QuickShop returns to normal behavior and stops checking Dominion territories. + +--- + +## Summary + +The Dominion compat module: + +- Enforces territory-based permissions +- Prevents unauthorized shop creation +- Protects claimed land from misuse +- Integrates seamlessly with Dominion + +It is recommended for servers running Dominion. \ No newline at end of file diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md index 743d3ae666..2ac9b10488 100644 --- a/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md new file mode 100644 index 0000000000..07ba4ada66 --- /dev/null +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md @@ -0,0 +1,133 @@ +# FabledSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and FabledSkyblock. + +It ensures that shop creation and trading properly respect island boundaries and island permissions. + +--- + +## What Does It Do? + +On Skyblock servers, players build and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Players might trade in areas they should not. +- Island protection rules might not apply to shops. + +The FabledSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members behave correctly with shops. +- Island visitors are restricted appropriately. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a FabledSkyblock island. +- Whether the player has permission on that island. +- Whether island settings allow the action. + +If the action is not permitted by island rules, QuickShop will deny it. + +--- + +## Island Ownership Rules + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow island permission settings. +- Visitors can only trade if island permissions allow it. +- Outside of islands, default QuickShop behavior applies. + +--- + +## Installation + +1. Install FabledSkyblock. +2. Install the QuickShop FabledSkyblock compat module. +3. Restart your server. + +The module activates automatically if FabledSkyblock is detected. + +No manual linking is required. + +--- + +## Configuration + +If the module provides configuration options, they will appear in its `config.yml`. + +Typical options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If FabledSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most Skyblock servers: + +- Allow shop creation only inside islands. +- Prevent trading in the void or wilderness. +- Let island owners control shop permissions. +- Use island rank systems to manage shop access. + +This helps maintain economic balance between islands. + +--- + +## Common Questions + +### Can players create shops in the void? + +Only if your configuration allows it. +Most servers disable shop creation outside islands. + +### Does this affect island war or PvP modes? + +No. +The module only checks island ownership and permissions for shop interactions. + +### What happens if FabledSkyblock is removed? + +QuickShop returns to normal behavior. + +--- + +## Summary + +The FabledSkyblock compat module: + +- Protects island economies +- Enforces island permission rules +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is strongly recommended for any server running FabledSkyblock. \ No newline at end of file diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md index 81b13d2c6b..32614d3019 100644 --- a/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md @@ -2,17 +2,17 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -GreifPrevention compatibility module added compaitibility with GF. +GreifPrevention compatibility module added compatibility with GF. ## How does it work This module allow QuickShop-Hikari check if player have permission to create or use QuickShop in specific region. -And delete shops when claim removed, untrusted, unclimed, expired, resized or subclaim created. +And delete shops when claim removed, untrusted, unclaimed, expired, resized or subclaim created. ## Configuration diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md new file mode 100644 index 0000000000..e71b34d462 --- /dev/null +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md @@ -0,0 +1,139 @@ +# HuskTowns + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and HuskTowns. + +It ensures that shop creation and trading respect town and claim permissions defined by HuskTowns. + +--- + +## What Does It Do? + +HuskTowns allows players to create towns and claim land. + +Without compatibility: + +- Players could create shops inside towns they do not belong to. +- Visitors might trade inside protected towns. +- Town permission rules might not apply to shop interactions. + +The HuskTowns compat module ensures that: + +- Shop creation respects town ownership. +- Trading follows town permission settings. +- Town members and visitors are handled correctly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a HuskTowns claim. +- Whether the player is a town member, trusted player, or outsider. +- Whether the town's permission settings allow the action. + +If the action is not permitted by town rules, QuickShop blocks it. + +Outside of town claims, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Town Owner Control + +With this module enabled: + +- Town owners can create and manage shops inside their town. +- Town members follow town-based permission settings. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect town claim protection. + +This prevents unauthorized shop placement and trading inside protected towns. + +--- + +## Installation + +1. Install HuskTowns. +2. Install the QuickShop HuskTowns compat module. +3. Restart your server. + +The module activates automatically if HuskTowns is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside towns +whitelist-mode: false + +# Allow town owners to override shop permissions +allow-owner-override: true +``` + +If HuskTowns is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For town-based survival servers: + +- Restrict shop creation to town members. +- Allow trading only where town permissions permit. +- Prevent shop creation in wilderness if desired. +- Enable owner override for better administrative control. + +This helps maintain town-based economic balance. + +--- + +## Common Questions + +### Can players create shops in another town? + +Only if that town's permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You can allow or restrict shops outside towns. + +### What happens if HuskTowns is removed? + +QuickShop returns to normal behavior and stops checking town permissions. + +--- + +## Summary + +The HuskTowns compat module: + +- Enforces town-based land permissions +- Protects towns from unauthorized shop usage +- Integrates smoothly with HuskTowns +- Requires minimal setup + +It is recommended for any server running HuskTowns. \ No newline at end of file diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md new file mode 100644 index 0000000000..3fa2995eb0 --- /dev/null +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md @@ -0,0 +1,139 @@ +# IridiumSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and IridiumSkyblock. + +It ensures that shop creation and trading respect island boundaries and island permission settings defined by IridiumSkyblock. + +--- + +## What Does It Do? + +IridiumSkyblock allows players to create and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Visitors might trade inside protected islands. +- Island protection rules might not apply correctly to shops. + +The IridiumSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members and visitors are handled properly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside an IridiumSkyblock island. +- Whether the player is the island owner, member, or visitor. +- Whether island permissions allow shop interaction. + +If the action is not permitted, QuickShop blocks it. + +Outside of islands, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Island Owner Permissions + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow the island's permission configuration. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect island protection rules. + +This prevents unauthorized shop usage inside protected islands. + +--- + +## Installation + +1. Install IridiumSkyblock. +2. Install the QuickShop IridiumSkyblock compat module. +3. Restart your server. + +The module activates automatically if IridiumSkyblock is detected. + +No additional setup is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If IridiumSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most IridiumSkyblock servers: + +- Restrict shop creation to island owners. +- Allow island members to trade if trusted. +- Prevent shop creation in the void or wilderness. +- Enable owner override for better management. + +This helps maintain balanced island economies. + +--- + +## Common Questions + +### Can players create shops outside their island? + +Only if your configuration allows it. + +Most Skyblock servers restrict shops to island areas. + +### Do island ranks affect shop permissions? + +Yes, if your island permissions are configured to control interaction rights. + +QuickShop follows island rules. + +### What happens if IridiumSkyblock is removed? + +QuickShop returns to normal behavior and stops checking island permissions. + +--- + +## Summary + +The IridiumSkyblock compat module: + +- Protects island economies +- Enforces island-based permissions +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is recommended for any server running IridiumSkyblock. diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md new file mode 100644 index 0000000000..3b4726cb9d --- /dev/null +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md @@ -0,0 +1,151 @@ +# ItemMatcherPlus + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +The ItemMatcherPlus module improves how QuickShop matches custom and plugin-modified items. + +It allows QuickShop to properly recognize and stack items created by other plugins that normally would not match using standard Bukkit item comparisons. + +This module is especially useful for servers that use: + +- Custom items +- Modified metadata +- NBT-based systems +- Advanced crate rewards +- Custom brewing systems +- Custom fishing rewards + +--- + +## What Does It Do? + +By default, Minecraft item matching checks: + +- Material type +- Basic metadata + +However, many plugins modify items with: + +- Custom NBT data +- Hidden tags +- Custom lore formats +- Unique identifiers + +Without enhanced matching: + +- Items may not stack +- Shops may refuse valid items +- Transactions may fail +- Buying/selling may not behave correctly + +ItemMatcherPlus improves compatibility and matching accuracy. + +--- + +## Supported Plugins + +ItemMatcherPlus includes built-in support for: + +- AdvancedItems +- BreweryX +- CrazyCrates +- ExcellentCrates +- PyroFishing +- SilkSpawners + +If any of these plugins are installed, QuickShop will automatically use enhanced matching logic. + +No additional configuration is required. + +--- + +## How It Works + +When a player trades with a shop: + +1. QuickShop checks the item. +2. If ItemMatcherPlus is enabled, it performs advanced matching. +3. Plugin-specific metadata is validated. +4. The item is confirmed as a match (or rejected safely). + +This allows: + +- Proper stacking of custom items +- Correct shop transactions +- Accurate buy/sell detection +- Reduced false mismatches + +--- + +## Installation + +1. Download the ItemMatcherPlus module. +2. Place the JAR into your `plugins` folder. +3. Restart your server. + +If supported plugins are detected, compatibility activates automatically. + +--- + +## Configuration + +ItemMatcherPlus does not require configuration. + +It activates automatically when: + +- The module is installed +- A supported plugin is detected + +If a supported plugin is not installed, no extra logic runs. + +--- + +## Why You Should Use It + +You should install ItemMatcherPlus if your server uses: + +- Custom fishing plugins +- Custom brewing systems +- Crate plugins with modified items +- Custom spawners +- Any plugin that modifies NBT data + +Without it, shops may not properly recognize custom items. + +--- + +## Common Questions + +### Do I need this if I don't use custom item plugins? + +No. +If you only use vanilla items, this module is not necessary. + +### Does this affect performance? + +The module only activates enhanced matching when needed. + +Normal item matching remains fast and efficient. + +### Will it break existing shops? + +No. +It improves compatibility and matching accuracy without modifying existing shop data. + +--- + +## Summary + +ItemMatcherPlus: + +- Improves item matching accuracy +- Adds support for major custom item plugins +- Prevents stacking and trade issues +- Requires no configuration +- Activates automatically + +If you run a heavily customized economy server, this module is highly recommended. \ No newline at end of file diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md index ba87606698..d4ae7d129a 100644 --- a/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/lands.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/lands.md index 06296f5779..7671fcdfe0 100644 --- a/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/lands.md +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/lands.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/openinv.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/openinv.md index c51f628615..4807d57873 100644 --- a/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/openinv.md +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/openinv.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md new file mode 100644 index 0000000000..c2136320b0 --- /dev/null +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md @@ -0,0 +1,138 @@ +# SimpleClaimSystem + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and SimpleClaimSystem. + +It ensures that shop creation and trading respect land ownership and claim permissions defined by SimpleClaimSystem. + +--- + +## What Does It Do? + +SimpleClaimSystem allows players to claim land and protect it from unauthorized interaction. + +Without compatibility: + +- Players could create shops inside claims they do not own. +- Visitors might trade inside protected areas. +- Claim protection might not apply correctly to shops. + +The SimpleClaimSystem compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops within their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a SimpleClaimSystem claim. +- Whether the player has permission within that claim. +- Whether claim rules allow shop interaction. + +If the action is not permitted by the claim, QuickShop blocks it. + +If the location is outside any claim, default QuickShop behavior applies. + +--- + +## Claim Owner Control + +With this module enabled: + +- Claim owners can create and manage shops inside their claim. +- Trusted players follow claim-based permissions. +- Visitors are restricted unless explicitly allowed. +- Claim protection rules apply automatically to shop interactions. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install SimpleClaimSystem. +2. Install the QuickShop SimpleClaimSystem compat module. +3. Restart your server. + +The module activates automatically if SimpleClaimSystem is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If SimpleClaimSystem is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Enable owner override for easier management. + +This ensures players maintain control over their protected land. + +--- + +## Common Questions + +### Can players create shops in someone else's claim? + +Only if claim permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can allow shops outside claims or restrict them. + +### What happens if SimpleClaimSystem is removed? + +QuickShop will revert to default behavior and stop checking claim permissions. + +--- + +## Summary + +The SimpleClaimSystem compat module: + +- Enforces claim-based permissions +- Prevents unauthorized shop creation +- Protects land from unwanted trading +- Requires minimal setup + +It is recommended for servers running SimpleClaimSystem. \ No newline at end of file diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md index a84dbf057b..4dfa8ae97c 100644 --- a/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/towny.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/towny.md index 52ab4818f4..b26c19d335 100644 --- a/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/towny.md +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/towny.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -26,7 +26,7 @@ Town sub-command allow you switch a quickshop between regular shop and town shop For a nation shop, the shop owner will changed to nation fake player created by Towny, and use Nation's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from nation Towny account.\ +All purchases will deposit or withdraw money from nation Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Nation Shop. @@ -35,7 +35,7 @@ If Plot type restriction is enabled, only a specific Plot type can create a Nati For a town shop, the shop owner will changed to town fake player created by Towny, and use Town's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from town Towny account.\ +All purchases will deposit or withdraw money from town Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Town Shop. @@ -88,7 +88,7 @@ bank-mode: ## Permission Override -By adjust configuration, you're allow mayor or king automaticlly grant administrator permission on all shops in their management range. +By adjust configuration, you're allow mayor or king automatically grant administrator permission on all shops in their management range. ```yaml #Should allow Mayor grant the shop administrator permission on they town. @@ -168,7 +168,7 @@ This causes Towny and QuickShop Hikari to use accounts with the same name but di You can adjust the option in configuration to enable workaround. -NOTE: It will force turned on if detected EssentialsX installed on your server.\ +NOTE: It will force turned on if detected EssentialsX installed on your server. At present, we do not provide a method for disable it. ```yaml diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md new file mode 100644 index 0000000000..0189958495 --- /dev/null +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md @@ -0,0 +1,138 @@ +# UltimateClaims + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and UltimateClaims. + +It ensures that shop creation and trading respect land claim permissions managed by UltimateClaims. + +--- + +## What Does It Do? + +On servers using land-claim plugins, players protect areas of the world from unauthorized interaction. + +Without compatibility: + +- Players may create shops inside claims they do not own. +- Visitors might trade in areas where they should not. +- Claim protection rules might not apply correctly to shops. + +The UltimateClaims compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops inside their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a claim. +- Whether the player has permission in that claim. +- Whether claim rules allow shop interaction. + +If the action violates claim settings, QuickShop blocks it. + +Outside of claims, normal QuickShop behavior applies. + +--- + +## Claim Owner Permissions + +With this module enabled: + +- Claim owners can create and manage shops within their claim. +- Trusted players follow claim permission settings. +- Visitors are restricted based on claim configuration. +- Shop actions outside of claims behave normally. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install UltimateClaims. +2. Install the QuickShop UltimateClaims compat module. +3. Restart your server. + +If UltimateClaims is detected on startup, compatibility activates automatically. + +No additional linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Common options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If UltimateClaims is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Keep owner override enabled for better control. + +This ensures players maintain full control over their protected land. + +--- + +## Common Questions + +### Can players create shops inside someone else's claim? + +Only if the claim permissions allow it. + +Otherwise, QuickShop will block the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can choose to restrict shops to claimed land only. + +### What happens if UltimateClaims is removed? + +QuickShop returns to normal behavior without claim checks. + +--- + +## Summary + +The UltimateClaims compat module: + +- Protects claimed land from unauthorized shop usage +- Enforces claim-based permissions +- Integrates smoothly with land-claim servers +- Requires minimal setup + +It is recommended for any server running UltimateClaims. \ No newline at end of file diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md index 87a71a205c..6437754503 100644 --- a/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md @@ -2,8 +2,10 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. Find out more [here](../modules/shops/worldedit.md). + +Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. \ No newline at end of file diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/development/01-getting-start.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/development/01-getting-start.md index 92b773451e..0e78e52367 100644 --- a/i18n/sr-SP/docusaurus-plugin-content-docs/current/development/01-getting-start.md +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/development/01-getting-start.md @@ -6,8 +6,8 @@ This series of articles will help you build extensions for QuickShop-Hikari or i ## License -QuickShop-Hikari is open source using the [GPLv3](https://www.gnu.org/licenses/quick-guide-gplv3.en.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari).\ -You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the GPLv3 agreement. +QuickShop-Hikari is open source using the [AGPLv3](https://www.gnu.org/licenses/agpl-3.0.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari). +You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the AGPLv3 agreement. ## 🚧Don't trust Javadoc too much @@ -48,7 +48,7 @@ QuickShop-Hikari divides operation sources into three types: - Server Main Thread - Async Thread (any other threads but not server main thread) -- Hybird +- Hybrid If you access the API through the wrong thread, QuickShop-Hikari will force a runtime error to be thrown. @@ -58,4 +58,4 @@ For APIs that may trigger network IO or long-time disk IO, you are required not You can see [Util.ensureThread()](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/3d1d271e1106ea1c83cc6068f8232ab7c7860918/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/util/Util.java#L351) and find out the requirements of the different APIs by looking up their use. APIs that do not use Util.ensureThread() are allowed to be called from any thread by default. -You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. +You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. \ No newline at end of file diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md index aa2404c594..7828d414ad 100644 --- a/i18n/sr-SP/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md @@ -10,7 +10,7 @@ ShopManager manager = api.getShopManager(); ## Getting a shop -Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates.\ +Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates. QuickShop-Hikari's store is only bound to one half of "Large Chest", so to get the store, you need to query both the cube itself and its associated cube. The good thing is that there is an API in the plugin that allows you to handle this situation very easily. @@ -71,7 +71,7 @@ manager.deleteShop(shop) // Permanently delete this store, both memory and datab ## Identify a store -Please note that store locations are technically variable and you should not use coordinates to identify a store.\ +Please note that store locations are technically variable and you should not use coordinates to identify a store. Also RuntimeRandomUniqueId should not be used to identify the store, as the name suggests, the value changes every time the server restarts, it should only be used to handle scenarios where the player interacts with the server. ```java diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md index 543f1851da..4f839ed652 100644 --- a/i18n/sr-SP/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md @@ -1,6 +1,6 @@ # 0x05 Per shop permission -QuickShop-Hikari has a per shop permission management system.\ +QuickShop-Hikari has a per shop permission management system. Therefore, for a normal permission node check is not enough, you need to attach an additional check. ## Check with shop diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/development/06-protocol-system.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/development/06-protocol-system.md index 5d37a15536..0380b789f9 100644 --- a/i18n/sr-SP/docusaurus-plugin-content-docs/current/development/06-protocol-system.md +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/development/06-protocol-system.md @@ -15,30 +15,30 @@ This documentation will guide developers through the components, implementation - **Purpose**: Manages packet handling and initialization logic. - **Interface**: `PacketHandler` - **Key Methods**: - - `Map> factories()` - - Retrieves a map of supported `PacketFactory` instances keyed by game versions. - - `void initialize()` - - Initializes the packet handler. - - `Optional> factory(String version)` - - Retrieves a `PacketFactory` for a specific game version. + - `Map> factories()` + - Retrieves a map of supported `PacketFactory` instances keyed by game versions. + - `void initialize()` + - Initializes the packet handler. + - `Optional> factory(String version)` + - Retrieves a `PacketFactory` for a specific game version. ### 2. **PacketFactory** - **Purpose**: Creates and sends specific packet types. - **Interface**: `PacketFactory` - **Supported Packets**: - - **Spawn Packet**: - - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. - - Example Use: Representing shop items visually. - - **Metadata Packet**: - - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. - - Example Use: Updating item display name or properties. - - **Velocity Packet**: - - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. - - Example Use: Custom animations for virtual items. - - **Destroy Packet**: - - Removes the entity from the client view. Created using `createDestroyPacket()`. - - Example Use: Unloading or removing a virtual display item. + - **Spawn Packet**: + - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. + - Example Use: Representing shop items visually. + - **Metadata Packet**: + - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. + - Example Use: Updating item display name or properties. + - **Velocity Packet**: + - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. + - Example Use: Custom animations for virtual items. + - **Destroy Packet**: + - Removes the entity from the client view. Created using `createDestroyPacket()`. + - Example Use: Unloading or removing a virtual display item. Developers implementing custom `PacketFactory` should ensure these packets are correctly handled and optimized for performance. @@ -46,24 +46,24 @@ Developers implementing custom `PacketFactory` should ensure these packets are c - **Purpose**: Oversees the lifecycle of virtual display items and integrates with packet handlers. - **Key Features**: - - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). - - Manages virtual display items mapped to chunks. - - Provides thread-safe operations for adding and removing display items. + - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). + - Manages virtual display items mapped to chunks. + - Provides thread-safe operations for adding and removing display items. ### 4. **VirtualDisplayItem** - **Purpose**: Represents a virtual item displayed to players. - **Key Features**: - - Generates and caches packets for spawning, metadata, velocity, and destruction. - - Manages packet senders for each player. - - Handles spawn and removal operations dynamically. + - Generates and caches packets for spawning, metadata, velocity, and destruction. + - Manages packet senders for each player. + - Handles spawn and removal operations dynamically. ### 5. **ProtocolLibHandler and PacketEventsHandler** - **Purpose**: Provide implementations of `PacketHandler` using ProtocolLib and PacketEvents, respectively. - **Differences**: - - `ProtocolLibHandler` leverages ProtocolLib API. - - `PacketEventsHandler` uses the PacketEvents library. + - `ProtocolLibHandler` leverages ProtocolLib API. + - `PacketEventsHandler` uses the PacketEvents library. --- @@ -140,11 +140,11 @@ public class CustomPacketFactory implements PacketFactory { Packet factories are provided for specific game versions through two primary implementations: - **ProtocolLib**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` - **PacketEvents**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` --- diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md new file mode 100644 index 0000000000..aebc035f87 --- /dev/null +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md @@ -0,0 +1,297 @@ +# Interaction System (Developer Guide) + +The Interaction System allows developers to fully customize how players interact with shops. + +As of 6.2.0.11, the system has been redesigned to be: + +- Modular +- Extensible +- Thread-safe +- Fully customizable by third-party addons + +This guide will walk you through: + +1. What the Interaction System is +2. Getting the `InteractionManager` +3. Understanding `InteractionType` +4. Understanding `InteractionBehavior` +5. Registering custom interactions +6. Best practices + +--- + +# Overview + +The Interaction System is composed of three main components: + +| Component | Purpose | +| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| `InteractionType` | Describes **what kind of click happened** (standing, sneaking, left-click, sign, shopblock, etc.) | +| `InteractionBehavior` | Describes **what action should happen** when that type is triggered | +| `InteractionManager` | Central registry that manages interactions and behaviors | + +This separation allows developers to: + +- Add new click types +- Add new behaviors +- Override existing ones +- Extend QuickShop without modifying core code + +--- + +# Getting the InteractionManager + +To begin registering custom interactions, you must retrieve the `InteractionManager` instance. + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +If you are working directly with the plugin instance: + +```java +InteractionManager manager = QuickShop.getInstance().getInteractionManager(); +``` + +Once obtained, you can: + +- Register new interaction types +- Register new behaviors +- Override existing behaviors + +--- + +# Understanding InteractionType + +`InteractionType` represents **how** a player interacted with a shop. + +Examples include: + +- `STANDING_LEFT_CLICK_SIGN` +- `STANDING_RIGHT_CLICK_SHOPBLOCK` +- `SNEAKING_LEFT_CLICK_CONTAINER` +- etc. + +Each `InteractionType` defines: + +- Player stance (standing/sneaking) +- Click type (left/right) +- Target (sign/shopblock/container) + +InteractionTypes do NOT define behavior — they only define the trigger. + +--- + +# Understanding InteractionBehavior + +`InteractionBehavior` defines **what happens** when an interaction is triggered. + +Examples of built-in behaviors: + +- `TRADE_INTERACTION` +- `TRADE_UI` +- `CONTROL_PANEL` +- `CONTROL_PANEL_UI` +- `NONE` + +A behavior: + +- Executes logic +- May open GUIs +- May send chat panels +- May directly trade items +- Can cancel or modify flow + +This separation makes it easy to reuse behaviors across multiple interaction types. + +--- + +# Registering Custom Interactions + +There are two things you can register: + +- A custom `InteractionType` +- A custom `InteractionBehavior` + +--- + +## Creating a Custom InteractionBehavior + +Create a class implementing `InteractionBehavior`. + +Example: + +```java +public class MyTradeBehavior implements InteractionBehavior { + + @Override + public String getKey() { + return "MY_CUSTOM_TRADE"; + } + + @Override + public void execute(InteractionClick click) { + Player player = click.getPlayer(); + Shop shop = click.getShop(); + + player.sendMessage("You triggered my custom interaction!"); + + // Add your custom logic here + } +} +``` + +Then register it: + +```java +InteractionManager manager = api.getInteractionManager(); +manager.behavior(new MyTradeBehavior()); +``` + +Now your behavior is available for use. + +--- + +## Creating a Custom InteractionType + +You may also register custom interaction types if you want to introduce new trigger definitions. + +Example: + +```java +public class MyCustomInteraction implements InteractionType { + + @Override + public String getKey() { + return "STANDING_DOUBLE_CLICK_SIGN"; + } + + @Override + public boolean matches(InteractionClick click) { + // Define custom logic to detect this interaction + return click.isStanding() + && click.isSign() + && click.isDoubleClick(); + } +} +``` + +Register it: + +```java +manager.interaction(new MyCustomInteraction()); +``` + +--- + +# Binding Types to Behaviors + +The InteractionManager internally maps interaction types to behaviors based on configuration and registration order. + +Once your behavior is registered: + +- It can be referenced in `interaction.yml` +- Or attached programmatically + +Example interaction.yml usage: + +```yaml +STANDING_LEFT_CLICK_SIGN: MY_CUSTOM_TRADE +``` + +--- + +# The InteractionClick Object + +When your behavior executes, you receive an `InteractionClick` object. + +It provides: + +- `getPlayer()` +- `getShop()` +- `getLocation()` +- `isSneaking()` +- `isSign()` +- `isShopBlock()` +- etc. + +This gives full context for safe execution. + +--- + +# Advanced: Overriding Built-in Behavior + +If you register a behavior using the same key as an existing one, your behavior can override the default. + +⚠️ Be careful when doing this — you are replacing core functionality. + +--- + +# Best Practices + +### Always Use Unique Keys + +Avoid naming collisions: + +``` +MYPLUGIN_CUSTOM_BEHAVIOR +``` + +### Keep Behavior Lightweight + +Do not block the main thread with: + +- Heavy database calls +- File IO +- Network calls + +Use async tasks if needed. + +### Respect Permissions + +Always validate: + +```java +if (!player.hasPermission("myplugin.use")) { + return; +} +``` + +### Avoid Hard Overrides Unless Necessary + +Instead of replacing built-in behaviors, consider extending them. + +--- + +# Example: Full Minimal Implementation + +```java +public class ExampleAddon { + + public void register(QuickShopAPI api) { + + InteractionManager manager = api.getInteractionManager(); + + manager.behavior(new MyTradeBehavior()); + manager.interaction(new MyCustomInteraction()); + } +} +``` + +--- + +# Conclusion + +The Interaction System is designed to allow: + +- Full extensibility +- Clean separation of triggers and actions +- Easy integration for third-party developers + +By retrieving the `InteractionManager`: + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +You gain full control over how shops respond to player actions. \ No newline at end of file diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/development/08-tax-manager.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/development/08-tax-manager.md new file mode 100644 index 0000000000..72a56f9e88 --- /dev/null +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/development/08-tax-manager.md @@ -0,0 +1,266 @@ +# Tax System (Developer Guide) + +The QuickShop tax system allows server owners and developers to define how transaction taxes are calculated, distributed, and extended. + +As of 6.2.0.11, the tax system has been fully rewritten to provide: + +- A flexible TaxManager +- Pluggable TaxProvider support +- Progressive taxation +- Tax targeting (shop owner, interacting player, or both) +- Custom extension capability for third-party addons + +This guide explains how to work with the tax system programmatically. + +--- + +# Overview + +The tax system is composed of three core components: + +TaxManager +Responsible for coordinating tax calculation and execution. + +TaxProvider +Defines how tax values are calculated. + +TaxRates +Represents calculated tax results for a transaction. + +The system is designed to allow custom providers to be registered and used without modifying core logic. + +--- + +# Getting the TaxManager + +To work with the tax system, retrieve the TaxManager from the ShopManager. + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +Once obtained, you can: + +- Access current tax configuration +- Register custom tax providers +- Calculate tax values +- Hook into tax events + +--- + +# How the Tax System Works + +During a shop transaction: + +1. A base price is determined. +2. The TaxManager selects the active TaxProvider. +3. The TaxProvider calculates applicable tax. +4. A TaxRates object is produced. +5. The system applies the tax to: + + - Shop owner + - Interacting player + - Or both (depending on configuration) + +This architecture allows tax behavior to be modified without altering transaction logic. + +--- + +# TaxProvider + +A TaxProvider defines how tax values are calculated. + +You may create your own provider to implement: + +- Progressive tax brackets +- Flat percentage tax +- Conditional tax rules +- Region-based tax +- Rank-based tax +- Time-based tax + +Example minimal provider: + +```java +public class MyCustomTaxProvider implements TaxProvider { + + @Override + public TaxRates calculateTax(TaxContext context) { + + double basePrice = context.getPrice(); + + double taxAmount = basePrice * 0.05; // 5% flat tax + + return new TaxRates() + .ownerTax(taxAmount) + .buyerTax(0.0); + } +} +``` + +Then register it: + +```java +taxManager.provider(new MyCustomTaxProvider()); +``` + +Once registered, your provider will be used for tax calculations. + +--- + +# TaxRates + +TaxRates represents the result of a tax calculation. + +It typically contains: + +- Owner tax amount +- Buyer tax amount +- Total tax impact +- Metadata (if applicable) + +The transaction system will read from TaxRates and apply deductions accordingly. + +--- + +# Progressive Taxation + +The built-in system supports progressive tax structures. + +This allows server administrators to tax based on: + +- Player balance +- Shop owner balance +- Configured tax brackets + +Example configuration concept: + +- 0–10,000 balance → 1% tax +- 10,000–100,000 → 2% tax +- 100,000+ → 3% tax + +Developers can extend or override this logic inside a custom TaxProvider. + +--- + +# Targeting Tax + +The new tax system allows taxes to be applied to: + +- Shop owner +- Interacting player +- Both + +This is controlled via configuration, but custom providers can override distribution logic by adjusting TaxRates output. + +Example: + +```java +return new TaxRates() + .ownerTax(basePrice * 0.02) + .buyerTax(basePrice * 0.01); +``` + +--- + +# Registering a Custom TaxProvider + +To replace or extend tax logic: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); + +taxManager.provider(new MyCustomTaxProvider()); +``` + +You may register only one primary provider at a time. If multiple providers are needed, implement internal delegation within your custom provider. + +--- + +# Tax Events + +The tax system integrates with the event system. + +The modern event used is: + +ShopEnhancedTaxEvent + +This replaces legacy tax events and provides improved context, including: + +- Transaction builder reference +- TaxRates object +- Modification capability before final execution + +You can listen for the event and modify tax behavior dynamically: + +```java +@EventHandler +public void onTax(ShopEnhancedTaxEvent event) { + + TaxRates rates = event.getTaxRates(); + + // Example: Give VIP players reduced owner tax + if (event.getOwner().hasPermission("vip.tax.discount")) { + rates.ownerTax(rates.getOwnerTax() * 0.5); + } +} +``` + +--- + +# Best Practices + +Always keep tax calculations lightweight. + +Avoid: + +- Heavy database queries inside calculateTax +- Blocking network calls +- Long-running computations + +If complex logic is required, pre-cache required data outside the tax execution path. + +Ensure negative tax values are not returned unless intentional. + +Always validate final amounts before applying modifications. + +Respect configuration hierarchy unless intentionally overriding it. + +--- + +# Example Full Implementation + +```java +public class ExampleTaxAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + TaxManager taxManager = manager.taxManager(); + + taxManager.provider(new MyCustomTaxProvider()); + } +} +``` + +--- + +# Conclusion + +The new tax system is designed for: + +- Flexibility +- Extensibility +- Clean separation of concerns +- Future expansion + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +You gain full control over how QuickShop calculates and applies tax during transactions. \ No newline at end of file diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/development/09-layout-provider.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/development/09-layout-provider.md new file mode 100644 index 0000000000..55e3cd3e91 --- /dev/null +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/development/09-layout-provider.md @@ -0,0 +1,275 @@ +# Shop Layout Provider (Developer Guide) + +The Shop Layout Provider system allows developers to customize how shop signs are structured and rendered. + +As of 6.2.0.11, shop layouts are no longer hardcoded. Instead, they are controlled through the `IShopLayoutProvider` interface, which allows: + +- Custom sign line ordering +- Per-shop-type layouts (BUYING, SELLING, FROZEN, or custom types) +- Dynamic layout resolution +- Complete replacement of the default layout system + +This guide explains how to access, override, and implement a custom layout provider. + +--- + +# Overview + +The layout provider controls how shop sign lines are arranged. + +Instead of hardcoding: + +Line 1 → Header +Line 2 → Trading info +Line 3 → Item +Line 4 → Price + +The system now allows full customization through: + +- Config-based layout definitions +- Custom `IShopLayoutProvider` implementations +- Runtime overrides + +The default implementation is `SimpleShopLayoutProvider`. + +--- + +# Accessing the Layout Provider + +To retrieve the current layout provider: + +```java +ShopManager manager = api.getShopManager(); +IShopLayoutProvider provider = manager.shopLayoutProvider(); +``` + +To replace the layout provider with a custom one: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Once replaced, your implementation will control how shop layouts are generated. + +--- + +# Understanding IShopLayoutProvider + +`IShopLayoutProvider` defines how layout data is retrieved and resolved. + +It is responsible for: + +- Providing layout configuration per shop type +- Determining which layout to use +- Supplying formatted line keys +- Allowing future extensibility + +The default implementation reads layout definitions from configuration and applies them based on shop type. + +--- + +# Default Layout Example + +The default configuration-based layout looks like this: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +Each line maps to a layout component key. + +An empty string (`""`) leaves that line blank. + +The layout provider resolves these keys into actual sign content. + +--- + +# Creating a Custom Layout Provider + +To override the default behavior, implement `IShopLayoutProvider`. + +Example minimal implementation: + +```java +public class MyCustomLayoutProvider implements IShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + + ShopLayout layout = new ShopLayout(); + + layout.setLine(1, "Custom Header"); + layout.setLine(2, "Owner: " + shop.getOwnerName()); + layout.setLine(3, shop.getItem().getType().name()); + layout.setLine(4, "$" + shop.getPrice()); + + return layout; + } +} +``` + +Then register it: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Your layout will now control all shop sign formatting. + +--- + +# Per-Type Layout Control + +Because the system no longer depends on the legacy ShopType enum, layouts can support: + +- Built-in types (BUYING, SELLING, FROZEN) +- Custom shop types +- Addon-defined shop types + +Your provider can determine layout logic dynamically: + +```java +@Override +public ShopLayout provideLayout(Shop shop) { + + if (shop.getShopType().key().equals("FROZEN")) { + return frozenLayout(shop); + } + + return defaultLayout(shop); +} +``` + +This allows conditional formatting, localization adjustments, or special event styling. + +--- + +# Advanced Customization + +A custom layout provider can: + +- Pull data from external plugins +- Inject dynamic placeholders +- Modify layout per player +- Apply formatting logic +- Override color schemes +- Apply region-based formatting +- Implement animated sign systems + +Because the layout provider is resolved at runtime, you can compute layouts dynamically instead of reading static config. + +--- + +# Replacing vs Extending the Default Provider + +You have two options: + +Replace entirely: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Or extend the default implementation: + +```java +public class ExtendedLayoutProvider extends SimpleShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + ShopLayout base = super.provideLayout(shop); + + base.setLine(1, "[Extended] " + base.getLine(1)); + + return base; + } +} +``` + +Extending is safer if you only want to modify small portions. + +--- + +# Best Practices + +Keep layout generation lightweight. + +Avoid: + +- Heavy database queries +- Blocking IO +- Complex network calls + +Layout generation runs during shop updates and sign refresh events. + +Always handle null values safely. + +Ensure layout line count does not exceed sign limits. + +Avoid hardcoding shop type names unless necessary. + +If your layout supports custom shop types, validate their keys properly. + +--- + +# Example Full Registration + +```java +public class LayoutAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + + manager.shopLayoutProvider(new MyCustomLayoutProvider()); + } +} +``` + +--- + +# Conclusion + +The Shop Layout Provider system allows complete control over shop sign structure. + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +``` + +And setting: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +You can redefine how every shop is displayed on the server. + +This system was designed to support: + +- Extensibility +- Custom shop types +- Localization +- Dynamic formatting +- Future expansion \ No newline at end of file diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/faq/compare-reremake.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/faq/compare-reremake.md index aaa1a9e507..6b39f02520 100644 --- a/i18n/sr-SP/docusaurus-plugin-content-docs/current/faq/compare-reremake.md +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/faq/compare-reremake.md @@ -64,7 +64,7 @@ If you are a Reremake user, you may be confused about the differences between Hi ## Which one should I use? Well, it depends on what your needs are.\ -If you have an old server (<1.20) instance, Reremake is your only choice.\ +If you have an old server ({'<'}1.20) instance, Reremake is your only choice.\ ~~If you are in China which has GFW interfere, you also should consider Reremake because it doesn't need to load libraries from Global Internet.~~ Solved in 6.0.0.0. If none of these applies, give Hikari a try! diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md index 551f579e7c..172be3a69b 100644 --- a/i18n/sr-SP/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md @@ -1,8 +1,8 @@ # Where Addons/Compacts is -Addons and Compatilibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. +Addons and Compatibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. -- Open Modrinth versions page, locate the version your're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) +- Open Modrinth versions page, locate the version you're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) - Frantically slide your mouse wheel down until the lowest end of the page. - You get it! diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/internal/database-schema.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/internal/database-schema.md index fea685e4fc..45e04adb56 100644 --- a/i18n/sr-SP/docusaurus-plugin-content-docs/current/internal/database-schema.md +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/internal/database-schema.md @@ -4,17 +4,17 @@ This chapter will explain the implementation details of QuickShop Hikari's datab ## Tables -This section explains the database tables created by QuickShop-Hikari.\ -Unless otherwise specified, the initial `qs_` in table name is the table prefix.\ +This section explains the database tables created by QuickShop-Hikari. +Unless otherwise specified, the initial `qs_` in table name is the table prefix. For the latest code definition for each table, see: [DataTables.java](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/hikari/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/database/DataTables.java) ### `data` -This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information.\ -No matter what, a data record should not be modified after it is created, until it got deleted.\ +This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information. +No matter what, a data record should not be modified after it is created, until it got deleted. Any new changes to the shop should create a new copy, apply the changes to the copy, and insert it as a new record. -Basiclly, Copy-on-write. +Basically, Copy-on-write. A data record only be deleted from the database when no any table references their `data_id`. @@ -29,7 +29,7 @@ A data record only be deleted from the database when no any table references the | unlimited | BIT NOT NULL | 0 | Indicates whether this store is an unlimited store, 0=Limited, 1=Unlimited | | hologram | BIT NOT NULL | 0 | Indicates the suspension status of this store's display item, 0=Follow global settings, 1=Disabled | | tax_account | VARCHAR(36) | NULL | The uuid for tax account, If it is not NULL, tax will be paid to the specified account | -| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serilized to JSON string | +| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serialized to JSON string | | extra | LONGTEXT | Empty Yaml | Used to store experimental settings of QuickShop Hikari or persistent data of other plugins | | inv_wrapper | VARCHAR(255) NOT NULL | N/A | Unique identifier for InventoryWrapper for this shop data entry | | inv_symbol_link | TEXT NOT NULL | N/A | Unique Inventory symbol used to pass to InventoryWrapper, for locating inventory | @@ -38,7 +38,7 @@ A data record only be deleted from the database when no any table references the ### `shops` -This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes.\ +This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes. Multiple `shop_id` can correspond to the same `data_id`. | Column Name | DataType | Default | Description | diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/modules/cmd-alias.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/modules/cmd-alias.md index 53f1577685..e6ed381c0d 100644 --- a/i18n/sr-SP/docusaurus-plugin-content-docs/current/modules/cmd-alias.md +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/modules/cmd-alias.md @@ -23,7 +23,7 @@ custom-commands: - cshop ``` -Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect.\ +Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect. The effect should be like this: ![command-alias](./img/command-alias.png) diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/modules/datasource.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/modules/datasource.md index 6fc1bd8931..3fd3a8bdee 100644 --- a/i18n/sr-SP/docusaurus-plugin-content-docs/current/modules/datasource.md +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/modules/datasource.md @@ -48,7 +48,7 @@ Execute the `/quickshop export` command in console, quickshop will export a zip ![exported data](img/database-export.png) -Stop your database, switch the datasource, and start the server.\ +Stop your database, switch the datasource, and start the server. You may noticed all shops are gone, because new datasources had no data inside, we will restore them from export. Rename that exported ZIP file to `recovery.zip`, execute `/quickshop recovery` and restart your server, all shops should back. diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/modules/itemmatcher.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/modules/itemmatcher.md index 56be243019..922907be27 100644 --- a/i18n/sr-SP/docusaurus-plugin-content-docs/current/modules/itemmatcher.md +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/modules/itemmatcher.md @@ -4,7 +4,7 @@ ItemMatcher is a utility used by QuickShop-Hikari to compare the items, it is th :::caution -If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse.\ +If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse. **TL;DR: Keep default unless you know what you're doing.** ::: @@ -26,10 +26,10 @@ matcher: work-type: 1 ``` -By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility.\ +By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility. But still, you can toggle to QuickShop Item Matcher if you need to customize the comparing or running QuickShop on the server jar which have bug affect the Bukkit comparing system. -## Customize the metadata compareing +## Customize the metadata comparing Customize only works under QuickShop Item Matcher. diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md index fc2af69d2b..d04e8f2783 100644 --- a/i18n/sr-SP/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md @@ -4,7 +4,7 @@ ItemStack Loader is a workaround for loading the Bukkit ItemStack. :::caution -Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossble. +Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossible. ::: diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/modules/localization.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/modules/localization.md index e9121e1a36..d47589ab9a 100644 --- a/i18n/sr-SP/docusaurus-plugin-content-docs/current/modules/localization.md +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/modules/localization.md @@ -10,7 +10,7 @@ To help translate QuickShop-Hikari, please visit our [Crowdin Homepage](https:// ## Crowdin OTA -QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will overrided when you reload QuickShop-Hikari or restart your server. +QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will override when you reload QuickShop-Hikari or restart your server. Your installation will keep translations up-to-date without any touch. @@ -110,6 +110,16 @@ To disable the CrowdinOTA, please add it in the startup flag: -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager.enableCrowdinOTA=false ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +use-crowdin-ota: false +``` + ### Self-Hosted OTA Server If you self-hosted our translation server by using [CrowdinCopyDeploy](https://github.com/Ghost-chu/CrowdinCopyDeploy) tool, you're able to change the OTA server to yourself server. @@ -118,4 +128,12 @@ If you self-hosted our translation server by using [CrowdinCopyDeploy](https://g -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager= ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml +Use + +```yaml +crowdin-host: +``` \ No newline at end of file diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/modules/shops/benefit.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/modules/shops/benefit.md index 4d7a9c8f42..c59d92e6d1 100644 --- a/i18n/sr-SP/docusaurus-plugin-content-docs/current/modules/shops/benefit.md +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/modules/shops/benefit.md @@ -37,3 +37,13 @@ By default, for security, QuickShop-Hikari disallow add offline players into sho ```bash -Dcom.ghostchu.quickshop.command.subcommand.SubCommand_Benefit.allowOffline=true ``` + +### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +shop.allow-offline-benefit: true +``` \ No newline at end of file diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/modules/shops/control-panel b/i18n/sr-SP/docusaurus-plugin-content-docs/current/modules/shops/control-panel new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/modules/shops/control-panel @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/modules/shops/history.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/modules/shops/history.md index fa891adeab..195b64a042 100644 --- a/i18n/sr-SP/docusaurus-plugin-content-docs/current/modules/shops/history.md +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/modules/shops/history.md @@ -24,7 +24,7 @@ The History GUI displays the details of each recorded transaction and other usef ### Transaction details -When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed.\ +When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed. If you are checking the history of more than one store, the player head will be replaced with an item from the corresponding store. ![history-gui](./img/history-gui.png) diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md new file mode 100644 index 0000000000..c5ed3b3fe4 --- /dev/null +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md @@ -0,0 +1,90 @@ +# Shop Types + +QuickShop supports multiple shop types, allowing shops to behave differently depending on their mode. + +The built-in shop types are: + +- Selling +- Buying +- Frozen + +Each type changes how the shop interacts with players. + +--- + +## Selling Shop + +A Selling shop allows players to: + +- Buy items from the shop owner +- Pay money to receive items + +This is the most common shop type. + +--- + +## Buying Shop + +A Buying shop allows players to: + +- Sell items to the shop owner +- Receive money in exchange + +This is commonly used for: + +- Resource collection +- Server buy-back shops +- Automated material sinks + +--- + +## Frozen Shop + +A Frozen shop temporarily disables trading. + +While frozen: + +- No buying is allowed +- No selling is allowed +- The shop remains intact +- Staff or admins can manage it + +This is useful for: + +- Temporary suspensions +- Investigation +- Event locking +- Maintenance + +--- + +## Switching Shop Types + +Shop types can be changed through: + +- Control panel +- GUI control panel +- Admin commands + +Frozen mode is also available via: + +/qs freeze + +--- + +## Custom Shop Types + +As of 6.2.x, the system supports extensible shop types internally. + +While server owners use the built-in types, the system now allows future expansion through addons. + +--- + +## Summary + +Shop types allow you to: + +- Control how money flows +- Enable buy-back mechanics +- Temporarily disable shops +- Build advanced economic systems \ No newline at end of file diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md new file mode 100644 index 0000000000..18e0a47407 --- /dev/null +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md @@ -0,0 +1,217 @@ +# Sign Layout + +QuickShop allows you to fully customize how shop signs are structured. + +You can change: + +- What appears on each line +- The order of information +- Layout per shop type +- Whether certain lines are blank + +This gives you complete control over how shops look on your server. + +--- + +## How Sign Layout Works + +Shop signs have four lines. + +Instead of being hardcoded, QuickShop uses a configurable layout system. + +Each shop type can have its own layout: + +- SELLING +- BUYING +- FROZEN + +You define what each line displays using layout keys. + +--- + +## Configuration Location + +Sign layout is configured in `config.yml` under: + +```yaml +layout: +``` + +Example default configuration: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## Available Layout Keys + +Each line value refers to a built-in layout component. + +Common layout keys include: + +- `header` – The shop header line +- `trading` – Buy/Sell direction information +- `item` – Item name +- `price` – Shop price + +These keys are automatically formatted using your language file and formatting settings. + +--- + +## Leaving a Line Blank + +To leave a line empty, use: + +```yaml +line2: "" +``` + +This is useful if you want: + +- Minimalist signs +- Cleaner layouts +- Custom spacing +- Decorative formatting + +--- + +## Customizing Per Shop Type + +Each shop type can have a different layout. + +For example: + +```yaml +layout: + + SELLING: + line1: "header" + line2: "item" + line3: "price" + line4: "" + + BUYING: + line1: "header" + line2: "price" + line3: "item" + line4: "" + + FROZEN: + line1: "header" + line2: "" + line3: "item" + line4: "Frozen" +``` + +This allows you to visually differentiate: + +- Selling shops +- Buying shops +- Frozen shops + +--- + +## Practical Examples + +### Minimal Style + +```yaml +layout: + SELLING: + line1: "item" + line2: "price" + line3: "" + line4: "" +``` + +### Compact Economy Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "price" + line3: "item" + line4: "" +``` + +### Large Clear Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## How Updates Affect Layout + +When you change the layout: + +- Existing shop signs will update automatically when refreshed. +- New shops will use the updated format immediately. + +If needed, you can reload QuickShop to apply changes. + +--- + +## Best Practices + +- Keep important information visible (price and item). +- Avoid overly complex formatting. +- Test layout changes before deploying on large servers. +- Use different layouts for BUYING and SELLING to reduce confusion. + +--- + +## Common Questions + +### Can I add more than four lines? + +No. +Minecraft signs are limited to four lines. + +### Can I add colors? + +Colors are controlled by your language file and formatting settings. + +### Can I change layout without restarting? + +Yes, but reloading or refreshing shops is recommended to ensure full update. + +--- + +## Summary + +The Sign Layout system allows you to: + +- Fully customize shop sign appearance +- Create per-type layouts +- Simplify or expand shop information +- Improve clarity for players + +All layout customization is handled inside `config.yml`. diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md new file mode 100644 index 0000000000..980bad10f2 --- /dev/null +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md @@ -0,0 +1,130 @@ +# Shop Sign Waxing + +QuickShop can automatically wax shop signs to prevent players from editing them manually. + +Waxing protects the integrity of your shop signs and helps prevent tampering, spoofing, and accidental modification. + +As of modern Minecraft versions, waxed signs cannot be edited unless they are unwaxed first. + +--- + +## What Is Sign Waxing? + +In Minecraft, waxing a sign locks it so that: + +- Players cannot edit the text +- Players cannot modify lines +- Accidental changes are prevented +- Malicious edits are blocked + +When enabled in QuickShop, shop signs are automatically waxed when created. + +--- + +## Why Use It? + +Sign waxing protects against: + +- Players editing price lines +- Changing item names on signs +- Spoofing shop information +- Accidental formatting issues +- Sign hijacking attempts + +On public servers, this feature is strongly recommended. + +--- + +## How It Works + +When a shop is created: + +1. QuickShop generates the shop sign. +2. The sign text is written. +3. The sign is automatically waxed (if enabled). + +If a shop is updated: + +- The sign will be safely updated by QuickShop. +- The wax state is maintained. + +Players cannot manually edit shop signs while waxing is enabled. + +--- + +## Configuration + +To enable or disable sign waxing, edit `config.yml`: + +```yaml +shop: + sign-wax: true +``` + +### true + +- Shop signs are automatically waxed. +- Players cannot edit the sign manually. + +### false + +- Shop signs behave like normal Minecraft signs. +- Players may edit them if permitted by the game. + +--- + +## Recommended Setting + +For most servers: + +```yaml +shop: + sign-wax: true +``` + +This ensures shop data stays accurate and secure. + +--- + +## Common Questions + +### Can admins still modify shop signs? + +QuickShop controls shop sign formatting. +Manual edits are not recommended. + +Admins should use: + +- Control panel +- Shop commands +- Direct configuration changes + +### Does waxing affect shop functionality? + +No. +Waxing only prevents manual text edits. +The shop continues to function normally. + +### Can players un-wax shop signs? + +No. +QuickShop manages the sign state automatically. + +--- + +## Best Practices + +- Keep sign-wax enabled on survival servers. +- Combine sign-wax with proper permissions. +- Avoid manually editing shop signs through other plugins. + +--- + +## Summary + +Sign Waxing: + +- Prevents tampering +- Requires no additional setup + +Enable it once and QuickShop handles the rest. \ No newline at end of file diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/modules/shops/taxes.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/modules/shops/taxes.md new file mode 100644 index 0000000000..1a273fd978 --- /dev/null +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/modules/shops/taxes.md @@ -0,0 +1,92 @@ +# Taxation System + +QuickShop includes a taxation system designed to give server owners more flexibility and control over shop-based income. + +This system was revamped as of 6.2.0.11+ + +The new system allows you to: + +- Apply tax to shop owners +- Apply tax to buyers +- Apply tax to both +- Use progressive tax brackets +- Customize tax behavior in configuration + +This system replaces the legacy tax configuration. + +--- + +## How It Works + +During a transaction: + +1. The shop price is calculated. +2. Tax is calculated based on your configuration. +3. Tax is deducted from the configured target(s). +4. Remaining funds are distributed normally. + +You can configure: + +- Flat percentage tax +- Progressive tax based on player balance +- Tax accounts +- Distribution rules + +--- + +## Progressive Tax + +The new system allows you to tax based on balance brackets. + +Example concept: + +- 0 – 10,000 balance → 1% tax +- 10,000 – 100,000 → 2% tax +- 100,000+ → 3% tax + +This helps prevent extremely wealthy players from dominating the economy. + +--- + +## Who Pays the Tax? + +You can configure whether tax applies to: + +- The shop owner +- The buyer +- Both + +This gives you flexibility depending on your economy design. + +--- + +## Configuration + +All tax-related settings are located under the `shop-tax` section in `config.yml`. + +After updating to 6.2.0.11+, review your tax configuration carefully, as the old tax system has been replaced. + +--- + +## Why Use Tax? + +The taxation system can help: + +- Remove currency from circulation +- Fund server banks or towns +- Create sink mechanics +- Balance inflation +- Reward active players + +--- + +## Summary + +The new taxation system is: + +- Flexible +- Configurable +- Balance-aware +- Designed for modern economy servers + +Make sure to review your configuration after upgrading. \ No newline at end of file diff --git a/i18n/sr-SP/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md b/i18n/sr-SP/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md new file mode 100644 index 0000000000..247c24712d --- /dev/null +++ b/i18n/sr-SP/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md @@ -0,0 +1,161 @@ +# WorldEdit & FAWE Support + +QuickShop includes built-in protection and integration for WorldEdit and FastAsyncWorldEdit (FAWE). + +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. + +You do not need to download or install any additional compatibility plugins. + +--- + +## What This Does + +WorldEdit and FAWE allow administrators and builders to: + +- Copy and paste regions +- Replace large areas of blocks +- Mass-delete regions +- Roll back areas +- Regenerate terrain + +Without protection, these operations could: + +- Create ghost shops +- Leave orphaned shop data in the database +- Duplicate shops unintentionally +- Delete containers without cleaning up shop data +- Cause inconsistencies between world and database + +QuickShop now automatically detects and safely processes WorldEdit and FAWE operations. + +--- + +## Built-In Behavior + +When WorldEdit or FAWE modifies blocks: + +- Shops removed via WorldEdit are properly deleted from the database. +- Shop data stays synchronized with world changes. +- Ghost shops are prevented. +- Mass block replacements will not leave broken shop entries behind. + +This applies to: + +- //set +- //replace +- //cut +- //paste +- //regen +- Region deletion +- Mass container removal + +No configuration is required. + +--- + +## FAWE Support + +FastAsyncWorldEdit (FAWE) is fully supported. + +Because FAWE processes edits asynchronously, QuickShop handles: + +- Region-thread safe processing +- Async block updates +- Safe shop deletion during batch edits + +You do not need to enable anything manually. + +--- + +## Removing Shops with WorldEdit + +If you delete containers (chests, barrels, etc.) using WorldEdit: + +QuickShop will automatically: + +- Detect the block removal +- Unregister the shop +- Clean the database entry +- Prevent ghost shops + +You do not need to run `/qs cleanghost` after WorldEdit usage in normal circumstances. + +--- + +## Copying and Pasting Shops + +If you copy and paste regions that contain shops: + +- Shop data will not duplicate incorrectly. +- Shop IDs remain consistent. +- Invalid pasted shops will not auto-register unless properly created. + +This prevents accidental duplication exploits. + +--- + +## Performance + +WorldEdit and FAWE operations can modify thousands of blocks at once. + +QuickShop processes these safely and efficiently: + +- Batch-aware cleanup +- Thread-safe region access (especially on Folia) +- Minimal performance impact during mass edits + +--- + +## Configuration + +There are no specific WorldEdit configuration options in QuickShop. + +Support is automatic and always enabled if WorldEdit or FAWE is detected. + +If WorldEdit is not installed, no extra code is executed. + +--- + +## Common Questions + +### Do I need the old WorldEdit compatibility jar? + +No. + +As of 6.2.0.11, WorldEdit support is built-in and the separate compatibility module has been removed. + +### Does this work with FAWE? + +Yes. FAWE is fully supported. + +### Will shops break if I use //set air? + +No. Shops will be safely removed and cleaned up. + +### Do I need to restart after installing WorldEdit? + +No. QuickShop detects WorldEdit automatically on startup. + +--- + +## Best Practices + +Even though QuickShop safely handles WorldEdit operations, it is recommended to: + +- Avoid copying shops intentionally unless required +- Use backups before large region edits +- Test large FAWE operations on staging servers when possible + +--- + +## Summary + +QuickShop’s built-in WorldEdit and FAWE integration ensures: + +- Safe mass edits +- No ghost shops +- Automatic database cleanup +- Thread-safe processing +- No extra modules required + +WorldEdit support is now a core feature of QuickShop. \ No newline at end of file diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/addon/limited.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/addon/limited.md index 70af27e240..fae55a8c95 100644 --- a/i18n/sv-SE/docusaurus-plugin-content-docs/current/addon/limited.md +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/addon/limited.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -41,8 +35,8 @@ Limit players to purchase up to 16 items per month. /quickshop limit period MONTH ``` -The system is based on the QuickShop-Hikari calendar system.\ -The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year.\ +The system is based on the QuickShop-Hikari calendar system. +The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year. Same for days, months and hours. Available time units: diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/addon/list.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/addon/list.md index 93d182f083..f20b91fd7b 100644 --- a/i18n/sv-SE/docusaurus-plugin-content-docs/current/addon/list.md +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/addon/list.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/addon/plan.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/addon/plan.md index 52a6e79cb4..c10ef4df42 100644 --- a/i18n/sv-SE/docusaurus-plugin-content-docs/current/addon/plan.md +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/addon/plan.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -18,7 +18,7 @@ Recorded data can be displayed from Hikari v2.0.0.0 onwards, but only after vers - All shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 1000 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `5` in server scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `5` in server scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Player Scope @@ -27,7 +27,7 @@ And still is Plan limitations, the list sorting is disturbed, so the display ord - All owned shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 50 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `4` in player scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `4` in player scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Showcase diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/addon/reforges.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/addon/reforges.md index 2a14509eb7..25fff1752a 100644 --- a/i18n/sv-SE/docusaurus-plugin-content-docs/current/addon/reforges.md +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/addon/reforges.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.0.0.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md index 304d39bc05..6f9f51d250 100644 --- a/i18n/sv-SE/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.1.1.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -44,7 +38,7 @@ _This is not necessary if you are using an H2 database._ ### Prepare for convert -To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console.\ +To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console. If a player is in the server, the conversion cannot be started. Once the conversion has begun, the server will be locked during the conversion process and no players will be able to join the server during the conversion. diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/addon/shopitemonly.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/addon/shopitemonly.md index c45062f8c2..1ccfe977b3 100644 --- a/i18n/sv-SE/docusaurus-plugin-content-docs/current/addon/shopitemonly.md +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/addon/shopitemonly.md @@ -2,17 +2,11 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT - -::: - -This addon prevents players from putting non-store items into store containers.\ +This addon prevents players from putting non-store items into store containers. Does not apply to stores that use the item inventory redirection API (aka. InventoryWrapper API). This Addon will check for container (or transferring) items on events such as the player closing the container or hopper access. diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md new file mode 100644 index 0000000000..9c8b4f7407 --- /dev/null +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md @@ -0,0 +1,55 @@ +# 6.2.0.10 + +## Major Changes + +- Added support for 1.21.6 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.7 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.8 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Some internal updates for packetevents(2.9.0 is now required.) +- Updated Lands support + +## Addon Changes + +- Added MatcherPlus Addon + - Allows support for BreweryX and AdvancedItems stacks in shops with improved matching abilities +- Added FabledSkyblock Compat +- Added Dominion Compat +- Added HuskTowns Compat +- Added IridiumSkyblock Compat +- Added member-create for member creation in ARM compat +- Added admin-override and quickshop.arm.admin permission for admin overrides in ARM + +## Minor Changes + +- Added configurations for the coordinates of the display item. +- Added /qs toggledisplayall on/off server/owned + - Players need to have permission node quickshop.toggledisplayall.admin to toggle all on the server. +- Added ability to use abbreviations in /qs price and /qs create commands such as 2.5k for 2500 +- Added ability to set default display status using shop.default-display in config.yml + +## Fixes + +- Fixed issue with display item being sent to the moon on 1.21.5 +- Fixed issue where TRADE_UI interactions interfered with quick create. +- Fixed issue with displays on protocollib falling through the chest +- Fixed issue with signs on .9 and previous .10 snapshots on early versions +- Implemented some performance improvements for paper servers +- Fixed all outstanding issues with Folia usage.(thanks to RootB33R/SleazLee for contributions) + +## Possible 6.2.0.11 Features + +Here's an outline for some features that may arrive in 6.2.0.11: + +- Additional compats/addons that have been piling up. + - see: https://github.com/QuickShop-Community/QuickShop-Hikari/issues/1756 +- gradle?(interested to see compilation time uplifts) +- Update documentation +- Update configuration comments +- Update configuration system? + - auto updating? + - Allows removal of the update code +- Remove waste spigot modules? + - Any versions of 1.20 that can be discarded due to low use? +- Bug fixing, of course +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... \ No newline at end of file diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md new file mode 100644 index 0000000000..b41c88662a --- /dev/null +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md @@ -0,0 +1,173 @@ +## Outline + +- Update documentation +- Update configuration comments +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... + +# 6.2.0.11 + +## Major Changes + +- Removed Spigot Platform Modules, and stopped loading QS if Spigot is detected. This will mean that unless the protocol changes that we use for display items, QS won't need updated for each version. +- Revamped Economy Code Completely + - New classes for all economy-related systems + - Any economy-related or benefits-related events are incompatible with previous versions. +- Added sign layout customizations per-type allowing you to change how lines are configured, an empty string('') will leave an empty line for that line of the sign. + +``` + #The layout of signs for shops. + layout: + + #The layout of BUYING shops. + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of FROZEN shops. + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of SELLING shops. + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +- Add wildcard support for item blacklist patterns(thanks to bennycallanan) + - Added support for wildcard patterns in the item blacklist configuration, allowing users to block entire categories of items with simple patterns. + + - Features + - Wildcard patterns like \*_AXE and \*_SPAWN_EGG now work in blacklist configuration + - Supports \* for any characters and ? for single character matching + - Case-insensitive pattern matching +- Overhauled GUI system(thanks to Yusakidev) + - Implemented gui.yml configuration file for customizing the GUI. + - Implemented better filtering for qs browse + - Implement GUI system to be more stable, and less error prone. + - Added gui.yml for fully configurable GUI layouts and text + - Browse menu: search, sort (price/name/stock), and filter (all/buying/selling/in-stock) + - Staff menu: search functionality for player/staff selection + - Grouped item pages for better shop browsing + - Refactored all menu pages to use configurable display/lore +- Added worldedit compat to QS internally as it's widely used. +- Revamped the taxation system to be more flexible and easier to configure. + - introduced a new progressive tax system that allows you to tax based on the balance of players.(suggested by YuanYuanOwO) + - introduced the ability to tax the player interacting with the shop, the owner, or both + - all tax-related configurations have been moved under the shop-tax section of the config. this may require reconfiguration of your tax settings. + - added a new ShopEnhancedTaxEvent, deprecated the old ShopTaxEvent. + - Added a new TaxManager, and TaxProvider interfaces, this allows for custom tax providers to be added by addons/third-party developers. + +## Addons/Compats Changes + +- Added UltimateClaims compat +- Added SimpleClaimSystem compat +- Added Quests by Pika addon +- Added BetonQuest addon +- Added Pl3xMap addon +- MatcherPlus Compat Improvements + - Added support for CrazyCrates + - Added support for ExcellentCrates + - Added support for SilkSpawners. +- WorldGuard Compat Improvements(Thanks to golovin12) + - Added clear permission handling: + - Region owners and members automatically have permission to create and trade in their own regions. + - Other players must have the appropriate WorldGuard flags enabled (quickshophikari-create, quickshophikari-trade) to interact with shops. + - If a shop is located outside any region, default QuickShop behavior applies (no extra restrictions) +- Added colored markers based on shop state for bluemap(thanks to YusakiDev) +- Updated dynmap/towny addons to use the new ShopTypeEnhancedEvent instead of ShopTypeEvent. +- Removed worldedit compat, it's now included in the main plugin. +- Added support for global flags to the worldguard compat. + +## Internals/Developer APIs + +- Removed several deprecated methods and classes. +- Revamped the interaction manager. It is now more flexible and allows external additions + - This involves two classes InteractionBehavior and InteractionType. + - InteractionType details the type of interaction such as: STANDING_LEFT_CLICK_SIGN, STANDING_LEFT_CLICK_SHOP + - InteractionBehavior outlines a behavior for an InteractionType such as CONTROL_PANEL and TRADE_UI +- Added UserLimitCalculationEvent, which allows for custom limits to be applied to users. + - This is useful for limiting the number of shops a user can have, or adding on to the existing limits provided by the ranks system without needing to implement a new RankLimiter. +- Added a new ShopLayoutProvider interface, and default implementation. + - This allows for custom layouts to be used for shops, allowing for more customization. + - This also allows for developers to override the default layout provider and create their own implementation. +- How to make your own? + - Implement the classes you would like to then register with the InteractionManager: + - ```java + InteractionManager manager = QuickShop.getInstance().getInteractionManager(); + + manager.interaction(new MyTradeInteraction()); + manager.behavior(new MyTradeBehavior()); + ``` +- Replaced some Apache Commons calls that could be easily replaced with built-in java methods, reduces some calls by ~ 1100ms/method call +- Deprecated the ShopType enum, and the ShopTypeEvent. These are replaced with the new IShopType interface and implementing classes. + - The new event is ShopTypeEnhancedEvent. + - This allows for third-party addons to add their own shop types, and simplifies code checks for translations. +- Updated config system to use Boosted-yaml + - this allows for auto-updating of config files without complex update scripts + - this also allows for the config system to not be minecraft-dependent. +- Replaced logical PaperLib calls with native PaperAPI calls. + +## Minor Changes + +- Bump Java version up to 21 +- Added shop.display-allow-enchants to enable/disable enchantments for display items on shops. +- Added workaround for packetevents not supporting custom enchants on itemstacks for virtual display items. +- Using locale translations for shop-type in mode toggle icon(thanks to ExyiN) +- Bumped Residence version for the compat(thanks to YuanYuanOwO) +- add world whitelist support(thanks to wling-art) +- added /qs database save command, which saves all currently dirty-marked shops to the database. +- Split up interactions _SHOPBLOCK into _SHOPBLOCK and _CONTAINER. + - _SHOPBLOCK relates to shops, where _CONTAINER relates to shop-valid containers that are not currently shops. +- Added inventory as an option for command panel, this is useful for adding a secondary option for players to open a shop's inventory. +- Moved crowdin arguments from system properties to config.yml + - crowdin-host + - use-crowdin-ota + +## Fixes + +- Fixes issue with item price restrictions(thanks to maxcom1) +- Fixes issue with 1.20.x protocol lib displays(thanks to YuanYuanOwO) +- Fixes issue when no item is in hand for itemdebug(thanks to YuanYuanOwO) +- Fixes issue with dominion addon(thanks to YuanYuanOwO) +- Add a simple check to avoid this. If it is not own shop, reject limit request directly.(Thanks to YuanYuanOwO) +- Fix NPE by not setting tax for price in TransactionBuilder(thanks to maxcom1) +- Fixes /quickshop suggestprice to differentiate between buy/sell shops. (Thanks to MidSpike) +- PacketEvents ClassNotFoundException with ProtocolLib(thanks to wling-art) +- Reallocate block state access to region thread for shop creation(thanks to r00tbeerman) +- resolve SLF4J StaticLoggerBinder loading error(thanks to wling-art) +- sign hijacking issue by validating sign facing direction(thanks to wling-art) +- Performance improvements for QuickShop disabling to prevent potential freezes. +- Fixed issue with 1.20.4 packetevents virtual displays not staying put. +- Fixes critical issue in GriefPrevention compatibility plugin. +- Fixes issue with shop owner not getting money when benefits active. +- Fixes for lands addon on folia, Use regionThread for Folia compatibility(thanks to YusakiDev) +- Fixes for TRADE_DIRECT on stacking shops +- Fixes issue for protocollib 5.4.0 with undocumented packet changes. +- Fixes issue where item stacks could be used on creation above the max stack size. +- Fixes issue with BukkitAudiences-related crashes on 1.21.11. +- Fix issue with shop deletion when getting too impatient. +- Fix the permission check issue when a shop owned by a non-owner is transferred to someone else. (thanks to YuanYuanOwO) +- Fix ui with supertool (thanks to YuanYuanOwO) +- Fix issue with logs generating outside debug mode. +- Fix issue with /qs find. +- Fix configuration loading timing. +- Fix configuration loading/creation warning message language. +- Fix command description language key mismatch(thanks to wling-art) +- Fix qs clean command on folia(thanks to wling-art) +- Fix per-player-shop-sign on folia(thanks to wling-art) +- Fix potential recursive deadlock in virtual display packet sending(thanks to wling-art) +- Fix configuration loading/creation warning message language. +- Fix issue with /qs browse and ShopItemOnly addon not behaving properly together on folia. +- Fix issue with PLAN using outdated APIs. +- Fix issue with /qs clean on folia.(thanks to wling-art) +- Fix issue with /qs cleanghost on folia(thanks to wling-art) +- More thread safety fixes for shops on folia.(thanks to wling-art) +- Fix owner payment calculations with benefits(thanks to wling-art) \ No newline at end of file diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md index 8172f9b410..dcc3edc67d 100644 --- a/i18n/sv-SE/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md @@ -20,20 +20,20 @@ the ControlComponent object with a custom one that will replace the original dur ### Introduction of the Revamped Packet System 1. **About**: - - A modular and scalable system for managing packets related to virtual display items in Minecraft. - - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. + - A modular and scalable system for managing packets related to virtual display items in Minecraft. + - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. 2. **Custom Packet Factories**: - - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. - - Packet types: - - **Spawn Packet**: Spawns a virtual item entity at a specific location. - - **Metadata Packet**: Updates the visual properties of virtual items. - - **Velocity Packet**: Adds motion/velocity to entities (currently optional). - - **Destroy Packet**: Removes the entity from the client view. + - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. + - Packet types: + - **Spawn Packet**: Spawns a virtual item entity at a specific location. + - **Metadata Packet**: Updates the visual properties of virtual items. + - **Velocity Packet**: Adds motion/velocity to entities (currently optional). + - **Destroy Packet**: Removes the entity from the client view. 3. **Error Handling and Logging**: - - Enhanced debug logs to trace packet-related issues. - - Detailed error messages for missing factories or unregistered listeners. + - Enhanced debug logs to trace packet-related issues. + - Detailed error messages for missing factories or unregistered listeners. #### Improvements: diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md index 7775308722..c6e0948d19 100644 --- a/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md index f420997a9c..38587e3784 100644 --- a/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md index 5ed8182c9a..259c55f342 100644 --- a/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md index 924a37ac49..7fd4596a6a 100644 --- a/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,6 +10,6 @@ This is a BungeeCord plugin, you need install it within your BungeeCord's plugin ## How does it work? -BungeeCord Bridge plugins will register a `quickshop:bungee` channel for fowarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. +BungeeCord Bridge plugins will register a `quickshop:bungee` channel for forwarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. All forwarding is indicated by QuickShop-Hikari on the Spigot server and ends when it is not needed. diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md index 27d68956a8..20fbaf7a0c 100644 --- a/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,5 +10,5 @@ This compatibility module added [Chest Protect](https://www.spigotmc.org/resourc ## How does it work? -This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident.\ +This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident. It also prevents players from creating shops on ChestProtect protected containers. diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md index 220e26d8bb..e1757e7be9 100644 --- a/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/dominion.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/dominion.md new file mode 100644 index 0000000000..e1195278a8 --- /dev/null +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/dominion.md @@ -0,0 +1,138 @@ +# Dominion + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and Dominion. + +It ensures that shop creation and trading respect Dominion’s land and territory protection system. + +--- + +## What Does It Do? + +Dominion allows players or groups to claim land and define territory-based permissions. + +Without compatibility: + +- Players could create shops inside territories they do not control. +- Visitors might trade inside protected dominions. +- Dominion permission rules might not apply to shop interactions. + +The Dominion compat module ensures that: + +- Shop creation respects territory ownership. +- Shop trading follows Dominion permission settings. +- Protected land remains secure from unauthorized shop usage. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a Dominion-controlled area. +- Whether the player has permission within that territory. +- Whether Dominion rules allow shop interaction. + +If the action is not permitted by Dominion settings, QuickShop blocks it. + +If the location is outside any Dominion territory, default QuickShop behavior applies. + +--- + +## Territory Owner Control + +With this module enabled: + +- Territory owners can create and manage shops inside their dominion. +- Trusted members follow territory-based permissions. +- Outsiders are restricted unless explicitly allowed. +- Shop actions respect Dominion’s land rules automatically. + +This prevents unauthorized shop placement inside protected territories. + +--- + +## Installation + +1. Install Dominion. +2. Install the QuickShop Dominion compat module. +3. Restart your server. + +The module activates automatically if Dominion is detected. + +No manual configuration linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside dominions +whitelist-mode: false + +# Allow territory owners to override shop permissions +allow-owner-override: true +``` + +If Dominion is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For servers using Dominion: + +- Restrict shop creation to territory owners or trusted members. +- Prevent shop creation in wilderness if desired. +- Allow dominion owners to manage shop permissions. +- Review Dominion permission settings to align with shop behavior. + +This ensures protected territories remain secure and organized. + +--- + +## Common Questions + +### Can players create shops in someone else's dominion? + +Only if Dominion permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You may allow or restrict shops outside dominions. + +### What happens if Dominion is removed? + +QuickShop returns to normal behavior and stops checking Dominion territories. + +--- + +## Summary + +The Dominion compat module: + +- Enforces territory-based permissions +- Prevents unauthorized shop creation +- Protects claimed land from misuse +- Integrates seamlessly with Dominion + +It is recommended for servers running Dominion. \ No newline at end of file diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md index 743d3ae666..2ac9b10488 100644 --- a/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md new file mode 100644 index 0000000000..07ba4ada66 --- /dev/null +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md @@ -0,0 +1,133 @@ +# FabledSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and FabledSkyblock. + +It ensures that shop creation and trading properly respect island boundaries and island permissions. + +--- + +## What Does It Do? + +On Skyblock servers, players build and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Players might trade in areas they should not. +- Island protection rules might not apply to shops. + +The FabledSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members behave correctly with shops. +- Island visitors are restricted appropriately. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a FabledSkyblock island. +- Whether the player has permission on that island. +- Whether island settings allow the action. + +If the action is not permitted by island rules, QuickShop will deny it. + +--- + +## Island Ownership Rules + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow island permission settings. +- Visitors can only trade if island permissions allow it. +- Outside of islands, default QuickShop behavior applies. + +--- + +## Installation + +1. Install FabledSkyblock. +2. Install the QuickShop FabledSkyblock compat module. +3. Restart your server. + +The module activates automatically if FabledSkyblock is detected. + +No manual linking is required. + +--- + +## Configuration + +If the module provides configuration options, they will appear in its `config.yml`. + +Typical options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If FabledSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most Skyblock servers: + +- Allow shop creation only inside islands. +- Prevent trading in the void or wilderness. +- Let island owners control shop permissions. +- Use island rank systems to manage shop access. + +This helps maintain economic balance between islands. + +--- + +## Common Questions + +### Can players create shops in the void? + +Only if your configuration allows it. +Most servers disable shop creation outside islands. + +### Does this affect island war or PvP modes? + +No. +The module only checks island ownership and permissions for shop interactions. + +### What happens if FabledSkyblock is removed? + +QuickShop returns to normal behavior. + +--- + +## Summary + +The FabledSkyblock compat module: + +- Protects island economies +- Enforces island permission rules +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is strongly recommended for any server running FabledSkyblock. \ No newline at end of file diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md index 81b13d2c6b..32614d3019 100644 --- a/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md @@ -2,17 +2,17 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -GreifPrevention compatibility module added compaitibility with GF. +GreifPrevention compatibility module added compatibility with GF. ## How does it work This module allow QuickShop-Hikari check if player have permission to create or use QuickShop in specific region. -And delete shops when claim removed, untrusted, unclimed, expired, resized or subclaim created. +And delete shops when claim removed, untrusted, unclaimed, expired, resized or subclaim created. ## Configuration diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md new file mode 100644 index 0000000000..e71b34d462 --- /dev/null +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md @@ -0,0 +1,139 @@ +# HuskTowns + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and HuskTowns. + +It ensures that shop creation and trading respect town and claim permissions defined by HuskTowns. + +--- + +## What Does It Do? + +HuskTowns allows players to create towns and claim land. + +Without compatibility: + +- Players could create shops inside towns they do not belong to. +- Visitors might trade inside protected towns. +- Town permission rules might not apply to shop interactions. + +The HuskTowns compat module ensures that: + +- Shop creation respects town ownership. +- Trading follows town permission settings. +- Town members and visitors are handled correctly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a HuskTowns claim. +- Whether the player is a town member, trusted player, or outsider. +- Whether the town's permission settings allow the action. + +If the action is not permitted by town rules, QuickShop blocks it. + +Outside of town claims, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Town Owner Control + +With this module enabled: + +- Town owners can create and manage shops inside their town. +- Town members follow town-based permission settings. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect town claim protection. + +This prevents unauthorized shop placement and trading inside protected towns. + +--- + +## Installation + +1. Install HuskTowns. +2. Install the QuickShop HuskTowns compat module. +3. Restart your server. + +The module activates automatically if HuskTowns is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside towns +whitelist-mode: false + +# Allow town owners to override shop permissions +allow-owner-override: true +``` + +If HuskTowns is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For town-based survival servers: + +- Restrict shop creation to town members. +- Allow trading only where town permissions permit. +- Prevent shop creation in wilderness if desired. +- Enable owner override for better administrative control. + +This helps maintain town-based economic balance. + +--- + +## Common Questions + +### Can players create shops in another town? + +Only if that town's permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You can allow or restrict shops outside towns. + +### What happens if HuskTowns is removed? + +QuickShop returns to normal behavior and stops checking town permissions. + +--- + +## Summary + +The HuskTowns compat module: + +- Enforces town-based land permissions +- Protects towns from unauthorized shop usage +- Integrates smoothly with HuskTowns +- Requires minimal setup + +It is recommended for any server running HuskTowns. \ No newline at end of file diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md new file mode 100644 index 0000000000..3fa2995eb0 --- /dev/null +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md @@ -0,0 +1,139 @@ +# IridiumSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and IridiumSkyblock. + +It ensures that shop creation and trading respect island boundaries and island permission settings defined by IridiumSkyblock. + +--- + +## What Does It Do? + +IridiumSkyblock allows players to create and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Visitors might trade inside protected islands. +- Island protection rules might not apply correctly to shops. + +The IridiumSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members and visitors are handled properly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside an IridiumSkyblock island. +- Whether the player is the island owner, member, or visitor. +- Whether island permissions allow shop interaction. + +If the action is not permitted, QuickShop blocks it. + +Outside of islands, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Island Owner Permissions + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow the island's permission configuration. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect island protection rules. + +This prevents unauthorized shop usage inside protected islands. + +--- + +## Installation + +1. Install IridiumSkyblock. +2. Install the QuickShop IridiumSkyblock compat module. +3. Restart your server. + +The module activates automatically if IridiumSkyblock is detected. + +No additional setup is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If IridiumSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most IridiumSkyblock servers: + +- Restrict shop creation to island owners. +- Allow island members to trade if trusted. +- Prevent shop creation in the void or wilderness. +- Enable owner override for better management. + +This helps maintain balanced island economies. + +--- + +## Common Questions + +### Can players create shops outside their island? + +Only if your configuration allows it. + +Most Skyblock servers restrict shops to island areas. + +### Do island ranks affect shop permissions? + +Yes, if your island permissions are configured to control interaction rights. + +QuickShop follows island rules. + +### What happens if IridiumSkyblock is removed? + +QuickShop returns to normal behavior and stops checking island permissions. + +--- + +## Summary + +The IridiumSkyblock compat module: + +- Protects island economies +- Enforces island-based permissions +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is recommended for any server running IridiumSkyblock. diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md new file mode 100644 index 0000000000..3b4726cb9d --- /dev/null +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md @@ -0,0 +1,151 @@ +# ItemMatcherPlus + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +The ItemMatcherPlus module improves how QuickShop matches custom and plugin-modified items. + +It allows QuickShop to properly recognize and stack items created by other plugins that normally would not match using standard Bukkit item comparisons. + +This module is especially useful for servers that use: + +- Custom items +- Modified metadata +- NBT-based systems +- Advanced crate rewards +- Custom brewing systems +- Custom fishing rewards + +--- + +## What Does It Do? + +By default, Minecraft item matching checks: + +- Material type +- Basic metadata + +However, many plugins modify items with: + +- Custom NBT data +- Hidden tags +- Custom lore formats +- Unique identifiers + +Without enhanced matching: + +- Items may not stack +- Shops may refuse valid items +- Transactions may fail +- Buying/selling may not behave correctly + +ItemMatcherPlus improves compatibility and matching accuracy. + +--- + +## Supported Plugins + +ItemMatcherPlus includes built-in support for: + +- AdvancedItems +- BreweryX +- CrazyCrates +- ExcellentCrates +- PyroFishing +- SilkSpawners + +If any of these plugins are installed, QuickShop will automatically use enhanced matching logic. + +No additional configuration is required. + +--- + +## How It Works + +When a player trades with a shop: + +1. QuickShop checks the item. +2. If ItemMatcherPlus is enabled, it performs advanced matching. +3. Plugin-specific metadata is validated. +4. The item is confirmed as a match (or rejected safely). + +This allows: + +- Proper stacking of custom items +- Correct shop transactions +- Accurate buy/sell detection +- Reduced false mismatches + +--- + +## Installation + +1. Download the ItemMatcherPlus module. +2. Place the JAR into your `plugins` folder. +3. Restart your server. + +If supported plugins are detected, compatibility activates automatically. + +--- + +## Configuration + +ItemMatcherPlus does not require configuration. + +It activates automatically when: + +- The module is installed +- A supported plugin is detected + +If a supported plugin is not installed, no extra logic runs. + +--- + +## Why You Should Use It + +You should install ItemMatcherPlus if your server uses: + +- Custom fishing plugins +- Custom brewing systems +- Crate plugins with modified items +- Custom spawners +- Any plugin that modifies NBT data + +Without it, shops may not properly recognize custom items. + +--- + +## Common Questions + +### Do I need this if I don't use custom item plugins? + +No. +If you only use vanilla items, this module is not necessary. + +### Does this affect performance? + +The module only activates enhanced matching when needed. + +Normal item matching remains fast and efficient. + +### Will it break existing shops? + +No. +It improves compatibility and matching accuracy without modifying existing shop data. + +--- + +## Summary + +ItemMatcherPlus: + +- Improves item matching accuracy +- Adds support for major custom item plugins +- Prevents stacking and trade issues +- Requires no configuration +- Activates automatically + +If you run a heavily customized economy server, this module is highly recommended. \ No newline at end of file diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md index ba87606698..d4ae7d129a 100644 --- a/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/lands.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/lands.md index 06296f5779..7671fcdfe0 100644 --- a/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/lands.md +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/lands.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/openinv.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/openinv.md index c51f628615..4807d57873 100644 --- a/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/openinv.md +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/openinv.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md new file mode 100644 index 0000000000..c2136320b0 --- /dev/null +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md @@ -0,0 +1,138 @@ +# SimpleClaimSystem + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and SimpleClaimSystem. + +It ensures that shop creation and trading respect land ownership and claim permissions defined by SimpleClaimSystem. + +--- + +## What Does It Do? + +SimpleClaimSystem allows players to claim land and protect it from unauthorized interaction. + +Without compatibility: + +- Players could create shops inside claims they do not own. +- Visitors might trade inside protected areas. +- Claim protection might not apply correctly to shops. + +The SimpleClaimSystem compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops within their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a SimpleClaimSystem claim. +- Whether the player has permission within that claim. +- Whether claim rules allow shop interaction. + +If the action is not permitted by the claim, QuickShop blocks it. + +If the location is outside any claim, default QuickShop behavior applies. + +--- + +## Claim Owner Control + +With this module enabled: + +- Claim owners can create and manage shops inside their claim. +- Trusted players follow claim-based permissions. +- Visitors are restricted unless explicitly allowed. +- Claim protection rules apply automatically to shop interactions. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install SimpleClaimSystem. +2. Install the QuickShop SimpleClaimSystem compat module. +3. Restart your server. + +The module activates automatically if SimpleClaimSystem is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If SimpleClaimSystem is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Enable owner override for easier management. + +This ensures players maintain control over their protected land. + +--- + +## Common Questions + +### Can players create shops in someone else's claim? + +Only if claim permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can allow shops outside claims or restrict them. + +### What happens if SimpleClaimSystem is removed? + +QuickShop will revert to default behavior and stop checking claim permissions. + +--- + +## Summary + +The SimpleClaimSystem compat module: + +- Enforces claim-based permissions +- Prevents unauthorized shop creation +- Protects land from unwanted trading +- Requires minimal setup + +It is recommended for servers running SimpleClaimSystem. \ No newline at end of file diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md index a84dbf057b..4dfa8ae97c 100644 --- a/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/towny.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/towny.md index 52ab4818f4..b26c19d335 100644 --- a/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/towny.md +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/towny.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -26,7 +26,7 @@ Town sub-command allow you switch a quickshop between regular shop and town shop For a nation shop, the shop owner will changed to nation fake player created by Towny, and use Nation's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from nation Towny account.\ +All purchases will deposit or withdraw money from nation Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Nation Shop. @@ -35,7 +35,7 @@ If Plot type restriction is enabled, only a specific Plot type can create a Nati For a town shop, the shop owner will changed to town fake player created by Towny, and use Town's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from town Towny account.\ +All purchases will deposit or withdraw money from town Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Town Shop. @@ -88,7 +88,7 @@ bank-mode: ## Permission Override -By adjust configuration, you're allow mayor or king automaticlly grant administrator permission on all shops in their management range. +By adjust configuration, you're allow mayor or king automatically grant administrator permission on all shops in their management range. ```yaml #Should allow Mayor grant the shop administrator permission on they town. @@ -168,7 +168,7 @@ This causes Towny and QuickShop Hikari to use accounts with the same name but di You can adjust the option in configuration to enable workaround. -NOTE: It will force turned on if detected EssentialsX installed on your server.\ +NOTE: It will force turned on if detected EssentialsX installed on your server. At present, we do not provide a method for disable it. ```yaml diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md new file mode 100644 index 0000000000..0189958495 --- /dev/null +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md @@ -0,0 +1,138 @@ +# UltimateClaims + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and UltimateClaims. + +It ensures that shop creation and trading respect land claim permissions managed by UltimateClaims. + +--- + +## What Does It Do? + +On servers using land-claim plugins, players protect areas of the world from unauthorized interaction. + +Without compatibility: + +- Players may create shops inside claims they do not own. +- Visitors might trade in areas where they should not. +- Claim protection rules might not apply correctly to shops. + +The UltimateClaims compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops inside their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a claim. +- Whether the player has permission in that claim. +- Whether claim rules allow shop interaction. + +If the action violates claim settings, QuickShop blocks it. + +Outside of claims, normal QuickShop behavior applies. + +--- + +## Claim Owner Permissions + +With this module enabled: + +- Claim owners can create and manage shops within their claim. +- Trusted players follow claim permission settings. +- Visitors are restricted based on claim configuration. +- Shop actions outside of claims behave normally. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install UltimateClaims. +2. Install the QuickShop UltimateClaims compat module. +3. Restart your server. + +If UltimateClaims is detected on startup, compatibility activates automatically. + +No additional linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Common options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If UltimateClaims is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Keep owner override enabled for better control. + +This ensures players maintain full control over their protected land. + +--- + +## Common Questions + +### Can players create shops inside someone else's claim? + +Only if the claim permissions allow it. + +Otherwise, QuickShop will block the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can choose to restrict shops to claimed land only. + +### What happens if UltimateClaims is removed? + +QuickShop returns to normal behavior without claim checks. + +--- + +## Summary + +The UltimateClaims compat module: + +- Protects claimed land from unauthorized shop usage +- Enforces claim-based permissions +- Integrates smoothly with land-claim servers +- Requires minimal setup + +It is recommended for any server running UltimateClaims. \ No newline at end of file diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md index 87a71a205c..6437754503 100644 --- a/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md @@ -2,8 +2,10 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. Find out more [here](../modules/shops/worldedit.md). + +Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. \ No newline at end of file diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/development/01-getting-start.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/development/01-getting-start.md index 92b773451e..0e78e52367 100644 --- a/i18n/sv-SE/docusaurus-plugin-content-docs/current/development/01-getting-start.md +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/development/01-getting-start.md @@ -6,8 +6,8 @@ This series of articles will help you build extensions for QuickShop-Hikari or i ## License -QuickShop-Hikari is open source using the [GPLv3](https://www.gnu.org/licenses/quick-guide-gplv3.en.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari).\ -You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the GPLv3 agreement. +QuickShop-Hikari is open source using the [AGPLv3](https://www.gnu.org/licenses/agpl-3.0.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari). +You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the AGPLv3 agreement. ## 🚧Don't trust Javadoc too much @@ -48,7 +48,7 @@ QuickShop-Hikari divides operation sources into three types: - Server Main Thread - Async Thread (any other threads but not server main thread) -- Hybird +- Hybrid If you access the API through the wrong thread, QuickShop-Hikari will force a runtime error to be thrown. @@ -58,4 +58,4 @@ For APIs that may trigger network IO or long-time disk IO, you are required not You can see [Util.ensureThread()](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/3d1d271e1106ea1c83cc6068f8232ab7c7860918/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/util/Util.java#L351) and find out the requirements of the different APIs by looking up their use. APIs that do not use Util.ensureThread() are allowed to be called from any thread by default. -You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. +You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. \ No newline at end of file diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md index aa2404c594..7828d414ad 100644 --- a/i18n/sv-SE/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md @@ -10,7 +10,7 @@ ShopManager manager = api.getShopManager(); ## Getting a shop -Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates.\ +Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates. QuickShop-Hikari's store is only bound to one half of "Large Chest", so to get the store, you need to query both the cube itself and its associated cube. The good thing is that there is an API in the plugin that allows you to handle this situation very easily. @@ -71,7 +71,7 @@ manager.deleteShop(shop) // Permanently delete this store, both memory and datab ## Identify a store -Please note that store locations are technically variable and you should not use coordinates to identify a store.\ +Please note that store locations are technically variable and you should not use coordinates to identify a store. Also RuntimeRandomUniqueId should not be used to identify the store, as the name suggests, the value changes every time the server restarts, it should only be used to handle scenarios where the player interacts with the server. ```java diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md index 543f1851da..4f839ed652 100644 --- a/i18n/sv-SE/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md @@ -1,6 +1,6 @@ # 0x05 Per shop permission -QuickShop-Hikari has a per shop permission management system.\ +QuickShop-Hikari has a per shop permission management system. Therefore, for a normal permission node check is not enough, you need to attach an additional check. ## Check with shop diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/development/06-protocol-system.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/development/06-protocol-system.md index 5d37a15536..0380b789f9 100644 --- a/i18n/sv-SE/docusaurus-plugin-content-docs/current/development/06-protocol-system.md +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/development/06-protocol-system.md @@ -15,30 +15,30 @@ This documentation will guide developers through the components, implementation - **Purpose**: Manages packet handling and initialization logic. - **Interface**: `PacketHandler` - **Key Methods**: - - `Map> factories()` - - Retrieves a map of supported `PacketFactory` instances keyed by game versions. - - `void initialize()` - - Initializes the packet handler. - - `Optional> factory(String version)` - - Retrieves a `PacketFactory` for a specific game version. + - `Map> factories()` + - Retrieves a map of supported `PacketFactory` instances keyed by game versions. + - `void initialize()` + - Initializes the packet handler. + - `Optional> factory(String version)` + - Retrieves a `PacketFactory` for a specific game version. ### 2. **PacketFactory** - **Purpose**: Creates and sends specific packet types. - **Interface**: `PacketFactory` - **Supported Packets**: - - **Spawn Packet**: - - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. - - Example Use: Representing shop items visually. - - **Metadata Packet**: - - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. - - Example Use: Updating item display name or properties. - - **Velocity Packet**: - - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. - - Example Use: Custom animations for virtual items. - - **Destroy Packet**: - - Removes the entity from the client view. Created using `createDestroyPacket()`. - - Example Use: Unloading or removing a virtual display item. + - **Spawn Packet**: + - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. + - Example Use: Representing shop items visually. + - **Metadata Packet**: + - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. + - Example Use: Updating item display name or properties. + - **Velocity Packet**: + - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. + - Example Use: Custom animations for virtual items. + - **Destroy Packet**: + - Removes the entity from the client view. Created using `createDestroyPacket()`. + - Example Use: Unloading or removing a virtual display item. Developers implementing custom `PacketFactory` should ensure these packets are correctly handled and optimized for performance. @@ -46,24 +46,24 @@ Developers implementing custom `PacketFactory` should ensure these packets are c - **Purpose**: Oversees the lifecycle of virtual display items and integrates with packet handlers. - **Key Features**: - - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). - - Manages virtual display items mapped to chunks. - - Provides thread-safe operations for adding and removing display items. + - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). + - Manages virtual display items mapped to chunks. + - Provides thread-safe operations for adding and removing display items. ### 4. **VirtualDisplayItem** - **Purpose**: Represents a virtual item displayed to players. - **Key Features**: - - Generates and caches packets for spawning, metadata, velocity, and destruction. - - Manages packet senders for each player. - - Handles spawn and removal operations dynamically. + - Generates and caches packets for spawning, metadata, velocity, and destruction. + - Manages packet senders for each player. + - Handles spawn and removal operations dynamically. ### 5. **ProtocolLibHandler and PacketEventsHandler** - **Purpose**: Provide implementations of `PacketHandler` using ProtocolLib and PacketEvents, respectively. - **Differences**: - - `ProtocolLibHandler` leverages ProtocolLib API. - - `PacketEventsHandler` uses the PacketEvents library. + - `ProtocolLibHandler` leverages ProtocolLib API. + - `PacketEventsHandler` uses the PacketEvents library. --- @@ -140,11 +140,11 @@ public class CustomPacketFactory implements PacketFactory { Packet factories are provided for specific game versions through two primary implementations: - **ProtocolLib**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` - **PacketEvents**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` --- diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md new file mode 100644 index 0000000000..aebc035f87 --- /dev/null +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md @@ -0,0 +1,297 @@ +# Interaction System (Developer Guide) + +The Interaction System allows developers to fully customize how players interact with shops. + +As of 6.2.0.11, the system has been redesigned to be: + +- Modular +- Extensible +- Thread-safe +- Fully customizable by third-party addons + +This guide will walk you through: + +1. What the Interaction System is +2. Getting the `InteractionManager` +3. Understanding `InteractionType` +4. Understanding `InteractionBehavior` +5. Registering custom interactions +6. Best practices + +--- + +# Overview + +The Interaction System is composed of three main components: + +| Component | Purpose | +| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| `InteractionType` | Describes **what kind of click happened** (standing, sneaking, left-click, sign, shopblock, etc.) | +| `InteractionBehavior` | Describes **what action should happen** when that type is triggered | +| `InteractionManager` | Central registry that manages interactions and behaviors | + +This separation allows developers to: + +- Add new click types +- Add new behaviors +- Override existing ones +- Extend QuickShop without modifying core code + +--- + +# Getting the InteractionManager + +To begin registering custom interactions, you must retrieve the `InteractionManager` instance. + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +If you are working directly with the plugin instance: + +```java +InteractionManager manager = QuickShop.getInstance().getInteractionManager(); +``` + +Once obtained, you can: + +- Register new interaction types +- Register new behaviors +- Override existing behaviors + +--- + +# Understanding InteractionType + +`InteractionType` represents **how** a player interacted with a shop. + +Examples include: + +- `STANDING_LEFT_CLICK_SIGN` +- `STANDING_RIGHT_CLICK_SHOPBLOCK` +- `SNEAKING_LEFT_CLICK_CONTAINER` +- etc. + +Each `InteractionType` defines: + +- Player stance (standing/sneaking) +- Click type (left/right) +- Target (sign/shopblock/container) + +InteractionTypes do NOT define behavior — they only define the trigger. + +--- + +# Understanding InteractionBehavior + +`InteractionBehavior` defines **what happens** when an interaction is triggered. + +Examples of built-in behaviors: + +- `TRADE_INTERACTION` +- `TRADE_UI` +- `CONTROL_PANEL` +- `CONTROL_PANEL_UI` +- `NONE` + +A behavior: + +- Executes logic +- May open GUIs +- May send chat panels +- May directly trade items +- Can cancel or modify flow + +This separation makes it easy to reuse behaviors across multiple interaction types. + +--- + +# Registering Custom Interactions + +There are two things you can register: + +- A custom `InteractionType` +- A custom `InteractionBehavior` + +--- + +## Creating a Custom InteractionBehavior + +Create a class implementing `InteractionBehavior`. + +Example: + +```java +public class MyTradeBehavior implements InteractionBehavior { + + @Override + public String getKey() { + return "MY_CUSTOM_TRADE"; + } + + @Override + public void execute(InteractionClick click) { + Player player = click.getPlayer(); + Shop shop = click.getShop(); + + player.sendMessage("You triggered my custom interaction!"); + + // Add your custom logic here + } +} +``` + +Then register it: + +```java +InteractionManager manager = api.getInteractionManager(); +manager.behavior(new MyTradeBehavior()); +``` + +Now your behavior is available for use. + +--- + +## Creating a Custom InteractionType + +You may also register custom interaction types if you want to introduce new trigger definitions. + +Example: + +```java +public class MyCustomInteraction implements InteractionType { + + @Override + public String getKey() { + return "STANDING_DOUBLE_CLICK_SIGN"; + } + + @Override + public boolean matches(InteractionClick click) { + // Define custom logic to detect this interaction + return click.isStanding() + && click.isSign() + && click.isDoubleClick(); + } +} +``` + +Register it: + +```java +manager.interaction(new MyCustomInteraction()); +``` + +--- + +# Binding Types to Behaviors + +The InteractionManager internally maps interaction types to behaviors based on configuration and registration order. + +Once your behavior is registered: + +- It can be referenced in `interaction.yml` +- Or attached programmatically + +Example interaction.yml usage: + +```yaml +STANDING_LEFT_CLICK_SIGN: MY_CUSTOM_TRADE +``` + +--- + +# The InteractionClick Object + +When your behavior executes, you receive an `InteractionClick` object. + +It provides: + +- `getPlayer()` +- `getShop()` +- `getLocation()` +- `isSneaking()` +- `isSign()` +- `isShopBlock()` +- etc. + +This gives full context for safe execution. + +--- + +# Advanced: Overriding Built-in Behavior + +If you register a behavior using the same key as an existing one, your behavior can override the default. + +⚠️ Be careful when doing this — you are replacing core functionality. + +--- + +# Best Practices + +### Always Use Unique Keys + +Avoid naming collisions: + +``` +MYPLUGIN_CUSTOM_BEHAVIOR +``` + +### Keep Behavior Lightweight + +Do not block the main thread with: + +- Heavy database calls +- File IO +- Network calls + +Use async tasks if needed. + +### Respect Permissions + +Always validate: + +```java +if (!player.hasPermission("myplugin.use")) { + return; +} +``` + +### Avoid Hard Overrides Unless Necessary + +Instead of replacing built-in behaviors, consider extending them. + +--- + +# Example: Full Minimal Implementation + +```java +public class ExampleAddon { + + public void register(QuickShopAPI api) { + + InteractionManager manager = api.getInteractionManager(); + + manager.behavior(new MyTradeBehavior()); + manager.interaction(new MyCustomInteraction()); + } +} +``` + +--- + +# Conclusion + +The Interaction System is designed to allow: + +- Full extensibility +- Clean separation of triggers and actions +- Easy integration for third-party developers + +By retrieving the `InteractionManager`: + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +You gain full control over how shops respond to player actions. \ No newline at end of file diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/development/08-tax-manager.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/development/08-tax-manager.md new file mode 100644 index 0000000000..72a56f9e88 --- /dev/null +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/development/08-tax-manager.md @@ -0,0 +1,266 @@ +# Tax System (Developer Guide) + +The QuickShop tax system allows server owners and developers to define how transaction taxes are calculated, distributed, and extended. + +As of 6.2.0.11, the tax system has been fully rewritten to provide: + +- A flexible TaxManager +- Pluggable TaxProvider support +- Progressive taxation +- Tax targeting (shop owner, interacting player, or both) +- Custom extension capability for third-party addons + +This guide explains how to work with the tax system programmatically. + +--- + +# Overview + +The tax system is composed of three core components: + +TaxManager +Responsible for coordinating tax calculation and execution. + +TaxProvider +Defines how tax values are calculated. + +TaxRates +Represents calculated tax results for a transaction. + +The system is designed to allow custom providers to be registered and used without modifying core logic. + +--- + +# Getting the TaxManager + +To work with the tax system, retrieve the TaxManager from the ShopManager. + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +Once obtained, you can: + +- Access current tax configuration +- Register custom tax providers +- Calculate tax values +- Hook into tax events + +--- + +# How the Tax System Works + +During a shop transaction: + +1. A base price is determined. +2. The TaxManager selects the active TaxProvider. +3. The TaxProvider calculates applicable tax. +4. A TaxRates object is produced. +5. The system applies the tax to: + + - Shop owner + - Interacting player + - Or both (depending on configuration) + +This architecture allows tax behavior to be modified without altering transaction logic. + +--- + +# TaxProvider + +A TaxProvider defines how tax values are calculated. + +You may create your own provider to implement: + +- Progressive tax brackets +- Flat percentage tax +- Conditional tax rules +- Region-based tax +- Rank-based tax +- Time-based tax + +Example minimal provider: + +```java +public class MyCustomTaxProvider implements TaxProvider { + + @Override + public TaxRates calculateTax(TaxContext context) { + + double basePrice = context.getPrice(); + + double taxAmount = basePrice * 0.05; // 5% flat tax + + return new TaxRates() + .ownerTax(taxAmount) + .buyerTax(0.0); + } +} +``` + +Then register it: + +```java +taxManager.provider(new MyCustomTaxProvider()); +``` + +Once registered, your provider will be used for tax calculations. + +--- + +# TaxRates + +TaxRates represents the result of a tax calculation. + +It typically contains: + +- Owner tax amount +- Buyer tax amount +- Total tax impact +- Metadata (if applicable) + +The transaction system will read from TaxRates and apply deductions accordingly. + +--- + +# Progressive Taxation + +The built-in system supports progressive tax structures. + +This allows server administrators to tax based on: + +- Player balance +- Shop owner balance +- Configured tax brackets + +Example configuration concept: + +- 0–10,000 balance → 1% tax +- 10,000–100,000 → 2% tax +- 100,000+ → 3% tax + +Developers can extend or override this logic inside a custom TaxProvider. + +--- + +# Targeting Tax + +The new tax system allows taxes to be applied to: + +- Shop owner +- Interacting player +- Both + +This is controlled via configuration, but custom providers can override distribution logic by adjusting TaxRates output. + +Example: + +```java +return new TaxRates() + .ownerTax(basePrice * 0.02) + .buyerTax(basePrice * 0.01); +``` + +--- + +# Registering a Custom TaxProvider + +To replace or extend tax logic: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); + +taxManager.provider(new MyCustomTaxProvider()); +``` + +You may register only one primary provider at a time. If multiple providers are needed, implement internal delegation within your custom provider. + +--- + +# Tax Events + +The tax system integrates with the event system. + +The modern event used is: + +ShopEnhancedTaxEvent + +This replaces legacy tax events and provides improved context, including: + +- Transaction builder reference +- TaxRates object +- Modification capability before final execution + +You can listen for the event and modify tax behavior dynamically: + +```java +@EventHandler +public void onTax(ShopEnhancedTaxEvent event) { + + TaxRates rates = event.getTaxRates(); + + // Example: Give VIP players reduced owner tax + if (event.getOwner().hasPermission("vip.tax.discount")) { + rates.ownerTax(rates.getOwnerTax() * 0.5); + } +} +``` + +--- + +# Best Practices + +Always keep tax calculations lightweight. + +Avoid: + +- Heavy database queries inside calculateTax +- Blocking network calls +- Long-running computations + +If complex logic is required, pre-cache required data outside the tax execution path. + +Ensure negative tax values are not returned unless intentional. + +Always validate final amounts before applying modifications. + +Respect configuration hierarchy unless intentionally overriding it. + +--- + +# Example Full Implementation + +```java +public class ExampleTaxAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + TaxManager taxManager = manager.taxManager(); + + taxManager.provider(new MyCustomTaxProvider()); + } +} +``` + +--- + +# Conclusion + +The new tax system is designed for: + +- Flexibility +- Extensibility +- Clean separation of concerns +- Future expansion + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +You gain full control over how QuickShop calculates and applies tax during transactions. \ No newline at end of file diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/development/09-layout-provider.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/development/09-layout-provider.md new file mode 100644 index 0000000000..55e3cd3e91 --- /dev/null +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/development/09-layout-provider.md @@ -0,0 +1,275 @@ +# Shop Layout Provider (Developer Guide) + +The Shop Layout Provider system allows developers to customize how shop signs are structured and rendered. + +As of 6.2.0.11, shop layouts are no longer hardcoded. Instead, they are controlled through the `IShopLayoutProvider` interface, which allows: + +- Custom sign line ordering +- Per-shop-type layouts (BUYING, SELLING, FROZEN, or custom types) +- Dynamic layout resolution +- Complete replacement of the default layout system + +This guide explains how to access, override, and implement a custom layout provider. + +--- + +# Overview + +The layout provider controls how shop sign lines are arranged. + +Instead of hardcoding: + +Line 1 → Header +Line 2 → Trading info +Line 3 → Item +Line 4 → Price + +The system now allows full customization through: + +- Config-based layout definitions +- Custom `IShopLayoutProvider` implementations +- Runtime overrides + +The default implementation is `SimpleShopLayoutProvider`. + +--- + +# Accessing the Layout Provider + +To retrieve the current layout provider: + +```java +ShopManager manager = api.getShopManager(); +IShopLayoutProvider provider = manager.shopLayoutProvider(); +``` + +To replace the layout provider with a custom one: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Once replaced, your implementation will control how shop layouts are generated. + +--- + +# Understanding IShopLayoutProvider + +`IShopLayoutProvider` defines how layout data is retrieved and resolved. + +It is responsible for: + +- Providing layout configuration per shop type +- Determining which layout to use +- Supplying formatted line keys +- Allowing future extensibility + +The default implementation reads layout definitions from configuration and applies them based on shop type. + +--- + +# Default Layout Example + +The default configuration-based layout looks like this: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +Each line maps to a layout component key. + +An empty string (`""`) leaves that line blank. + +The layout provider resolves these keys into actual sign content. + +--- + +# Creating a Custom Layout Provider + +To override the default behavior, implement `IShopLayoutProvider`. + +Example minimal implementation: + +```java +public class MyCustomLayoutProvider implements IShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + + ShopLayout layout = new ShopLayout(); + + layout.setLine(1, "Custom Header"); + layout.setLine(2, "Owner: " + shop.getOwnerName()); + layout.setLine(3, shop.getItem().getType().name()); + layout.setLine(4, "$" + shop.getPrice()); + + return layout; + } +} +``` + +Then register it: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Your layout will now control all shop sign formatting. + +--- + +# Per-Type Layout Control + +Because the system no longer depends on the legacy ShopType enum, layouts can support: + +- Built-in types (BUYING, SELLING, FROZEN) +- Custom shop types +- Addon-defined shop types + +Your provider can determine layout logic dynamically: + +```java +@Override +public ShopLayout provideLayout(Shop shop) { + + if (shop.getShopType().key().equals("FROZEN")) { + return frozenLayout(shop); + } + + return defaultLayout(shop); +} +``` + +This allows conditional formatting, localization adjustments, or special event styling. + +--- + +# Advanced Customization + +A custom layout provider can: + +- Pull data from external plugins +- Inject dynamic placeholders +- Modify layout per player +- Apply formatting logic +- Override color schemes +- Apply region-based formatting +- Implement animated sign systems + +Because the layout provider is resolved at runtime, you can compute layouts dynamically instead of reading static config. + +--- + +# Replacing vs Extending the Default Provider + +You have two options: + +Replace entirely: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Or extend the default implementation: + +```java +public class ExtendedLayoutProvider extends SimpleShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + ShopLayout base = super.provideLayout(shop); + + base.setLine(1, "[Extended] " + base.getLine(1)); + + return base; + } +} +``` + +Extending is safer if you only want to modify small portions. + +--- + +# Best Practices + +Keep layout generation lightweight. + +Avoid: + +- Heavy database queries +- Blocking IO +- Complex network calls + +Layout generation runs during shop updates and sign refresh events. + +Always handle null values safely. + +Ensure layout line count does not exceed sign limits. + +Avoid hardcoding shop type names unless necessary. + +If your layout supports custom shop types, validate their keys properly. + +--- + +# Example Full Registration + +```java +public class LayoutAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + + manager.shopLayoutProvider(new MyCustomLayoutProvider()); + } +} +``` + +--- + +# Conclusion + +The Shop Layout Provider system allows complete control over shop sign structure. + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +``` + +And setting: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +You can redefine how every shop is displayed on the server. + +This system was designed to support: + +- Extensibility +- Custom shop types +- Localization +- Dynamic formatting +- Future expansion \ No newline at end of file diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/faq/compare-reremake.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/faq/compare-reremake.md index aaa1a9e507..6b39f02520 100644 --- a/i18n/sv-SE/docusaurus-plugin-content-docs/current/faq/compare-reremake.md +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/faq/compare-reremake.md @@ -64,7 +64,7 @@ If you are a Reremake user, you may be confused about the differences between Hi ## Which one should I use? Well, it depends on what your needs are.\ -If you have an old server (<1.20) instance, Reremake is your only choice.\ +If you have an old server ({'<'}1.20) instance, Reremake is your only choice.\ ~~If you are in China which has GFW interfere, you also should consider Reremake because it doesn't need to load libraries from Global Internet.~~ Solved in 6.0.0.0. If none of these applies, give Hikari a try! diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md index 551f579e7c..172be3a69b 100644 --- a/i18n/sv-SE/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md @@ -1,8 +1,8 @@ # Where Addons/Compacts is -Addons and Compatilibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. +Addons and Compatibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. -- Open Modrinth versions page, locate the version your're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) +- Open Modrinth versions page, locate the version you're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) - Frantically slide your mouse wheel down until the lowest end of the page. - You get it! diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/internal/database-schema.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/internal/database-schema.md index fea685e4fc..45e04adb56 100644 --- a/i18n/sv-SE/docusaurus-plugin-content-docs/current/internal/database-schema.md +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/internal/database-schema.md @@ -4,17 +4,17 @@ This chapter will explain the implementation details of QuickShop Hikari's datab ## Tables -This section explains the database tables created by QuickShop-Hikari.\ -Unless otherwise specified, the initial `qs_` in table name is the table prefix.\ +This section explains the database tables created by QuickShop-Hikari. +Unless otherwise specified, the initial `qs_` in table name is the table prefix. For the latest code definition for each table, see: [DataTables.java](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/hikari/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/database/DataTables.java) ### `data` -This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information.\ -No matter what, a data record should not be modified after it is created, until it got deleted.\ +This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information. +No matter what, a data record should not be modified after it is created, until it got deleted. Any new changes to the shop should create a new copy, apply the changes to the copy, and insert it as a new record. -Basiclly, Copy-on-write. +Basically, Copy-on-write. A data record only be deleted from the database when no any table references their `data_id`. @@ -29,7 +29,7 @@ A data record only be deleted from the database when no any table references the | unlimited | BIT NOT NULL | 0 | Indicates whether this store is an unlimited store, 0=Limited, 1=Unlimited | | hologram | BIT NOT NULL | 0 | Indicates the suspension status of this store's display item, 0=Follow global settings, 1=Disabled | | tax_account | VARCHAR(36) | NULL | The uuid for tax account, If it is not NULL, tax will be paid to the specified account | -| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serilized to JSON string | +| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serialized to JSON string | | extra | LONGTEXT | Empty Yaml | Used to store experimental settings of QuickShop Hikari or persistent data of other plugins | | inv_wrapper | VARCHAR(255) NOT NULL | N/A | Unique identifier for InventoryWrapper for this shop data entry | | inv_symbol_link | TEXT NOT NULL | N/A | Unique Inventory symbol used to pass to InventoryWrapper, for locating inventory | @@ -38,7 +38,7 @@ A data record only be deleted from the database when no any table references the ### `shops` -This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes.\ +This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes. Multiple `shop_id` can correspond to the same `data_id`. | Column Name | DataType | Default | Description | diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/modules/cmd-alias.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/modules/cmd-alias.md index 53f1577685..e6ed381c0d 100644 --- a/i18n/sv-SE/docusaurus-plugin-content-docs/current/modules/cmd-alias.md +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/modules/cmd-alias.md @@ -23,7 +23,7 @@ custom-commands: - cshop ``` -Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect.\ +Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect. The effect should be like this: ![command-alias](./img/command-alias.png) diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/modules/datasource.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/modules/datasource.md index 6fc1bd8931..3fd3a8bdee 100644 --- a/i18n/sv-SE/docusaurus-plugin-content-docs/current/modules/datasource.md +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/modules/datasource.md @@ -48,7 +48,7 @@ Execute the `/quickshop export` command in console, quickshop will export a zip ![exported data](img/database-export.png) -Stop your database, switch the datasource, and start the server.\ +Stop your database, switch the datasource, and start the server. You may noticed all shops are gone, because new datasources had no data inside, we will restore them from export. Rename that exported ZIP file to `recovery.zip`, execute `/quickshop recovery` and restart your server, all shops should back. diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/modules/itemmatcher.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/modules/itemmatcher.md index 56be243019..922907be27 100644 --- a/i18n/sv-SE/docusaurus-plugin-content-docs/current/modules/itemmatcher.md +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/modules/itemmatcher.md @@ -4,7 +4,7 @@ ItemMatcher is a utility used by QuickShop-Hikari to compare the items, it is th :::caution -If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse.\ +If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse. **TL;DR: Keep default unless you know what you're doing.** ::: @@ -26,10 +26,10 @@ matcher: work-type: 1 ``` -By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility.\ +By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility. But still, you can toggle to QuickShop Item Matcher if you need to customize the comparing or running QuickShop on the server jar which have bug affect the Bukkit comparing system. -## Customize the metadata compareing +## Customize the metadata comparing Customize only works under QuickShop Item Matcher. diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md index fc2af69d2b..d04e8f2783 100644 --- a/i18n/sv-SE/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md @@ -4,7 +4,7 @@ ItemStack Loader is a workaround for loading the Bukkit ItemStack. :::caution -Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossble. +Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossible. ::: diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/modules/localization.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/modules/localization.md index e9121e1a36..d47589ab9a 100644 --- a/i18n/sv-SE/docusaurus-plugin-content-docs/current/modules/localization.md +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/modules/localization.md @@ -10,7 +10,7 @@ To help translate QuickShop-Hikari, please visit our [Crowdin Homepage](https:// ## Crowdin OTA -QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will overrided when you reload QuickShop-Hikari or restart your server. +QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will override when you reload QuickShop-Hikari or restart your server. Your installation will keep translations up-to-date without any touch. @@ -110,6 +110,16 @@ To disable the CrowdinOTA, please add it in the startup flag: -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager.enableCrowdinOTA=false ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +use-crowdin-ota: false +``` + ### Self-Hosted OTA Server If you self-hosted our translation server by using [CrowdinCopyDeploy](https://github.com/Ghost-chu/CrowdinCopyDeploy) tool, you're able to change the OTA server to yourself server. @@ -118,4 +128,12 @@ If you self-hosted our translation server by using [CrowdinCopyDeploy](https://g -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager= ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml +Use + +```yaml +crowdin-host: +``` \ No newline at end of file diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/modules/shops/benefit.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/modules/shops/benefit.md index 4d7a9c8f42..c59d92e6d1 100644 --- a/i18n/sv-SE/docusaurus-plugin-content-docs/current/modules/shops/benefit.md +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/modules/shops/benefit.md @@ -37,3 +37,13 @@ By default, for security, QuickShop-Hikari disallow add offline players into sho ```bash -Dcom.ghostchu.quickshop.command.subcommand.SubCommand_Benefit.allowOffline=true ``` + +### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +shop.allow-offline-benefit: true +``` \ No newline at end of file diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/modules/shops/control-panel b/i18n/sv-SE/docusaurus-plugin-content-docs/current/modules/shops/control-panel new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/modules/shops/control-panel @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/modules/shops/history.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/modules/shops/history.md index fa891adeab..195b64a042 100644 --- a/i18n/sv-SE/docusaurus-plugin-content-docs/current/modules/shops/history.md +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/modules/shops/history.md @@ -24,7 +24,7 @@ The History GUI displays the details of each recorded transaction and other usef ### Transaction details -When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed.\ +When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed. If you are checking the history of more than one store, the player head will be replaced with an item from the corresponding store. ![history-gui](./img/history-gui.png) diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md new file mode 100644 index 0000000000..c5ed3b3fe4 --- /dev/null +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md @@ -0,0 +1,90 @@ +# Shop Types + +QuickShop supports multiple shop types, allowing shops to behave differently depending on their mode. + +The built-in shop types are: + +- Selling +- Buying +- Frozen + +Each type changes how the shop interacts with players. + +--- + +## Selling Shop + +A Selling shop allows players to: + +- Buy items from the shop owner +- Pay money to receive items + +This is the most common shop type. + +--- + +## Buying Shop + +A Buying shop allows players to: + +- Sell items to the shop owner +- Receive money in exchange + +This is commonly used for: + +- Resource collection +- Server buy-back shops +- Automated material sinks + +--- + +## Frozen Shop + +A Frozen shop temporarily disables trading. + +While frozen: + +- No buying is allowed +- No selling is allowed +- The shop remains intact +- Staff or admins can manage it + +This is useful for: + +- Temporary suspensions +- Investigation +- Event locking +- Maintenance + +--- + +## Switching Shop Types + +Shop types can be changed through: + +- Control panel +- GUI control panel +- Admin commands + +Frozen mode is also available via: + +/qs freeze + +--- + +## Custom Shop Types + +As of 6.2.x, the system supports extensible shop types internally. + +While server owners use the built-in types, the system now allows future expansion through addons. + +--- + +## Summary + +Shop types allow you to: + +- Control how money flows +- Enable buy-back mechanics +- Temporarily disable shops +- Build advanced economic systems \ No newline at end of file diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md new file mode 100644 index 0000000000..18e0a47407 --- /dev/null +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md @@ -0,0 +1,217 @@ +# Sign Layout + +QuickShop allows you to fully customize how shop signs are structured. + +You can change: + +- What appears on each line +- The order of information +- Layout per shop type +- Whether certain lines are blank + +This gives you complete control over how shops look on your server. + +--- + +## How Sign Layout Works + +Shop signs have four lines. + +Instead of being hardcoded, QuickShop uses a configurable layout system. + +Each shop type can have its own layout: + +- SELLING +- BUYING +- FROZEN + +You define what each line displays using layout keys. + +--- + +## Configuration Location + +Sign layout is configured in `config.yml` under: + +```yaml +layout: +``` + +Example default configuration: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## Available Layout Keys + +Each line value refers to a built-in layout component. + +Common layout keys include: + +- `header` – The shop header line +- `trading` – Buy/Sell direction information +- `item` – Item name +- `price` – Shop price + +These keys are automatically formatted using your language file and formatting settings. + +--- + +## Leaving a Line Blank + +To leave a line empty, use: + +```yaml +line2: "" +``` + +This is useful if you want: + +- Minimalist signs +- Cleaner layouts +- Custom spacing +- Decorative formatting + +--- + +## Customizing Per Shop Type + +Each shop type can have a different layout. + +For example: + +```yaml +layout: + + SELLING: + line1: "header" + line2: "item" + line3: "price" + line4: "" + + BUYING: + line1: "header" + line2: "price" + line3: "item" + line4: "" + + FROZEN: + line1: "header" + line2: "" + line3: "item" + line4: "Frozen" +``` + +This allows you to visually differentiate: + +- Selling shops +- Buying shops +- Frozen shops + +--- + +## Practical Examples + +### Minimal Style + +```yaml +layout: + SELLING: + line1: "item" + line2: "price" + line3: "" + line4: "" +``` + +### Compact Economy Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "price" + line3: "item" + line4: "" +``` + +### Large Clear Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## How Updates Affect Layout + +When you change the layout: + +- Existing shop signs will update automatically when refreshed. +- New shops will use the updated format immediately. + +If needed, you can reload QuickShop to apply changes. + +--- + +## Best Practices + +- Keep important information visible (price and item). +- Avoid overly complex formatting. +- Test layout changes before deploying on large servers. +- Use different layouts for BUYING and SELLING to reduce confusion. + +--- + +## Common Questions + +### Can I add more than four lines? + +No. +Minecraft signs are limited to four lines. + +### Can I add colors? + +Colors are controlled by your language file and formatting settings. + +### Can I change layout without restarting? + +Yes, but reloading or refreshing shops is recommended to ensure full update. + +--- + +## Summary + +The Sign Layout system allows you to: + +- Fully customize shop sign appearance +- Create per-type layouts +- Simplify or expand shop information +- Improve clarity for players + +All layout customization is handled inside `config.yml`. diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md new file mode 100644 index 0000000000..980bad10f2 --- /dev/null +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md @@ -0,0 +1,130 @@ +# Shop Sign Waxing + +QuickShop can automatically wax shop signs to prevent players from editing them manually. + +Waxing protects the integrity of your shop signs and helps prevent tampering, spoofing, and accidental modification. + +As of modern Minecraft versions, waxed signs cannot be edited unless they are unwaxed first. + +--- + +## What Is Sign Waxing? + +In Minecraft, waxing a sign locks it so that: + +- Players cannot edit the text +- Players cannot modify lines +- Accidental changes are prevented +- Malicious edits are blocked + +When enabled in QuickShop, shop signs are automatically waxed when created. + +--- + +## Why Use It? + +Sign waxing protects against: + +- Players editing price lines +- Changing item names on signs +- Spoofing shop information +- Accidental formatting issues +- Sign hijacking attempts + +On public servers, this feature is strongly recommended. + +--- + +## How It Works + +When a shop is created: + +1. QuickShop generates the shop sign. +2. The sign text is written. +3. The sign is automatically waxed (if enabled). + +If a shop is updated: + +- The sign will be safely updated by QuickShop. +- The wax state is maintained. + +Players cannot manually edit shop signs while waxing is enabled. + +--- + +## Configuration + +To enable or disable sign waxing, edit `config.yml`: + +```yaml +shop: + sign-wax: true +``` + +### true + +- Shop signs are automatically waxed. +- Players cannot edit the sign manually. + +### false + +- Shop signs behave like normal Minecraft signs. +- Players may edit them if permitted by the game. + +--- + +## Recommended Setting + +For most servers: + +```yaml +shop: + sign-wax: true +``` + +This ensures shop data stays accurate and secure. + +--- + +## Common Questions + +### Can admins still modify shop signs? + +QuickShop controls shop sign formatting. +Manual edits are not recommended. + +Admins should use: + +- Control panel +- Shop commands +- Direct configuration changes + +### Does waxing affect shop functionality? + +No. +Waxing only prevents manual text edits. +The shop continues to function normally. + +### Can players un-wax shop signs? + +No. +QuickShop manages the sign state automatically. + +--- + +## Best Practices + +- Keep sign-wax enabled on survival servers. +- Combine sign-wax with proper permissions. +- Avoid manually editing shop signs through other plugins. + +--- + +## Summary + +Sign Waxing: + +- Prevents tampering +- Requires no additional setup + +Enable it once and QuickShop handles the rest. \ No newline at end of file diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/modules/shops/taxes.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/modules/shops/taxes.md new file mode 100644 index 0000000000..1a273fd978 --- /dev/null +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/modules/shops/taxes.md @@ -0,0 +1,92 @@ +# Taxation System + +QuickShop includes a taxation system designed to give server owners more flexibility and control over shop-based income. + +This system was revamped as of 6.2.0.11+ + +The new system allows you to: + +- Apply tax to shop owners +- Apply tax to buyers +- Apply tax to both +- Use progressive tax brackets +- Customize tax behavior in configuration + +This system replaces the legacy tax configuration. + +--- + +## How It Works + +During a transaction: + +1. The shop price is calculated. +2. Tax is calculated based on your configuration. +3. Tax is deducted from the configured target(s). +4. Remaining funds are distributed normally. + +You can configure: + +- Flat percentage tax +- Progressive tax based on player balance +- Tax accounts +- Distribution rules + +--- + +## Progressive Tax + +The new system allows you to tax based on balance brackets. + +Example concept: + +- 0 – 10,000 balance → 1% tax +- 10,000 – 100,000 → 2% tax +- 100,000+ → 3% tax + +This helps prevent extremely wealthy players from dominating the economy. + +--- + +## Who Pays the Tax? + +You can configure whether tax applies to: + +- The shop owner +- The buyer +- Both + +This gives you flexibility depending on your economy design. + +--- + +## Configuration + +All tax-related settings are located under the `shop-tax` section in `config.yml`. + +After updating to 6.2.0.11+, review your tax configuration carefully, as the old tax system has been replaced. + +--- + +## Why Use Tax? + +The taxation system can help: + +- Remove currency from circulation +- Fund server banks or towns +- Create sink mechanics +- Balance inflation +- Reward active players + +--- + +## Summary + +The new taxation system is: + +- Flexible +- Configurable +- Balance-aware +- Designed for modern economy servers + +Make sure to review your configuration after upgrading. \ No newline at end of file diff --git a/i18n/sv-SE/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md b/i18n/sv-SE/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md new file mode 100644 index 0000000000..247c24712d --- /dev/null +++ b/i18n/sv-SE/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md @@ -0,0 +1,161 @@ +# WorldEdit & FAWE Support + +QuickShop includes built-in protection and integration for WorldEdit and FastAsyncWorldEdit (FAWE). + +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. + +You do not need to download or install any additional compatibility plugins. + +--- + +## What This Does + +WorldEdit and FAWE allow administrators and builders to: + +- Copy and paste regions +- Replace large areas of blocks +- Mass-delete regions +- Roll back areas +- Regenerate terrain + +Without protection, these operations could: + +- Create ghost shops +- Leave orphaned shop data in the database +- Duplicate shops unintentionally +- Delete containers without cleaning up shop data +- Cause inconsistencies between world and database + +QuickShop now automatically detects and safely processes WorldEdit and FAWE operations. + +--- + +## Built-In Behavior + +When WorldEdit or FAWE modifies blocks: + +- Shops removed via WorldEdit are properly deleted from the database. +- Shop data stays synchronized with world changes. +- Ghost shops are prevented. +- Mass block replacements will not leave broken shop entries behind. + +This applies to: + +- //set +- //replace +- //cut +- //paste +- //regen +- Region deletion +- Mass container removal + +No configuration is required. + +--- + +## FAWE Support + +FastAsyncWorldEdit (FAWE) is fully supported. + +Because FAWE processes edits asynchronously, QuickShop handles: + +- Region-thread safe processing +- Async block updates +- Safe shop deletion during batch edits + +You do not need to enable anything manually. + +--- + +## Removing Shops with WorldEdit + +If you delete containers (chests, barrels, etc.) using WorldEdit: + +QuickShop will automatically: + +- Detect the block removal +- Unregister the shop +- Clean the database entry +- Prevent ghost shops + +You do not need to run `/qs cleanghost` after WorldEdit usage in normal circumstances. + +--- + +## Copying and Pasting Shops + +If you copy and paste regions that contain shops: + +- Shop data will not duplicate incorrectly. +- Shop IDs remain consistent. +- Invalid pasted shops will not auto-register unless properly created. + +This prevents accidental duplication exploits. + +--- + +## Performance + +WorldEdit and FAWE operations can modify thousands of blocks at once. + +QuickShop processes these safely and efficiently: + +- Batch-aware cleanup +- Thread-safe region access (especially on Folia) +- Minimal performance impact during mass edits + +--- + +## Configuration + +There are no specific WorldEdit configuration options in QuickShop. + +Support is automatic and always enabled if WorldEdit or FAWE is detected. + +If WorldEdit is not installed, no extra code is executed. + +--- + +## Common Questions + +### Do I need the old WorldEdit compatibility jar? + +No. + +As of 6.2.0.11, WorldEdit support is built-in and the separate compatibility module has been removed. + +### Does this work with FAWE? + +Yes. FAWE is fully supported. + +### Will shops break if I use //set air? + +No. Shops will be safely removed and cleaned up. + +### Do I need to restart after installing WorldEdit? + +No. QuickShop detects WorldEdit automatically on startup. + +--- + +## Best Practices + +Even though QuickShop safely handles WorldEdit operations, it is recommended to: + +- Avoid copying shops intentionally unless required +- Use backups before large region edits +- Test large FAWE operations on staging servers when possible + +--- + +## Summary + +QuickShop’s built-in WorldEdit and FAWE integration ensures: + +- Safe mass edits +- No ghost shops +- Automatic database cleanup +- Thread-safe processing +- No extra modules required + +WorldEdit support is now a core feature of QuickShop. \ No newline at end of file diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/addon/limited.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/addon/limited.md index 70af27e240..fae55a8c95 100644 --- a/i18n/th-TH/docusaurus-plugin-content-docs/current/addon/limited.md +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/addon/limited.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -41,8 +35,8 @@ Limit players to purchase up to 16 items per month. /quickshop limit period MONTH ``` -The system is based on the QuickShop-Hikari calendar system.\ -The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year.\ +The system is based on the QuickShop-Hikari calendar system. +The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year. Same for days, months and hours. Available time units: diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/addon/list.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/addon/list.md index 93d182f083..f20b91fd7b 100644 --- a/i18n/th-TH/docusaurus-plugin-content-docs/current/addon/list.md +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/addon/list.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/addon/plan.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/addon/plan.md index 52a6e79cb4..c10ef4df42 100644 --- a/i18n/th-TH/docusaurus-plugin-content-docs/current/addon/plan.md +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/addon/plan.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -18,7 +18,7 @@ Recorded data can be displayed from Hikari v2.0.0.0 onwards, but only after vers - All shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 1000 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `5` in server scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `5` in server scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Player Scope @@ -27,7 +27,7 @@ And still is Plan limitations, the list sorting is disturbed, so the display ord - All owned shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 50 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `4` in player scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `4` in player scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Showcase diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/addon/reforges.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/addon/reforges.md index 2a14509eb7..25fff1752a 100644 --- a/i18n/th-TH/docusaurus-plugin-content-docs/current/addon/reforges.md +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/addon/reforges.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.0.0.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md index 304d39bc05..6f9f51d250 100644 --- a/i18n/th-TH/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.1.1.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -44,7 +38,7 @@ _This is not necessary if you are using an H2 database._ ### Prepare for convert -To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console.\ +To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console. If a player is in the server, the conversion cannot be started. Once the conversion has begun, the server will be locked during the conversion process and no players will be able to join the server during the conversion. diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/addon/shopitemonly.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/addon/shopitemonly.md index c45062f8c2..1ccfe977b3 100644 --- a/i18n/th-TH/docusaurus-plugin-content-docs/current/addon/shopitemonly.md +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/addon/shopitemonly.md @@ -2,17 +2,11 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT - -::: - -This addon prevents players from putting non-store items into store containers.\ +This addon prevents players from putting non-store items into store containers. Does not apply to stores that use the item inventory redirection API (aka. InventoryWrapper API). This Addon will check for container (or transferring) items on events such as the player closing the container or hopper access. diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md new file mode 100644 index 0000000000..9c8b4f7407 --- /dev/null +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md @@ -0,0 +1,55 @@ +# 6.2.0.10 + +## Major Changes + +- Added support for 1.21.6 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.7 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.8 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Some internal updates for packetevents(2.9.0 is now required.) +- Updated Lands support + +## Addon Changes + +- Added MatcherPlus Addon + - Allows support for BreweryX and AdvancedItems stacks in shops with improved matching abilities +- Added FabledSkyblock Compat +- Added Dominion Compat +- Added HuskTowns Compat +- Added IridiumSkyblock Compat +- Added member-create for member creation in ARM compat +- Added admin-override and quickshop.arm.admin permission for admin overrides in ARM + +## Minor Changes + +- Added configurations for the coordinates of the display item. +- Added /qs toggledisplayall on/off server/owned + - Players need to have permission node quickshop.toggledisplayall.admin to toggle all on the server. +- Added ability to use abbreviations in /qs price and /qs create commands such as 2.5k for 2500 +- Added ability to set default display status using shop.default-display in config.yml + +## Fixes + +- Fixed issue with display item being sent to the moon on 1.21.5 +- Fixed issue where TRADE_UI interactions interfered with quick create. +- Fixed issue with displays on protocollib falling through the chest +- Fixed issue with signs on .9 and previous .10 snapshots on early versions +- Implemented some performance improvements for paper servers +- Fixed all outstanding issues with Folia usage.(thanks to RootB33R/SleazLee for contributions) + +## Possible 6.2.0.11 Features + +Here's an outline for some features that may arrive in 6.2.0.11: + +- Additional compats/addons that have been piling up. + - see: https://github.com/QuickShop-Community/QuickShop-Hikari/issues/1756 +- gradle?(interested to see compilation time uplifts) +- Update documentation +- Update configuration comments +- Update configuration system? + - auto updating? + - Allows removal of the update code +- Remove waste spigot modules? + - Any versions of 1.20 that can be discarded due to low use? +- Bug fixing, of course +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... \ No newline at end of file diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md new file mode 100644 index 0000000000..b41c88662a --- /dev/null +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md @@ -0,0 +1,173 @@ +## Outline + +- Update documentation +- Update configuration comments +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... + +# 6.2.0.11 + +## Major Changes + +- Removed Spigot Platform Modules, and stopped loading QS if Spigot is detected. This will mean that unless the protocol changes that we use for display items, QS won't need updated for each version. +- Revamped Economy Code Completely + - New classes for all economy-related systems + - Any economy-related or benefits-related events are incompatible with previous versions. +- Added sign layout customizations per-type allowing you to change how lines are configured, an empty string('') will leave an empty line for that line of the sign. + +``` + #The layout of signs for shops. + layout: + + #The layout of BUYING shops. + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of FROZEN shops. + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of SELLING shops. + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +- Add wildcard support for item blacklist patterns(thanks to bennycallanan) + - Added support for wildcard patterns in the item blacklist configuration, allowing users to block entire categories of items with simple patterns. + + - Features + - Wildcard patterns like \*_AXE and \*_SPAWN_EGG now work in blacklist configuration + - Supports \* for any characters and ? for single character matching + - Case-insensitive pattern matching +- Overhauled GUI system(thanks to Yusakidev) + - Implemented gui.yml configuration file for customizing the GUI. + - Implemented better filtering for qs browse + - Implement GUI system to be more stable, and less error prone. + - Added gui.yml for fully configurable GUI layouts and text + - Browse menu: search, sort (price/name/stock), and filter (all/buying/selling/in-stock) + - Staff menu: search functionality for player/staff selection + - Grouped item pages for better shop browsing + - Refactored all menu pages to use configurable display/lore +- Added worldedit compat to QS internally as it's widely used. +- Revamped the taxation system to be more flexible and easier to configure. + - introduced a new progressive tax system that allows you to tax based on the balance of players.(suggested by YuanYuanOwO) + - introduced the ability to tax the player interacting with the shop, the owner, or both + - all tax-related configurations have been moved under the shop-tax section of the config. this may require reconfiguration of your tax settings. + - added a new ShopEnhancedTaxEvent, deprecated the old ShopTaxEvent. + - Added a new TaxManager, and TaxProvider interfaces, this allows for custom tax providers to be added by addons/third-party developers. + +## Addons/Compats Changes + +- Added UltimateClaims compat +- Added SimpleClaimSystem compat +- Added Quests by Pika addon +- Added BetonQuest addon +- Added Pl3xMap addon +- MatcherPlus Compat Improvements + - Added support for CrazyCrates + - Added support for ExcellentCrates + - Added support for SilkSpawners. +- WorldGuard Compat Improvements(Thanks to golovin12) + - Added clear permission handling: + - Region owners and members automatically have permission to create and trade in their own regions. + - Other players must have the appropriate WorldGuard flags enabled (quickshophikari-create, quickshophikari-trade) to interact with shops. + - If a shop is located outside any region, default QuickShop behavior applies (no extra restrictions) +- Added colored markers based on shop state for bluemap(thanks to YusakiDev) +- Updated dynmap/towny addons to use the new ShopTypeEnhancedEvent instead of ShopTypeEvent. +- Removed worldedit compat, it's now included in the main plugin. +- Added support for global flags to the worldguard compat. + +## Internals/Developer APIs + +- Removed several deprecated methods and classes. +- Revamped the interaction manager. It is now more flexible and allows external additions + - This involves two classes InteractionBehavior and InteractionType. + - InteractionType details the type of interaction such as: STANDING_LEFT_CLICK_SIGN, STANDING_LEFT_CLICK_SHOP + - InteractionBehavior outlines a behavior for an InteractionType such as CONTROL_PANEL and TRADE_UI +- Added UserLimitCalculationEvent, which allows for custom limits to be applied to users. + - This is useful for limiting the number of shops a user can have, or adding on to the existing limits provided by the ranks system without needing to implement a new RankLimiter. +- Added a new ShopLayoutProvider interface, and default implementation. + - This allows for custom layouts to be used for shops, allowing for more customization. + - This also allows for developers to override the default layout provider and create their own implementation. +- How to make your own? + - Implement the classes you would like to then register with the InteractionManager: + - ```java + InteractionManager manager = QuickShop.getInstance().getInteractionManager(); + + manager.interaction(new MyTradeInteraction()); + manager.behavior(new MyTradeBehavior()); + ``` +- Replaced some Apache Commons calls that could be easily replaced with built-in java methods, reduces some calls by ~ 1100ms/method call +- Deprecated the ShopType enum, and the ShopTypeEvent. These are replaced with the new IShopType interface and implementing classes. + - The new event is ShopTypeEnhancedEvent. + - This allows for third-party addons to add their own shop types, and simplifies code checks for translations. +- Updated config system to use Boosted-yaml + - this allows for auto-updating of config files without complex update scripts + - this also allows for the config system to not be minecraft-dependent. +- Replaced logical PaperLib calls with native PaperAPI calls. + +## Minor Changes + +- Bump Java version up to 21 +- Added shop.display-allow-enchants to enable/disable enchantments for display items on shops. +- Added workaround for packetevents not supporting custom enchants on itemstacks for virtual display items. +- Using locale translations for shop-type in mode toggle icon(thanks to ExyiN) +- Bumped Residence version for the compat(thanks to YuanYuanOwO) +- add world whitelist support(thanks to wling-art) +- added /qs database save command, which saves all currently dirty-marked shops to the database. +- Split up interactions _SHOPBLOCK into _SHOPBLOCK and _CONTAINER. + - _SHOPBLOCK relates to shops, where _CONTAINER relates to shop-valid containers that are not currently shops. +- Added inventory as an option for command panel, this is useful for adding a secondary option for players to open a shop's inventory. +- Moved crowdin arguments from system properties to config.yml + - crowdin-host + - use-crowdin-ota + +## Fixes + +- Fixes issue with item price restrictions(thanks to maxcom1) +- Fixes issue with 1.20.x protocol lib displays(thanks to YuanYuanOwO) +- Fixes issue when no item is in hand for itemdebug(thanks to YuanYuanOwO) +- Fixes issue with dominion addon(thanks to YuanYuanOwO) +- Add a simple check to avoid this. If it is not own shop, reject limit request directly.(Thanks to YuanYuanOwO) +- Fix NPE by not setting tax for price in TransactionBuilder(thanks to maxcom1) +- Fixes /quickshop suggestprice to differentiate between buy/sell shops. (Thanks to MidSpike) +- PacketEvents ClassNotFoundException with ProtocolLib(thanks to wling-art) +- Reallocate block state access to region thread for shop creation(thanks to r00tbeerman) +- resolve SLF4J StaticLoggerBinder loading error(thanks to wling-art) +- sign hijacking issue by validating sign facing direction(thanks to wling-art) +- Performance improvements for QuickShop disabling to prevent potential freezes. +- Fixed issue with 1.20.4 packetevents virtual displays not staying put. +- Fixes critical issue in GriefPrevention compatibility plugin. +- Fixes issue with shop owner not getting money when benefits active. +- Fixes for lands addon on folia, Use regionThread for Folia compatibility(thanks to YusakiDev) +- Fixes for TRADE_DIRECT on stacking shops +- Fixes issue for protocollib 5.4.0 with undocumented packet changes. +- Fixes issue where item stacks could be used on creation above the max stack size. +- Fixes issue with BukkitAudiences-related crashes on 1.21.11. +- Fix issue with shop deletion when getting too impatient. +- Fix the permission check issue when a shop owned by a non-owner is transferred to someone else. (thanks to YuanYuanOwO) +- Fix ui with supertool (thanks to YuanYuanOwO) +- Fix issue with logs generating outside debug mode. +- Fix issue with /qs find. +- Fix configuration loading timing. +- Fix configuration loading/creation warning message language. +- Fix command description language key mismatch(thanks to wling-art) +- Fix qs clean command on folia(thanks to wling-art) +- Fix per-player-shop-sign on folia(thanks to wling-art) +- Fix potential recursive deadlock in virtual display packet sending(thanks to wling-art) +- Fix configuration loading/creation warning message language. +- Fix issue with /qs browse and ShopItemOnly addon not behaving properly together on folia. +- Fix issue with PLAN using outdated APIs. +- Fix issue with /qs clean on folia.(thanks to wling-art) +- Fix issue with /qs cleanghost on folia(thanks to wling-art) +- More thread safety fixes for shops on folia.(thanks to wling-art) +- Fix owner payment calculations with benefits(thanks to wling-art) \ No newline at end of file diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md index 8172f9b410..dcc3edc67d 100644 --- a/i18n/th-TH/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md @@ -20,20 +20,20 @@ the ControlComponent object with a custom one that will replace the original dur ### Introduction of the Revamped Packet System 1. **About**: - - A modular and scalable system for managing packets related to virtual display items in Minecraft. - - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. + - A modular and scalable system for managing packets related to virtual display items in Minecraft. + - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. 2. **Custom Packet Factories**: - - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. - - Packet types: - - **Spawn Packet**: Spawns a virtual item entity at a specific location. - - **Metadata Packet**: Updates the visual properties of virtual items. - - **Velocity Packet**: Adds motion/velocity to entities (currently optional). - - **Destroy Packet**: Removes the entity from the client view. + - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. + - Packet types: + - **Spawn Packet**: Spawns a virtual item entity at a specific location. + - **Metadata Packet**: Updates the visual properties of virtual items. + - **Velocity Packet**: Adds motion/velocity to entities (currently optional). + - **Destroy Packet**: Removes the entity from the client view. 3. **Error Handling and Logging**: - - Enhanced debug logs to trace packet-related issues. - - Detailed error messages for missing factories or unregistered listeners. + - Enhanced debug logs to trace packet-related issues. + - Detailed error messages for missing factories or unregistered listeners. #### Improvements: diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md index 7775308722..c6e0948d19 100644 --- a/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md index f420997a9c..38587e3784 100644 --- a/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md index 5ed8182c9a..259c55f342 100644 --- a/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md index 924a37ac49..7fd4596a6a 100644 --- a/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,6 +10,6 @@ This is a BungeeCord plugin, you need install it within your BungeeCord's plugin ## How does it work? -BungeeCord Bridge plugins will register a `quickshop:bungee` channel for fowarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. +BungeeCord Bridge plugins will register a `quickshop:bungee` channel for forwarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. All forwarding is indicated by QuickShop-Hikari on the Spigot server and ends when it is not needed. diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md index 27d68956a8..20fbaf7a0c 100644 --- a/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,5 +10,5 @@ This compatibility module added [Chest Protect](https://www.spigotmc.org/resourc ## How does it work? -This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident.\ +This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident. It also prevents players from creating shops on ChestProtect protected containers. diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md index 220e26d8bb..e1757e7be9 100644 --- a/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/dominion.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/dominion.md new file mode 100644 index 0000000000..e1195278a8 --- /dev/null +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/dominion.md @@ -0,0 +1,138 @@ +# Dominion + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and Dominion. + +It ensures that shop creation and trading respect Dominion’s land and territory protection system. + +--- + +## What Does It Do? + +Dominion allows players or groups to claim land and define territory-based permissions. + +Without compatibility: + +- Players could create shops inside territories they do not control. +- Visitors might trade inside protected dominions. +- Dominion permission rules might not apply to shop interactions. + +The Dominion compat module ensures that: + +- Shop creation respects territory ownership. +- Shop trading follows Dominion permission settings. +- Protected land remains secure from unauthorized shop usage. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a Dominion-controlled area. +- Whether the player has permission within that territory. +- Whether Dominion rules allow shop interaction. + +If the action is not permitted by Dominion settings, QuickShop blocks it. + +If the location is outside any Dominion territory, default QuickShop behavior applies. + +--- + +## Territory Owner Control + +With this module enabled: + +- Territory owners can create and manage shops inside their dominion. +- Trusted members follow territory-based permissions. +- Outsiders are restricted unless explicitly allowed. +- Shop actions respect Dominion’s land rules automatically. + +This prevents unauthorized shop placement inside protected territories. + +--- + +## Installation + +1. Install Dominion. +2. Install the QuickShop Dominion compat module. +3. Restart your server. + +The module activates automatically if Dominion is detected. + +No manual configuration linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside dominions +whitelist-mode: false + +# Allow territory owners to override shop permissions +allow-owner-override: true +``` + +If Dominion is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For servers using Dominion: + +- Restrict shop creation to territory owners or trusted members. +- Prevent shop creation in wilderness if desired. +- Allow dominion owners to manage shop permissions. +- Review Dominion permission settings to align with shop behavior. + +This ensures protected territories remain secure and organized. + +--- + +## Common Questions + +### Can players create shops in someone else's dominion? + +Only if Dominion permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You may allow or restrict shops outside dominions. + +### What happens if Dominion is removed? + +QuickShop returns to normal behavior and stops checking Dominion territories. + +--- + +## Summary + +The Dominion compat module: + +- Enforces territory-based permissions +- Prevents unauthorized shop creation +- Protects claimed land from misuse +- Integrates seamlessly with Dominion + +It is recommended for servers running Dominion. \ No newline at end of file diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md index 743d3ae666..2ac9b10488 100644 --- a/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md new file mode 100644 index 0000000000..07ba4ada66 --- /dev/null +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md @@ -0,0 +1,133 @@ +# FabledSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and FabledSkyblock. + +It ensures that shop creation and trading properly respect island boundaries and island permissions. + +--- + +## What Does It Do? + +On Skyblock servers, players build and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Players might trade in areas they should not. +- Island protection rules might not apply to shops. + +The FabledSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members behave correctly with shops. +- Island visitors are restricted appropriately. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a FabledSkyblock island. +- Whether the player has permission on that island. +- Whether island settings allow the action. + +If the action is not permitted by island rules, QuickShop will deny it. + +--- + +## Island Ownership Rules + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow island permission settings. +- Visitors can only trade if island permissions allow it. +- Outside of islands, default QuickShop behavior applies. + +--- + +## Installation + +1. Install FabledSkyblock. +2. Install the QuickShop FabledSkyblock compat module. +3. Restart your server. + +The module activates automatically if FabledSkyblock is detected. + +No manual linking is required. + +--- + +## Configuration + +If the module provides configuration options, they will appear in its `config.yml`. + +Typical options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If FabledSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most Skyblock servers: + +- Allow shop creation only inside islands. +- Prevent trading in the void or wilderness. +- Let island owners control shop permissions. +- Use island rank systems to manage shop access. + +This helps maintain economic balance between islands. + +--- + +## Common Questions + +### Can players create shops in the void? + +Only if your configuration allows it. +Most servers disable shop creation outside islands. + +### Does this affect island war or PvP modes? + +No. +The module only checks island ownership and permissions for shop interactions. + +### What happens if FabledSkyblock is removed? + +QuickShop returns to normal behavior. + +--- + +## Summary + +The FabledSkyblock compat module: + +- Protects island economies +- Enforces island permission rules +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is strongly recommended for any server running FabledSkyblock. \ No newline at end of file diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md index 81b13d2c6b..32614d3019 100644 --- a/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md @@ -2,17 +2,17 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -GreifPrevention compatibility module added compaitibility with GF. +GreifPrevention compatibility module added compatibility with GF. ## How does it work This module allow QuickShop-Hikari check if player have permission to create or use QuickShop in specific region. -And delete shops when claim removed, untrusted, unclimed, expired, resized or subclaim created. +And delete shops when claim removed, untrusted, unclaimed, expired, resized or subclaim created. ## Configuration diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md new file mode 100644 index 0000000000..e71b34d462 --- /dev/null +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md @@ -0,0 +1,139 @@ +# HuskTowns + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and HuskTowns. + +It ensures that shop creation and trading respect town and claim permissions defined by HuskTowns. + +--- + +## What Does It Do? + +HuskTowns allows players to create towns and claim land. + +Without compatibility: + +- Players could create shops inside towns they do not belong to. +- Visitors might trade inside protected towns. +- Town permission rules might not apply to shop interactions. + +The HuskTowns compat module ensures that: + +- Shop creation respects town ownership. +- Trading follows town permission settings. +- Town members and visitors are handled correctly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a HuskTowns claim. +- Whether the player is a town member, trusted player, or outsider. +- Whether the town's permission settings allow the action. + +If the action is not permitted by town rules, QuickShop blocks it. + +Outside of town claims, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Town Owner Control + +With this module enabled: + +- Town owners can create and manage shops inside their town. +- Town members follow town-based permission settings. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect town claim protection. + +This prevents unauthorized shop placement and trading inside protected towns. + +--- + +## Installation + +1. Install HuskTowns. +2. Install the QuickShop HuskTowns compat module. +3. Restart your server. + +The module activates automatically if HuskTowns is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside towns +whitelist-mode: false + +# Allow town owners to override shop permissions +allow-owner-override: true +``` + +If HuskTowns is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For town-based survival servers: + +- Restrict shop creation to town members. +- Allow trading only where town permissions permit. +- Prevent shop creation in wilderness if desired. +- Enable owner override for better administrative control. + +This helps maintain town-based economic balance. + +--- + +## Common Questions + +### Can players create shops in another town? + +Only if that town's permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You can allow or restrict shops outside towns. + +### What happens if HuskTowns is removed? + +QuickShop returns to normal behavior and stops checking town permissions. + +--- + +## Summary + +The HuskTowns compat module: + +- Enforces town-based land permissions +- Protects towns from unauthorized shop usage +- Integrates smoothly with HuskTowns +- Requires minimal setup + +It is recommended for any server running HuskTowns. \ No newline at end of file diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md new file mode 100644 index 0000000000..3fa2995eb0 --- /dev/null +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md @@ -0,0 +1,139 @@ +# IridiumSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and IridiumSkyblock. + +It ensures that shop creation and trading respect island boundaries and island permission settings defined by IridiumSkyblock. + +--- + +## What Does It Do? + +IridiumSkyblock allows players to create and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Visitors might trade inside protected islands. +- Island protection rules might not apply correctly to shops. + +The IridiumSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members and visitors are handled properly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside an IridiumSkyblock island. +- Whether the player is the island owner, member, or visitor. +- Whether island permissions allow shop interaction. + +If the action is not permitted, QuickShop blocks it. + +Outside of islands, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Island Owner Permissions + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow the island's permission configuration. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect island protection rules. + +This prevents unauthorized shop usage inside protected islands. + +--- + +## Installation + +1. Install IridiumSkyblock. +2. Install the QuickShop IridiumSkyblock compat module. +3. Restart your server. + +The module activates automatically if IridiumSkyblock is detected. + +No additional setup is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If IridiumSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most IridiumSkyblock servers: + +- Restrict shop creation to island owners. +- Allow island members to trade if trusted. +- Prevent shop creation in the void or wilderness. +- Enable owner override for better management. + +This helps maintain balanced island economies. + +--- + +## Common Questions + +### Can players create shops outside their island? + +Only if your configuration allows it. + +Most Skyblock servers restrict shops to island areas. + +### Do island ranks affect shop permissions? + +Yes, if your island permissions are configured to control interaction rights. + +QuickShop follows island rules. + +### What happens if IridiumSkyblock is removed? + +QuickShop returns to normal behavior and stops checking island permissions. + +--- + +## Summary + +The IridiumSkyblock compat module: + +- Protects island economies +- Enforces island-based permissions +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is recommended for any server running IridiumSkyblock. diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md new file mode 100644 index 0000000000..3b4726cb9d --- /dev/null +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md @@ -0,0 +1,151 @@ +# ItemMatcherPlus + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +The ItemMatcherPlus module improves how QuickShop matches custom and plugin-modified items. + +It allows QuickShop to properly recognize and stack items created by other plugins that normally would not match using standard Bukkit item comparisons. + +This module is especially useful for servers that use: + +- Custom items +- Modified metadata +- NBT-based systems +- Advanced crate rewards +- Custom brewing systems +- Custom fishing rewards + +--- + +## What Does It Do? + +By default, Minecraft item matching checks: + +- Material type +- Basic metadata + +However, many plugins modify items with: + +- Custom NBT data +- Hidden tags +- Custom lore formats +- Unique identifiers + +Without enhanced matching: + +- Items may not stack +- Shops may refuse valid items +- Transactions may fail +- Buying/selling may not behave correctly + +ItemMatcherPlus improves compatibility and matching accuracy. + +--- + +## Supported Plugins + +ItemMatcherPlus includes built-in support for: + +- AdvancedItems +- BreweryX +- CrazyCrates +- ExcellentCrates +- PyroFishing +- SilkSpawners + +If any of these plugins are installed, QuickShop will automatically use enhanced matching logic. + +No additional configuration is required. + +--- + +## How It Works + +When a player trades with a shop: + +1. QuickShop checks the item. +2. If ItemMatcherPlus is enabled, it performs advanced matching. +3. Plugin-specific metadata is validated. +4. The item is confirmed as a match (or rejected safely). + +This allows: + +- Proper stacking of custom items +- Correct shop transactions +- Accurate buy/sell detection +- Reduced false mismatches + +--- + +## Installation + +1. Download the ItemMatcherPlus module. +2. Place the JAR into your `plugins` folder. +3. Restart your server. + +If supported plugins are detected, compatibility activates automatically. + +--- + +## Configuration + +ItemMatcherPlus does not require configuration. + +It activates automatically when: + +- The module is installed +- A supported plugin is detected + +If a supported plugin is not installed, no extra logic runs. + +--- + +## Why You Should Use It + +You should install ItemMatcherPlus if your server uses: + +- Custom fishing plugins +- Custom brewing systems +- Crate plugins with modified items +- Custom spawners +- Any plugin that modifies NBT data + +Without it, shops may not properly recognize custom items. + +--- + +## Common Questions + +### Do I need this if I don't use custom item plugins? + +No. +If you only use vanilla items, this module is not necessary. + +### Does this affect performance? + +The module only activates enhanced matching when needed. + +Normal item matching remains fast and efficient. + +### Will it break existing shops? + +No. +It improves compatibility and matching accuracy without modifying existing shop data. + +--- + +## Summary + +ItemMatcherPlus: + +- Improves item matching accuracy +- Adds support for major custom item plugins +- Prevents stacking and trade issues +- Requires no configuration +- Activates automatically + +If you run a heavily customized economy server, this module is highly recommended. \ No newline at end of file diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md index ba87606698..d4ae7d129a 100644 --- a/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/lands.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/lands.md index 06296f5779..7671fcdfe0 100644 --- a/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/lands.md +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/lands.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/openinv.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/openinv.md index c51f628615..4807d57873 100644 --- a/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/openinv.md +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/openinv.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md new file mode 100644 index 0000000000..c2136320b0 --- /dev/null +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md @@ -0,0 +1,138 @@ +# SimpleClaimSystem + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and SimpleClaimSystem. + +It ensures that shop creation and trading respect land ownership and claim permissions defined by SimpleClaimSystem. + +--- + +## What Does It Do? + +SimpleClaimSystem allows players to claim land and protect it from unauthorized interaction. + +Without compatibility: + +- Players could create shops inside claims they do not own. +- Visitors might trade inside protected areas. +- Claim protection might not apply correctly to shops. + +The SimpleClaimSystem compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops within their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a SimpleClaimSystem claim. +- Whether the player has permission within that claim. +- Whether claim rules allow shop interaction. + +If the action is not permitted by the claim, QuickShop blocks it. + +If the location is outside any claim, default QuickShop behavior applies. + +--- + +## Claim Owner Control + +With this module enabled: + +- Claim owners can create and manage shops inside their claim. +- Trusted players follow claim-based permissions. +- Visitors are restricted unless explicitly allowed. +- Claim protection rules apply automatically to shop interactions. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install SimpleClaimSystem. +2. Install the QuickShop SimpleClaimSystem compat module. +3. Restart your server. + +The module activates automatically if SimpleClaimSystem is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If SimpleClaimSystem is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Enable owner override for easier management. + +This ensures players maintain control over their protected land. + +--- + +## Common Questions + +### Can players create shops in someone else's claim? + +Only if claim permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can allow shops outside claims or restrict them. + +### What happens if SimpleClaimSystem is removed? + +QuickShop will revert to default behavior and stop checking claim permissions. + +--- + +## Summary + +The SimpleClaimSystem compat module: + +- Enforces claim-based permissions +- Prevents unauthorized shop creation +- Protects land from unwanted trading +- Requires minimal setup + +It is recommended for servers running SimpleClaimSystem. \ No newline at end of file diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md index a84dbf057b..4dfa8ae97c 100644 --- a/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/towny.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/towny.md index 52ab4818f4..b26c19d335 100644 --- a/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/towny.md +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/towny.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -26,7 +26,7 @@ Town sub-command allow you switch a quickshop between regular shop and town shop For a nation shop, the shop owner will changed to nation fake player created by Towny, and use Nation's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from nation Towny account.\ +All purchases will deposit or withdraw money from nation Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Nation Shop. @@ -35,7 +35,7 @@ If Plot type restriction is enabled, only a specific Plot type can create a Nati For a town shop, the shop owner will changed to town fake player created by Towny, and use Town's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from town Towny account.\ +All purchases will deposit or withdraw money from town Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Town Shop. @@ -88,7 +88,7 @@ bank-mode: ## Permission Override -By adjust configuration, you're allow mayor or king automaticlly grant administrator permission on all shops in their management range. +By adjust configuration, you're allow mayor or king automatically grant administrator permission on all shops in their management range. ```yaml #Should allow Mayor grant the shop administrator permission on they town. @@ -168,7 +168,7 @@ This causes Towny and QuickShop Hikari to use accounts with the same name but di You can adjust the option in configuration to enable workaround. -NOTE: It will force turned on if detected EssentialsX installed on your server.\ +NOTE: It will force turned on if detected EssentialsX installed on your server. At present, we do not provide a method for disable it. ```yaml diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md new file mode 100644 index 0000000000..0189958495 --- /dev/null +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md @@ -0,0 +1,138 @@ +# UltimateClaims + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and UltimateClaims. + +It ensures that shop creation and trading respect land claim permissions managed by UltimateClaims. + +--- + +## What Does It Do? + +On servers using land-claim plugins, players protect areas of the world from unauthorized interaction. + +Without compatibility: + +- Players may create shops inside claims they do not own. +- Visitors might trade in areas where they should not. +- Claim protection rules might not apply correctly to shops. + +The UltimateClaims compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops inside their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a claim. +- Whether the player has permission in that claim. +- Whether claim rules allow shop interaction. + +If the action violates claim settings, QuickShop blocks it. + +Outside of claims, normal QuickShop behavior applies. + +--- + +## Claim Owner Permissions + +With this module enabled: + +- Claim owners can create and manage shops within their claim. +- Trusted players follow claim permission settings. +- Visitors are restricted based on claim configuration. +- Shop actions outside of claims behave normally. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install UltimateClaims. +2. Install the QuickShop UltimateClaims compat module. +3. Restart your server. + +If UltimateClaims is detected on startup, compatibility activates automatically. + +No additional linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Common options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If UltimateClaims is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Keep owner override enabled for better control. + +This ensures players maintain full control over their protected land. + +--- + +## Common Questions + +### Can players create shops inside someone else's claim? + +Only if the claim permissions allow it. + +Otherwise, QuickShop will block the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can choose to restrict shops to claimed land only. + +### What happens if UltimateClaims is removed? + +QuickShop returns to normal behavior without claim checks. + +--- + +## Summary + +The UltimateClaims compat module: + +- Protects claimed land from unauthorized shop usage +- Enforces claim-based permissions +- Integrates smoothly with land-claim servers +- Requires minimal setup + +It is recommended for any server running UltimateClaims. \ No newline at end of file diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md index 87a71a205c..6437754503 100644 --- a/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md @@ -2,8 +2,10 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. Find out more [here](../modules/shops/worldedit.md). + +Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. \ No newline at end of file diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/development/01-getting-start.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/development/01-getting-start.md index 92b773451e..0e78e52367 100644 --- a/i18n/th-TH/docusaurus-plugin-content-docs/current/development/01-getting-start.md +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/development/01-getting-start.md @@ -6,8 +6,8 @@ This series of articles will help you build extensions for QuickShop-Hikari or i ## License -QuickShop-Hikari is open source using the [GPLv3](https://www.gnu.org/licenses/quick-guide-gplv3.en.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari).\ -You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the GPLv3 agreement. +QuickShop-Hikari is open source using the [AGPLv3](https://www.gnu.org/licenses/agpl-3.0.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari). +You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the AGPLv3 agreement. ## 🚧Don't trust Javadoc too much @@ -48,7 +48,7 @@ QuickShop-Hikari divides operation sources into three types: - Server Main Thread - Async Thread (any other threads but not server main thread) -- Hybird +- Hybrid If you access the API through the wrong thread, QuickShop-Hikari will force a runtime error to be thrown. @@ -58,4 +58,4 @@ For APIs that may trigger network IO or long-time disk IO, you are required not You can see [Util.ensureThread()](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/3d1d271e1106ea1c83cc6068f8232ab7c7860918/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/util/Util.java#L351) and find out the requirements of the different APIs by looking up their use. APIs that do not use Util.ensureThread() are allowed to be called from any thread by default. -You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. +You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. \ No newline at end of file diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md index aa2404c594..7828d414ad 100644 --- a/i18n/th-TH/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md @@ -10,7 +10,7 @@ ShopManager manager = api.getShopManager(); ## Getting a shop -Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates.\ +Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates. QuickShop-Hikari's store is only bound to one half of "Large Chest", so to get the store, you need to query both the cube itself and its associated cube. The good thing is that there is an API in the plugin that allows you to handle this situation very easily. @@ -71,7 +71,7 @@ manager.deleteShop(shop) // Permanently delete this store, both memory and datab ## Identify a store -Please note that store locations are technically variable and you should not use coordinates to identify a store.\ +Please note that store locations are technically variable and you should not use coordinates to identify a store. Also RuntimeRandomUniqueId should not be used to identify the store, as the name suggests, the value changes every time the server restarts, it should only be used to handle scenarios where the player interacts with the server. ```java diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md index 543f1851da..4f839ed652 100644 --- a/i18n/th-TH/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md @@ -1,6 +1,6 @@ # 0x05 Per shop permission -QuickShop-Hikari has a per shop permission management system.\ +QuickShop-Hikari has a per shop permission management system. Therefore, for a normal permission node check is not enough, you need to attach an additional check. ## Check with shop diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/development/06-protocol-system.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/development/06-protocol-system.md index 5d37a15536..0380b789f9 100644 --- a/i18n/th-TH/docusaurus-plugin-content-docs/current/development/06-protocol-system.md +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/development/06-protocol-system.md @@ -15,30 +15,30 @@ This documentation will guide developers through the components, implementation - **Purpose**: Manages packet handling and initialization logic. - **Interface**: `PacketHandler` - **Key Methods**: - - `Map> factories()` - - Retrieves a map of supported `PacketFactory` instances keyed by game versions. - - `void initialize()` - - Initializes the packet handler. - - `Optional> factory(String version)` - - Retrieves a `PacketFactory` for a specific game version. + - `Map> factories()` + - Retrieves a map of supported `PacketFactory` instances keyed by game versions. + - `void initialize()` + - Initializes the packet handler. + - `Optional> factory(String version)` + - Retrieves a `PacketFactory` for a specific game version. ### 2. **PacketFactory** - **Purpose**: Creates and sends specific packet types. - **Interface**: `PacketFactory` - **Supported Packets**: - - **Spawn Packet**: - - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. - - Example Use: Representing shop items visually. - - **Metadata Packet**: - - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. - - Example Use: Updating item display name or properties. - - **Velocity Packet**: - - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. - - Example Use: Custom animations for virtual items. - - **Destroy Packet**: - - Removes the entity from the client view. Created using `createDestroyPacket()`. - - Example Use: Unloading or removing a virtual display item. + - **Spawn Packet**: + - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. + - Example Use: Representing shop items visually. + - **Metadata Packet**: + - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. + - Example Use: Updating item display name or properties. + - **Velocity Packet**: + - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. + - Example Use: Custom animations for virtual items. + - **Destroy Packet**: + - Removes the entity from the client view. Created using `createDestroyPacket()`. + - Example Use: Unloading or removing a virtual display item. Developers implementing custom `PacketFactory` should ensure these packets are correctly handled and optimized for performance. @@ -46,24 +46,24 @@ Developers implementing custom `PacketFactory` should ensure these packets are c - **Purpose**: Oversees the lifecycle of virtual display items and integrates with packet handlers. - **Key Features**: - - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). - - Manages virtual display items mapped to chunks. - - Provides thread-safe operations for adding and removing display items. + - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). + - Manages virtual display items mapped to chunks. + - Provides thread-safe operations for adding and removing display items. ### 4. **VirtualDisplayItem** - **Purpose**: Represents a virtual item displayed to players. - **Key Features**: - - Generates and caches packets for spawning, metadata, velocity, and destruction. - - Manages packet senders for each player. - - Handles spawn and removal operations dynamically. + - Generates and caches packets for spawning, metadata, velocity, and destruction. + - Manages packet senders for each player. + - Handles spawn and removal operations dynamically. ### 5. **ProtocolLibHandler and PacketEventsHandler** - **Purpose**: Provide implementations of `PacketHandler` using ProtocolLib and PacketEvents, respectively. - **Differences**: - - `ProtocolLibHandler` leverages ProtocolLib API. - - `PacketEventsHandler` uses the PacketEvents library. + - `ProtocolLibHandler` leverages ProtocolLib API. + - `PacketEventsHandler` uses the PacketEvents library. --- @@ -140,11 +140,11 @@ public class CustomPacketFactory implements PacketFactory { Packet factories are provided for specific game versions through two primary implementations: - **ProtocolLib**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` - **PacketEvents**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` --- diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md new file mode 100644 index 0000000000..aebc035f87 --- /dev/null +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md @@ -0,0 +1,297 @@ +# Interaction System (Developer Guide) + +The Interaction System allows developers to fully customize how players interact with shops. + +As of 6.2.0.11, the system has been redesigned to be: + +- Modular +- Extensible +- Thread-safe +- Fully customizable by third-party addons + +This guide will walk you through: + +1. What the Interaction System is +2. Getting the `InteractionManager` +3. Understanding `InteractionType` +4. Understanding `InteractionBehavior` +5. Registering custom interactions +6. Best practices + +--- + +# Overview + +The Interaction System is composed of three main components: + +| Component | Purpose | +| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| `InteractionType` | Describes **what kind of click happened** (standing, sneaking, left-click, sign, shopblock, etc.) | +| `InteractionBehavior` | Describes **what action should happen** when that type is triggered | +| `InteractionManager` | Central registry that manages interactions and behaviors | + +This separation allows developers to: + +- Add new click types +- Add new behaviors +- Override existing ones +- Extend QuickShop without modifying core code + +--- + +# Getting the InteractionManager + +To begin registering custom interactions, you must retrieve the `InteractionManager` instance. + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +If you are working directly with the plugin instance: + +```java +InteractionManager manager = QuickShop.getInstance().getInteractionManager(); +``` + +Once obtained, you can: + +- Register new interaction types +- Register new behaviors +- Override existing behaviors + +--- + +# Understanding InteractionType + +`InteractionType` represents **how** a player interacted with a shop. + +Examples include: + +- `STANDING_LEFT_CLICK_SIGN` +- `STANDING_RIGHT_CLICK_SHOPBLOCK` +- `SNEAKING_LEFT_CLICK_CONTAINER` +- etc. + +Each `InteractionType` defines: + +- Player stance (standing/sneaking) +- Click type (left/right) +- Target (sign/shopblock/container) + +InteractionTypes do NOT define behavior — they only define the trigger. + +--- + +# Understanding InteractionBehavior + +`InteractionBehavior` defines **what happens** when an interaction is triggered. + +Examples of built-in behaviors: + +- `TRADE_INTERACTION` +- `TRADE_UI` +- `CONTROL_PANEL` +- `CONTROL_PANEL_UI` +- `NONE` + +A behavior: + +- Executes logic +- May open GUIs +- May send chat panels +- May directly trade items +- Can cancel or modify flow + +This separation makes it easy to reuse behaviors across multiple interaction types. + +--- + +# Registering Custom Interactions + +There are two things you can register: + +- A custom `InteractionType` +- A custom `InteractionBehavior` + +--- + +## Creating a Custom InteractionBehavior + +Create a class implementing `InteractionBehavior`. + +Example: + +```java +public class MyTradeBehavior implements InteractionBehavior { + + @Override + public String getKey() { + return "MY_CUSTOM_TRADE"; + } + + @Override + public void execute(InteractionClick click) { + Player player = click.getPlayer(); + Shop shop = click.getShop(); + + player.sendMessage("You triggered my custom interaction!"); + + // Add your custom logic here + } +} +``` + +Then register it: + +```java +InteractionManager manager = api.getInteractionManager(); +manager.behavior(new MyTradeBehavior()); +``` + +Now your behavior is available for use. + +--- + +## Creating a Custom InteractionType + +You may also register custom interaction types if you want to introduce new trigger definitions. + +Example: + +```java +public class MyCustomInteraction implements InteractionType { + + @Override + public String getKey() { + return "STANDING_DOUBLE_CLICK_SIGN"; + } + + @Override + public boolean matches(InteractionClick click) { + // Define custom logic to detect this interaction + return click.isStanding() + && click.isSign() + && click.isDoubleClick(); + } +} +``` + +Register it: + +```java +manager.interaction(new MyCustomInteraction()); +``` + +--- + +# Binding Types to Behaviors + +The InteractionManager internally maps interaction types to behaviors based on configuration and registration order. + +Once your behavior is registered: + +- It can be referenced in `interaction.yml` +- Or attached programmatically + +Example interaction.yml usage: + +```yaml +STANDING_LEFT_CLICK_SIGN: MY_CUSTOM_TRADE +``` + +--- + +# The InteractionClick Object + +When your behavior executes, you receive an `InteractionClick` object. + +It provides: + +- `getPlayer()` +- `getShop()` +- `getLocation()` +- `isSneaking()` +- `isSign()` +- `isShopBlock()` +- etc. + +This gives full context for safe execution. + +--- + +# Advanced: Overriding Built-in Behavior + +If you register a behavior using the same key as an existing one, your behavior can override the default. + +⚠️ Be careful when doing this — you are replacing core functionality. + +--- + +# Best Practices + +### Always Use Unique Keys + +Avoid naming collisions: + +``` +MYPLUGIN_CUSTOM_BEHAVIOR +``` + +### Keep Behavior Lightweight + +Do not block the main thread with: + +- Heavy database calls +- File IO +- Network calls + +Use async tasks if needed. + +### Respect Permissions + +Always validate: + +```java +if (!player.hasPermission("myplugin.use")) { + return; +} +``` + +### Avoid Hard Overrides Unless Necessary + +Instead of replacing built-in behaviors, consider extending them. + +--- + +# Example: Full Minimal Implementation + +```java +public class ExampleAddon { + + public void register(QuickShopAPI api) { + + InteractionManager manager = api.getInteractionManager(); + + manager.behavior(new MyTradeBehavior()); + manager.interaction(new MyCustomInteraction()); + } +} +``` + +--- + +# Conclusion + +The Interaction System is designed to allow: + +- Full extensibility +- Clean separation of triggers and actions +- Easy integration for third-party developers + +By retrieving the `InteractionManager`: + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +You gain full control over how shops respond to player actions. \ No newline at end of file diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/development/08-tax-manager.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/development/08-tax-manager.md new file mode 100644 index 0000000000..72a56f9e88 --- /dev/null +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/development/08-tax-manager.md @@ -0,0 +1,266 @@ +# Tax System (Developer Guide) + +The QuickShop tax system allows server owners and developers to define how transaction taxes are calculated, distributed, and extended. + +As of 6.2.0.11, the tax system has been fully rewritten to provide: + +- A flexible TaxManager +- Pluggable TaxProvider support +- Progressive taxation +- Tax targeting (shop owner, interacting player, or both) +- Custom extension capability for third-party addons + +This guide explains how to work with the tax system programmatically. + +--- + +# Overview + +The tax system is composed of three core components: + +TaxManager +Responsible for coordinating tax calculation and execution. + +TaxProvider +Defines how tax values are calculated. + +TaxRates +Represents calculated tax results for a transaction. + +The system is designed to allow custom providers to be registered and used without modifying core logic. + +--- + +# Getting the TaxManager + +To work with the tax system, retrieve the TaxManager from the ShopManager. + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +Once obtained, you can: + +- Access current tax configuration +- Register custom tax providers +- Calculate tax values +- Hook into tax events + +--- + +# How the Tax System Works + +During a shop transaction: + +1. A base price is determined. +2. The TaxManager selects the active TaxProvider. +3. The TaxProvider calculates applicable tax. +4. A TaxRates object is produced. +5. The system applies the tax to: + + - Shop owner + - Interacting player + - Or both (depending on configuration) + +This architecture allows tax behavior to be modified without altering transaction logic. + +--- + +# TaxProvider + +A TaxProvider defines how tax values are calculated. + +You may create your own provider to implement: + +- Progressive tax brackets +- Flat percentage tax +- Conditional tax rules +- Region-based tax +- Rank-based tax +- Time-based tax + +Example minimal provider: + +```java +public class MyCustomTaxProvider implements TaxProvider { + + @Override + public TaxRates calculateTax(TaxContext context) { + + double basePrice = context.getPrice(); + + double taxAmount = basePrice * 0.05; // 5% flat tax + + return new TaxRates() + .ownerTax(taxAmount) + .buyerTax(0.0); + } +} +``` + +Then register it: + +```java +taxManager.provider(new MyCustomTaxProvider()); +``` + +Once registered, your provider will be used for tax calculations. + +--- + +# TaxRates + +TaxRates represents the result of a tax calculation. + +It typically contains: + +- Owner tax amount +- Buyer tax amount +- Total tax impact +- Metadata (if applicable) + +The transaction system will read from TaxRates and apply deductions accordingly. + +--- + +# Progressive Taxation + +The built-in system supports progressive tax structures. + +This allows server administrators to tax based on: + +- Player balance +- Shop owner balance +- Configured tax brackets + +Example configuration concept: + +- 0–10,000 balance → 1% tax +- 10,000–100,000 → 2% tax +- 100,000+ → 3% tax + +Developers can extend or override this logic inside a custom TaxProvider. + +--- + +# Targeting Tax + +The new tax system allows taxes to be applied to: + +- Shop owner +- Interacting player +- Both + +This is controlled via configuration, but custom providers can override distribution logic by adjusting TaxRates output. + +Example: + +```java +return new TaxRates() + .ownerTax(basePrice * 0.02) + .buyerTax(basePrice * 0.01); +``` + +--- + +# Registering a Custom TaxProvider + +To replace or extend tax logic: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); + +taxManager.provider(new MyCustomTaxProvider()); +``` + +You may register only one primary provider at a time. If multiple providers are needed, implement internal delegation within your custom provider. + +--- + +# Tax Events + +The tax system integrates with the event system. + +The modern event used is: + +ShopEnhancedTaxEvent + +This replaces legacy tax events and provides improved context, including: + +- Transaction builder reference +- TaxRates object +- Modification capability before final execution + +You can listen for the event and modify tax behavior dynamically: + +```java +@EventHandler +public void onTax(ShopEnhancedTaxEvent event) { + + TaxRates rates = event.getTaxRates(); + + // Example: Give VIP players reduced owner tax + if (event.getOwner().hasPermission("vip.tax.discount")) { + rates.ownerTax(rates.getOwnerTax() * 0.5); + } +} +``` + +--- + +# Best Practices + +Always keep tax calculations lightweight. + +Avoid: + +- Heavy database queries inside calculateTax +- Blocking network calls +- Long-running computations + +If complex logic is required, pre-cache required data outside the tax execution path. + +Ensure negative tax values are not returned unless intentional. + +Always validate final amounts before applying modifications. + +Respect configuration hierarchy unless intentionally overriding it. + +--- + +# Example Full Implementation + +```java +public class ExampleTaxAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + TaxManager taxManager = manager.taxManager(); + + taxManager.provider(new MyCustomTaxProvider()); + } +} +``` + +--- + +# Conclusion + +The new tax system is designed for: + +- Flexibility +- Extensibility +- Clean separation of concerns +- Future expansion + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +You gain full control over how QuickShop calculates and applies tax during transactions. \ No newline at end of file diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/development/09-layout-provider.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/development/09-layout-provider.md new file mode 100644 index 0000000000..55e3cd3e91 --- /dev/null +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/development/09-layout-provider.md @@ -0,0 +1,275 @@ +# Shop Layout Provider (Developer Guide) + +The Shop Layout Provider system allows developers to customize how shop signs are structured and rendered. + +As of 6.2.0.11, shop layouts are no longer hardcoded. Instead, they are controlled through the `IShopLayoutProvider` interface, which allows: + +- Custom sign line ordering +- Per-shop-type layouts (BUYING, SELLING, FROZEN, or custom types) +- Dynamic layout resolution +- Complete replacement of the default layout system + +This guide explains how to access, override, and implement a custom layout provider. + +--- + +# Overview + +The layout provider controls how shop sign lines are arranged. + +Instead of hardcoding: + +Line 1 → Header +Line 2 → Trading info +Line 3 → Item +Line 4 → Price + +The system now allows full customization through: + +- Config-based layout definitions +- Custom `IShopLayoutProvider` implementations +- Runtime overrides + +The default implementation is `SimpleShopLayoutProvider`. + +--- + +# Accessing the Layout Provider + +To retrieve the current layout provider: + +```java +ShopManager manager = api.getShopManager(); +IShopLayoutProvider provider = manager.shopLayoutProvider(); +``` + +To replace the layout provider with a custom one: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Once replaced, your implementation will control how shop layouts are generated. + +--- + +# Understanding IShopLayoutProvider + +`IShopLayoutProvider` defines how layout data is retrieved and resolved. + +It is responsible for: + +- Providing layout configuration per shop type +- Determining which layout to use +- Supplying formatted line keys +- Allowing future extensibility + +The default implementation reads layout definitions from configuration and applies them based on shop type. + +--- + +# Default Layout Example + +The default configuration-based layout looks like this: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +Each line maps to a layout component key. + +An empty string (`""`) leaves that line blank. + +The layout provider resolves these keys into actual sign content. + +--- + +# Creating a Custom Layout Provider + +To override the default behavior, implement `IShopLayoutProvider`. + +Example minimal implementation: + +```java +public class MyCustomLayoutProvider implements IShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + + ShopLayout layout = new ShopLayout(); + + layout.setLine(1, "Custom Header"); + layout.setLine(2, "Owner: " + shop.getOwnerName()); + layout.setLine(3, shop.getItem().getType().name()); + layout.setLine(4, "$" + shop.getPrice()); + + return layout; + } +} +``` + +Then register it: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Your layout will now control all shop sign formatting. + +--- + +# Per-Type Layout Control + +Because the system no longer depends on the legacy ShopType enum, layouts can support: + +- Built-in types (BUYING, SELLING, FROZEN) +- Custom shop types +- Addon-defined shop types + +Your provider can determine layout logic dynamically: + +```java +@Override +public ShopLayout provideLayout(Shop shop) { + + if (shop.getShopType().key().equals("FROZEN")) { + return frozenLayout(shop); + } + + return defaultLayout(shop); +} +``` + +This allows conditional formatting, localization adjustments, or special event styling. + +--- + +# Advanced Customization + +A custom layout provider can: + +- Pull data from external plugins +- Inject dynamic placeholders +- Modify layout per player +- Apply formatting logic +- Override color schemes +- Apply region-based formatting +- Implement animated sign systems + +Because the layout provider is resolved at runtime, you can compute layouts dynamically instead of reading static config. + +--- + +# Replacing vs Extending the Default Provider + +You have two options: + +Replace entirely: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Or extend the default implementation: + +```java +public class ExtendedLayoutProvider extends SimpleShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + ShopLayout base = super.provideLayout(shop); + + base.setLine(1, "[Extended] " + base.getLine(1)); + + return base; + } +} +``` + +Extending is safer if you only want to modify small portions. + +--- + +# Best Practices + +Keep layout generation lightweight. + +Avoid: + +- Heavy database queries +- Blocking IO +- Complex network calls + +Layout generation runs during shop updates and sign refresh events. + +Always handle null values safely. + +Ensure layout line count does not exceed sign limits. + +Avoid hardcoding shop type names unless necessary. + +If your layout supports custom shop types, validate their keys properly. + +--- + +# Example Full Registration + +```java +public class LayoutAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + + manager.shopLayoutProvider(new MyCustomLayoutProvider()); + } +} +``` + +--- + +# Conclusion + +The Shop Layout Provider system allows complete control over shop sign structure. + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +``` + +And setting: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +You can redefine how every shop is displayed on the server. + +This system was designed to support: + +- Extensibility +- Custom shop types +- Localization +- Dynamic formatting +- Future expansion \ No newline at end of file diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/faq/compare-reremake.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/faq/compare-reremake.md index aaa1a9e507..6b39f02520 100644 --- a/i18n/th-TH/docusaurus-plugin-content-docs/current/faq/compare-reremake.md +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/faq/compare-reremake.md @@ -64,7 +64,7 @@ If you are a Reremake user, you may be confused about the differences between Hi ## Which one should I use? Well, it depends on what your needs are.\ -If you have an old server (<1.20) instance, Reremake is your only choice.\ +If you have an old server ({'<'}1.20) instance, Reremake is your only choice.\ ~~If you are in China which has GFW interfere, you also should consider Reremake because it doesn't need to load libraries from Global Internet.~~ Solved in 6.0.0.0. If none of these applies, give Hikari a try! diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md index 551f579e7c..172be3a69b 100644 --- a/i18n/th-TH/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md @@ -1,8 +1,8 @@ # Where Addons/Compacts is -Addons and Compatilibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. +Addons and Compatibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. -- Open Modrinth versions page, locate the version your're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) +- Open Modrinth versions page, locate the version you're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) - Frantically slide your mouse wheel down until the lowest end of the page. - You get it! diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/internal/database-schema.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/internal/database-schema.md index fea685e4fc..45e04adb56 100644 --- a/i18n/th-TH/docusaurus-plugin-content-docs/current/internal/database-schema.md +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/internal/database-schema.md @@ -4,17 +4,17 @@ This chapter will explain the implementation details of QuickShop Hikari's datab ## Tables -This section explains the database tables created by QuickShop-Hikari.\ -Unless otherwise specified, the initial `qs_` in table name is the table prefix.\ +This section explains the database tables created by QuickShop-Hikari. +Unless otherwise specified, the initial `qs_` in table name is the table prefix. For the latest code definition for each table, see: [DataTables.java](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/hikari/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/database/DataTables.java) ### `data` -This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information.\ -No matter what, a data record should not be modified after it is created, until it got deleted.\ +This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information. +No matter what, a data record should not be modified after it is created, until it got deleted. Any new changes to the shop should create a new copy, apply the changes to the copy, and insert it as a new record. -Basiclly, Copy-on-write. +Basically, Copy-on-write. A data record only be deleted from the database when no any table references their `data_id`. @@ -29,7 +29,7 @@ A data record only be deleted from the database when no any table references the | unlimited | BIT NOT NULL | 0 | Indicates whether this store is an unlimited store, 0=Limited, 1=Unlimited | | hologram | BIT NOT NULL | 0 | Indicates the suspension status of this store's display item, 0=Follow global settings, 1=Disabled | | tax_account | VARCHAR(36) | NULL | The uuid for tax account, If it is not NULL, tax will be paid to the specified account | -| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serilized to JSON string | +| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serialized to JSON string | | extra | LONGTEXT | Empty Yaml | Used to store experimental settings of QuickShop Hikari or persistent data of other plugins | | inv_wrapper | VARCHAR(255) NOT NULL | N/A | Unique identifier for InventoryWrapper for this shop data entry | | inv_symbol_link | TEXT NOT NULL | N/A | Unique Inventory symbol used to pass to InventoryWrapper, for locating inventory | @@ -38,7 +38,7 @@ A data record only be deleted from the database when no any table references the ### `shops` -This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes.\ +This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes. Multiple `shop_id` can correspond to the same `data_id`. | Column Name | DataType | Default | Description | diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/modules/cmd-alias.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/modules/cmd-alias.md index 53f1577685..e6ed381c0d 100644 --- a/i18n/th-TH/docusaurus-plugin-content-docs/current/modules/cmd-alias.md +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/modules/cmd-alias.md @@ -23,7 +23,7 @@ custom-commands: - cshop ``` -Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect.\ +Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect. The effect should be like this: ![command-alias](./img/command-alias.png) diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/modules/datasource.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/modules/datasource.md index 6fc1bd8931..3fd3a8bdee 100644 --- a/i18n/th-TH/docusaurus-plugin-content-docs/current/modules/datasource.md +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/modules/datasource.md @@ -48,7 +48,7 @@ Execute the `/quickshop export` command in console, quickshop will export a zip ![exported data](img/database-export.png) -Stop your database, switch the datasource, and start the server.\ +Stop your database, switch the datasource, and start the server. You may noticed all shops are gone, because new datasources had no data inside, we will restore them from export. Rename that exported ZIP file to `recovery.zip`, execute `/quickshop recovery` and restart your server, all shops should back. diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/modules/itemmatcher.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/modules/itemmatcher.md index 56be243019..922907be27 100644 --- a/i18n/th-TH/docusaurus-plugin-content-docs/current/modules/itemmatcher.md +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/modules/itemmatcher.md @@ -4,7 +4,7 @@ ItemMatcher is a utility used by QuickShop-Hikari to compare the items, it is th :::caution -If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse.\ +If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse. **TL;DR: Keep default unless you know what you're doing.** ::: @@ -26,10 +26,10 @@ matcher: work-type: 1 ``` -By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility.\ +By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility. But still, you can toggle to QuickShop Item Matcher if you need to customize the comparing or running QuickShop on the server jar which have bug affect the Bukkit comparing system. -## Customize the metadata compareing +## Customize the metadata comparing Customize only works under QuickShop Item Matcher. diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md index fc2af69d2b..d04e8f2783 100644 --- a/i18n/th-TH/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md @@ -4,7 +4,7 @@ ItemStack Loader is a workaround for loading the Bukkit ItemStack. :::caution -Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossble. +Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossible. ::: diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/modules/localization.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/modules/localization.md index e9121e1a36..d47589ab9a 100644 --- a/i18n/th-TH/docusaurus-plugin-content-docs/current/modules/localization.md +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/modules/localization.md @@ -10,7 +10,7 @@ To help translate QuickShop-Hikari, please visit our [Crowdin Homepage](https:// ## Crowdin OTA -QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will overrided when you reload QuickShop-Hikari or restart your server. +QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will override when you reload QuickShop-Hikari or restart your server. Your installation will keep translations up-to-date without any touch. @@ -110,6 +110,16 @@ To disable the CrowdinOTA, please add it in the startup flag: -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager.enableCrowdinOTA=false ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +use-crowdin-ota: false +``` + ### Self-Hosted OTA Server If you self-hosted our translation server by using [CrowdinCopyDeploy](https://github.com/Ghost-chu/CrowdinCopyDeploy) tool, you're able to change the OTA server to yourself server. @@ -118,4 +128,12 @@ If you self-hosted our translation server by using [CrowdinCopyDeploy](https://g -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager= ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml +Use + +```yaml +crowdin-host: +``` \ No newline at end of file diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/modules/shops/benefit.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/modules/shops/benefit.md index 4d7a9c8f42..c59d92e6d1 100644 --- a/i18n/th-TH/docusaurus-plugin-content-docs/current/modules/shops/benefit.md +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/modules/shops/benefit.md @@ -37,3 +37,13 @@ By default, for security, QuickShop-Hikari disallow add offline players into sho ```bash -Dcom.ghostchu.quickshop.command.subcommand.SubCommand_Benefit.allowOffline=true ``` + +### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +shop.allow-offline-benefit: true +``` \ No newline at end of file diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/modules/shops/control-panel b/i18n/th-TH/docusaurus-plugin-content-docs/current/modules/shops/control-panel new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/modules/shops/control-panel @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/modules/shops/history.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/modules/shops/history.md index fa891adeab..195b64a042 100644 --- a/i18n/th-TH/docusaurus-plugin-content-docs/current/modules/shops/history.md +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/modules/shops/history.md @@ -24,7 +24,7 @@ The History GUI displays the details of each recorded transaction and other usef ### Transaction details -When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed.\ +When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed. If you are checking the history of more than one store, the player head will be replaced with an item from the corresponding store. ![history-gui](./img/history-gui.png) diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md new file mode 100644 index 0000000000..c5ed3b3fe4 --- /dev/null +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md @@ -0,0 +1,90 @@ +# Shop Types + +QuickShop supports multiple shop types, allowing shops to behave differently depending on their mode. + +The built-in shop types are: + +- Selling +- Buying +- Frozen + +Each type changes how the shop interacts with players. + +--- + +## Selling Shop + +A Selling shop allows players to: + +- Buy items from the shop owner +- Pay money to receive items + +This is the most common shop type. + +--- + +## Buying Shop + +A Buying shop allows players to: + +- Sell items to the shop owner +- Receive money in exchange + +This is commonly used for: + +- Resource collection +- Server buy-back shops +- Automated material sinks + +--- + +## Frozen Shop + +A Frozen shop temporarily disables trading. + +While frozen: + +- No buying is allowed +- No selling is allowed +- The shop remains intact +- Staff or admins can manage it + +This is useful for: + +- Temporary suspensions +- Investigation +- Event locking +- Maintenance + +--- + +## Switching Shop Types + +Shop types can be changed through: + +- Control panel +- GUI control panel +- Admin commands + +Frozen mode is also available via: + +/qs freeze + +--- + +## Custom Shop Types + +As of 6.2.x, the system supports extensible shop types internally. + +While server owners use the built-in types, the system now allows future expansion through addons. + +--- + +## Summary + +Shop types allow you to: + +- Control how money flows +- Enable buy-back mechanics +- Temporarily disable shops +- Build advanced economic systems \ No newline at end of file diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md new file mode 100644 index 0000000000..18e0a47407 --- /dev/null +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md @@ -0,0 +1,217 @@ +# Sign Layout + +QuickShop allows you to fully customize how shop signs are structured. + +You can change: + +- What appears on each line +- The order of information +- Layout per shop type +- Whether certain lines are blank + +This gives you complete control over how shops look on your server. + +--- + +## How Sign Layout Works + +Shop signs have four lines. + +Instead of being hardcoded, QuickShop uses a configurable layout system. + +Each shop type can have its own layout: + +- SELLING +- BUYING +- FROZEN + +You define what each line displays using layout keys. + +--- + +## Configuration Location + +Sign layout is configured in `config.yml` under: + +```yaml +layout: +``` + +Example default configuration: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## Available Layout Keys + +Each line value refers to a built-in layout component. + +Common layout keys include: + +- `header` – The shop header line +- `trading` – Buy/Sell direction information +- `item` – Item name +- `price` – Shop price + +These keys are automatically formatted using your language file and formatting settings. + +--- + +## Leaving a Line Blank + +To leave a line empty, use: + +```yaml +line2: "" +``` + +This is useful if you want: + +- Minimalist signs +- Cleaner layouts +- Custom spacing +- Decorative formatting + +--- + +## Customizing Per Shop Type + +Each shop type can have a different layout. + +For example: + +```yaml +layout: + + SELLING: + line1: "header" + line2: "item" + line3: "price" + line4: "" + + BUYING: + line1: "header" + line2: "price" + line3: "item" + line4: "" + + FROZEN: + line1: "header" + line2: "" + line3: "item" + line4: "Frozen" +``` + +This allows you to visually differentiate: + +- Selling shops +- Buying shops +- Frozen shops + +--- + +## Practical Examples + +### Minimal Style + +```yaml +layout: + SELLING: + line1: "item" + line2: "price" + line3: "" + line4: "" +``` + +### Compact Economy Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "price" + line3: "item" + line4: "" +``` + +### Large Clear Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## How Updates Affect Layout + +When you change the layout: + +- Existing shop signs will update automatically when refreshed. +- New shops will use the updated format immediately. + +If needed, you can reload QuickShop to apply changes. + +--- + +## Best Practices + +- Keep important information visible (price and item). +- Avoid overly complex formatting. +- Test layout changes before deploying on large servers. +- Use different layouts for BUYING and SELLING to reduce confusion. + +--- + +## Common Questions + +### Can I add more than four lines? + +No. +Minecraft signs are limited to four lines. + +### Can I add colors? + +Colors are controlled by your language file and formatting settings. + +### Can I change layout without restarting? + +Yes, but reloading or refreshing shops is recommended to ensure full update. + +--- + +## Summary + +The Sign Layout system allows you to: + +- Fully customize shop sign appearance +- Create per-type layouts +- Simplify or expand shop information +- Improve clarity for players + +All layout customization is handled inside `config.yml`. diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md new file mode 100644 index 0000000000..980bad10f2 --- /dev/null +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md @@ -0,0 +1,130 @@ +# Shop Sign Waxing + +QuickShop can automatically wax shop signs to prevent players from editing them manually. + +Waxing protects the integrity of your shop signs and helps prevent tampering, spoofing, and accidental modification. + +As of modern Minecraft versions, waxed signs cannot be edited unless they are unwaxed first. + +--- + +## What Is Sign Waxing? + +In Minecraft, waxing a sign locks it so that: + +- Players cannot edit the text +- Players cannot modify lines +- Accidental changes are prevented +- Malicious edits are blocked + +When enabled in QuickShop, shop signs are automatically waxed when created. + +--- + +## Why Use It? + +Sign waxing protects against: + +- Players editing price lines +- Changing item names on signs +- Spoofing shop information +- Accidental formatting issues +- Sign hijacking attempts + +On public servers, this feature is strongly recommended. + +--- + +## How It Works + +When a shop is created: + +1. QuickShop generates the shop sign. +2. The sign text is written. +3. The sign is automatically waxed (if enabled). + +If a shop is updated: + +- The sign will be safely updated by QuickShop. +- The wax state is maintained. + +Players cannot manually edit shop signs while waxing is enabled. + +--- + +## Configuration + +To enable or disable sign waxing, edit `config.yml`: + +```yaml +shop: + sign-wax: true +``` + +### true + +- Shop signs are automatically waxed. +- Players cannot edit the sign manually. + +### false + +- Shop signs behave like normal Minecraft signs. +- Players may edit them if permitted by the game. + +--- + +## Recommended Setting + +For most servers: + +```yaml +shop: + sign-wax: true +``` + +This ensures shop data stays accurate and secure. + +--- + +## Common Questions + +### Can admins still modify shop signs? + +QuickShop controls shop sign formatting. +Manual edits are not recommended. + +Admins should use: + +- Control panel +- Shop commands +- Direct configuration changes + +### Does waxing affect shop functionality? + +No. +Waxing only prevents manual text edits. +The shop continues to function normally. + +### Can players un-wax shop signs? + +No. +QuickShop manages the sign state automatically. + +--- + +## Best Practices + +- Keep sign-wax enabled on survival servers. +- Combine sign-wax with proper permissions. +- Avoid manually editing shop signs through other plugins. + +--- + +## Summary + +Sign Waxing: + +- Prevents tampering +- Requires no additional setup + +Enable it once and QuickShop handles the rest. \ No newline at end of file diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/modules/shops/taxes.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/modules/shops/taxes.md new file mode 100644 index 0000000000..1a273fd978 --- /dev/null +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/modules/shops/taxes.md @@ -0,0 +1,92 @@ +# Taxation System + +QuickShop includes a taxation system designed to give server owners more flexibility and control over shop-based income. + +This system was revamped as of 6.2.0.11+ + +The new system allows you to: + +- Apply tax to shop owners +- Apply tax to buyers +- Apply tax to both +- Use progressive tax brackets +- Customize tax behavior in configuration + +This system replaces the legacy tax configuration. + +--- + +## How It Works + +During a transaction: + +1. The shop price is calculated. +2. Tax is calculated based on your configuration. +3. Tax is deducted from the configured target(s). +4. Remaining funds are distributed normally. + +You can configure: + +- Flat percentage tax +- Progressive tax based on player balance +- Tax accounts +- Distribution rules + +--- + +## Progressive Tax + +The new system allows you to tax based on balance brackets. + +Example concept: + +- 0 – 10,000 balance → 1% tax +- 10,000 – 100,000 → 2% tax +- 100,000+ → 3% tax + +This helps prevent extremely wealthy players from dominating the economy. + +--- + +## Who Pays the Tax? + +You can configure whether tax applies to: + +- The shop owner +- The buyer +- Both + +This gives you flexibility depending on your economy design. + +--- + +## Configuration + +All tax-related settings are located under the `shop-tax` section in `config.yml`. + +After updating to 6.2.0.11+, review your tax configuration carefully, as the old tax system has been replaced. + +--- + +## Why Use Tax? + +The taxation system can help: + +- Remove currency from circulation +- Fund server banks or towns +- Create sink mechanics +- Balance inflation +- Reward active players + +--- + +## Summary + +The new taxation system is: + +- Flexible +- Configurable +- Balance-aware +- Designed for modern economy servers + +Make sure to review your configuration after upgrading. \ No newline at end of file diff --git a/i18n/th-TH/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md b/i18n/th-TH/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md new file mode 100644 index 0000000000..247c24712d --- /dev/null +++ b/i18n/th-TH/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md @@ -0,0 +1,161 @@ +# WorldEdit & FAWE Support + +QuickShop includes built-in protection and integration for WorldEdit and FastAsyncWorldEdit (FAWE). + +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. + +You do not need to download or install any additional compatibility plugins. + +--- + +## What This Does + +WorldEdit and FAWE allow administrators and builders to: + +- Copy and paste regions +- Replace large areas of blocks +- Mass-delete regions +- Roll back areas +- Regenerate terrain + +Without protection, these operations could: + +- Create ghost shops +- Leave orphaned shop data in the database +- Duplicate shops unintentionally +- Delete containers without cleaning up shop data +- Cause inconsistencies between world and database + +QuickShop now automatically detects and safely processes WorldEdit and FAWE operations. + +--- + +## Built-In Behavior + +When WorldEdit or FAWE modifies blocks: + +- Shops removed via WorldEdit are properly deleted from the database. +- Shop data stays synchronized with world changes. +- Ghost shops are prevented. +- Mass block replacements will not leave broken shop entries behind. + +This applies to: + +- //set +- //replace +- //cut +- //paste +- //regen +- Region deletion +- Mass container removal + +No configuration is required. + +--- + +## FAWE Support + +FastAsyncWorldEdit (FAWE) is fully supported. + +Because FAWE processes edits asynchronously, QuickShop handles: + +- Region-thread safe processing +- Async block updates +- Safe shop deletion during batch edits + +You do not need to enable anything manually. + +--- + +## Removing Shops with WorldEdit + +If you delete containers (chests, barrels, etc.) using WorldEdit: + +QuickShop will automatically: + +- Detect the block removal +- Unregister the shop +- Clean the database entry +- Prevent ghost shops + +You do not need to run `/qs cleanghost` after WorldEdit usage in normal circumstances. + +--- + +## Copying and Pasting Shops + +If you copy and paste regions that contain shops: + +- Shop data will not duplicate incorrectly. +- Shop IDs remain consistent. +- Invalid pasted shops will not auto-register unless properly created. + +This prevents accidental duplication exploits. + +--- + +## Performance + +WorldEdit and FAWE operations can modify thousands of blocks at once. + +QuickShop processes these safely and efficiently: + +- Batch-aware cleanup +- Thread-safe region access (especially on Folia) +- Minimal performance impact during mass edits + +--- + +## Configuration + +There are no specific WorldEdit configuration options in QuickShop. + +Support is automatic and always enabled if WorldEdit or FAWE is detected. + +If WorldEdit is not installed, no extra code is executed. + +--- + +## Common Questions + +### Do I need the old WorldEdit compatibility jar? + +No. + +As of 6.2.0.11, WorldEdit support is built-in and the separate compatibility module has been removed. + +### Does this work with FAWE? + +Yes. FAWE is fully supported. + +### Will shops break if I use //set air? + +No. Shops will be safely removed and cleaned up. + +### Do I need to restart after installing WorldEdit? + +No. QuickShop detects WorldEdit automatically on startup. + +--- + +## Best Practices + +Even though QuickShop safely handles WorldEdit operations, it is recommended to: + +- Avoid copying shops intentionally unless required +- Use backups before large region edits +- Test large FAWE operations on staging servers when possible + +--- + +## Summary + +QuickShop’s built-in WorldEdit and FAWE integration ensures: + +- Safe mass edits +- No ghost shops +- Automatic database cleanup +- Thread-safe processing +- No extra modules required + +WorldEdit support is now a core feature of QuickShop. \ No newline at end of file diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/addon/limited.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/addon/limited.md index 70af27e240..fae55a8c95 100644 --- a/i18n/tr-TR/docusaurus-plugin-content-docs/current/addon/limited.md +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/addon/limited.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -41,8 +35,8 @@ Limit players to purchase up to 16 items per month. /quickshop limit period MONTH ``` -The system is based on the QuickShop-Hikari calendar system.\ -The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year.\ +The system is based on the QuickShop-Hikari calendar system. +The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year. Same for days, months and hours. Available time units: diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/addon/list.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/addon/list.md index 93d182f083..f20b91fd7b 100644 --- a/i18n/tr-TR/docusaurus-plugin-content-docs/current/addon/list.md +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/addon/list.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/addon/plan.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/addon/plan.md index 52a6e79cb4..c10ef4df42 100644 --- a/i18n/tr-TR/docusaurus-plugin-content-docs/current/addon/plan.md +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/addon/plan.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -18,7 +18,7 @@ Recorded data can be displayed from Hikari v2.0.0.0 onwards, but only after vers - All shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 1000 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `5` in server scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `5` in server scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Player Scope @@ -27,7 +27,7 @@ And still is Plan limitations, the list sorting is disturbed, so the display ord - All owned shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 50 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `4` in player scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `4` in player scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Showcase diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/addon/reforges.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/addon/reforges.md index 2a14509eb7..25fff1752a 100644 --- a/i18n/tr-TR/docusaurus-plugin-content-docs/current/addon/reforges.md +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/addon/reforges.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.0.0.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md index 304d39bc05..6f9f51d250 100644 --- a/i18n/tr-TR/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.1.1.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -44,7 +38,7 @@ _This is not necessary if you are using an H2 database._ ### Prepare for convert -To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console.\ +To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console. If a player is in the server, the conversion cannot be started. Once the conversion has begun, the server will be locked during the conversion process and no players will be able to join the server during the conversion. diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/addon/shopitemonly.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/addon/shopitemonly.md index c45062f8c2..1ccfe977b3 100644 --- a/i18n/tr-TR/docusaurus-plugin-content-docs/current/addon/shopitemonly.md +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/addon/shopitemonly.md @@ -2,17 +2,11 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT - -::: - -This addon prevents players from putting non-store items into store containers.\ +This addon prevents players from putting non-store items into store containers. Does not apply to stores that use the item inventory redirection API (aka. InventoryWrapper API). This Addon will check for container (or transferring) items on events such as the player closing the container or hopper access. diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md new file mode 100644 index 0000000000..9c8b4f7407 --- /dev/null +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md @@ -0,0 +1,55 @@ +# 6.2.0.10 + +## Major Changes + +- Added support for 1.21.6 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.7 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.8 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Some internal updates for packetevents(2.9.0 is now required.) +- Updated Lands support + +## Addon Changes + +- Added MatcherPlus Addon + - Allows support for BreweryX and AdvancedItems stacks in shops with improved matching abilities +- Added FabledSkyblock Compat +- Added Dominion Compat +- Added HuskTowns Compat +- Added IridiumSkyblock Compat +- Added member-create for member creation in ARM compat +- Added admin-override and quickshop.arm.admin permission for admin overrides in ARM + +## Minor Changes + +- Added configurations for the coordinates of the display item. +- Added /qs toggledisplayall on/off server/owned + - Players need to have permission node quickshop.toggledisplayall.admin to toggle all on the server. +- Added ability to use abbreviations in /qs price and /qs create commands such as 2.5k for 2500 +- Added ability to set default display status using shop.default-display in config.yml + +## Fixes + +- Fixed issue with display item being sent to the moon on 1.21.5 +- Fixed issue where TRADE_UI interactions interfered with quick create. +- Fixed issue with displays on protocollib falling through the chest +- Fixed issue with signs on .9 and previous .10 snapshots on early versions +- Implemented some performance improvements for paper servers +- Fixed all outstanding issues with Folia usage.(thanks to RootB33R/SleazLee for contributions) + +## Possible 6.2.0.11 Features + +Here's an outline for some features that may arrive in 6.2.0.11: + +- Additional compats/addons that have been piling up. + - see: https://github.com/QuickShop-Community/QuickShop-Hikari/issues/1756 +- gradle?(interested to see compilation time uplifts) +- Update documentation +- Update configuration comments +- Update configuration system? + - auto updating? + - Allows removal of the update code +- Remove waste spigot modules? + - Any versions of 1.20 that can be discarded due to low use? +- Bug fixing, of course +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... \ No newline at end of file diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md new file mode 100644 index 0000000000..b41c88662a --- /dev/null +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md @@ -0,0 +1,173 @@ +## Outline + +- Update documentation +- Update configuration comments +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... + +# 6.2.0.11 + +## Major Changes + +- Removed Spigot Platform Modules, and stopped loading QS if Spigot is detected. This will mean that unless the protocol changes that we use for display items, QS won't need updated for each version. +- Revamped Economy Code Completely + - New classes for all economy-related systems + - Any economy-related or benefits-related events are incompatible with previous versions. +- Added sign layout customizations per-type allowing you to change how lines are configured, an empty string('') will leave an empty line for that line of the sign. + +``` + #The layout of signs for shops. + layout: + + #The layout of BUYING shops. + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of FROZEN shops. + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of SELLING shops. + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +- Add wildcard support for item blacklist patterns(thanks to bennycallanan) + - Added support for wildcard patterns in the item blacklist configuration, allowing users to block entire categories of items with simple patterns. + + - Features + - Wildcard patterns like \*_AXE and \*_SPAWN_EGG now work in blacklist configuration + - Supports \* for any characters and ? for single character matching + - Case-insensitive pattern matching +- Overhauled GUI system(thanks to Yusakidev) + - Implemented gui.yml configuration file for customizing the GUI. + - Implemented better filtering for qs browse + - Implement GUI system to be more stable, and less error prone. + - Added gui.yml for fully configurable GUI layouts and text + - Browse menu: search, sort (price/name/stock), and filter (all/buying/selling/in-stock) + - Staff menu: search functionality for player/staff selection + - Grouped item pages for better shop browsing + - Refactored all menu pages to use configurable display/lore +- Added worldedit compat to QS internally as it's widely used. +- Revamped the taxation system to be more flexible and easier to configure. + - introduced a new progressive tax system that allows you to tax based on the balance of players.(suggested by YuanYuanOwO) + - introduced the ability to tax the player interacting with the shop, the owner, or both + - all tax-related configurations have been moved under the shop-tax section of the config. this may require reconfiguration of your tax settings. + - added a new ShopEnhancedTaxEvent, deprecated the old ShopTaxEvent. + - Added a new TaxManager, and TaxProvider interfaces, this allows for custom tax providers to be added by addons/third-party developers. + +## Addons/Compats Changes + +- Added UltimateClaims compat +- Added SimpleClaimSystem compat +- Added Quests by Pika addon +- Added BetonQuest addon +- Added Pl3xMap addon +- MatcherPlus Compat Improvements + - Added support for CrazyCrates + - Added support for ExcellentCrates + - Added support for SilkSpawners. +- WorldGuard Compat Improvements(Thanks to golovin12) + - Added clear permission handling: + - Region owners and members automatically have permission to create and trade in their own regions. + - Other players must have the appropriate WorldGuard flags enabled (quickshophikari-create, quickshophikari-trade) to interact with shops. + - If a shop is located outside any region, default QuickShop behavior applies (no extra restrictions) +- Added colored markers based on shop state for bluemap(thanks to YusakiDev) +- Updated dynmap/towny addons to use the new ShopTypeEnhancedEvent instead of ShopTypeEvent. +- Removed worldedit compat, it's now included in the main plugin. +- Added support for global flags to the worldguard compat. + +## Internals/Developer APIs + +- Removed several deprecated methods and classes. +- Revamped the interaction manager. It is now more flexible and allows external additions + - This involves two classes InteractionBehavior and InteractionType. + - InteractionType details the type of interaction such as: STANDING_LEFT_CLICK_SIGN, STANDING_LEFT_CLICK_SHOP + - InteractionBehavior outlines a behavior for an InteractionType such as CONTROL_PANEL and TRADE_UI +- Added UserLimitCalculationEvent, which allows for custom limits to be applied to users. + - This is useful for limiting the number of shops a user can have, or adding on to the existing limits provided by the ranks system without needing to implement a new RankLimiter. +- Added a new ShopLayoutProvider interface, and default implementation. + - This allows for custom layouts to be used for shops, allowing for more customization. + - This also allows for developers to override the default layout provider and create their own implementation. +- How to make your own? + - Implement the classes you would like to then register with the InteractionManager: + - ```java + InteractionManager manager = QuickShop.getInstance().getInteractionManager(); + + manager.interaction(new MyTradeInteraction()); + manager.behavior(new MyTradeBehavior()); + ``` +- Replaced some Apache Commons calls that could be easily replaced with built-in java methods, reduces some calls by ~ 1100ms/method call +- Deprecated the ShopType enum, and the ShopTypeEvent. These are replaced with the new IShopType interface and implementing classes. + - The new event is ShopTypeEnhancedEvent. + - This allows for third-party addons to add their own shop types, and simplifies code checks for translations. +- Updated config system to use Boosted-yaml + - this allows for auto-updating of config files without complex update scripts + - this also allows for the config system to not be minecraft-dependent. +- Replaced logical PaperLib calls with native PaperAPI calls. + +## Minor Changes + +- Bump Java version up to 21 +- Added shop.display-allow-enchants to enable/disable enchantments for display items on shops. +- Added workaround for packetevents not supporting custom enchants on itemstacks for virtual display items. +- Using locale translations for shop-type in mode toggle icon(thanks to ExyiN) +- Bumped Residence version for the compat(thanks to YuanYuanOwO) +- add world whitelist support(thanks to wling-art) +- added /qs database save command, which saves all currently dirty-marked shops to the database. +- Split up interactions _SHOPBLOCK into _SHOPBLOCK and _CONTAINER. + - _SHOPBLOCK relates to shops, where _CONTAINER relates to shop-valid containers that are not currently shops. +- Added inventory as an option for command panel, this is useful for adding a secondary option for players to open a shop's inventory. +- Moved crowdin arguments from system properties to config.yml + - crowdin-host + - use-crowdin-ota + +## Fixes + +- Fixes issue with item price restrictions(thanks to maxcom1) +- Fixes issue with 1.20.x protocol lib displays(thanks to YuanYuanOwO) +- Fixes issue when no item is in hand for itemdebug(thanks to YuanYuanOwO) +- Fixes issue with dominion addon(thanks to YuanYuanOwO) +- Add a simple check to avoid this. If it is not own shop, reject limit request directly.(Thanks to YuanYuanOwO) +- Fix NPE by not setting tax for price in TransactionBuilder(thanks to maxcom1) +- Fixes /quickshop suggestprice to differentiate between buy/sell shops. (Thanks to MidSpike) +- PacketEvents ClassNotFoundException with ProtocolLib(thanks to wling-art) +- Reallocate block state access to region thread for shop creation(thanks to r00tbeerman) +- resolve SLF4J StaticLoggerBinder loading error(thanks to wling-art) +- sign hijacking issue by validating sign facing direction(thanks to wling-art) +- Performance improvements for QuickShop disabling to prevent potential freezes. +- Fixed issue with 1.20.4 packetevents virtual displays not staying put. +- Fixes critical issue in GriefPrevention compatibility plugin. +- Fixes issue with shop owner not getting money when benefits active. +- Fixes for lands addon on folia, Use regionThread for Folia compatibility(thanks to YusakiDev) +- Fixes for TRADE_DIRECT on stacking shops +- Fixes issue for protocollib 5.4.0 with undocumented packet changes. +- Fixes issue where item stacks could be used on creation above the max stack size. +- Fixes issue with BukkitAudiences-related crashes on 1.21.11. +- Fix issue with shop deletion when getting too impatient. +- Fix the permission check issue when a shop owned by a non-owner is transferred to someone else. (thanks to YuanYuanOwO) +- Fix ui with supertool (thanks to YuanYuanOwO) +- Fix issue with logs generating outside debug mode. +- Fix issue with /qs find. +- Fix configuration loading timing. +- Fix configuration loading/creation warning message language. +- Fix command description language key mismatch(thanks to wling-art) +- Fix qs clean command on folia(thanks to wling-art) +- Fix per-player-shop-sign on folia(thanks to wling-art) +- Fix potential recursive deadlock in virtual display packet sending(thanks to wling-art) +- Fix configuration loading/creation warning message language. +- Fix issue with /qs browse and ShopItemOnly addon not behaving properly together on folia. +- Fix issue with PLAN using outdated APIs. +- Fix issue with /qs clean on folia.(thanks to wling-art) +- Fix issue with /qs cleanghost on folia(thanks to wling-art) +- More thread safety fixes for shops on folia.(thanks to wling-art) +- Fix owner payment calculations with benefits(thanks to wling-art) \ No newline at end of file diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md index 8172f9b410..dcc3edc67d 100644 --- a/i18n/tr-TR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md @@ -20,20 +20,20 @@ the ControlComponent object with a custom one that will replace the original dur ### Introduction of the Revamped Packet System 1. **About**: - - A modular and scalable system for managing packets related to virtual display items in Minecraft. - - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. + - A modular and scalable system for managing packets related to virtual display items in Minecraft. + - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. 2. **Custom Packet Factories**: - - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. - - Packet types: - - **Spawn Packet**: Spawns a virtual item entity at a specific location. - - **Metadata Packet**: Updates the visual properties of virtual items. - - **Velocity Packet**: Adds motion/velocity to entities (currently optional). - - **Destroy Packet**: Removes the entity from the client view. + - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. + - Packet types: + - **Spawn Packet**: Spawns a virtual item entity at a specific location. + - **Metadata Packet**: Updates the visual properties of virtual items. + - **Velocity Packet**: Adds motion/velocity to entities (currently optional). + - **Destroy Packet**: Removes the entity from the client view. 3. **Error Handling and Logging**: - - Enhanced debug logs to trace packet-related issues. - - Detailed error messages for missing factories or unregistered listeners. + - Enhanced debug logs to trace packet-related issues. + - Detailed error messages for missing factories or unregistered listeners. #### Improvements: diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md index 7775308722..c6e0948d19 100644 --- a/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md index f420997a9c..38587e3784 100644 --- a/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md index 5ed8182c9a..259c55f342 100644 --- a/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md index 924a37ac49..7fd4596a6a 100644 --- a/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,6 +10,6 @@ This is a BungeeCord plugin, you need install it within your BungeeCord's plugin ## How does it work? -BungeeCord Bridge plugins will register a `quickshop:bungee` channel for fowarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. +BungeeCord Bridge plugins will register a `quickshop:bungee` channel for forwarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. All forwarding is indicated by QuickShop-Hikari on the Spigot server and ends when it is not needed. diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md index 27d68956a8..20fbaf7a0c 100644 --- a/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,5 +10,5 @@ This compatibility module added [Chest Protect](https://www.spigotmc.org/resourc ## How does it work? -This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident.\ +This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident. It also prevents players from creating shops on ChestProtect protected containers. diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md index 220e26d8bb..e1757e7be9 100644 --- a/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/dominion.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/dominion.md new file mode 100644 index 0000000000..e1195278a8 --- /dev/null +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/dominion.md @@ -0,0 +1,138 @@ +# Dominion + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and Dominion. + +It ensures that shop creation and trading respect Dominion’s land and territory protection system. + +--- + +## What Does It Do? + +Dominion allows players or groups to claim land and define territory-based permissions. + +Without compatibility: + +- Players could create shops inside territories they do not control. +- Visitors might trade inside protected dominions. +- Dominion permission rules might not apply to shop interactions. + +The Dominion compat module ensures that: + +- Shop creation respects territory ownership. +- Shop trading follows Dominion permission settings. +- Protected land remains secure from unauthorized shop usage. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a Dominion-controlled area. +- Whether the player has permission within that territory. +- Whether Dominion rules allow shop interaction. + +If the action is not permitted by Dominion settings, QuickShop blocks it. + +If the location is outside any Dominion territory, default QuickShop behavior applies. + +--- + +## Territory Owner Control + +With this module enabled: + +- Territory owners can create and manage shops inside their dominion. +- Trusted members follow territory-based permissions. +- Outsiders are restricted unless explicitly allowed. +- Shop actions respect Dominion’s land rules automatically. + +This prevents unauthorized shop placement inside protected territories. + +--- + +## Installation + +1. Install Dominion. +2. Install the QuickShop Dominion compat module. +3. Restart your server. + +The module activates automatically if Dominion is detected. + +No manual configuration linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside dominions +whitelist-mode: false + +# Allow territory owners to override shop permissions +allow-owner-override: true +``` + +If Dominion is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For servers using Dominion: + +- Restrict shop creation to territory owners or trusted members. +- Prevent shop creation in wilderness if desired. +- Allow dominion owners to manage shop permissions. +- Review Dominion permission settings to align with shop behavior. + +This ensures protected territories remain secure and organized. + +--- + +## Common Questions + +### Can players create shops in someone else's dominion? + +Only if Dominion permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You may allow or restrict shops outside dominions. + +### What happens if Dominion is removed? + +QuickShop returns to normal behavior and stops checking Dominion territories. + +--- + +## Summary + +The Dominion compat module: + +- Enforces territory-based permissions +- Prevents unauthorized shop creation +- Protects claimed land from misuse +- Integrates seamlessly with Dominion + +It is recommended for servers running Dominion. \ No newline at end of file diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md index 743d3ae666..2ac9b10488 100644 --- a/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md new file mode 100644 index 0000000000..07ba4ada66 --- /dev/null +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md @@ -0,0 +1,133 @@ +# FabledSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and FabledSkyblock. + +It ensures that shop creation and trading properly respect island boundaries and island permissions. + +--- + +## What Does It Do? + +On Skyblock servers, players build and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Players might trade in areas they should not. +- Island protection rules might not apply to shops. + +The FabledSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members behave correctly with shops. +- Island visitors are restricted appropriately. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a FabledSkyblock island. +- Whether the player has permission on that island. +- Whether island settings allow the action. + +If the action is not permitted by island rules, QuickShop will deny it. + +--- + +## Island Ownership Rules + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow island permission settings. +- Visitors can only trade if island permissions allow it. +- Outside of islands, default QuickShop behavior applies. + +--- + +## Installation + +1. Install FabledSkyblock. +2. Install the QuickShop FabledSkyblock compat module. +3. Restart your server. + +The module activates automatically if FabledSkyblock is detected. + +No manual linking is required. + +--- + +## Configuration + +If the module provides configuration options, they will appear in its `config.yml`. + +Typical options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If FabledSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most Skyblock servers: + +- Allow shop creation only inside islands. +- Prevent trading in the void or wilderness. +- Let island owners control shop permissions. +- Use island rank systems to manage shop access. + +This helps maintain economic balance between islands. + +--- + +## Common Questions + +### Can players create shops in the void? + +Only if your configuration allows it. +Most servers disable shop creation outside islands. + +### Does this affect island war or PvP modes? + +No. +The module only checks island ownership and permissions for shop interactions. + +### What happens if FabledSkyblock is removed? + +QuickShop returns to normal behavior. + +--- + +## Summary + +The FabledSkyblock compat module: + +- Protects island economies +- Enforces island permission rules +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is strongly recommended for any server running FabledSkyblock. \ No newline at end of file diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md index 81b13d2c6b..32614d3019 100644 --- a/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md @@ -2,17 +2,17 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -GreifPrevention compatibility module added compaitibility with GF. +GreifPrevention compatibility module added compatibility with GF. ## How does it work This module allow QuickShop-Hikari check if player have permission to create or use QuickShop in specific region. -And delete shops when claim removed, untrusted, unclimed, expired, resized or subclaim created. +And delete shops when claim removed, untrusted, unclaimed, expired, resized or subclaim created. ## Configuration diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md new file mode 100644 index 0000000000..e71b34d462 --- /dev/null +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md @@ -0,0 +1,139 @@ +# HuskTowns + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and HuskTowns. + +It ensures that shop creation and trading respect town and claim permissions defined by HuskTowns. + +--- + +## What Does It Do? + +HuskTowns allows players to create towns and claim land. + +Without compatibility: + +- Players could create shops inside towns they do not belong to. +- Visitors might trade inside protected towns. +- Town permission rules might not apply to shop interactions. + +The HuskTowns compat module ensures that: + +- Shop creation respects town ownership. +- Trading follows town permission settings. +- Town members and visitors are handled correctly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a HuskTowns claim. +- Whether the player is a town member, trusted player, or outsider. +- Whether the town's permission settings allow the action. + +If the action is not permitted by town rules, QuickShop blocks it. + +Outside of town claims, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Town Owner Control + +With this module enabled: + +- Town owners can create and manage shops inside their town. +- Town members follow town-based permission settings. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect town claim protection. + +This prevents unauthorized shop placement and trading inside protected towns. + +--- + +## Installation + +1. Install HuskTowns. +2. Install the QuickShop HuskTowns compat module. +3. Restart your server. + +The module activates automatically if HuskTowns is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside towns +whitelist-mode: false + +# Allow town owners to override shop permissions +allow-owner-override: true +``` + +If HuskTowns is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For town-based survival servers: + +- Restrict shop creation to town members. +- Allow trading only where town permissions permit. +- Prevent shop creation in wilderness if desired. +- Enable owner override for better administrative control. + +This helps maintain town-based economic balance. + +--- + +## Common Questions + +### Can players create shops in another town? + +Only if that town's permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You can allow or restrict shops outside towns. + +### What happens if HuskTowns is removed? + +QuickShop returns to normal behavior and stops checking town permissions. + +--- + +## Summary + +The HuskTowns compat module: + +- Enforces town-based land permissions +- Protects towns from unauthorized shop usage +- Integrates smoothly with HuskTowns +- Requires minimal setup + +It is recommended for any server running HuskTowns. \ No newline at end of file diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md new file mode 100644 index 0000000000..3fa2995eb0 --- /dev/null +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md @@ -0,0 +1,139 @@ +# IridiumSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and IridiumSkyblock. + +It ensures that shop creation and trading respect island boundaries and island permission settings defined by IridiumSkyblock. + +--- + +## What Does It Do? + +IridiumSkyblock allows players to create and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Visitors might trade inside protected islands. +- Island protection rules might not apply correctly to shops. + +The IridiumSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members and visitors are handled properly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside an IridiumSkyblock island. +- Whether the player is the island owner, member, or visitor. +- Whether island permissions allow shop interaction. + +If the action is not permitted, QuickShop blocks it. + +Outside of islands, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Island Owner Permissions + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow the island's permission configuration. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect island protection rules. + +This prevents unauthorized shop usage inside protected islands. + +--- + +## Installation + +1. Install IridiumSkyblock. +2. Install the QuickShop IridiumSkyblock compat module. +3. Restart your server. + +The module activates automatically if IridiumSkyblock is detected. + +No additional setup is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If IridiumSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most IridiumSkyblock servers: + +- Restrict shop creation to island owners. +- Allow island members to trade if trusted. +- Prevent shop creation in the void or wilderness. +- Enable owner override for better management. + +This helps maintain balanced island economies. + +--- + +## Common Questions + +### Can players create shops outside their island? + +Only if your configuration allows it. + +Most Skyblock servers restrict shops to island areas. + +### Do island ranks affect shop permissions? + +Yes, if your island permissions are configured to control interaction rights. + +QuickShop follows island rules. + +### What happens if IridiumSkyblock is removed? + +QuickShop returns to normal behavior and stops checking island permissions. + +--- + +## Summary + +The IridiumSkyblock compat module: + +- Protects island economies +- Enforces island-based permissions +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is recommended for any server running IridiumSkyblock. diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md new file mode 100644 index 0000000000..3b4726cb9d --- /dev/null +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md @@ -0,0 +1,151 @@ +# ItemMatcherPlus + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +The ItemMatcherPlus module improves how QuickShop matches custom and plugin-modified items. + +It allows QuickShop to properly recognize and stack items created by other plugins that normally would not match using standard Bukkit item comparisons. + +This module is especially useful for servers that use: + +- Custom items +- Modified metadata +- NBT-based systems +- Advanced crate rewards +- Custom brewing systems +- Custom fishing rewards + +--- + +## What Does It Do? + +By default, Minecraft item matching checks: + +- Material type +- Basic metadata + +However, many plugins modify items with: + +- Custom NBT data +- Hidden tags +- Custom lore formats +- Unique identifiers + +Without enhanced matching: + +- Items may not stack +- Shops may refuse valid items +- Transactions may fail +- Buying/selling may not behave correctly + +ItemMatcherPlus improves compatibility and matching accuracy. + +--- + +## Supported Plugins + +ItemMatcherPlus includes built-in support for: + +- AdvancedItems +- BreweryX +- CrazyCrates +- ExcellentCrates +- PyroFishing +- SilkSpawners + +If any of these plugins are installed, QuickShop will automatically use enhanced matching logic. + +No additional configuration is required. + +--- + +## How It Works + +When a player trades with a shop: + +1. QuickShop checks the item. +2. If ItemMatcherPlus is enabled, it performs advanced matching. +3. Plugin-specific metadata is validated. +4. The item is confirmed as a match (or rejected safely). + +This allows: + +- Proper stacking of custom items +- Correct shop transactions +- Accurate buy/sell detection +- Reduced false mismatches + +--- + +## Installation + +1. Download the ItemMatcherPlus module. +2. Place the JAR into your `plugins` folder. +3. Restart your server. + +If supported plugins are detected, compatibility activates automatically. + +--- + +## Configuration + +ItemMatcherPlus does not require configuration. + +It activates automatically when: + +- The module is installed +- A supported plugin is detected + +If a supported plugin is not installed, no extra logic runs. + +--- + +## Why You Should Use It + +You should install ItemMatcherPlus if your server uses: + +- Custom fishing plugins +- Custom brewing systems +- Crate plugins with modified items +- Custom spawners +- Any plugin that modifies NBT data + +Without it, shops may not properly recognize custom items. + +--- + +## Common Questions + +### Do I need this if I don't use custom item plugins? + +No. +If you only use vanilla items, this module is not necessary. + +### Does this affect performance? + +The module only activates enhanced matching when needed. + +Normal item matching remains fast and efficient. + +### Will it break existing shops? + +No. +It improves compatibility and matching accuracy without modifying existing shop data. + +--- + +## Summary + +ItemMatcherPlus: + +- Improves item matching accuracy +- Adds support for major custom item plugins +- Prevents stacking and trade issues +- Requires no configuration +- Activates automatically + +If you run a heavily customized economy server, this module is highly recommended. \ No newline at end of file diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md index ba87606698..d4ae7d129a 100644 --- a/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/lands.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/lands.md index 06296f5779..7671fcdfe0 100644 --- a/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/lands.md +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/lands.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/openinv.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/openinv.md index c51f628615..4807d57873 100644 --- a/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/openinv.md +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/openinv.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md new file mode 100644 index 0000000000..c2136320b0 --- /dev/null +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md @@ -0,0 +1,138 @@ +# SimpleClaimSystem + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and SimpleClaimSystem. + +It ensures that shop creation and trading respect land ownership and claim permissions defined by SimpleClaimSystem. + +--- + +## What Does It Do? + +SimpleClaimSystem allows players to claim land and protect it from unauthorized interaction. + +Without compatibility: + +- Players could create shops inside claims they do not own. +- Visitors might trade inside protected areas. +- Claim protection might not apply correctly to shops. + +The SimpleClaimSystem compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops within their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a SimpleClaimSystem claim. +- Whether the player has permission within that claim. +- Whether claim rules allow shop interaction. + +If the action is not permitted by the claim, QuickShop blocks it. + +If the location is outside any claim, default QuickShop behavior applies. + +--- + +## Claim Owner Control + +With this module enabled: + +- Claim owners can create and manage shops inside their claim. +- Trusted players follow claim-based permissions. +- Visitors are restricted unless explicitly allowed. +- Claim protection rules apply automatically to shop interactions. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install SimpleClaimSystem. +2. Install the QuickShop SimpleClaimSystem compat module. +3. Restart your server. + +The module activates automatically if SimpleClaimSystem is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If SimpleClaimSystem is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Enable owner override for easier management. + +This ensures players maintain control over their protected land. + +--- + +## Common Questions + +### Can players create shops in someone else's claim? + +Only if claim permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can allow shops outside claims or restrict them. + +### What happens if SimpleClaimSystem is removed? + +QuickShop will revert to default behavior and stop checking claim permissions. + +--- + +## Summary + +The SimpleClaimSystem compat module: + +- Enforces claim-based permissions +- Prevents unauthorized shop creation +- Protects land from unwanted trading +- Requires minimal setup + +It is recommended for servers running SimpleClaimSystem. \ No newline at end of file diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md index a84dbf057b..4dfa8ae97c 100644 --- a/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/towny.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/towny.md index 52ab4818f4..b26c19d335 100644 --- a/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/towny.md +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/towny.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -26,7 +26,7 @@ Town sub-command allow you switch a quickshop between regular shop and town shop For a nation shop, the shop owner will changed to nation fake player created by Towny, and use Nation's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from nation Towny account.\ +All purchases will deposit or withdraw money from nation Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Nation Shop. @@ -35,7 +35,7 @@ If Plot type restriction is enabled, only a specific Plot type can create a Nati For a town shop, the shop owner will changed to town fake player created by Towny, and use Town's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from town Towny account.\ +All purchases will deposit or withdraw money from town Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Town Shop. @@ -88,7 +88,7 @@ bank-mode: ## Permission Override -By adjust configuration, you're allow mayor or king automaticlly grant administrator permission on all shops in their management range. +By adjust configuration, you're allow mayor or king automatically grant administrator permission on all shops in their management range. ```yaml #Should allow Mayor grant the shop administrator permission on they town. @@ -168,7 +168,7 @@ This causes Towny and QuickShop Hikari to use accounts with the same name but di You can adjust the option in configuration to enable workaround. -NOTE: It will force turned on if detected EssentialsX installed on your server.\ +NOTE: It will force turned on if detected EssentialsX installed on your server. At present, we do not provide a method for disable it. ```yaml diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md new file mode 100644 index 0000000000..0189958495 --- /dev/null +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md @@ -0,0 +1,138 @@ +# UltimateClaims + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and UltimateClaims. + +It ensures that shop creation and trading respect land claim permissions managed by UltimateClaims. + +--- + +## What Does It Do? + +On servers using land-claim plugins, players protect areas of the world from unauthorized interaction. + +Without compatibility: + +- Players may create shops inside claims they do not own. +- Visitors might trade in areas where they should not. +- Claim protection rules might not apply correctly to shops. + +The UltimateClaims compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops inside their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a claim. +- Whether the player has permission in that claim. +- Whether claim rules allow shop interaction. + +If the action violates claim settings, QuickShop blocks it. + +Outside of claims, normal QuickShop behavior applies. + +--- + +## Claim Owner Permissions + +With this module enabled: + +- Claim owners can create and manage shops within their claim. +- Trusted players follow claim permission settings. +- Visitors are restricted based on claim configuration. +- Shop actions outside of claims behave normally. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install UltimateClaims. +2. Install the QuickShop UltimateClaims compat module. +3. Restart your server. + +If UltimateClaims is detected on startup, compatibility activates automatically. + +No additional linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Common options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If UltimateClaims is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Keep owner override enabled for better control. + +This ensures players maintain full control over their protected land. + +--- + +## Common Questions + +### Can players create shops inside someone else's claim? + +Only if the claim permissions allow it. + +Otherwise, QuickShop will block the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can choose to restrict shops to claimed land only. + +### What happens if UltimateClaims is removed? + +QuickShop returns to normal behavior without claim checks. + +--- + +## Summary + +The UltimateClaims compat module: + +- Protects claimed land from unauthorized shop usage +- Enforces claim-based permissions +- Integrates smoothly with land-claim servers +- Requires minimal setup + +It is recommended for any server running UltimateClaims. \ No newline at end of file diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md index 87a71a205c..6437754503 100644 --- a/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md @@ -2,8 +2,10 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. Find out more [here](../modules/shops/worldedit.md). + +Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. \ No newline at end of file diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/development/01-getting-start.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/development/01-getting-start.md index 92b773451e..0e78e52367 100644 --- a/i18n/tr-TR/docusaurus-plugin-content-docs/current/development/01-getting-start.md +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/development/01-getting-start.md @@ -6,8 +6,8 @@ This series of articles will help you build extensions for QuickShop-Hikari or i ## License -QuickShop-Hikari is open source using the [GPLv3](https://www.gnu.org/licenses/quick-guide-gplv3.en.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari).\ -You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the GPLv3 agreement. +QuickShop-Hikari is open source using the [AGPLv3](https://www.gnu.org/licenses/agpl-3.0.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari). +You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the AGPLv3 agreement. ## 🚧Don't trust Javadoc too much @@ -48,7 +48,7 @@ QuickShop-Hikari divides operation sources into three types: - Server Main Thread - Async Thread (any other threads but not server main thread) -- Hybird +- Hybrid If you access the API through the wrong thread, QuickShop-Hikari will force a runtime error to be thrown. @@ -58,4 +58,4 @@ For APIs that may trigger network IO or long-time disk IO, you are required not You can see [Util.ensureThread()](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/3d1d271e1106ea1c83cc6068f8232ab7c7860918/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/util/Util.java#L351) and find out the requirements of the different APIs by looking up their use. APIs that do not use Util.ensureThread() are allowed to be called from any thread by default. -You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. +You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. \ No newline at end of file diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md index aa2404c594..7828d414ad 100644 --- a/i18n/tr-TR/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md @@ -10,7 +10,7 @@ ShopManager manager = api.getShopManager(); ## Getting a shop -Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates.\ +Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates. QuickShop-Hikari's store is only bound to one half of "Large Chest", so to get the store, you need to query both the cube itself and its associated cube. The good thing is that there is an API in the plugin that allows you to handle this situation very easily. @@ -71,7 +71,7 @@ manager.deleteShop(shop) // Permanently delete this store, both memory and datab ## Identify a store -Please note that store locations are technically variable and you should not use coordinates to identify a store.\ +Please note that store locations are technically variable and you should not use coordinates to identify a store. Also RuntimeRandomUniqueId should not be used to identify the store, as the name suggests, the value changes every time the server restarts, it should only be used to handle scenarios where the player interacts with the server. ```java diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md index 543f1851da..4f839ed652 100644 --- a/i18n/tr-TR/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md @@ -1,6 +1,6 @@ # 0x05 Per shop permission -QuickShop-Hikari has a per shop permission management system.\ +QuickShop-Hikari has a per shop permission management system. Therefore, for a normal permission node check is not enough, you need to attach an additional check. ## Check with shop diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/development/06-protocol-system.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/development/06-protocol-system.md index 5d37a15536..0380b789f9 100644 --- a/i18n/tr-TR/docusaurus-plugin-content-docs/current/development/06-protocol-system.md +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/development/06-protocol-system.md @@ -15,30 +15,30 @@ This documentation will guide developers through the components, implementation - **Purpose**: Manages packet handling and initialization logic. - **Interface**: `PacketHandler` - **Key Methods**: - - `Map> factories()` - - Retrieves a map of supported `PacketFactory` instances keyed by game versions. - - `void initialize()` - - Initializes the packet handler. - - `Optional> factory(String version)` - - Retrieves a `PacketFactory` for a specific game version. + - `Map> factories()` + - Retrieves a map of supported `PacketFactory` instances keyed by game versions. + - `void initialize()` + - Initializes the packet handler. + - `Optional> factory(String version)` + - Retrieves a `PacketFactory` for a specific game version. ### 2. **PacketFactory** - **Purpose**: Creates and sends specific packet types. - **Interface**: `PacketFactory` - **Supported Packets**: - - **Spawn Packet**: - - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. - - Example Use: Representing shop items visually. - - **Metadata Packet**: - - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. - - Example Use: Updating item display name or properties. - - **Velocity Packet**: - - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. - - Example Use: Custom animations for virtual items. - - **Destroy Packet**: - - Removes the entity from the client view. Created using `createDestroyPacket()`. - - Example Use: Unloading or removing a virtual display item. + - **Spawn Packet**: + - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. + - Example Use: Representing shop items visually. + - **Metadata Packet**: + - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. + - Example Use: Updating item display name or properties. + - **Velocity Packet**: + - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. + - Example Use: Custom animations for virtual items. + - **Destroy Packet**: + - Removes the entity from the client view. Created using `createDestroyPacket()`. + - Example Use: Unloading or removing a virtual display item. Developers implementing custom `PacketFactory` should ensure these packets are correctly handled and optimized for performance. @@ -46,24 +46,24 @@ Developers implementing custom `PacketFactory` should ensure these packets are c - **Purpose**: Oversees the lifecycle of virtual display items and integrates with packet handlers. - **Key Features**: - - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). - - Manages virtual display items mapped to chunks. - - Provides thread-safe operations for adding and removing display items. + - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). + - Manages virtual display items mapped to chunks. + - Provides thread-safe operations for adding and removing display items. ### 4. **VirtualDisplayItem** - **Purpose**: Represents a virtual item displayed to players. - **Key Features**: - - Generates and caches packets for spawning, metadata, velocity, and destruction. - - Manages packet senders for each player. - - Handles spawn and removal operations dynamically. + - Generates and caches packets for spawning, metadata, velocity, and destruction. + - Manages packet senders for each player. + - Handles spawn and removal operations dynamically. ### 5. **ProtocolLibHandler and PacketEventsHandler** - **Purpose**: Provide implementations of `PacketHandler` using ProtocolLib and PacketEvents, respectively. - **Differences**: - - `ProtocolLibHandler` leverages ProtocolLib API. - - `PacketEventsHandler` uses the PacketEvents library. + - `ProtocolLibHandler` leverages ProtocolLib API. + - `PacketEventsHandler` uses the PacketEvents library. --- @@ -140,11 +140,11 @@ public class CustomPacketFactory implements PacketFactory { Packet factories are provided for specific game versions through two primary implementations: - **ProtocolLib**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` - **PacketEvents**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` --- diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md new file mode 100644 index 0000000000..aebc035f87 --- /dev/null +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md @@ -0,0 +1,297 @@ +# Interaction System (Developer Guide) + +The Interaction System allows developers to fully customize how players interact with shops. + +As of 6.2.0.11, the system has been redesigned to be: + +- Modular +- Extensible +- Thread-safe +- Fully customizable by third-party addons + +This guide will walk you through: + +1. What the Interaction System is +2. Getting the `InteractionManager` +3. Understanding `InteractionType` +4. Understanding `InteractionBehavior` +5. Registering custom interactions +6. Best practices + +--- + +# Overview + +The Interaction System is composed of three main components: + +| Component | Purpose | +| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| `InteractionType` | Describes **what kind of click happened** (standing, sneaking, left-click, sign, shopblock, etc.) | +| `InteractionBehavior` | Describes **what action should happen** when that type is triggered | +| `InteractionManager` | Central registry that manages interactions and behaviors | + +This separation allows developers to: + +- Add new click types +- Add new behaviors +- Override existing ones +- Extend QuickShop without modifying core code + +--- + +# Getting the InteractionManager + +To begin registering custom interactions, you must retrieve the `InteractionManager` instance. + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +If you are working directly with the plugin instance: + +```java +InteractionManager manager = QuickShop.getInstance().getInteractionManager(); +``` + +Once obtained, you can: + +- Register new interaction types +- Register new behaviors +- Override existing behaviors + +--- + +# Understanding InteractionType + +`InteractionType` represents **how** a player interacted with a shop. + +Examples include: + +- `STANDING_LEFT_CLICK_SIGN` +- `STANDING_RIGHT_CLICK_SHOPBLOCK` +- `SNEAKING_LEFT_CLICK_CONTAINER` +- etc. + +Each `InteractionType` defines: + +- Player stance (standing/sneaking) +- Click type (left/right) +- Target (sign/shopblock/container) + +InteractionTypes do NOT define behavior — they only define the trigger. + +--- + +# Understanding InteractionBehavior + +`InteractionBehavior` defines **what happens** when an interaction is triggered. + +Examples of built-in behaviors: + +- `TRADE_INTERACTION` +- `TRADE_UI` +- `CONTROL_PANEL` +- `CONTROL_PANEL_UI` +- `NONE` + +A behavior: + +- Executes logic +- May open GUIs +- May send chat panels +- May directly trade items +- Can cancel or modify flow + +This separation makes it easy to reuse behaviors across multiple interaction types. + +--- + +# Registering Custom Interactions + +There are two things you can register: + +- A custom `InteractionType` +- A custom `InteractionBehavior` + +--- + +## Creating a Custom InteractionBehavior + +Create a class implementing `InteractionBehavior`. + +Example: + +```java +public class MyTradeBehavior implements InteractionBehavior { + + @Override + public String getKey() { + return "MY_CUSTOM_TRADE"; + } + + @Override + public void execute(InteractionClick click) { + Player player = click.getPlayer(); + Shop shop = click.getShop(); + + player.sendMessage("You triggered my custom interaction!"); + + // Add your custom logic here + } +} +``` + +Then register it: + +```java +InteractionManager manager = api.getInteractionManager(); +manager.behavior(new MyTradeBehavior()); +``` + +Now your behavior is available for use. + +--- + +## Creating a Custom InteractionType + +You may also register custom interaction types if you want to introduce new trigger definitions. + +Example: + +```java +public class MyCustomInteraction implements InteractionType { + + @Override + public String getKey() { + return "STANDING_DOUBLE_CLICK_SIGN"; + } + + @Override + public boolean matches(InteractionClick click) { + // Define custom logic to detect this interaction + return click.isStanding() + && click.isSign() + && click.isDoubleClick(); + } +} +``` + +Register it: + +```java +manager.interaction(new MyCustomInteraction()); +``` + +--- + +# Binding Types to Behaviors + +The InteractionManager internally maps interaction types to behaviors based on configuration and registration order. + +Once your behavior is registered: + +- It can be referenced in `interaction.yml` +- Or attached programmatically + +Example interaction.yml usage: + +```yaml +STANDING_LEFT_CLICK_SIGN: MY_CUSTOM_TRADE +``` + +--- + +# The InteractionClick Object + +When your behavior executes, you receive an `InteractionClick` object. + +It provides: + +- `getPlayer()` +- `getShop()` +- `getLocation()` +- `isSneaking()` +- `isSign()` +- `isShopBlock()` +- etc. + +This gives full context for safe execution. + +--- + +# Advanced: Overriding Built-in Behavior + +If you register a behavior using the same key as an existing one, your behavior can override the default. + +⚠️ Be careful when doing this — you are replacing core functionality. + +--- + +# Best Practices + +### Always Use Unique Keys + +Avoid naming collisions: + +``` +MYPLUGIN_CUSTOM_BEHAVIOR +``` + +### Keep Behavior Lightweight + +Do not block the main thread with: + +- Heavy database calls +- File IO +- Network calls + +Use async tasks if needed. + +### Respect Permissions + +Always validate: + +```java +if (!player.hasPermission("myplugin.use")) { + return; +} +``` + +### Avoid Hard Overrides Unless Necessary + +Instead of replacing built-in behaviors, consider extending them. + +--- + +# Example: Full Minimal Implementation + +```java +public class ExampleAddon { + + public void register(QuickShopAPI api) { + + InteractionManager manager = api.getInteractionManager(); + + manager.behavior(new MyTradeBehavior()); + manager.interaction(new MyCustomInteraction()); + } +} +``` + +--- + +# Conclusion + +The Interaction System is designed to allow: + +- Full extensibility +- Clean separation of triggers and actions +- Easy integration for third-party developers + +By retrieving the `InteractionManager`: + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +You gain full control over how shops respond to player actions. \ No newline at end of file diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/development/08-tax-manager.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/development/08-tax-manager.md new file mode 100644 index 0000000000..72a56f9e88 --- /dev/null +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/development/08-tax-manager.md @@ -0,0 +1,266 @@ +# Tax System (Developer Guide) + +The QuickShop tax system allows server owners and developers to define how transaction taxes are calculated, distributed, and extended. + +As of 6.2.0.11, the tax system has been fully rewritten to provide: + +- A flexible TaxManager +- Pluggable TaxProvider support +- Progressive taxation +- Tax targeting (shop owner, interacting player, or both) +- Custom extension capability for third-party addons + +This guide explains how to work with the tax system programmatically. + +--- + +# Overview + +The tax system is composed of three core components: + +TaxManager +Responsible for coordinating tax calculation and execution. + +TaxProvider +Defines how tax values are calculated. + +TaxRates +Represents calculated tax results for a transaction. + +The system is designed to allow custom providers to be registered and used without modifying core logic. + +--- + +# Getting the TaxManager + +To work with the tax system, retrieve the TaxManager from the ShopManager. + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +Once obtained, you can: + +- Access current tax configuration +- Register custom tax providers +- Calculate tax values +- Hook into tax events + +--- + +# How the Tax System Works + +During a shop transaction: + +1. A base price is determined. +2. The TaxManager selects the active TaxProvider. +3. The TaxProvider calculates applicable tax. +4. A TaxRates object is produced. +5. The system applies the tax to: + + - Shop owner + - Interacting player + - Or both (depending on configuration) + +This architecture allows tax behavior to be modified without altering transaction logic. + +--- + +# TaxProvider + +A TaxProvider defines how tax values are calculated. + +You may create your own provider to implement: + +- Progressive tax brackets +- Flat percentage tax +- Conditional tax rules +- Region-based tax +- Rank-based tax +- Time-based tax + +Example minimal provider: + +```java +public class MyCustomTaxProvider implements TaxProvider { + + @Override + public TaxRates calculateTax(TaxContext context) { + + double basePrice = context.getPrice(); + + double taxAmount = basePrice * 0.05; // 5% flat tax + + return new TaxRates() + .ownerTax(taxAmount) + .buyerTax(0.0); + } +} +``` + +Then register it: + +```java +taxManager.provider(new MyCustomTaxProvider()); +``` + +Once registered, your provider will be used for tax calculations. + +--- + +# TaxRates + +TaxRates represents the result of a tax calculation. + +It typically contains: + +- Owner tax amount +- Buyer tax amount +- Total tax impact +- Metadata (if applicable) + +The transaction system will read from TaxRates and apply deductions accordingly. + +--- + +# Progressive Taxation + +The built-in system supports progressive tax structures. + +This allows server administrators to tax based on: + +- Player balance +- Shop owner balance +- Configured tax brackets + +Example configuration concept: + +- 0–10,000 balance → 1% tax +- 10,000–100,000 → 2% tax +- 100,000+ → 3% tax + +Developers can extend or override this logic inside a custom TaxProvider. + +--- + +# Targeting Tax + +The new tax system allows taxes to be applied to: + +- Shop owner +- Interacting player +- Both + +This is controlled via configuration, but custom providers can override distribution logic by adjusting TaxRates output. + +Example: + +```java +return new TaxRates() + .ownerTax(basePrice * 0.02) + .buyerTax(basePrice * 0.01); +``` + +--- + +# Registering a Custom TaxProvider + +To replace or extend tax logic: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); + +taxManager.provider(new MyCustomTaxProvider()); +``` + +You may register only one primary provider at a time. If multiple providers are needed, implement internal delegation within your custom provider. + +--- + +# Tax Events + +The tax system integrates with the event system. + +The modern event used is: + +ShopEnhancedTaxEvent + +This replaces legacy tax events and provides improved context, including: + +- Transaction builder reference +- TaxRates object +- Modification capability before final execution + +You can listen for the event and modify tax behavior dynamically: + +```java +@EventHandler +public void onTax(ShopEnhancedTaxEvent event) { + + TaxRates rates = event.getTaxRates(); + + // Example: Give VIP players reduced owner tax + if (event.getOwner().hasPermission("vip.tax.discount")) { + rates.ownerTax(rates.getOwnerTax() * 0.5); + } +} +``` + +--- + +# Best Practices + +Always keep tax calculations lightweight. + +Avoid: + +- Heavy database queries inside calculateTax +- Blocking network calls +- Long-running computations + +If complex logic is required, pre-cache required data outside the tax execution path. + +Ensure negative tax values are not returned unless intentional. + +Always validate final amounts before applying modifications. + +Respect configuration hierarchy unless intentionally overriding it. + +--- + +# Example Full Implementation + +```java +public class ExampleTaxAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + TaxManager taxManager = manager.taxManager(); + + taxManager.provider(new MyCustomTaxProvider()); + } +} +``` + +--- + +# Conclusion + +The new tax system is designed for: + +- Flexibility +- Extensibility +- Clean separation of concerns +- Future expansion + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +You gain full control over how QuickShop calculates and applies tax during transactions. \ No newline at end of file diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/development/09-layout-provider.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/development/09-layout-provider.md new file mode 100644 index 0000000000..55e3cd3e91 --- /dev/null +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/development/09-layout-provider.md @@ -0,0 +1,275 @@ +# Shop Layout Provider (Developer Guide) + +The Shop Layout Provider system allows developers to customize how shop signs are structured and rendered. + +As of 6.2.0.11, shop layouts are no longer hardcoded. Instead, they are controlled through the `IShopLayoutProvider` interface, which allows: + +- Custom sign line ordering +- Per-shop-type layouts (BUYING, SELLING, FROZEN, or custom types) +- Dynamic layout resolution +- Complete replacement of the default layout system + +This guide explains how to access, override, and implement a custom layout provider. + +--- + +# Overview + +The layout provider controls how shop sign lines are arranged. + +Instead of hardcoding: + +Line 1 → Header +Line 2 → Trading info +Line 3 → Item +Line 4 → Price + +The system now allows full customization through: + +- Config-based layout definitions +- Custom `IShopLayoutProvider` implementations +- Runtime overrides + +The default implementation is `SimpleShopLayoutProvider`. + +--- + +# Accessing the Layout Provider + +To retrieve the current layout provider: + +```java +ShopManager manager = api.getShopManager(); +IShopLayoutProvider provider = manager.shopLayoutProvider(); +``` + +To replace the layout provider with a custom one: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Once replaced, your implementation will control how shop layouts are generated. + +--- + +# Understanding IShopLayoutProvider + +`IShopLayoutProvider` defines how layout data is retrieved and resolved. + +It is responsible for: + +- Providing layout configuration per shop type +- Determining which layout to use +- Supplying formatted line keys +- Allowing future extensibility + +The default implementation reads layout definitions from configuration and applies them based on shop type. + +--- + +# Default Layout Example + +The default configuration-based layout looks like this: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +Each line maps to a layout component key. + +An empty string (`""`) leaves that line blank. + +The layout provider resolves these keys into actual sign content. + +--- + +# Creating a Custom Layout Provider + +To override the default behavior, implement `IShopLayoutProvider`. + +Example minimal implementation: + +```java +public class MyCustomLayoutProvider implements IShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + + ShopLayout layout = new ShopLayout(); + + layout.setLine(1, "Custom Header"); + layout.setLine(2, "Owner: " + shop.getOwnerName()); + layout.setLine(3, shop.getItem().getType().name()); + layout.setLine(4, "$" + shop.getPrice()); + + return layout; + } +} +``` + +Then register it: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Your layout will now control all shop sign formatting. + +--- + +# Per-Type Layout Control + +Because the system no longer depends on the legacy ShopType enum, layouts can support: + +- Built-in types (BUYING, SELLING, FROZEN) +- Custom shop types +- Addon-defined shop types + +Your provider can determine layout logic dynamically: + +```java +@Override +public ShopLayout provideLayout(Shop shop) { + + if (shop.getShopType().key().equals("FROZEN")) { + return frozenLayout(shop); + } + + return defaultLayout(shop); +} +``` + +This allows conditional formatting, localization adjustments, or special event styling. + +--- + +# Advanced Customization + +A custom layout provider can: + +- Pull data from external plugins +- Inject dynamic placeholders +- Modify layout per player +- Apply formatting logic +- Override color schemes +- Apply region-based formatting +- Implement animated sign systems + +Because the layout provider is resolved at runtime, you can compute layouts dynamically instead of reading static config. + +--- + +# Replacing vs Extending the Default Provider + +You have two options: + +Replace entirely: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Or extend the default implementation: + +```java +public class ExtendedLayoutProvider extends SimpleShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + ShopLayout base = super.provideLayout(shop); + + base.setLine(1, "[Extended] " + base.getLine(1)); + + return base; + } +} +``` + +Extending is safer if you only want to modify small portions. + +--- + +# Best Practices + +Keep layout generation lightweight. + +Avoid: + +- Heavy database queries +- Blocking IO +- Complex network calls + +Layout generation runs during shop updates and sign refresh events. + +Always handle null values safely. + +Ensure layout line count does not exceed sign limits. + +Avoid hardcoding shop type names unless necessary. + +If your layout supports custom shop types, validate their keys properly. + +--- + +# Example Full Registration + +```java +public class LayoutAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + + manager.shopLayoutProvider(new MyCustomLayoutProvider()); + } +} +``` + +--- + +# Conclusion + +The Shop Layout Provider system allows complete control over shop sign structure. + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +``` + +And setting: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +You can redefine how every shop is displayed on the server. + +This system was designed to support: + +- Extensibility +- Custom shop types +- Localization +- Dynamic formatting +- Future expansion \ No newline at end of file diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/faq/compare-reremake.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/faq/compare-reremake.md index aaa1a9e507..6b39f02520 100644 --- a/i18n/tr-TR/docusaurus-plugin-content-docs/current/faq/compare-reremake.md +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/faq/compare-reremake.md @@ -64,7 +64,7 @@ If you are a Reremake user, you may be confused about the differences between Hi ## Which one should I use? Well, it depends on what your needs are.\ -If you have an old server (<1.20) instance, Reremake is your only choice.\ +If you have an old server ({'<'}1.20) instance, Reremake is your only choice.\ ~~If you are in China which has GFW interfere, you also should consider Reremake because it doesn't need to load libraries from Global Internet.~~ Solved in 6.0.0.0. If none of these applies, give Hikari a try! diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md index 551f579e7c..172be3a69b 100644 --- a/i18n/tr-TR/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md @@ -1,8 +1,8 @@ # Where Addons/Compacts is -Addons and Compatilibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. +Addons and Compatibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. -- Open Modrinth versions page, locate the version your're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) +- Open Modrinth versions page, locate the version you're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) - Frantically slide your mouse wheel down until the lowest end of the page. - You get it! diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/internal/database-schema.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/internal/database-schema.md index fea685e4fc..45e04adb56 100644 --- a/i18n/tr-TR/docusaurus-plugin-content-docs/current/internal/database-schema.md +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/internal/database-schema.md @@ -4,17 +4,17 @@ This chapter will explain the implementation details of QuickShop Hikari's datab ## Tables -This section explains the database tables created by QuickShop-Hikari.\ -Unless otherwise specified, the initial `qs_` in table name is the table prefix.\ +This section explains the database tables created by QuickShop-Hikari. +Unless otherwise specified, the initial `qs_` in table name is the table prefix. For the latest code definition for each table, see: [DataTables.java](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/hikari/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/database/DataTables.java) ### `data` -This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information.\ -No matter what, a data record should not be modified after it is created, until it got deleted.\ +This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information. +No matter what, a data record should not be modified after it is created, until it got deleted. Any new changes to the shop should create a new copy, apply the changes to the copy, and insert it as a new record. -Basiclly, Copy-on-write. +Basically, Copy-on-write. A data record only be deleted from the database when no any table references their `data_id`. @@ -29,7 +29,7 @@ A data record only be deleted from the database when no any table references the | unlimited | BIT NOT NULL | 0 | Indicates whether this store is an unlimited store, 0=Limited, 1=Unlimited | | hologram | BIT NOT NULL | 0 | Indicates the suspension status of this store's display item, 0=Follow global settings, 1=Disabled | | tax_account | VARCHAR(36) | NULL | The uuid for tax account, If it is not NULL, tax will be paid to the specified account | -| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serilized to JSON string | +| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serialized to JSON string | | extra | LONGTEXT | Empty Yaml | Used to store experimental settings of QuickShop Hikari or persistent data of other plugins | | inv_wrapper | VARCHAR(255) NOT NULL | N/A | Unique identifier for InventoryWrapper for this shop data entry | | inv_symbol_link | TEXT NOT NULL | N/A | Unique Inventory symbol used to pass to InventoryWrapper, for locating inventory | @@ -38,7 +38,7 @@ A data record only be deleted from the database when no any table references the ### `shops` -This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes.\ +This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes. Multiple `shop_id` can correspond to the same `data_id`. | Column Name | DataType | Default | Description | diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/modules/cmd-alias.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/modules/cmd-alias.md index 53f1577685..e6ed381c0d 100644 --- a/i18n/tr-TR/docusaurus-plugin-content-docs/current/modules/cmd-alias.md +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/modules/cmd-alias.md @@ -23,7 +23,7 @@ custom-commands: - cshop ``` -Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect.\ +Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect. The effect should be like this: ![command-alias](./img/command-alias.png) diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/modules/datasource.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/modules/datasource.md index 6fc1bd8931..3fd3a8bdee 100644 --- a/i18n/tr-TR/docusaurus-plugin-content-docs/current/modules/datasource.md +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/modules/datasource.md @@ -48,7 +48,7 @@ Execute the `/quickshop export` command in console, quickshop will export a zip ![exported data](img/database-export.png) -Stop your database, switch the datasource, and start the server.\ +Stop your database, switch the datasource, and start the server. You may noticed all shops are gone, because new datasources had no data inside, we will restore them from export. Rename that exported ZIP file to `recovery.zip`, execute `/quickshop recovery` and restart your server, all shops should back. diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/modules/itemmatcher.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/modules/itemmatcher.md index 56be243019..922907be27 100644 --- a/i18n/tr-TR/docusaurus-plugin-content-docs/current/modules/itemmatcher.md +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/modules/itemmatcher.md @@ -4,7 +4,7 @@ ItemMatcher is a utility used by QuickShop-Hikari to compare the items, it is th :::caution -If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse.\ +If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse. **TL;DR: Keep default unless you know what you're doing.** ::: @@ -26,10 +26,10 @@ matcher: work-type: 1 ``` -By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility.\ +By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility. But still, you can toggle to QuickShop Item Matcher if you need to customize the comparing or running QuickShop on the server jar which have bug affect the Bukkit comparing system. -## Customize the metadata compareing +## Customize the metadata comparing Customize only works under QuickShop Item Matcher. diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md index fc2af69d2b..d04e8f2783 100644 --- a/i18n/tr-TR/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md @@ -4,7 +4,7 @@ ItemStack Loader is a workaround for loading the Bukkit ItemStack. :::caution -Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossble. +Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossible. ::: diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/modules/localization.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/modules/localization.md index e9121e1a36..d47589ab9a 100644 --- a/i18n/tr-TR/docusaurus-plugin-content-docs/current/modules/localization.md +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/modules/localization.md @@ -10,7 +10,7 @@ To help translate QuickShop-Hikari, please visit our [Crowdin Homepage](https:// ## Crowdin OTA -QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will overrided when you reload QuickShop-Hikari or restart your server. +QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will override when you reload QuickShop-Hikari or restart your server. Your installation will keep translations up-to-date without any touch. @@ -110,6 +110,16 @@ To disable the CrowdinOTA, please add it in the startup flag: -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager.enableCrowdinOTA=false ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +use-crowdin-ota: false +``` + ### Self-Hosted OTA Server If you self-hosted our translation server by using [CrowdinCopyDeploy](https://github.com/Ghost-chu/CrowdinCopyDeploy) tool, you're able to change the OTA server to yourself server. @@ -118,4 +128,12 @@ If you self-hosted our translation server by using [CrowdinCopyDeploy](https://g -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager= ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml +Use + +```yaml +crowdin-host: +``` \ No newline at end of file diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/modules/shops/benefit.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/modules/shops/benefit.md index 4d7a9c8f42..c59d92e6d1 100644 --- a/i18n/tr-TR/docusaurus-plugin-content-docs/current/modules/shops/benefit.md +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/modules/shops/benefit.md @@ -37,3 +37,13 @@ By default, for security, QuickShop-Hikari disallow add offline players into sho ```bash -Dcom.ghostchu.quickshop.command.subcommand.SubCommand_Benefit.allowOffline=true ``` + +### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +shop.allow-offline-benefit: true +``` \ No newline at end of file diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/modules/shops/control-panel b/i18n/tr-TR/docusaurus-plugin-content-docs/current/modules/shops/control-panel new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/modules/shops/control-panel @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/modules/shops/history.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/modules/shops/history.md index fa891adeab..195b64a042 100644 --- a/i18n/tr-TR/docusaurus-plugin-content-docs/current/modules/shops/history.md +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/modules/shops/history.md @@ -24,7 +24,7 @@ The History GUI displays the details of each recorded transaction and other usef ### Transaction details -When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed.\ +When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed. If you are checking the history of more than one store, the player head will be replaced with an item from the corresponding store. ![history-gui](./img/history-gui.png) diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md new file mode 100644 index 0000000000..c5ed3b3fe4 --- /dev/null +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md @@ -0,0 +1,90 @@ +# Shop Types + +QuickShop supports multiple shop types, allowing shops to behave differently depending on their mode. + +The built-in shop types are: + +- Selling +- Buying +- Frozen + +Each type changes how the shop interacts with players. + +--- + +## Selling Shop + +A Selling shop allows players to: + +- Buy items from the shop owner +- Pay money to receive items + +This is the most common shop type. + +--- + +## Buying Shop + +A Buying shop allows players to: + +- Sell items to the shop owner +- Receive money in exchange + +This is commonly used for: + +- Resource collection +- Server buy-back shops +- Automated material sinks + +--- + +## Frozen Shop + +A Frozen shop temporarily disables trading. + +While frozen: + +- No buying is allowed +- No selling is allowed +- The shop remains intact +- Staff or admins can manage it + +This is useful for: + +- Temporary suspensions +- Investigation +- Event locking +- Maintenance + +--- + +## Switching Shop Types + +Shop types can be changed through: + +- Control panel +- GUI control panel +- Admin commands + +Frozen mode is also available via: + +/qs freeze + +--- + +## Custom Shop Types + +As of 6.2.x, the system supports extensible shop types internally. + +While server owners use the built-in types, the system now allows future expansion through addons. + +--- + +## Summary + +Shop types allow you to: + +- Control how money flows +- Enable buy-back mechanics +- Temporarily disable shops +- Build advanced economic systems \ No newline at end of file diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md new file mode 100644 index 0000000000..18e0a47407 --- /dev/null +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md @@ -0,0 +1,217 @@ +# Sign Layout + +QuickShop allows you to fully customize how shop signs are structured. + +You can change: + +- What appears on each line +- The order of information +- Layout per shop type +- Whether certain lines are blank + +This gives you complete control over how shops look on your server. + +--- + +## How Sign Layout Works + +Shop signs have four lines. + +Instead of being hardcoded, QuickShop uses a configurable layout system. + +Each shop type can have its own layout: + +- SELLING +- BUYING +- FROZEN + +You define what each line displays using layout keys. + +--- + +## Configuration Location + +Sign layout is configured in `config.yml` under: + +```yaml +layout: +``` + +Example default configuration: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## Available Layout Keys + +Each line value refers to a built-in layout component. + +Common layout keys include: + +- `header` – The shop header line +- `trading` – Buy/Sell direction information +- `item` – Item name +- `price` – Shop price + +These keys are automatically formatted using your language file and formatting settings. + +--- + +## Leaving a Line Blank + +To leave a line empty, use: + +```yaml +line2: "" +``` + +This is useful if you want: + +- Minimalist signs +- Cleaner layouts +- Custom spacing +- Decorative formatting + +--- + +## Customizing Per Shop Type + +Each shop type can have a different layout. + +For example: + +```yaml +layout: + + SELLING: + line1: "header" + line2: "item" + line3: "price" + line4: "" + + BUYING: + line1: "header" + line2: "price" + line3: "item" + line4: "" + + FROZEN: + line1: "header" + line2: "" + line3: "item" + line4: "Frozen" +``` + +This allows you to visually differentiate: + +- Selling shops +- Buying shops +- Frozen shops + +--- + +## Practical Examples + +### Minimal Style + +```yaml +layout: + SELLING: + line1: "item" + line2: "price" + line3: "" + line4: "" +``` + +### Compact Economy Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "price" + line3: "item" + line4: "" +``` + +### Large Clear Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## How Updates Affect Layout + +When you change the layout: + +- Existing shop signs will update automatically when refreshed. +- New shops will use the updated format immediately. + +If needed, you can reload QuickShop to apply changes. + +--- + +## Best Practices + +- Keep important information visible (price and item). +- Avoid overly complex formatting. +- Test layout changes before deploying on large servers. +- Use different layouts for BUYING and SELLING to reduce confusion. + +--- + +## Common Questions + +### Can I add more than four lines? + +No. +Minecraft signs are limited to four lines. + +### Can I add colors? + +Colors are controlled by your language file and formatting settings. + +### Can I change layout without restarting? + +Yes, but reloading or refreshing shops is recommended to ensure full update. + +--- + +## Summary + +The Sign Layout system allows you to: + +- Fully customize shop sign appearance +- Create per-type layouts +- Simplify or expand shop information +- Improve clarity for players + +All layout customization is handled inside `config.yml`. diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md new file mode 100644 index 0000000000..980bad10f2 --- /dev/null +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md @@ -0,0 +1,130 @@ +# Shop Sign Waxing + +QuickShop can automatically wax shop signs to prevent players from editing them manually. + +Waxing protects the integrity of your shop signs and helps prevent tampering, spoofing, and accidental modification. + +As of modern Minecraft versions, waxed signs cannot be edited unless they are unwaxed first. + +--- + +## What Is Sign Waxing? + +In Minecraft, waxing a sign locks it so that: + +- Players cannot edit the text +- Players cannot modify lines +- Accidental changes are prevented +- Malicious edits are blocked + +When enabled in QuickShop, shop signs are automatically waxed when created. + +--- + +## Why Use It? + +Sign waxing protects against: + +- Players editing price lines +- Changing item names on signs +- Spoofing shop information +- Accidental formatting issues +- Sign hijacking attempts + +On public servers, this feature is strongly recommended. + +--- + +## How It Works + +When a shop is created: + +1. QuickShop generates the shop sign. +2. The sign text is written. +3. The sign is automatically waxed (if enabled). + +If a shop is updated: + +- The sign will be safely updated by QuickShop. +- The wax state is maintained. + +Players cannot manually edit shop signs while waxing is enabled. + +--- + +## Configuration + +To enable or disable sign waxing, edit `config.yml`: + +```yaml +shop: + sign-wax: true +``` + +### true + +- Shop signs are automatically waxed. +- Players cannot edit the sign manually. + +### false + +- Shop signs behave like normal Minecraft signs. +- Players may edit them if permitted by the game. + +--- + +## Recommended Setting + +For most servers: + +```yaml +shop: + sign-wax: true +``` + +This ensures shop data stays accurate and secure. + +--- + +## Common Questions + +### Can admins still modify shop signs? + +QuickShop controls shop sign formatting. +Manual edits are not recommended. + +Admins should use: + +- Control panel +- Shop commands +- Direct configuration changes + +### Does waxing affect shop functionality? + +No. +Waxing only prevents manual text edits. +The shop continues to function normally. + +### Can players un-wax shop signs? + +No. +QuickShop manages the sign state automatically. + +--- + +## Best Practices + +- Keep sign-wax enabled on survival servers. +- Combine sign-wax with proper permissions. +- Avoid manually editing shop signs through other plugins. + +--- + +## Summary + +Sign Waxing: + +- Prevents tampering +- Requires no additional setup + +Enable it once and QuickShop handles the rest. \ No newline at end of file diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/modules/shops/taxes.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/modules/shops/taxes.md new file mode 100644 index 0000000000..1a273fd978 --- /dev/null +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/modules/shops/taxes.md @@ -0,0 +1,92 @@ +# Taxation System + +QuickShop includes a taxation system designed to give server owners more flexibility and control over shop-based income. + +This system was revamped as of 6.2.0.11+ + +The new system allows you to: + +- Apply tax to shop owners +- Apply tax to buyers +- Apply tax to both +- Use progressive tax brackets +- Customize tax behavior in configuration + +This system replaces the legacy tax configuration. + +--- + +## How It Works + +During a transaction: + +1. The shop price is calculated. +2. Tax is calculated based on your configuration. +3. Tax is deducted from the configured target(s). +4. Remaining funds are distributed normally. + +You can configure: + +- Flat percentage tax +- Progressive tax based on player balance +- Tax accounts +- Distribution rules + +--- + +## Progressive Tax + +The new system allows you to tax based on balance brackets. + +Example concept: + +- 0 – 10,000 balance → 1% tax +- 10,000 – 100,000 → 2% tax +- 100,000+ → 3% tax + +This helps prevent extremely wealthy players from dominating the economy. + +--- + +## Who Pays the Tax? + +You can configure whether tax applies to: + +- The shop owner +- The buyer +- Both + +This gives you flexibility depending on your economy design. + +--- + +## Configuration + +All tax-related settings are located under the `shop-tax` section in `config.yml`. + +After updating to 6.2.0.11+, review your tax configuration carefully, as the old tax system has been replaced. + +--- + +## Why Use Tax? + +The taxation system can help: + +- Remove currency from circulation +- Fund server banks or towns +- Create sink mechanics +- Balance inflation +- Reward active players + +--- + +## Summary + +The new taxation system is: + +- Flexible +- Configurable +- Balance-aware +- Designed for modern economy servers + +Make sure to review your configuration after upgrading. \ No newline at end of file diff --git a/i18n/tr-TR/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md b/i18n/tr-TR/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md new file mode 100644 index 0000000000..247c24712d --- /dev/null +++ b/i18n/tr-TR/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md @@ -0,0 +1,161 @@ +# WorldEdit & FAWE Support + +QuickShop includes built-in protection and integration for WorldEdit and FastAsyncWorldEdit (FAWE). + +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. + +You do not need to download or install any additional compatibility plugins. + +--- + +## What This Does + +WorldEdit and FAWE allow administrators and builders to: + +- Copy and paste regions +- Replace large areas of blocks +- Mass-delete regions +- Roll back areas +- Regenerate terrain + +Without protection, these operations could: + +- Create ghost shops +- Leave orphaned shop data in the database +- Duplicate shops unintentionally +- Delete containers without cleaning up shop data +- Cause inconsistencies between world and database + +QuickShop now automatically detects and safely processes WorldEdit and FAWE operations. + +--- + +## Built-In Behavior + +When WorldEdit or FAWE modifies blocks: + +- Shops removed via WorldEdit are properly deleted from the database. +- Shop data stays synchronized with world changes. +- Ghost shops are prevented. +- Mass block replacements will not leave broken shop entries behind. + +This applies to: + +- //set +- //replace +- //cut +- //paste +- //regen +- Region deletion +- Mass container removal + +No configuration is required. + +--- + +## FAWE Support + +FastAsyncWorldEdit (FAWE) is fully supported. + +Because FAWE processes edits asynchronously, QuickShop handles: + +- Region-thread safe processing +- Async block updates +- Safe shop deletion during batch edits + +You do not need to enable anything manually. + +--- + +## Removing Shops with WorldEdit + +If you delete containers (chests, barrels, etc.) using WorldEdit: + +QuickShop will automatically: + +- Detect the block removal +- Unregister the shop +- Clean the database entry +- Prevent ghost shops + +You do not need to run `/qs cleanghost` after WorldEdit usage in normal circumstances. + +--- + +## Copying and Pasting Shops + +If you copy and paste regions that contain shops: + +- Shop data will not duplicate incorrectly. +- Shop IDs remain consistent. +- Invalid pasted shops will not auto-register unless properly created. + +This prevents accidental duplication exploits. + +--- + +## Performance + +WorldEdit and FAWE operations can modify thousands of blocks at once. + +QuickShop processes these safely and efficiently: + +- Batch-aware cleanup +- Thread-safe region access (especially on Folia) +- Minimal performance impact during mass edits + +--- + +## Configuration + +There are no specific WorldEdit configuration options in QuickShop. + +Support is automatic and always enabled if WorldEdit or FAWE is detected. + +If WorldEdit is not installed, no extra code is executed. + +--- + +## Common Questions + +### Do I need the old WorldEdit compatibility jar? + +No. + +As of 6.2.0.11, WorldEdit support is built-in and the separate compatibility module has been removed. + +### Does this work with FAWE? + +Yes. FAWE is fully supported. + +### Will shops break if I use //set air? + +No. Shops will be safely removed and cleaned up. + +### Do I need to restart after installing WorldEdit? + +No. QuickShop detects WorldEdit automatically on startup. + +--- + +## Best Practices + +Even though QuickShop safely handles WorldEdit operations, it is recommended to: + +- Avoid copying shops intentionally unless required +- Use backups before large region edits +- Test large FAWE operations on staging servers when possible + +--- + +## Summary + +QuickShop’s built-in WorldEdit and FAWE integration ensures: + +- Safe mass edits +- No ghost shops +- Automatic database cleanup +- Thread-safe processing +- No extra modules required + +WorldEdit support is now a core feature of QuickShop. \ No newline at end of file diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/addon/limited.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/addon/limited.md index 70af27e240..fae55a8c95 100644 --- a/i18n/uk-UA/docusaurus-plugin-content-docs/current/addon/limited.md +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/addon/limited.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -41,8 +35,8 @@ Limit players to purchase up to 16 items per month. /quickshop limit period MONTH ``` -The system is based on the QuickShop-Hikari calendar system.\ -The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year.\ +The system is based on the QuickShop-Hikari calendar system. +The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year. Same for days, months and hours. Available time units: diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/addon/list.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/addon/list.md index 93d182f083..f20b91fd7b 100644 --- a/i18n/uk-UA/docusaurus-plugin-content-docs/current/addon/list.md +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/addon/list.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/addon/plan.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/addon/plan.md index 52a6e79cb4..c10ef4df42 100644 --- a/i18n/uk-UA/docusaurus-plugin-content-docs/current/addon/plan.md +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/addon/plan.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -18,7 +18,7 @@ Recorded data can be displayed from Hikari v2.0.0.0 onwards, but only after vers - All shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 1000 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `5` in server scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `5` in server scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Player Scope @@ -27,7 +27,7 @@ And still is Plan limitations, the list sorting is disturbed, so the display ord - All owned shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 50 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `4` in player scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `4` in player scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Showcase diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/addon/reforges.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/addon/reforges.md index 2a14509eb7..25fff1752a 100644 --- a/i18n/uk-UA/docusaurus-plugin-content-docs/current/addon/reforges.md +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/addon/reforges.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.0.0.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md index 304d39bc05..6f9f51d250 100644 --- a/i18n/uk-UA/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.1.1.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -44,7 +38,7 @@ _This is not necessary if you are using an H2 database._ ### Prepare for convert -To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console.\ +To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console. If a player is in the server, the conversion cannot be started. Once the conversion has begun, the server will be locked during the conversion process and no players will be able to join the server during the conversion. diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/addon/shopitemonly.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/addon/shopitemonly.md index c45062f8c2..1ccfe977b3 100644 --- a/i18n/uk-UA/docusaurus-plugin-content-docs/current/addon/shopitemonly.md +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/addon/shopitemonly.md @@ -2,17 +2,11 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT - -::: - -This addon prevents players from putting non-store items into store containers.\ +This addon prevents players from putting non-store items into store containers. Does not apply to stores that use the item inventory redirection API (aka. InventoryWrapper API). This Addon will check for container (or transferring) items on events such as the player closing the container or hopper access. diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md new file mode 100644 index 0000000000..9c8b4f7407 --- /dev/null +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md @@ -0,0 +1,55 @@ +# 6.2.0.10 + +## Major Changes + +- Added support for 1.21.6 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.7 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.8 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Some internal updates for packetevents(2.9.0 is now required.) +- Updated Lands support + +## Addon Changes + +- Added MatcherPlus Addon + - Allows support for BreweryX and AdvancedItems stacks in shops with improved matching abilities +- Added FabledSkyblock Compat +- Added Dominion Compat +- Added HuskTowns Compat +- Added IridiumSkyblock Compat +- Added member-create for member creation in ARM compat +- Added admin-override and quickshop.arm.admin permission for admin overrides in ARM + +## Minor Changes + +- Added configurations for the coordinates of the display item. +- Added /qs toggledisplayall on/off server/owned + - Players need to have permission node quickshop.toggledisplayall.admin to toggle all on the server. +- Added ability to use abbreviations in /qs price and /qs create commands such as 2.5k for 2500 +- Added ability to set default display status using shop.default-display in config.yml + +## Fixes + +- Fixed issue with display item being sent to the moon on 1.21.5 +- Fixed issue where TRADE_UI interactions interfered with quick create. +- Fixed issue with displays on protocollib falling through the chest +- Fixed issue with signs on .9 and previous .10 snapshots on early versions +- Implemented some performance improvements for paper servers +- Fixed all outstanding issues with Folia usage.(thanks to RootB33R/SleazLee for contributions) + +## Possible 6.2.0.11 Features + +Here's an outline for some features that may arrive in 6.2.0.11: + +- Additional compats/addons that have been piling up. + - see: https://github.com/QuickShop-Community/QuickShop-Hikari/issues/1756 +- gradle?(interested to see compilation time uplifts) +- Update documentation +- Update configuration comments +- Update configuration system? + - auto updating? + - Allows removal of the update code +- Remove waste spigot modules? + - Any versions of 1.20 that can be discarded due to low use? +- Bug fixing, of course +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... \ No newline at end of file diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md new file mode 100644 index 0000000000..b41c88662a --- /dev/null +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md @@ -0,0 +1,173 @@ +## Outline + +- Update documentation +- Update configuration comments +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... + +# 6.2.0.11 + +## Major Changes + +- Removed Spigot Platform Modules, and stopped loading QS if Spigot is detected. This will mean that unless the protocol changes that we use for display items, QS won't need updated for each version. +- Revamped Economy Code Completely + - New classes for all economy-related systems + - Any economy-related or benefits-related events are incompatible with previous versions. +- Added sign layout customizations per-type allowing you to change how lines are configured, an empty string('') will leave an empty line for that line of the sign. + +``` + #The layout of signs for shops. + layout: + + #The layout of BUYING shops. + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of FROZEN shops. + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of SELLING shops. + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +- Add wildcard support for item blacklist patterns(thanks to bennycallanan) + - Added support for wildcard patterns in the item blacklist configuration, allowing users to block entire categories of items with simple patterns. + + - Features + - Wildcard patterns like \*_AXE and \*_SPAWN_EGG now work in blacklist configuration + - Supports \* for any characters and ? for single character matching + - Case-insensitive pattern matching +- Overhauled GUI system(thanks to Yusakidev) + - Implemented gui.yml configuration file for customizing the GUI. + - Implemented better filtering for qs browse + - Implement GUI system to be more stable, and less error prone. + - Added gui.yml for fully configurable GUI layouts and text + - Browse menu: search, sort (price/name/stock), and filter (all/buying/selling/in-stock) + - Staff menu: search functionality for player/staff selection + - Grouped item pages for better shop browsing + - Refactored all menu pages to use configurable display/lore +- Added worldedit compat to QS internally as it's widely used. +- Revamped the taxation system to be more flexible and easier to configure. + - introduced a new progressive tax system that allows you to tax based on the balance of players.(suggested by YuanYuanOwO) + - introduced the ability to tax the player interacting with the shop, the owner, or both + - all tax-related configurations have been moved under the shop-tax section of the config. this may require reconfiguration of your tax settings. + - added a new ShopEnhancedTaxEvent, deprecated the old ShopTaxEvent. + - Added a new TaxManager, and TaxProvider interfaces, this allows for custom tax providers to be added by addons/third-party developers. + +## Addons/Compats Changes + +- Added UltimateClaims compat +- Added SimpleClaimSystem compat +- Added Quests by Pika addon +- Added BetonQuest addon +- Added Pl3xMap addon +- MatcherPlus Compat Improvements + - Added support for CrazyCrates + - Added support for ExcellentCrates + - Added support for SilkSpawners. +- WorldGuard Compat Improvements(Thanks to golovin12) + - Added clear permission handling: + - Region owners and members automatically have permission to create and trade in their own regions. + - Other players must have the appropriate WorldGuard flags enabled (quickshophikari-create, quickshophikari-trade) to interact with shops. + - If a shop is located outside any region, default QuickShop behavior applies (no extra restrictions) +- Added colored markers based on shop state for bluemap(thanks to YusakiDev) +- Updated dynmap/towny addons to use the new ShopTypeEnhancedEvent instead of ShopTypeEvent. +- Removed worldedit compat, it's now included in the main plugin. +- Added support for global flags to the worldguard compat. + +## Internals/Developer APIs + +- Removed several deprecated methods and classes. +- Revamped the interaction manager. It is now more flexible and allows external additions + - This involves two classes InteractionBehavior and InteractionType. + - InteractionType details the type of interaction such as: STANDING_LEFT_CLICK_SIGN, STANDING_LEFT_CLICK_SHOP + - InteractionBehavior outlines a behavior for an InteractionType such as CONTROL_PANEL and TRADE_UI +- Added UserLimitCalculationEvent, which allows for custom limits to be applied to users. + - This is useful for limiting the number of shops a user can have, or adding on to the existing limits provided by the ranks system without needing to implement a new RankLimiter. +- Added a new ShopLayoutProvider interface, and default implementation. + - This allows for custom layouts to be used for shops, allowing for more customization. + - This also allows for developers to override the default layout provider and create their own implementation. +- How to make your own? + - Implement the classes you would like to then register with the InteractionManager: + - ```java + InteractionManager manager = QuickShop.getInstance().getInteractionManager(); + + manager.interaction(new MyTradeInteraction()); + manager.behavior(new MyTradeBehavior()); + ``` +- Replaced some Apache Commons calls that could be easily replaced with built-in java methods, reduces some calls by ~ 1100ms/method call +- Deprecated the ShopType enum, and the ShopTypeEvent. These are replaced with the new IShopType interface and implementing classes. + - The new event is ShopTypeEnhancedEvent. + - This allows for third-party addons to add their own shop types, and simplifies code checks for translations. +- Updated config system to use Boosted-yaml + - this allows for auto-updating of config files without complex update scripts + - this also allows for the config system to not be minecraft-dependent. +- Replaced logical PaperLib calls with native PaperAPI calls. + +## Minor Changes + +- Bump Java version up to 21 +- Added shop.display-allow-enchants to enable/disable enchantments for display items on shops. +- Added workaround for packetevents not supporting custom enchants on itemstacks for virtual display items. +- Using locale translations for shop-type in mode toggle icon(thanks to ExyiN) +- Bumped Residence version for the compat(thanks to YuanYuanOwO) +- add world whitelist support(thanks to wling-art) +- added /qs database save command, which saves all currently dirty-marked shops to the database. +- Split up interactions _SHOPBLOCK into _SHOPBLOCK and _CONTAINER. + - _SHOPBLOCK relates to shops, where _CONTAINER relates to shop-valid containers that are not currently shops. +- Added inventory as an option for command panel, this is useful for adding a secondary option for players to open a shop's inventory. +- Moved crowdin arguments from system properties to config.yml + - crowdin-host + - use-crowdin-ota + +## Fixes + +- Fixes issue with item price restrictions(thanks to maxcom1) +- Fixes issue with 1.20.x protocol lib displays(thanks to YuanYuanOwO) +- Fixes issue when no item is in hand for itemdebug(thanks to YuanYuanOwO) +- Fixes issue with dominion addon(thanks to YuanYuanOwO) +- Add a simple check to avoid this. If it is not own shop, reject limit request directly.(Thanks to YuanYuanOwO) +- Fix NPE by not setting tax for price in TransactionBuilder(thanks to maxcom1) +- Fixes /quickshop suggestprice to differentiate between buy/sell shops. (Thanks to MidSpike) +- PacketEvents ClassNotFoundException with ProtocolLib(thanks to wling-art) +- Reallocate block state access to region thread for shop creation(thanks to r00tbeerman) +- resolve SLF4J StaticLoggerBinder loading error(thanks to wling-art) +- sign hijacking issue by validating sign facing direction(thanks to wling-art) +- Performance improvements for QuickShop disabling to prevent potential freezes. +- Fixed issue with 1.20.4 packetevents virtual displays not staying put. +- Fixes critical issue in GriefPrevention compatibility plugin. +- Fixes issue with shop owner not getting money when benefits active. +- Fixes for lands addon on folia, Use regionThread for Folia compatibility(thanks to YusakiDev) +- Fixes for TRADE_DIRECT on stacking shops +- Fixes issue for protocollib 5.4.0 with undocumented packet changes. +- Fixes issue where item stacks could be used on creation above the max stack size. +- Fixes issue with BukkitAudiences-related crashes on 1.21.11. +- Fix issue with shop deletion when getting too impatient. +- Fix the permission check issue when a shop owned by a non-owner is transferred to someone else. (thanks to YuanYuanOwO) +- Fix ui with supertool (thanks to YuanYuanOwO) +- Fix issue with logs generating outside debug mode. +- Fix issue with /qs find. +- Fix configuration loading timing. +- Fix configuration loading/creation warning message language. +- Fix command description language key mismatch(thanks to wling-art) +- Fix qs clean command on folia(thanks to wling-art) +- Fix per-player-shop-sign on folia(thanks to wling-art) +- Fix potential recursive deadlock in virtual display packet sending(thanks to wling-art) +- Fix configuration loading/creation warning message language. +- Fix issue with /qs browse and ShopItemOnly addon not behaving properly together on folia. +- Fix issue with PLAN using outdated APIs. +- Fix issue with /qs clean on folia.(thanks to wling-art) +- Fix issue with /qs cleanghost on folia(thanks to wling-art) +- More thread safety fixes for shops on folia.(thanks to wling-art) +- Fix owner payment calculations with benefits(thanks to wling-art) \ No newline at end of file diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md index 8172f9b410..dcc3edc67d 100644 --- a/i18n/uk-UA/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md @@ -20,20 +20,20 @@ the ControlComponent object with a custom one that will replace the original dur ### Introduction of the Revamped Packet System 1. **About**: - - A modular and scalable system for managing packets related to virtual display items in Minecraft. - - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. + - A modular and scalable system for managing packets related to virtual display items in Minecraft. + - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. 2. **Custom Packet Factories**: - - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. - - Packet types: - - **Spawn Packet**: Spawns a virtual item entity at a specific location. - - **Metadata Packet**: Updates the visual properties of virtual items. - - **Velocity Packet**: Adds motion/velocity to entities (currently optional). - - **Destroy Packet**: Removes the entity from the client view. + - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. + - Packet types: + - **Spawn Packet**: Spawns a virtual item entity at a specific location. + - **Metadata Packet**: Updates the visual properties of virtual items. + - **Velocity Packet**: Adds motion/velocity to entities (currently optional). + - **Destroy Packet**: Removes the entity from the client view. 3. **Error Handling and Logging**: - - Enhanced debug logs to trace packet-related issues. - - Detailed error messages for missing factories or unregistered listeners. + - Enhanced debug logs to trace packet-related issues. + - Detailed error messages for missing factories or unregistered listeners. #### Improvements: diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md index 7775308722..c6e0948d19 100644 --- a/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md index f420997a9c..38587e3784 100644 --- a/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md index 5ed8182c9a..259c55f342 100644 --- a/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md index 924a37ac49..7fd4596a6a 100644 --- a/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,6 +10,6 @@ This is a BungeeCord plugin, you need install it within your BungeeCord's plugin ## How does it work? -BungeeCord Bridge plugins will register a `quickshop:bungee` channel for fowarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. +BungeeCord Bridge plugins will register a `quickshop:bungee` channel for forwarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. All forwarding is indicated by QuickShop-Hikari on the Spigot server and ends when it is not needed. diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md index 27d68956a8..20fbaf7a0c 100644 --- a/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,5 +10,5 @@ This compatibility module added [Chest Protect](https://www.spigotmc.org/resourc ## How does it work? -This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident.\ +This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident. It also prevents players from creating shops on ChestProtect protected containers. diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md index 220e26d8bb..e1757e7be9 100644 --- a/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/dominion.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/dominion.md new file mode 100644 index 0000000000..e1195278a8 --- /dev/null +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/dominion.md @@ -0,0 +1,138 @@ +# Dominion + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and Dominion. + +It ensures that shop creation and trading respect Dominion’s land and territory protection system. + +--- + +## What Does It Do? + +Dominion allows players or groups to claim land and define territory-based permissions. + +Without compatibility: + +- Players could create shops inside territories they do not control. +- Visitors might trade inside protected dominions. +- Dominion permission rules might not apply to shop interactions. + +The Dominion compat module ensures that: + +- Shop creation respects territory ownership. +- Shop trading follows Dominion permission settings. +- Protected land remains secure from unauthorized shop usage. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a Dominion-controlled area. +- Whether the player has permission within that territory. +- Whether Dominion rules allow shop interaction. + +If the action is not permitted by Dominion settings, QuickShop blocks it. + +If the location is outside any Dominion territory, default QuickShop behavior applies. + +--- + +## Territory Owner Control + +With this module enabled: + +- Territory owners can create and manage shops inside their dominion. +- Trusted members follow territory-based permissions. +- Outsiders are restricted unless explicitly allowed. +- Shop actions respect Dominion’s land rules automatically. + +This prevents unauthorized shop placement inside protected territories. + +--- + +## Installation + +1. Install Dominion. +2. Install the QuickShop Dominion compat module. +3. Restart your server. + +The module activates automatically if Dominion is detected. + +No manual configuration linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside dominions +whitelist-mode: false + +# Allow territory owners to override shop permissions +allow-owner-override: true +``` + +If Dominion is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For servers using Dominion: + +- Restrict shop creation to territory owners or trusted members. +- Prevent shop creation in wilderness if desired. +- Allow dominion owners to manage shop permissions. +- Review Dominion permission settings to align with shop behavior. + +This ensures protected territories remain secure and organized. + +--- + +## Common Questions + +### Can players create shops in someone else's dominion? + +Only if Dominion permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You may allow or restrict shops outside dominions. + +### What happens if Dominion is removed? + +QuickShop returns to normal behavior and stops checking Dominion territories. + +--- + +## Summary + +The Dominion compat module: + +- Enforces territory-based permissions +- Prevents unauthorized shop creation +- Protects claimed land from misuse +- Integrates seamlessly with Dominion + +It is recommended for servers running Dominion. \ No newline at end of file diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md index 743d3ae666..2ac9b10488 100644 --- a/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md new file mode 100644 index 0000000000..07ba4ada66 --- /dev/null +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md @@ -0,0 +1,133 @@ +# FabledSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and FabledSkyblock. + +It ensures that shop creation and trading properly respect island boundaries and island permissions. + +--- + +## What Does It Do? + +On Skyblock servers, players build and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Players might trade in areas they should not. +- Island protection rules might not apply to shops. + +The FabledSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members behave correctly with shops. +- Island visitors are restricted appropriately. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a FabledSkyblock island. +- Whether the player has permission on that island. +- Whether island settings allow the action. + +If the action is not permitted by island rules, QuickShop will deny it. + +--- + +## Island Ownership Rules + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow island permission settings. +- Visitors can only trade if island permissions allow it. +- Outside of islands, default QuickShop behavior applies. + +--- + +## Installation + +1. Install FabledSkyblock. +2. Install the QuickShop FabledSkyblock compat module. +3. Restart your server. + +The module activates automatically if FabledSkyblock is detected. + +No manual linking is required. + +--- + +## Configuration + +If the module provides configuration options, they will appear in its `config.yml`. + +Typical options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If FabledSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most Skyblock servers: + +- Allow shop creation only inside islands. +- Prevent trading in the void or wilderness. +- Let island owners control shop permissions. +- Use island rank systems to manage shop access. + +This helps maintain economic balance between islands. + +--- + +## Common Questions + +### Can players create shops in the void? + +Only if your configuration allows it. +Most servers disable shop creation outside islands. + +### Does this affect island war or PvP modes? + +No. +The module only checks island ownership and permissions for shop interactions. + +### What happens if FabledSkyblock is removed? + +QuickShop returns to normal behavior. + +--- + +## Summary + +The FabledSkyblock compat module: + +- Protects island economies +- Enforces island permission rules +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is strongly recommended for any server running FabledSkyblock. \ No newline at end of file diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md index 81b13d2c6b..32614d3019 100644 --- a/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md @@ -2,17 +2,17 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -GreifPrevention compatibility module added compaitibility with GF. +GreifPrevention compatibility module added compatibility with GF. ## How does it work This module allow QuickShop-Hikari check if player have permission to create or use QuickShop in specific region. -And delete shops when claim removed, untrusted, unclimed, expired, resized or subclaim created. +And delete shops when claim removed, untrusted, unclaimed, expired, resized or subclaim created. ## Configuration diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md new file mode 100644 index 0000000000..e71b34d462 --- /dev/null +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md @@ -0,0 +1,139 @@ +# HuskTowns + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and HuskTowns. + +It ensures that shop creation and trading respect town and claim permissions defined by HuskTowns. + +--- + +## What Does It Do? + +HuskTowns allows players to create towns and claim land. + +Without compatibility: + +- Players could create shops inside towns they do not belong to. +- Visitors might trade inside protected towns. +- Town permission rules might not apply to shop interactions. + +The HuskTowns compat module ensures that: + +- Shop creation respects town ownership. +- Trading follows town permission settings. +- Town members and visitors are handled correctly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a HuskTowns claim. +- Whether the player is a town member, trusted player, or outsider. +- Whether the town's permission settings allow the action. + +If the action is not permitted by town rules, QuickShop blocks it. + +Outside of town claims, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Town Owner Control + +With this module enabled: + +- Town owners can create and manage shops inside their town. +- Town members follow town-based permission settings. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect town claim protection. + +This prevents unauthorized shop placement and trading inside protected towns. + +--- + +## Installation + +1. Install HuskTowns. +2. Install the QuickShop HuskTowns compat module. +3. Restart your server. + +The module activates automatically if HuskTowns is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside towns +whitelist-mode: false + +# Allow town owners to override shop permissions +allow-owner-override: true +``` + +If HuskTowns is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For town-based survival servers: + +- Restrict shop creation to town members. +- Allow trading only where town permissions permit. +- Prevent shop creation in wilderness if desired. +- Enable owner override for better administrative control. + +This helps maintain town-based economic balance. + +--- + +## Common Questions + +### Can players create shops in another town? + +Only if that town's permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You can allow or restrict shops outside towns. + +### What happens if HuskTowns is removed? + +QuickShop returns to normal behavior and stops checking town permissions. + +--- + +## Summary + +The HuskTowns compat module: + +- Enforces town-based land permissions +- Protects towns from unauthorized shop usage +- Integrates smoothly with HuskTowns +- Requires minimal setup + +It is recommended for any server running HuskTowns. \ No newline at end of file diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md new file mode 100644 index 0000000000..3fa2995eb0 --- /dev/null +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md @@ -0,0 +1,139 @@ +# IridiumSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and IridiumSkyblock. + +It ensures that shop creation and trading respect island boundaries and island permission settings defined by IridiumSkyblock. + +--- + +## What Does It Do? + +IridiumSkyblock allows players to create and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Visitors might trade inside protected islands. +- Island protection rules might not apply correctly to shops. + +The IridiumSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members and visitors are handled properly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside an IridiumSkyblock island. +- Whether the player is the island owner, member, or visitor. +- Whether island permissions allow shop interaction. + +If the action is not permitted, QuickShop blocks it. + +Outside of islands, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Island Owner Permissions + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow the island's permission configuration. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect island protection rules. + +This prevents unauthorized shop usage inside protected islands. + +--- + +## Installation + +1. Install IridiumSkyblock. +2. Install the QuickShop IridiumSkyblock compat module. +3. Restart your server. + +The module activates automatically if IridiumSkyblock is detected. + +No additional setup is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If IridiumSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most IridiumSkyblock servers: + +- Restrict shop creation to island owners. +- Allow island members to trade if trusted. +- Prevent shop creation in the void or wilderness. +- Enable owner override for better management. + +This helps maintain balanced island economies. + +--- + +## Common Questions + +### Can players create shops outside their island? + +Only if your configuration allows it. + +Most Skyblock servers restrict shops to island areas. + +### Do island ranks affect shop permissions? + +Yes, if your island permissions are configured to control interaction rights. + +QuickShop follows island rules. + +### What happens if IridiumSkyblock is removed? + +QuickShop returns to normal behavior and stops checking island permissions. + +--- + +## Summary + +The IridiumSkyblock compat module: + +- Protects island economies +- Enforces island-based permissions +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is recommended for any server running IridiumSkyblock. diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md new file mode 100644 index 0000000000..3b4726cb9d --- /dev/null +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md @@ -0,0 +1,151 @@ +# ItemMatcherPlus + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +The ItemMatcherPlus module improves how QuickShop matches custom and plugin-modified items. + +It allows QuickShop to properly recognize and stack items created by other plugins that normally would not match using standard Bukkit item comparisons. + +This module is especially useful for servers that use: + +- Custom items +- Modified metadata +- NBT-based systems +- Advanced crate rewards +- Custom brewing systems +- Custom fishing rewards + +--- + +## What Does It Do? + +By default, Minecraft item matching checks: + +- Material type +- Basic metadata + +However, many plugins modify items with: + +- Custom NBT data +- Hidden tags +- Custom lore formats +- Unique identifiers + +Without enhanced matching: + +- Items may not stack +- Shops may refuse valid items +- Transactions may fail +- Buying/selling may not behave correctly + +ItemMatcherPlus improves compatibility and matching accuracy. + +--- + +## Supported Plugins + +ItemMatcherPlus includes built-in support for: + +- AdvancedItems +- BreweryX +- CrazyCrates +- ExcellentCrates +- PyroFishing +- SilkSpawners + +If any of these plugins are installed, QuickShop will automatically use enhanced matching logic. + +No additional configuration is required. + +--- + +## How It Works + +When a player trades with a shop: + +1. QuickShop checks the item. +2. If ItemMatcherPlus is enabled, it performs advanced matching. +3. Plugin-specific metadata is validated. +4. The item is confirmed as a match (or rejected safely). + +This allows: + +- Proper stacking of custom items +- Correct shop transactions +- Accurate buy/sell detection +- Reduced false mismatches + +--- + +## Installation + +1. Download the ItemMatcherPlus module. +2. Place the JAR into your `plugins` folder. +3. Restart your server. + +If supported plugins are detected, compatibility activates automatically. + +--- + +## Configuration + +ItemMatcherPlus does not require configuration. + +It activates automatically when: + +- The module is installed +- A supported plugin is detected + +If a supported plugin is not installed, no extra logic runs. + +--- + +## Why You Should Use It + +You should install ItemMatcherPlus if your server uses: + +- Custom fishing plugins +- Custom brewing systems +- Crate plugins with modified items +- Custom spawners +- Any plugin that modifies NBT data + +Without it, shops may not properly recognize custom items. + +--- + +## Common Questions + +### Do I need this if I don't use custom item plugins? + +No. +If you only use vanilla items, this module is not necessary. + +### Does this affect performance? + +The module only activates enhanced matching when needed. + +Normal item matching remains fast and efficient. + +### Will it break existing shops? + +No. +It improves compatibility and matching accuracy without modifying existing shop data. + +--- + +## Summary + +ItemMatcherPlus: + +- Improves item matching accuracy +- Adds support for major custom item plugins +- Prevents stacking and trade issues +- Requires no configuration +- Activates automatically + +If you run a heavily customized economy server, this module is highly recommended. \ No newline at end of file diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md index ba87606698..d4ae7d129a 100644 --- a/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/lands.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/lands.md index 06296f5779..7671fcdfe0 100644 --- a/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/lands.md +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/lands.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/openinv.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/openinv.md index c51f628615..4807d57873 100644 --- a/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/openinv.md +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/openinv.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md new file mode 100644 index 0000000000..c2136320b0 --- /dev/null +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md @@ -0,0 +1,138 @@ +# SimpleClaimSystem + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and SimpleClaimSystem. + +It ensures that shop creation and trading respect land ownership and claim permissions defined by SimpleClaimSystem. + +--- + +## What Does It Do? + +SimpleClaimSystem allows players to claim land and protect it from unauthorized interaction. + +Without compatibility: + +- Players could create shops inside claims they do not own. +- Visitors might trade inside protected areas. +- Claim protection might not apply correctly to shops. + +The SimpleClaimSystem compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops within their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a SimpleClaimSystem claim. +- Whether the player has permission within that claim. +- Whether claim rules allow shop interaction. + +If the action is not permitted by the claim, QuickShop blocks it. + +If the location is outside any claim, default QuickShop behavior applies. + +--- + +## Claim Owner Control + +With this module enabled: + +- Claim owners can create and manage shops inside their claim. +- Trusted players follow claim-based permissions. +- Visitors are restricted unless explicitly allowed. +- Claim protection rules apply automatically to shop interactions. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install SimpleClaimSystem. +2. Install the QuickShop SimpleClaimSystem compat module. +3. Restart your server. + +The module activates automatically if SimpleClaimSystem is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If SimpleClaimSystem is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Enable owner override for easier management. + +This ensures players maintain control over their protected land. + +--- + +## Common Questions + +### Can players create shops in someone else's claim? + +Only if claim permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can allow shops outside claims or restrict them. + +### What happens if SimpleClaimSystem is removed? + +QuickShop will revert to default behavior and stop checking claim permissions. + +--- + +## Summary + +The SimpleClaimSystem compat module: + +- Enforces claim-based permissions +- Prevents unauthorized shop creation +- Protects land from unwanted trading +- Requires minimal setup + +It is recommended for servers running SimpleClaimSystem. \ No newline at end of file diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md index a84dbf057b..4dfa8ae97c 100644 --- a/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/towny.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/towny.md index 52ab4818f4..b26c19d335 100644 --- a/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/towny.md +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/towny.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -26,7 +26,7 @@ Town sub-command allow you switch a quickshop between regular shop and town shop For a nation shop, the shop owner will changed to nation fake player created by Towny, and use Nation's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from nation Towny account.\ +All purchases will deposit or withdraw money from nation Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Nation Shop. @@ -35,7 +35,7 @@ If Plot type restriction is enabled, only a specific Plot type can create a Nati For a town shop, the shop owner will changed to town fake player created by Towny, and use Town's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from town Towny account.\ +All purchases will deposit or withdraw money from town Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Town Shop. @@ -88,7 +88,7 @@ bank-mode: ## Permission Override -By adjust configuration, you're allow mayor or king automaticlly grant administrator permission on all shops in their management range. +By adjust configuration, you're allow mayor or king automatically grant administrator permission on all shops in their management range. ```yaml #Should allow Mayor grant the shop administrator permission on they town. @@ -168,7 +168,7 @@ This causes Towny and QuickShop Hikari to use accounts with the same name but di You can adjust the option in configuration to enable workaround. -NOTE: It will force turned on if detected EssentialsX installed on your server.\ +NOTE: It will force turned on if detected EssentialsX installed on your server. At present, we do not provide a method for disable it. ```yaml diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md new file mode 100644 index 0000000000..0189958495 --- /dev/null +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md @@ -0,0 +1,138 @@ +# UltimateClaims + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and UltimateClaims. + +It ensures that shop creation and trading respect land claim permissions managed by UltimateClaims. + +--- + +## What Does It Do? + +On servers using land-claim plugins, players protect areas of the world from unauthorized interaction. + +Without compatibility: + +- Players may create shops inside claims they do not own. +- Visitors might trade in areas where they should not. +- Claim protection rules might not apply correctly to shops. + +The UltimateClaims compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops inside their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a claim. +- Whether the player has permission in that claim. +- Whether claim rules allow shop interaction. + +If the action violates claim settings, QuickShop blocks it. + +Outside of claims, normal QuickShop behavior applies. + +--- + +## Claim Owner Permissions + +With this module enabled: + +- Claim owners can create and manage shops within their claim. +- Trusted players follow claim permission settings. +- Visitors are restricted based on claim configuration. +- Shop actions outside of claims behave normally. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install UltimateClaims. +2. Install the QuickShop UltimateClaims compat module. +3. Restart your server. + +If UltimateClaims is detected on startup, compatibility activates automatically. + +No additional linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Common options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If UltimateClaims is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Keep owner override enabled for better control. + +This ensures players maintain full control over their protected land. + +--- + +## Common Questions + +### Can players create shops inside someone else's claim? + +Only if the claim permissions allow it. + +Otherwise, QuickShop will block the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can choose to restrict shops to claimed land only. + +### What happens if UltimateClaims is removed? + +QuickShop returns to normal behavior without claim checks. + +--- + +## Summary + +The UltimateClaims compat module: + +- Protects claimed land from unauthorized shop usage +- Enforces claim-based permissions +- Integrates smoothly with land-claim servers +- Requires minimal setup + +It is recommended for any server running UltimateClaims. \ No newline at end of file diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md index 87a71a205c..6437754503 100644 --- a/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md @@ -2,8 +2,10 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. Find out more [here](../modules/shops/worldedit.md). + +Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. \ No newline at end of file diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/development/01-getting-start.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/development/01-getting-start.md index 92b773451e..0e78e52367 100644 --- a/i18n/uk-UA/docusaurus-plugin-content-docs/current/development/01-getting-start.md +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/development/01-getting-start.md @@ -6,8 +6,8 @@ This series of articles will help you build extensions for QuickShop-Hikari or i ## License -QuickShop-Hikari is open source using the [GPLv3](https://www.gnu.org/licenses/quick-guide-gplv3.en.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari).\ -You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the GPLv3 agreement. +QuickShop-Hikari is open source using the [AGPLv3](https://www.gnu.org/licenses/agpl-3.0.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari). +You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the AGPLv3 agreement. ## 🚧Don't trust Javadoc too much @@ -48,7 +48,7 @@ QuickShop-Hikari divides operation sources into three types: - Server Main Thread - Async Thread (any other threads but not server main thread) -- Hybird +- Hybrid If you access the API through the wrong thread, QuickShop-Hikari will force a runtime error to be thrown. @@ -58,4 +58,4 @@ For APIs that may trigger network IO or long-time disk IO, you are required not You can see [Util.ensureThread()](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/3d1d271e1106ea1c83cc6068f8232ab7c7860918/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/util/Util.java#L351) and find out the requirements of the different APIs by looking up their use. APIs that do not use Util.ensureThread() are allowed to be called from any thread by default. -You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. +You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. \ No newline at end of file diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md index aa2404c594..7828d414ad 100644 --- a/i18n/uk-UA/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md @@ -10,7 +10,7 @@ ShopManager manager = api.getShopManager(); ## Getting a shop -Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates.\ +Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates. QuickShop-Hikari's store is only bound to one half of "Large Chest", so to get the store, you need to query both the cube itself and its associated cube. The good thing is that there is an API in the plugin that allows you to handle this situation very easily. @@ -71,7 +71,7 @@ manager.deleteShop(shop) // Permanently delete this store, both memory and datab ## Identify a store -Please note that store locations are technically variable and you should not use coordinates to identify a store.\ +Please note that store locations are technically variable and you should not use coordinates to identify a store. Also RuntimeRandomUniqueId should not be used to identify the store, as the name suggests, the value changes every time the server restarts, it should only be used to handle scenarios where the player interacts with the server. ```java diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md index 543f1851da..4f839ed652 100644 --- a/i18n/uk-UA/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md @@ -1,6 +1,6 @@ # 0x05 Per shop permission -QuickShop-Hikari has a per shop permission management system.\ +QuickShop-Hikari has a per shop permission management system. Therefore, for a normal permission node check is not enough, you need to attach an additional check. ## Check with shop diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/development/06-protocol-system.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/development/06-protocol-system.md index 5d37a15536..0380b789f9 100644 --- a/i18n/uk-UA/docusaurus-plugin-content-docs/current/development/06-protocol-system.md +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/development/06-protocol-system.md @@ -15,30 +15,30 @@ This documentation will guide developers through the components, implementation - **Purpose**: Manages packet handling and initialization logic. - **Interface**: `PacketHandler` - **Key Methods**: - - `Map> factories()` - - Retrieves a map of supported `PacketFactory` instances keyed by game versions. - - `void initialize()` - - Initializes the packet handler. - - `Optional> factory(String version)` - - Retrieves a `PacketFactory` for a specific game version. + - `Map> factories()` + - Retrieves a map of supported `PacketFactory` instances keyed by game versions. + - `void initialize()` + - Initializes the packet handler. + - `Optional> factory(String version)` + - Retrieves a `PacketFactory` for a specific game version. ### 2. **PacketFactory** - **Purpose**: Creates and sends specific packet types. - **Interface**: `PacketFactory` - **Supported Packets**: - - **Spawn Packet**: - - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. - - Example Use: Representing shop items visually. - - **Metadata Packet**: - - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. - - Example Use: Updating item display name or properties. - - **Velocity Packet**: - - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. - - Example Use: Custom animations for virtual items. - - **Destroy Packet**: - - Removes the entity from the client view. Created using `createDestroyPacket()`. - - Example Use: Unloading or removing a virtual display item. + - **Spawn Packet**: + - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. + - Example Use: Representing shop items visually. + - **Metadata Packet**: + - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. + - Example Use: Updating item display name or properties. + - **Velocity Packet**: + - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. + - Example Use: Custom animations for virtual items. + - **Destroy Packet**: + - Removes the entity from the client view. Created using `createDestroyPacket()`. + - Example Use: Unloading or removing a virtual display item. Developers implementing custom `PacketFactory` should ensure these packets are correctly handled and optimized for performance. @@ -46,24 +46,24 @@ Developers implementing custom `PacketFactory` should ensure these packets are c - **Purpose**: Oversees the lifecycle of virtual display items and integrates with packet handlers. - **Key Features**: - - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). - - Manages virtual display items mapped to chunks. - - Provides thread-safe operations for adding and removing display items. + - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). + - Manages virtual display items mapped to chunks. + - Provides thread-safe operations for adding and removing display items. ### 4. **VirtualDisplayItem** - **Purpose**: Represents a virtual item displayed to players. - **Key Features**: - - Generates and caches packets for spawning, metadata, velocity, and destruction. - - Manages packet senders for each player. - - Handles spawn and removal operations dynamically. + - Generates and caches packets for spawning, metadata, velocity, and destruction. + - Manages packet senders for each player. + - Handles spawn and removal operations dynamically. ### 5. **ProtocolLibHandler and PacketEventsHandler** - **Purpose**: Provide implementations of `PacketHandler` using ProtocolLib and PacketEvents, respectively. - **Differences**: - - `ProtocolLibHandler` leverages ProtocolLib API. - - `PacketEventsHandler` uses the PacketEvents library. + - `ProtocolLibHandler` leverages ProtocolLib API. + - `PacketEventsHandler` uses the PacketEvents library. --- @@ -140,11 +140,11 @@ public class CustomPacketFactory implements PacketFactory { Packet factories are provided for specific game versions through two primary implementations: - **ProtocolLib**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` - **PacketEvents**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` --- diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md new file mode 100644 index 0000000000..aebc035f87 --- /dev/null +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md @@ -0,0 +1,297 @@ +# Interaction System (Developer Guide) + +The Interaction System allows developers to fully customize how players interact with shops. + +As of 6.2.0.11, the system has been redesigned to be: + +- Modular +- Extensible +- Thread-safe +- Fully customizable by third-party addons + +This guide will walk you through: + +1. What the Interaction System is +2. Getting the `InteractionManager` +3. Understanding `InteractionType` +4. Understanding `InteractionBehavior` +5. Registering custom interactions +6. Best practices + +--- + +# Overview + +The Interaction System is composed of three main components: + +| Component | Purpose | +| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| `InteractionType` | Describes **what kind of click happened** (standing, sneaking, left-click, sign, shopblock, etc.) | +| `InteractionBehavior` | Describes **what action should happen** when that type is triggered | +| `InteractionManager` | Central registry that manages interactions and behaviors | + +This separation allows developers to: + +- Add new click types +- Add new behaviors +- Override existing ones +- Extend QuickShop without modifying core code + +--- + +# Getting the InteractionManager + +To begin registering custom interactions, you must retrieve the `InteractionManager` instance. + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +If you are working directly with the plugin instance: + +```java +InteractionManager manager = QuickShop.getInstance().getInteractionManager(); +``` + +Once obtained, you can: + +- Register new interaction types +- Register new behaviors +- Override existing behaviors + +--- + +# Understanding InteractionType + +`InteractionType` represents **how** a player interacted with a shop. + +Examples include: + +- `STANDING_LEFT_CLICK_SIGN` +- `STANDING_RIGHT_CLICK_SHOPBLOCK` +- `SNEAKING_LEFT_CLICK_CONTAINER` +- etc. + +Each `InteractionType` defines: + +- Player stance (standing/sneaking) +- Click type (left/right) +- Target (sign/shopblock/container) + +InteractionTypes do NOT define behavior — they only define the trigger. + +--- + +# Understanding InteractionBehavior + +`InteractionBehavior` defines **what happens** when an interaction is triggered. + +Examples of built-in behaviors: + +- `TRADE_INTERACTION` +- `TRADE_UI` +- `CONTROL_PANEL` +- `CONTROL_PANEL_UI` +- `NONE` + +A behavior: + +- Executes logic +- May open GUIs +- May send chat panels +- May directly trade items +- Can cancel or modify flow + +This separation makes it easy to reuse behaviors across multiple interaction types. + +--- + +# Registering Custom Interactions + +There are two things you can register: + +- A custom `InteractionType` +- A custom `InteractionBehavior` + +--- + +## Creating a Custom InteractionBehavior + +Create a class implementing `InteractionBehavior`. + +Example: + +```java +public class MyTradeBehavior implements InteractionBehavior { + + @Override + public String getKey() { + return "MY_CUSTOM_TRADE"; + } + + @Override + public void execute(InteractionClick click) { + Player player = click.getPlayer(); + Shop shop = click.getShop(); + + player.sendMessage("You triggered my custom interaction!"); + + // Add your custom logic here + } +} +``` + +Then register it: + +```java +InteractionManager manager = api.getInteractionManager(); +manager.behavior(new MyTradeBehavior()); +``` + +Now your behavior is available for use. + +--- + +## Creating a Custom InteractionType + +You may also register custom interaction types if you want to introduce new trigger definitions. + +Example: + +```java +public class MyCustomInteraction implements InteractionType { + + @Override + public String getKey() { + return "STANDING_DOUBLE_CLICK_SIGN"; + } + + @Override + public boolean matches(InteractionClick click) { + // Define custom logic to detect this interaction + return click.isStanding() + && click.isSign() + && click.isDoubleClick(); + } +} +``` + +Register it: + +```java +manager.interaction(new MyCustomInteraction()); +``` + +--- + +# Binding Types to Behaviors + +The InteractionManager internally maps interaction types to behaviors based on configuration and registration order. + +Once your behavior is registered: + +- It can be referenced in `interaction.yml` +- Or attached programmatically + +Example interaction.yml usage: + +```yaml +STANDING_LEFT_CLICK_SIGN: MY_CUSTOM_TRADE +``` + +--- + +# The InteractionClick Object + +When your behavior executes, you receive an `InteractionClick` object. + +It provides: + +- `getPlayer()` +- `getShop()` +- `getLocation()` +- `isSneaking()` +- `isSign()` +- `isShopBlock()` +- etc. + +This gives full context for safe execution. + +--- + +# Advanced: Overriding Built-in Behavior + +If you register a behavior using the same key as an existing one, your behavior can override the default. + +⚠️ Be careful when doing this — you are replacing core functionality. + +--- + +# Best Practices + +### Always Use Unique Keys + +Avoid naming collisions: + +``` +MYPLUGIN_CUSTOM_BEHAVIOR +``` + +### Keep Behavior Lightweight + +Do not block the main thread with: + +- Heavy database calls +- File IO +- Network calls + +Use async tasks if needed. + +### Respect Permissions + +Always validate: + +```java +if (!player.hasPermission("myplugin.use")) { + return; +} +``` + +### Avoid Hard Overrides Unless Necessary + +Instead of replacing built-in behaviors, consider extending them. + +--- + +# Example: Full Minimal Implementation + +```java +public class ExampleAddon { + + public void register(QuickShopAPI api) { + + InteractionManager manager = api.getInteractionManager(); + + manager.behavior(new MyTradeBehavior()); + manager.interaction(new MyCustomInteraction()); + } +} +``` + +--- + +# Conclusion + +The Interaction System is designed to allow: + +- Full extensibility +- Clean separation of triggers and actions +- Easy integration for third-party developers + +By retrieving the `InteractionManager`: + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +You gain full control over how shops respond to player actions. \ No newline at end of file diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/development/08-tax-manager.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/development/08-tax-manager.md new file mode 100644 index 0000000000..72a56f9e88 --- /dev/null +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/development/08-tax-manager.md @@ -0,0 +1,266 @@ +# Tax System (Developer Guide) + +The QuickShop tax system allows server owners and developers to define how transaction taxes are calculated, distributed, and extended. + +As of 6.2.0.11, the tax system has been fully rewritten to provide: + +- A flexible TaxManager +- Pluggable TaxProvider support +- Progressive taxation +- Tax targeting (shop owner, interacting player, or both) +- Custom extension capability for third-party addons + +This guide explains how to work with the tax system programmatically. + +--- + +# Overview + +The tax system is composed of three core components: + +TaxManager +Responsible for coordinating tax calculation and execution. + +TaxProvider +Defines how tax values are calculated. + +TaxRates +Represents calculated tax results for a transaction. + +The system is designed to allow custom providers to be registered and used without modifying core logic. + +--- + +# Getting the TaxManager + +To work with the tax system, retrieve the TaxManager from the ShopManager. + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +Once obtained, you can: + +- Access current tax configuration +- Register custom tax providers +- Calculate tax values +- Hook into tax events + +--- + +# How the Tax System Works + +During a shop transaction: + +1. A base price is determined. +2. The TaxManager selects the active TaxProvider. +3. The TaxProvider calculates applicable tax. +4. A TaxRates object is produced. +5. The system applies the tax to: + + - Shop owner + - Interacting player + - Or both (depending on configuration) + +This architecture allows tax behavior to be modified without altering transaction logic. + +--- + +# TaxProvider + +A TaxProvider defines how tax values are calculated. + +You may create your own provider to implement: + +- Progressive tax brackets +- Flat percentage tax +- Conditional tax rules +- Region-based tax +- Rank-based tax +- Time-based tax + +Example minimal provider: + +```java +public class MyCustomTaxProvider implements TaxProvider { + + @Override + public TaxRates calculateTax(TaxContext context) { + + double basePrice = context.getPrice(); + + double taxAmount = basePrice * 0.05; // 5% flat tax + + return new TaxRates() + .ownerTax(taxAmount) + .buyerTax(0.0); + } +} +``` + +Then register it: + +```java +taxManager.provider(new MyCustomTaxProvider()); +``` + +Once registered, your provider will be used for tax calculations. + +--- + +# TaxRates + +TaxRates represents the result of a tax calculation. + +It typically contains: + +- Owner tax amount +- Buyer tax amount +- Total tax impact +- Metadata (if applicable) + +The transaction system will read from TaxRates and apply deductions accordingly. + +--- + +# Progressive Taxation + +The built-in system supports progressive tax structures. + +This allows server administrators to tax based on: + +- Player balance +- Shop owner balance +- Configured tax brackets + +Example configuration concept: + +- 0–10,000 balance → 1% tax +- 10,000–100,000 → 2% tax +- 100,000+ → 3% tax + +Developers can extend or override this logic inside a custom TaxProvider. + +--- + +# Targeting Tax + +The new tax system allows taxes to be applied to: + +- Shop owner +- Interacting player +- Both + +This is controlled via configuration, but custom providers can override distribution logic by adjusting TaxRates output. + +Example: + +```java +return new TaxRates() + .ownerTax(basePrice * 0.02) + .buyerTax(basePrice * 0.01); +``` + +--- + +# Registering a Custom TaxProvider + +To replace or extend tax logic: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); + +taxManager.provider(new MyCustomTaxProvider()); +``` + +You may register only one primary provider at a time. If multiple providers are needed, implement internal delegation within your custom provider. + +--- + +# Tax Events + +The tax system integrates with the event system. + +The modern event used is: + +ShopEnhancedTaxEvent + +This replaces legacy tax events and provides improved context, including: + +- Transaction builder reference +- TaxRates object +- Modification capability before final execution + +You can listen for the event and modify tax behavior dynamically: + +```java +@EventHandler +public void onTax(ShopEnhancedTaxEvent event) { + + TaxRates rates = event.getTaxRates(); + + // Example: Give VIP players reduced owner tax + if (event.getOwner().hasPermission("vip.tax.discount")) { + rates.ownerTax(rates.getOwnerTax() * 0.5); + } +} +``` + +--- + +# Best Practices + +Always keep tax calculations lightweight. + +Avoid: + +- Heavy database queries inside calculateTax +- Blocking network calls +- Long-running computations + +If complex logic is required, pre-cache required data outside the tax execution path. + +Ensure negative tax values are not returned unless intentional. + +Always validate final amounts before applying modifications. + +Respect configuration hierarchy unless intentionally overriding it. + +--- + +# Example Full Implementation + +```java +public class ExampleTaxAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + TaxManager taxManager = manager.taxManager(); + + taxManager.provider(new MyCustomTaxProvider()); + } +} +``` + +--- + +# Conclusion + +The new tax system is designed for: + +- Flexibility +- Extensibility +- Clean separation of concerns +- Future expansion + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +You gain full control over how QuickShop calculates and applies tax during transactions. \ No newline at end of file diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/development/09-layout-provider.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/development/09-layout-provider.md new file mode 100644 index 0000000000..55e3cd3e91 --- /dev/null +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/development/09-layout-provider.md @@ -0,0 +1,275 @@ +# Shop Layout Provider (Developer Guide) + +The Shop Layout Provider system allows developers to customize how shop signs are structured and rendered. + +As of 6.2.0.11, shop layouts are no longer hardcoded. Instead, they are controlled through the `IShopLayoutProvider` interface, which allows: + +- Custom sign line ordering +- Per-shop-type layouts (BUYING, SELLING, FROZEN, or custom types) +- Dynamic layout resolution +- Complete replacement of the default layout system + +This guide explains how to access, override, and implement a custom layout provider. + +--- + +# Overview + +The layout provider controls how shop sign lines are arranged. + +Instead of hardcoding: + +Line 1 → Header +Line 2 → Trading info +Line 3 → Item +Line 4 → Price + +The system now allows full customization through: + +- Config-based layout definitions +- Custom `IShopLayoutProvider` implementations +- Runtime overrides + +The default implementation is `SimpleShopLayoutProvider`. + +--- + +# Accessing the Layout Provider + +To retrieve the current layout provider: + +```java +ShopManager manager = api.getShopManager(); +IShopLayoutProvider provider = manager.shopLayoutProvider(); +``` + +To replace the layout provider with a custom one: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Once replaced, your implementation will control how shop layouts are generated. + +--- + +# Understanding IShopLayoutProvider + +`IShopLayoutProvider` defines how layout data is retrieved and resolved. + +It is responsible for: + +- Providing layout configuration per shop type +- Determining which layout to use +- Supplying formatted line keys +- Allowing future extensibility + +The default implementation reads layout definitions from configuration and applies them based on shop type. + +--- + +# Default Layout Example + +The default configuration-based layout looks like this: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +Each line maps to a layout component key. + +An empty string (`""`) leaves that line blank. + +The layout provider resolves these keys into actual sign content. + +--- + +# Creating a Custom Layout Provider + +To override the default behavior, implement `IShopLayoutProvider`. + +Example minimal implementation: + +```java +public class MyCustomLayoutProvider implements IShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + + ShopLayout layout = new ShopLayout(); + + layout.setLine(1, "Custom Header"); + layout.setLine(2, "Owner: " + shop.getOwnerName()); + layout.setLine(3, shop.getItem().getType().name()); + layout.setLine(4, "$" + shop.getPrice()); + + return layout; + } +} +``` + +Then register it: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Your layout will now control all shop sign formatting. + +--- + +# Per-Type Layout Control + +Because the system no longer depends on the legacy ShopType enum, layouts can support: + +- Built-in types (BUYING, SELLING, FROZEN) +- Custom shop types +- Addon-defined shop types + +Your provider can determine layout logic dynamically: + +```java +@Override +public ShopLayout provideLayout(Shop shop) { + + if (shop.getShopType().key().equals("FROZEN")) { + return frozenLayout(shop); + } + + return defaultLayout(shop); +} +``` + +This allows conditional formatting, localization adjustments, or special event styling. + +--- + +# Advanced Customization + +A custom layout provider can: + +- Pull data from external plugins +- Inject dynamic placeholders +- Modify layout per player +- Apply formatting logic +- Override color schemes +- Apply region-based formatting +- Implement animated sign systems + +Because the layout provider is resolved at runtime, you can compute layouts dynamically instead of reading static config. + +--- + +# Replacing vs Extending the Default Provider + +You have two options: + +Replace entirely: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Or extend the default implementation: + +```java +public class ExtendedLayoutProvider extends SimpleShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + ShopLayout base = super.provideLayout(shop); + + base.setLine(1, "[Extended] " + base.getLine(1)); + + return base; + } +} +``` + +Extending is safer if you only want to modify small portions. + +--- + +# Best Practices + +Keep layout generation lightweight. + +Avoid: + +- Heavy database queries +- Blocking IO +- Complex network calls + +Layout generation runs during shop updates and sign refresh events. + +Always handle null values safely. + +Ensure layout line count does not exceed sign limits. + +Avoid hardcoding shop type names unless necessary. + +If your layout supports custom shop types, validate their keys properly. + +--- + +# Example Full Registration + +```java +public class LayoutAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + + manager.shopLayoutProvider(new MyCustomLayoutProvider()); + } +} +``` + +--- + +# Conclusion + +The Shop Layout Provider system allows complete control over shop sign structure. + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +``` + +And setting: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +You can redefine how every shop is displayed on the server. + +This system was designed to support: + +- Extensibility +- Custom shop types +- Localization +- Dynamic formatting +- Future expansion \ No newline at end of file diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/faq/compare-reremake.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/faq/compare-reremake.md index aaa1a9e507..6b39f02520 100644 --- a/i18n/uk-UA/docusaurus-plugin-content-docs/current/faq/compare-reremake.md +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/faq/compare-reremake.md @@ -64,7 +64,7 @@ If you are a Reremake user, you may be confused about the differences between Hi ## Which one should I use? Well, it depends on what your needs are.\ -If you have an old server (<1.20) instance, Reremake is your only choice.\ +If you have an old server ({'<'}1.20) instance, Reremake is your only choice.\ ~~If you are in China which has GFW interfere, you also should consider Reremake because it doesn't need to load libraries from Global Internet.~~ Solved in 6.0.0.0. If none of these applies, give Hikari a try! diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md index 551f579e7c..172be3a69b 100644 --- a/i18n/uk-UA/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md @@ -1,8 +1,8 @@ # Where Addons/Compacts is -Addons and Compatilibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. +Addons and Compatibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. -- Open Modrinth versions page, locate the version your're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) +- Open Modrinth versions page, locate the version you're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) - Frantically slide your mouse wheel down until the lowest end of the page. - You get it! diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/internal/database-schema.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/internal/database-schema.md index fea685e4fc..45e04adb56 100644 --- a/i18n/uk-UA/docusaurus-plugin-content-docs/current/internal/database-schema.md +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/internal/database-schema.md @@ -4,17 +4,17 @@ This chapter will explain the implementation details of QuickShop Hikari's datab ## Tables -This section explains the database tables created by QuickShop-Hikari.\ -Unless otherwise specified, the initial `qs_` in table name is the table prefix.\ +This section explains the database tables created by QuickShop-Hikari. +Unless otherwise specified, the initial `qs_` in table name is the table prefix. For the latest code definition for each table, see: [DataTables.java](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/hikari/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/database/DataTables.java) ### `data` -This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information.\ -No matter what, a data record should not be modified after it is created, until it got deleted.\ +This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information. +No matter what, a data record should not be modified after it is created, until it got deleted. Any new changes to the shop should create a new copy, apply the changes to the copy, and insert it as a new record. -Basiclly, Copy-on-write. +Basically, Copy-on-write. A data record only be deleted from the database when no any table references their `data_id`. @@ -29,7 +29,7 @@ A data record only be deleted from the database when no any table references the | unlimited | BIT NOT NULL | 0 | Indicates whether this store is an unlimited store, 0=Limited, 1=Unlimited | | hologram | BIT NOT NULL | 0 | Indicates the suspension status of this store's display item, 0=Follow global settings, 1=Disabled | | tax_account | VARCHAR(36) | NULL | The uuid for tax account, If it is not NULL, tax will be paid to the specified account | -| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serilized to JSON string | +| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serialized to JSON string | | extra | LONGTEXT | Empty Yaml | Used to store experimental settings of QuickShop Hikari or persistent data of other plugins | | inv_wrapper | VARCHAR(255) NOT NULL | N/A | Unique identifier for InventoryWrapper for this shop data entry | | inv_symbol_link | TEXT NOT NULL | N/A | Unique Inventory symbol used to pass to InventoryWrapper, for locating inventory | @@ -38,7 +38,7 @@ A data record only be deleted from the database when no any table references the ### `shops` -This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes.\ +This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes. Multiple `shop_id` can correspond to the same `data_id`. | Column Name | DataType | Default | Description | diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/modules/cmd-alias.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/modules/cmd-alias.md index 53f1577685..e6ed381c0d 100644 --- a/i18n/uk-UA/docusaurus-plugin-content-docs/current/modules/cmd-alias.md +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/modules/cmd-alias.md @@ -23,7 +23,7 @@ custom-commands: - cshop ``` -Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect.\ +Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect. The effect should be like this: ![command-alias](./img/command-alias.png) diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/modules/datasource.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/modules/datasource.md index 6fc1bd8931..3fd3a8bdee 100644 --- a/i18n/uk-UA/docusaurus-plugin-content-docs/current/modules/datasource.md +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/modules/datasource.md @@ -48,7 +48,7 @@ Execute the `/quickshop export` command in console, quickshop will export a zip ![exported data](img/database-export.png) -Stop your database, switch the datasource, and start the server.\ +Stop your database, switch the datasource, and start the server. You may noticed all shops are gone, because new datasources had no data inside, we will restore them from export. Rename that exported ZIP file to `recovery.zip`, execute `/quickshop recovery` and restart your server, all shops should back. diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/modules/itemmatcher.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/modules/itemmatcher.md index 56be243019..922907be27 100644 --- a/i18n/uk-UA/docusaurus-plugin-content-docs/current/modules/itemmatcher.md +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/modules/itemmatcher.md @@ -4,7 +4,7 @@ ItemMatcher is a utility used by QuickShop-Hikari to compare the items, it is th :::caution -If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse.\ +If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse. **TL;DR: Keep default unless you know what you're doing.** ::: @@ -26,10 +26,10 @@ matcher: work-type: 1 ``` -By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility.\ +By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility. But still, you can toggle to QuickShop Item Matcher if you need to customize the comparing or running QuickShop on the server jar which have bug affect the Bukkit comparing system. -## Customize the metadata compareing +## Customize the metadata comparing Customize only works under QuickShop Item Matcher. diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md index fc2af69d2b..d04e8f2783 100644 --- a/i18n/uk-UA/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md @@ -4,7 +4,7 @@ ItemStack Loader is a workaround for loading the Bukkit ItemStack. :::caution -Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossble. +Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossible. ::: diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/modules/localization.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/modules/localization.md index e9121e1a36..d47589ab9a 100644 --- a/i18n/uk-UA/docusaurus-plugin-content-docs/current/modules/localization.md +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/modules/localization.md @@ -10,7 +10,7 @@ To help translate QuickShop-Hikari, please visit our [Crowdin Homepage](https:// ## Crowdin OTA -QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will overrided when you reload QuickShop-Hikari or restart your server. +QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will override when you reload QuickShop-Hikari or restart your server. Your installation will keep translations up-to-date without any touch. @@ -110,6 +110,16 @@ To disable the CrowdinOTA, please add it in the startup flag: -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager.enableCrowdinOTA=false ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +use-crowdin-ota: false +``` + ### Self-Hosted OTA Server If you self-hosted our translation server by using [CrowdinCopyDeploy](https://github.com/Ghost-chu/CrowdinCopyDeploy) tool, you're able to change the OTA server to yourself server. @@ -118,4 +128,12 @@ If you self-hosted our translation server by using [CrowdinCopyDeploy](https://g -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager= ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml +Use + +```yaml +crowdin-host: +``` \ No newline at end of file diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/modules/shops/benefit.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/modules/shops/benefit.md index 4d7a9c8f42..c59d92e6d1 100644 --- a/i18n/uk-UA/docusaurus-plugin-content-docs/current/modules/shops/benefit.md +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/modules/shops/benefit.md @@ -37,3 +37,13 @@ By default, for security, QuickShop-Hikari disallow add offline players into sho ```bash -Dcom.ghostchu.quickshop.command.subcommand.SubCommand_Benefit.allowOffline=true ``` + +### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +shop.allow-offline-benefit: true +``` \ No newline at end of file diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/modules/shops/control-panel b/i18n/uk-UA/docusaurus-plugin-content-docs/current/modules/shops/control-panel new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/modules/shops/control-panel @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/modules/shops/history.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/modules/shops/history.md index fa891adeab..195b64a042 100644 --- a/i18n/uk-UA/docusaurus-plugin-content-docs/current/modules/shops/history.md +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/modules/shops/history.md @@ -24,7 +24,7 @@ The History GUI displays the details of each recorded transaction and other usef ### Transaction details -When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed.\ +When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed. If you are checking the history of more than one store, the player head will be replaced with an item from the corresponding store. ![history-gui](./img/history-gui.png) diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md new file mode 100644 index 0000000000..c5ed3b3fe4 --- /dev/null +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md @@ -0,0 +1,90 @@ +# Shop Types + +QuickShop supports multiple shop types, allowing shops to behave differently depending on their mode. + +The built-in shop types are: + +- Selling +- Buying +- Frozen + +Each type changes how the shop interacts with players. + +--- + +## Selling Shop + +A Selling shop allows players to: + +- Buy items from the shop owner +- Pay money to receive items + +This is the most common shop type. + +--- + +## Buying Shop + +A Buying shop allows players to: + +- Sell items to the shop owner +- Receive money in exchange + +This is commonly used for: + +- Resource collection +- Server buy-back shops +- Automated material sinks + +--- + +## Frozen Shop + +A Frozen shop temporarily disables trading. + +While frozen: + +- No buying is allowed +- No selling is allowed +- The shop remains intact +- Staff or admins can manage it + +This is useful for: + +- Temporary suspensions +- Investigation +- Event locking +- Maintenance + +--- + +## Switching Shop Types + +Shop types can be changed through: + +- Control panel +- GUI control panel +- Admin commands + +Frozen mode is also available via: + +/qs freeze + +--- + +## Custom Shop Types + +As of 6.2.x, the system supports extensible shop types internally. + +While server owners use the built-in types, the system now allows future expansion through addons. + +--- + +## Summary + +Shop types allow you to: + +- Control how money flows +- Enable buy-back mechanics +- Temporarily disable shops +- Build advanced economic systems \ No newline at end of file diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md new file mode 100644 index 0000000000..18e0a47407 --- /dev/null +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md @@ -0,0 +1,217 @@ +# Sign Layout + +QuickShop allows you to fully customize how shop signs are structured. + +You can change: + +- What appears on each line +- The order of information +- Layout per shop type +- Whether certain lines are blank + +This gives you complete control over how shops look on your server. + +--- + +## How Sign Layout Works + +Shop signs have four lines. + +Instead of being hardcoded, QuickShop uses a configurable layout system. + +Each shop type can have its own layout: + +- SELLING +- BUYING +- FROZEN + +You define what each line displays using layout keys. + +--- + +## Configuration Location + +Sign layout is configured in `config.yml` under: + +```yaml +layout: +``` + +Example default configuration: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## Available Layout Keys + +Each line value refers to a built-in layout component. + +Common layout keys include: + +- `header` – The shop header line +- `trading` – Buy/Sell direction information +- `item` – Item name +- `price` – Shop price + +These keys are automatically formatted using your language file and formatting settings. + +--- + +## Leaving a Line Blank + +To leave a line empty, use: + +```yaml +line2: "" +``` + +This is useful if you want: + +- Minimalist signs +- Cleaner layouts +- Custom spacing +- Decorative formatting + +--- + +## Customizing Per Shop Type + +Each shop type can have a different layout. + +For example: + +```yaml +layout: + + SELLING: + line1: "header" + line2: "item" + line3: "price" + line4: "" + + BUYING: + line1: "header" + line2: "price" + line3: "item" + line4: "" + + FROZEN: + line1: "header" + line2: "" + line3: "item" + line4: "Frozen" +``` + +This allows you to visually differentiate: + +- Selling shops +- Buying shops +- Frozen shops + +--- + +## Practical Examples + +### Minimal Style + +```yaml +layout: + SELLING: + line1: "item" + line2: "price" + line3: "" + line4: "" +``` + +### Compact Economy Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "price" + line3: "item" + line4: "" +``` + +### Large Clear Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## How Updates Affect Layout + +When you change the layout: + +- Existing shop signs will update automatically when refreshed. +- New shops will use the updated format immediately. + +If needed, you can reload QuickShop to apply changes. + +--- + +## Best Practices + +- Keep important information visible (price and item). +- Avoid overly complex formatting. +- Test layout changes before deploying on large servers. +- Use different layouts for BUYING and SELLING to reduce confusion. + +--- + +## Common Questions + +### Can I add more than four lines? + +No. +Minecraft signs are limited to four lines. + +### Can I add colors? + +Colors are controlled by your language file and formatting settings. + +### Can I change layout without restarting? + +Yes, but reloading or refreshing shops is recommended to ensure full update. + +--- + +## Summary + +The Sign Layout system allows you to: + +- Fully customize shop sign appearance +- Create per-type layouts +- Simplify or expand shop information +- Improve clarity for players + +All layout customization is handled inside `config.yml`. diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md new file mode 100644 index 0000000000..980bad10f2 --- /dev/null +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md @@ -0,0 +1,130 @@ +# Shop Sign Waxing + +QuickShop can automatically wax shop signs to prevent players from editing them manually. + +Waxing protects the integrity of your shop signs and helps prevent tampering, spoofing, and accidental modification. + +As of modern Minecraft versions, waxed signs cannot be edited unless they are unwaxed first. + +--- + +## What Is Sign Waxing? + +In Minecraft, waxing a sign locks it so that: + +- Players cannot edit the text +- Players cannot modify lines +- Accidental changes are prevented +- Malicious edits are blocked + +When enabled in QuickShop, shop signs are automatically waxed when created. + +--- + +## Why Use It? + +Sign waxing protects against: + +- Players editing price lines +- Changing item names on signs +- Spoofing shop information +- Accidental formatting issues +- Sign hijacking attempts + +On public servers, this feature is strongly recommended. + +--- + +## How It Works + +When a shop is created: + +1. QuickShop generates the shop sign. +2. The sign text is written. +3. The sign is automatically waxed (if enabled). + +If a shop is updated: + +- The sign will be safely updated by QuickShop. +- The wax state is maintained. + +Players cannot manually edit shop signs while waxing is enabled. + +--- + +## Configuration + +To enable or disable sign waxing, edit `config.yml`: + +```yaml +shop: + sign-wax: true +``` + +### true + +- Shop signs are automatically waxed. +- Players cannot edit the sign manually. + +### false + +- Shop signs behave like normal Minecraft signs. +- Players may edit them if permitted by the game. + +--- + +## Recommended Setting + +For most servers: + +```yaml +shop: + sign-wax: true +``` + +This ensures shop data stays accurate and secure. + +--- + +## Common Questions + +### Can admins still modify shop signs? + +QuickShop controls shop sign formatting. +Manual edits are not recommended. + +Admins should use: + +- Control panel +- Shop commands +- Direct configuration changes + +### Does waxing affect shop functionality? + +No. +Waxing only prevents manual text edits. +The shop continues to function normally. + +### Can players un-wax shop signs? + +No. +QuickShop manages the sign state automatically. + +--- + +## Best Practices + +- Keep sign-wax enabled on survival servers. +- Combine sign-wax with proper permissions. +- Avoid manually editing shop signs through other plugins. + +--- + +## Summary + +Sign Waxing: + +- Prevents tampering +- Requires no additional setup + +Enable it once and QuickShop handles the rest. \ No newline at end of file diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/modules/shops/taxes.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/modules/shops/taxes.md new file mode 100644 index 0000000000..1a273fd978 --- /dev/null +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/modules/shops/taxes.md @@ -0,0 +1,92 @@ +# Taxation System + +QuickShop includes a taxation system designed to give server owners more flexibility and control over shop-based income. + +This system was revamped as of 6.2.0.11+ + +The new system allows you to: + +- Apply tax to shop owners +- Apply tax to buyers +- Apply tax to both +- Use progressive tax brackets +- Customize tax behavior in configuration + +This system replaces the legacy tax configuration. + +--- + +## How It Works + +During a transaction: + +1. The shop price is calculated. +2. Tax is calculated based on your configuration. +3. Tax is deducted from the configured target(s). +4. Remaining funds are distributed normally. + +You can configure: + +- Flat percentage tax +- Progressive tax based on player balance +- Tax accounts +- Distribution rules + +--- + +## Progressive Tax + +The new system allows you to tax based on balance brackets. + +Example concept: + +- 0 – 10,000 balance → 1% tax +- 10,000 – 100,000 → 2% tax +- 100,000+ → 3% tax + +This helps prevent extremely wealthy players from dominating the economy. + +--- + +## Who Pays the Tax? + +You can configure whether tax applies to: + +- The shop owner +- The buyer +- Both + +This gives you flexibility depending on your economy design. + +--- + +## Configuration + +All tax-related settings are located under the `shop-tax` section in `config.yml`. + +After updating to 6.2.0.11+, review your tax configuration carefully, as the old tax system has been replaced. + +--- + +## Why Use Tax? + +The taxation system can help: + +- Remove currency from circulation +- Fund server banks or towns +- Create sink mechanics +- Balance inflation +- Reward active players + +--- + +## Summary + +The new taxation system is: + +- Flexible +- Configurable +- Balance-aware +- Designed for modern economy servers + +Make sure to review your configuration after upgrading. \ No newline at end of file diff --git a/i18n/uk-UA/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md b/i18n/uk-UA/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md new file mode 100644 index 0000000000..247c24712d --- /dev/null +++ b/i18n/uk-UA/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md @@ -0,0 +1,161 @@ +# WorldEdit & FAWE Support + +QuickShop includes built-in protection and integration for WorldEdit and FastAsyncWorldEdit (FAWE). + +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. + +You do not need to download or install any additional compatibility plugins. + +--- + +## What This Does + +WorldEdit and FAWE allow administrators and builders to: + +- Copy and paste regions +- Replace large areas of blocks +- Mass-delete regions +- Roll back areas +- Regenerate terrain + +Without protection, these operations could: + +- Create ghost shops +- Leave orphaned shop data in the database +- Duplicate shops unintentionally +- Delete containers without cleaning up shop data +- Cause inconsistencies between world and database + +QuickShop now automatically detects and safely processes WorldEdit and FAWE operations. + +--- + +## Built-In Behavior + +When WorldEdit or FAWE modifies blocks: + +- Shops removed via WorldEdit are properly deleted from the database. +- Shop data stays synchronized with world changes. +- Ghost shops are prevented. +- Mass block replacements will not leave broken shop entries behind. + +This applies to: + +- //set +- //replace +- //cut +- //paste +- //regen +- Region deletion +- Mass container removal + +No configuration is required. + +--- + +## FAWE Support + +FastAsyncWorldEdit (FAWE) is fully supported. + +Because FAWE processes edits asynchronously, QuickShop handles: + +- Region-thread safe processing +- Async block updates +- Safe shop deletion during batch edits + +You do not need to enable anything manually. + +--- + +## Removing Shops with WorldEdit + +If you delete containers (chests, barrels, etc.) using WorldEdit: + +QuickShop will automatically: + +- Detect the block removal +- Unregister the shop +- Clean the database entry +- Prevent ghost shops + +You do not need to run `/qs cleanghost` after WorldEdit usage in normal circumstances. + +--- + +## Copying and Pasting Shops + +If you copy and paste regions that contain shops: + +- Shop data will not duplicate incorrectly. +- Shop IDs remain consistent. +- Invalid pasted shops will not auto-register unless properly created. + +This prevents accidental duplication exploits. + +--- + +## Performance + +WorldEdit and FAWE operations can modify thousands of blocks at once. + +QuickShop processes these safely and efficiently: + +- Batch-aware cleanup +- Thread-safe region access (especially on Folia) +- Minimal performance impact during mass edits + +--- + +## Configuration + +There are no specific WorldEdit configuration options in QuickShop. + +Support is automatic and always enabled if WorldEdit or FAWE is detected. + +If WorldEdit is not installed, no extra code is executed. + +--- + +## Common Questions + +### Do I need the old WorldEdit compatibility jar? + +No. + +As of 6.2.0.11, WorldEdit support is built-in and the separate compatibility module has been removed. + +### Does this work with FAWE? + +Yes. FAWE is fully supported. + +### Will shops break if I use //set air? + +No. Shops will be safely removed and cleaned up. + +### Do I need to restart after installing WorldEdit? + +No. QuickShop detects WorldEdit automatically on startup. + +--- + +## Best Practices + +Even though QuickShop safely handles WorldEdit operations, it is recommended to: + +- Avoid copying shops intentionally unless required +- Use backups before large region edits +- Test large FAWE operations on staging servers when possible + +--- + +## Summary + +QuickShop’s built-in WorldEdit and FAWE integration ensures: + +- Safe mass edits +- No ghost shops +- Automatic database cleanup +- Thread-safe processing +- No extra modules required + +WorldEdit support is now a core feature of QuickShop. \ No newline at end of file diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/addon/limited.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/addon/limited.md index 70af27e240..fae55a8c95 100644 --- a/i18n/vi-VN/docusaurus-plugin-content-docs/current/addon/limited.md +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/addon/limited.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -41,8 +35,8 @@ Limit players to purchase up to 16 items per month. /quickshop limit period MONTH ``` -The system is based on the QuickShop-Hikari calendar system.\ -The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year.\ +The system is based on the QuickShop-Hikari calendar system. +The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year. Same for days, months and hours. Available time units: diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/addon/list.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/addon/list.md index 93d182f083..f20b91fd7b 100644 --- a/i18n/vi-VN/docusaurus-plugin-content-docs/current/addon/list.md +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/addon/list.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/addon/plan.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/addon/plan.md index 52a6e79cb4..c10ef4df42 100644 --- a/i18n/vi-VN/docusaurus-plugin-content-docs/current/addon/plan.md +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/addon/plan.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -18,7 +18,7 @@ Recorded data can be displayed from Hikari v2.0.0.0 onwards, but only after vers - All shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 1000 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `5` in server scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `5` in server scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Player Scope @@ -27,7 +27,7 @@ And still is Plan limitations, the list sorting is disturbed, so the display ord - All owned shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 50 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `4` in player scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `4` in player scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Showcase diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/addon/reforges.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/addon/reforges.md index 2a14509eb7..25fff1752a 100644 --- a/i18n/vi-VN/docusaurus-plugin-content-docs/current/addon/reforges.md +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/addon/reforges.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.0.0.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md index 304d39bc05..6f9f51d250 100644 --- a/i18n/vi-VN/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.1.1.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -44,7 +38,7 @@ _This is not necessary if you are using an H2 database._ ### Prepare for convert -To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console.\ +To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console. If a player is in the server, the conversion cannot be started. Once the conversion has begun, the server will be locked during the conversion process and no players will be able to join the server during the conversion. diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/addon/shopitemonly.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/addon/shopitemonly.md index c45062f8c2..1ccfe977b3 100644 --- a/i18n/vi-VN/docusaurus-plugin-content-docs/current/addon/shopitemonly.md +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/addon/shopitemonly.md @@ -2,17 +2,11 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT - -::: - -This addon prevents players from putting non-store items into store containers.\ +This addon prevents players from putting non-store items into store containers. Does not apply to stores that use the item inventory redirection API (aka. InventoryWrapper API). This Addon will check for container (or transferring) items on events such as the player closing the container or hopper access. diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md new file mode 100644 index 0000000000..9c8b4f7407 --- /dev/null +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md @@ -0,0 +1,55 @@ +# 6.2.0.10 + +## Major Changes + +- Added support for 1.21.6 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.7 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.8 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Some internal updates for packetevents(2.9.0 is now required.) +- Updated Lands support + +## Addon Changes + +- Added MatcherPlus Addon + - Allows support for BreweryX and AdvancedItems stacks in shops with improved matching abilities +- Added FabledSkyblock Compat +- Added Dominion Compat +- Added HuskTowns Compat +- Added IridiumSkyblock Compat +- Added member-create for member creation in ARM compat +- Added admin-override and quickshop.arm.admin permission for admin overrides in ARM + +## Minor Changes + +- Added configurations for the coordinates of the display item. +- Added /qs toggledisplayall on/off server/owned + - Players need to have permission node quickshop.toggledisplayall.admin to toggle all on the server. +- Added ability to use abbreviations in /qs price and /qs create commands such as 2.5k for 2500 +- Added ability to set default display status using shop.default-display in config.yml + +## Fixes + +- Fixed issue with display item being sent to the moon on 1.21.5 +- Fixed issue where TRADE_UI interactions interfered with quick create. +- Fixed issue with displays on protocollib falling through the chest +- Fixed issue with signs on .9 and previous .10 snapshots on early versions +- Implemented some performance improvements for paper servers +- Fixed all outstanding issues with Folia usage.(thanks to RootB33R/SleazLee for contributions) + +## Possible 6.2.0.11 Features + +Here's an outline for some features that may arrive in 6.2.0.11: + +- Additional compats/addons that have been piling up. + - see: https://github.com/QuickShop-Community/QuickShop-Hikari/issues/1756 +- gradle?(interested to see compilation time uplifts) +- Update documentation +- Update configuration comments +- Update configuration system? + - auto updating? + - Allows removal of the update code +- Remove waste spigot modules? + - Any versions of 1.20 that can be discarded due to low use? +- Bug fixing, of course +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... \ No newline at end of file diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md new file mode 100644 index 0000000000..b41c88662a --- /dev/null +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md @@ -0,0 +1,173 @@ +## Outline + +- Update documentation +- Update configuration comments +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... + +# 6.2.0.11 + +## Major Changes + +- Removed Spigot Platform Modules, and stopped loading QS if Spigot is detected. This will mean that unless the protocol changes that we use for display items, QS won't need updated for each version. +- Revamped Economy Code Completely + - New classes for all economy-related systems + - Any economy-related or benefits-related events are incompatible with previous versions. +- Added sign layout customizations per-type allowing you to change how lines are configured, an empty string('') will leave an empty line for that line of the sign. + +``` + #The layout of signs for shops. + layout: + + #The layout of BUYING shops. + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of FROZEN shops. + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of SELLING shops. + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +- Add wildcard support for item blacklist patterns(thanks to bennycallanan) + - Added support for wildcard patterns in the item blacklist configuration, allowing users to block entire categories of items with simple patterns. + + - Features + - Wildcard patterns like \*_AXE and \*_SPAWN_EGG now work in blacklist configuration + - Supports \* for any characters and ? for single character matching + - Case-insensitive pattern matching +- Overhauled GUI system(thanks to Yusakidev) + - Implemented gui.yml configuration file for customizing the GUI. + - Implemented better filtering for qs browse + - Implement GUI system to be more stable, and less error prone. + - Added gui.yml for fully configurable GUI layouts and text + - Browse menu: search, sort (price/name/stock), and filter (all/buying/selling/in-stock) + - Staff menu: search functionality for player/staff selection + - Grouped item pages for better shop browsing + - Refactored all menu pages to use configurable display/lore +- Added worldedit compat to QS internally as it's widely used. +- Revamped the taxation system to be more flexible and easier to configure. + - introduced a new progressive tax system that allows you to tax based on the balance of players.(suggested by YuanYuanOwO) + - introduced the ability to tax the player interacting with the shop, the owner, or both + - all tax-related configurations have been moved under the shop-tax section of the config. this may require reconfiguration of your tax settings. + - added a new ShopEnhancedTaxEvent, deprecated the old ShopTaxEvent. + - Added a new TaxManager, and TaxProvider interfaces, this allows for custom tax providers to be added by addons/third-party developers. + +## Addons/Compats Changes + +- Added UltimateClaims compat +- Added SimpleClaimSystem compat +- Added Quests by Pika addon +- Added BetonQuest addon +- Added Pl3xMap addon +- MatcherPlus Compat Improvements + - Added support for CrazyCrates + - Added support for ExcellentCrates + - Added support for SilkSpawners. +- WorldGuard Compat Improvements(Thanks to golovin12) + - Added clear permission handling: + - Region owners and members automatically have permission to create and trade in their own regions. + - Other players must have the appropriate WorldGuard flags enabled (quickshophikari-create, quickshophikari-trade) to interact with shops. + - If a shop is located outside any region, default QuickShop behavior applies (no extra restrictions) +- Added colored markers based on shop state for bluemap(thanks to YusakiDev) +- Updated dynmap/towny addons to use the new ShopTypeEnhancedEvent instead of ShopTypeEvent. +- Removed worldedit compat, it's now included in the main plugin. +- Added support for global flags to the worldguard compat. + +## Internals/Developer APIs + +- Removed several deprecated methods and classes. +- Revamped the interaction manager. It is now more flexible and allows external additions + - This involves two classes InteractionBehavior and InteractionType. + - InteractionType details the type of interaction such as: STANDING_LEFT_CLICK_SIGN, STANDING_LEFT_CLICK_SHOP + - InteractionBehavior outlines a behavior for an InteractionType such as CONTROL_PANEL and TRADE_UI +- Added UserLimitCalculationEvent, which allows for custom limits to be applied to users. + - This is useful for limiting the number of shops a user can have, or adding on to the existing limits provided by the ranks system without needing to implement a new RankLimiter. +- Added a new ShopLayoutProvider interface, and default implementation. + - This allows for custom layouts to be used for shops, allowing for more customization. + - This also allows for developers to override the default layout provider and create their own implementation. +- How to make your own? + - Implement the classes you would like to then register with the InteractionManager: + - ```java + InteractionManager manager = QuickShop.getInstance().getInteractionManager(); + + manager.interaction(new MyTradeInteraction()); + manager.behavior(new MyTradeBehavior()); + ``` +- Replaced some Apache Commons calls that could be easily replaced with built-in java methods, reduces some calls by ~ 1100ms/method call +- Deprecated the ShopType enum, and the ShopTypeEvent. These are replaced with the new IShopType interface and implementing classes. + - The new event is ShopTypeEnhancedEvent. + - This allows for third-party addons to add their own shop types, and simplifies code checks for translations. +- Updated config system to use Boosted-yaml + - this allows for auto-updating of config files without complex update scripts + - this also allows for the config system to not be minecraft-dependent. +- Replaced logical PaperLib calls with native PaperAPI calls. + +## Minor Changes + +- Bump Java version up to 21 +- Added shop.display-allow-enchants to enable/disable enchantments for display items on shops. +- Added workaround for packetevents not supporting custom enchants on itemstacks for virtual display items. +- Using locale translations for shop-type in mode toggle icon(thanks to ExyiN) +- Bumped Residence version for the compat(thanks to YuanYuanOwO) +- add world whitelist support(thanks to wling-art) +- added /qs database save command, which saves all currently dirty-marked shops to the database. +- Split up interactions _SHOPBLOCK into _SHOPBLOCK and _CONTAINER. + - _SHOPBLOCK relates to shops, where _CONTAINER relates to shop-valid containers that are not currently shops. +- Added inventory as an option for command panel, this is useful for adding a secondary option for players to open a shop's inventory. +- Moved crowdin arguments from system properties to config.yml + - crowdin-host + - use-crowdin-ota + +## Fixes + +- Fixes issue with item price restrictions(thanks to maxcom1) +- Fixes issue with 1.20.x protocol lib displays(thanks to YuanYuanOwO) +- Fixes issue when no item is in hand for itemdebug(thanks to YuanYuanOwO) +- Fixes issue with dominion addon(thanks to YuanYuanOwO) +- Add a simple check to avoid this. If it is not own shop, reject limit request directly.(Thanks to YuanYuanOwO) +- Fix NPE by not setting tax for price in TransactionBuilder(thanks to maxcom1) +- Fixes /quickshop suggestprice to differentiate between buy/sell shops. (Thanks to MidSpike) +- PacketEvents ClassNotFoundException with ProtocolLib(thanks to wling-art) +- Reallocate block state access to region thread for shop creation(thanks to r00tbeerman) +- resolve SLF4J StaticLoggerBinder loading error(thanks to wling-art) +- sign hijacking issue by validating sign facing direction(thanks to wling-art) +- Performance improvements for QuickShop disabling to prevent potential freezes. +- Fixed issue with 1.20.4 packetevents virtual displays not staying put. +- Fixes critical issue in GriefPrevention compatibility plugin. +- Fixes issue with shop owner not getting money when benefits active. +- Fixes for lands addon on folia, Use regionThread for Folia compatibility(thanks to YusakiDev) +- Fixes for TRADE_DIRECT on stacking shops +- Fixes issue for protocollib 5.4.0 with undocumented packet changes. +- Fixes issue where item stacks could be used on creation above the max stack size. +- Fixes issue with BukkitAudiences-related crashes on 1.21.11. +- Fix issue with shop deletion when getting too impatient. +- Fix the permission check issue when a shop owned by a non-owner is transferred to someone else. (thanks to YuanYuanOwO) +- Fix ui with supertool (thanks to YuanYuanOwO) +- Fix issue with logs generating outside debug mode. +- Fix issue with /qs find. +- Fix configuration loading timing. +- Fix configuration loading/creation warning message language. +- Fix command description language key mismatch(thanks to wling-art) +- Fix qs clean command on folia(thanks to wling-art) +- Fix per-player-shop-sign on folia(thanks to wling-art) +- Fix potential recursive deadlock in virtual display packet sending(thanks to wling-art) +- Fix configuration loading/creation warning message language. +- Fix issue with /qs browse and ShopItemOnly addon not behaving properly together on folia. +- Fix issue with PLAN using outdated APIs. +- Fix issue with /qs clean on folia.(thanks to wling-art) +- Fix issue with /qs cleanghost on folia(thanks to wling-art) +- More thread safety fixes for shops on folia.(thanks to wling-art) +- Fix owner payment calculations with benefits(thanks to wling-art) \ No newline at end of file diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md index 8172f9b410..dcc3edc67d 100644 --- a/i18n/vi-VN/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md @@ -20,20 +20,20 @@ the ControlComponent object with a custom one that will replace the original dur ### Introduction of the Revamped Packet System 1. **About**: - - A modular and scalable system for managing packets related to virtual display items in Minecraft. - - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. + - A modular and scalable system for managing packets related to virtual display items in Minecraft. + - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. 2. **Custom Packet Factories**: - - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. - - Packet types: - - **Spawn Packet**: Spawns a virtual item entity at a specific location. - - **Metadata Packet**: Updates the visual properties of virtual items. - - **Velocity Packet**: Adds motion/velocity to entities (currently optional). - - **Destroy Packet**: Removes the entity from the client view. + - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. + - Packet types: + - **Spawn Packet**: Spawns a virtual item entity at a specific location. + - **Metadata Packet**: Updates the visual properties of virtual items. + - **Velocity Packet**: Adds motion/velocity to entities (currently optional). + - **Destroy Packet**: Removes the entity from the client view. 3. **Error Handling and Logging**: - - Enhanced debug logs to trace packet-related issues. - - Detailed error messages for missing factories or unregistered listeners. + - Enhanced debug logs to trace packet-related issues. + - Detailed error messages for missing factories or unregistered listeners. #### Improvements: diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md index 7775308722..c6e0948d19 100644 --- a/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md index f420997a9c..38587e3784 100644 --- a/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md index 5ed8182c9a..259c55f342 100644 --- a/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md index 924a37ac49..7fd4596a6a 100644 --- a/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,6 +10,6 @@ This is a BungeeCord plugin, you need install it within your BungeeCord's plugin ## How does it work? -BungeeCord Bridge plugins will register a `quickshop:bungee` channel for fowarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. +BungeeCord Bridge plugins will register a `quickshop:bungee` channel for forwarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. All forwarding is indicated by QuickShop-Hikari on the Spigot server and ends when it is not needed. diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md index 27d68956a8..20fbaf7a0c 100644 --- a/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,5 +10,5 @@ This compatibility module added [Chest Protect](https://www.spigotmc.org/resourc ## How does it work? -This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident.\ +This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident. It also prevents players from creating shops on ChestProtect protected containers. diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md index 220e26d8bb..e1757e7be9 100644 --- a/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/dominion.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/dominion.md new file mode 100644 index 0000000000..e1195278a8 --- /dev/null +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/dominion.md @@ -0,0 +1,138 @@ +# Dominion + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and Dominion. + +It ensures that shop creation and trading respect Dominion’s land and territory protection system. + +--- + +## What Does It Do? + +Dominion allows players or groups to claim land and define territory-based permissions. + +Without compatibility: + +- Players could create shops inside territories they do not control. +- Visitors might trade inside protected dominions. +- Dominion permission rules might not apply to shop interactions. + +The Dominion compat module ensures that: + +- Shop creation respects territory ownership. +- Shop trading follows Dominion permission settings. +- Protected land remains secure from unauthorized shop usage. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a Dominion-controlled area. +- Whether the player has permission within that territory. +- Whether Dominion rules allow shop interaction. + +If the action is not permitted by Dominion settings, QuickShop blocks it. + +If the location is outside any Dominion territory, default QuickShop behavior applies. + +--- + +## Territory Owner Control + +With this module enabled: + +- Territory owners can create and manage shops inside their dominion. +- Trusted members follow territory-based permissions. +- Outsiders are restricted unless explicitly allowed. +- Shop actions respect Dominion’s land rules automatically. + +This prevents unauthorized shop placement inside protected territories. + +--- + +## Installation + +1. Install Dominion. +2. Install the QuickShop Dominion compat module. +3. Restart your server. + +The module activates automatically if Dominion is detected. + +No manual configuration linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside dominions +whitelist-mode: false + +# Allow territory owners to override shop permissions +allow-owner-override: true +``` + +If Dominion is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For servers using Dominion: + +- Restrict shop creation to territory owners or trusted members. +- Prevent shop creation in wilderness if desired. +- Allow dominion owners to manage shop permissions. +- Review Dominion permission settings to align with shop behavior. + +This ensures protected territories remain secure and organized. + +--- + +## Common Questions + +### Can players create shops in someone else's dominion? + +Only if Dominion permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You may allow or restrict shops outside dominions. + +### What happens if Dominion is removed? + +QuickShop returns to normal behavior and stops checking Dominion territories. + +--- + +## Summary + +The Dominion compat module: + +- Enforces territory-based permissions +- Prevents unauthorized shop creation +- Protects claimed land from misuse +- Integrates seamlessly with Dominion + +It is recommended for servers running Dominion. \ No newline at end of file diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md index 743d3ae666..2ac9b10488 100644 --- a/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md new file mode 100644 index 0000000000..07ba4ada66 --- /dev/null +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md @@ -0,0 +1,133 @@ +# FabledSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and FabledSkyblock. + +It ensures that shop creation and trading properly respect island boundaries and island permissions. + +--- + +## What Does It Do? + +On Skyblock servers, players build and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Players might trade in areas they should not. +- Island protection rules might not apply to shops. + +The FabledSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members behave correctly with shops. +- Island visitors are restricted appropriately. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a FabledSkyblock island. +- Whether the player has permission on that island. +- Whether island settings allow the action. + +If the action is not permitted by island rules, QuickShop will deny it. + +--- + +## Island Ownership Rules + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow island permission settings. +- Visitors can only trade if island permissions allow it. +- Outside of islands, default QuickShop behavior applies. + +--- + +## Installation + +1. Install FabledSkyblock. +2. Install the QuickShop FabledSkyblock compat module. +3. Restart your server. + +The module activates automatically if FabledSkyblock is detected. + +No manual linking is required. + +--- + +## Configuration + +If the module provides configuration options, they will appear in its `config.yml`. + +Typical options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If FabledSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most Skyblock servers: + +- Allow shop creation only inside islands. +- Prevent trading in the void or wilderness. +- Let island owners control shop permissions. +- Use island rank systems to manage shop access. + +This helps maintain economic balance between islands. + +--- + +## Common Questions + +### Can players create shops in the void? + +Only if your configuration allows it. +Most servers disable shop creation outside islands. + +### Does this affect island war or PvP modes? + +No. +The module only checks island ownership and permissions for shop interactions. + +### What happens if FabledSkyblock is removed? + +QuickShop returns to normal behavior. + +--- + +## Summary + +The FabledSkyblock compat module: + +- Protects island economies +- Enforces island permission rules +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is strongly recommended for any server running FabledSkyblock. \ No newline at end of file diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md index 81b13d2c6b..32614d3019 100644 --- a/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md @@ -2,17 +2,17 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -GreifPrevention compatibility module added compaitibility with GF. +GreifPrevention compatibility module added compatibility with GF. ## How does it work This module allow QuickShop-Hikari check if player have permission to create or use QuickShop in specific region. -And delete shops when claim removed, untrusted, unclimed, expired, resized or subclaim created. +And delete shops when claim removed, untrusted, unclaimed, expired, resized or subclaim created. ## Configuration diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md new file mode 100644 index 0000000000..e71b34d462 --- /dev/null +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md @@ -0,0 +1,139 @@ +# HuskTowns + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and HuskTowns. + +It ensures that shop creation and trading respect town and claim permissions defined by HuskTowns. + +--- + +## What Does It Do? + +HuskTowns allows players to create towns and claim land. + +Without compatibility: + +- Players could create shops inside towns they do not belong to. +- Visitors might trade inside protected towns. +- Town permission rules might not apply to shop interactions. + +The HuskTowns compat module ensures that: + +- Shop creation respects town ownership. +- Trading follows town permission settings. +- Town members and visitors are handled correctly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a HuskTowns claim. +- Whether the player is a town member, trusted player, or outsider. +- Whether the town's permission settings allow the action. + +If the action is not permitted by town rules, QuickShop blocks it. + +Outside of town claims, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Town Owner Control + +With this module enabled: + +- Town owners can create and manage shops inside their town. +- Town members follow town-based permission settings. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect town claim protection. + +This prevents unauthorized shop placement and trading inside protected towns. + +--- + +## Installation + +1. Install HuskTowns. +2. Install the QuickShop HuskTowns compat module. +3. Restart your server. + +The module activates automatically if HuskTowns is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside towns +whitelist-mode: false + +# Allow town owners to override shop permissions +allow-owner-override: true +``` + +If HuskTowns is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For town-based survival servers: + +- Restrict shop creation to town members. +- Allow trading only where town permissions permit. +- Prevent shop creation in wilderness if desired. +- Enable owner override for better administrative control. + +This helps maintain town-based economic balance. + +--- + +## Common Questions + +### Can players create shops in another town? + +Only if that town's permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You can allow or restrict shops outside towns. + +### What happens if HuskTowns is removed? + +QuickShop returns to normal behavior and stops checking town permissions. + +--- + +## Summary + +The HuskTowns compat module: + +- Enforces town-based land permissions +- Protects towns from unauthorized shop usage +- Integrates smoothly with HuskTowns +- Requires minimal setup + +It is recommended for any server running HuskTowns. \ No newline at end of file diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md new file mode 100644 index 0000000000..3fa2995eb0 --- /dev/null +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md @@ -0,0 +1,139 @@ +# IridiumSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and IridiumSkyblock. + +It ensures that shop creation and trading respect island boundaries and island permission settings defined by IridiumSkyblock. + +--- + +## What Does It Do? + +IridiumSkyblock allows players to create and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Visitors might trade inside protected islands. +- Island protection rules might not apply correctly to shops. + +The IridiumSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members and visitors are handled properly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside an IridiumSkyblock island. +- Whether the player is the island owner, member, or visitor. +- Whether island permissions allow shop interaction. + +If the action is not permitted, QuickShop blocks it. + +Outside of islands, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Island Owner Permissions + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow the island's permission configuration. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect island protection rules. + +This prevents unauthorized shop usage inside protected islands. + +--- + +## Installation + +1. Install IridiumSkyblock. +2. Install the QuickShop IridiumSkyblock compat module. +3. Restart your server. + +The module activates automatically if IridiumSkyblock is detected. + +No additional setup is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If IridiumSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most IridiumSkyblock servers: + +- Restrict shop creation to island owners. +- Allow island members to trade if trusted. +- Prevent shop creation in the void or wilderness. +- Enable owner override for better management. + +This helps maintain balanced island economies. + +--- + +## Common Questions + +### Can players create shops outside their island? + +Only if your configuration allows it. + +Most Skyblock servers restrict shops to island areas. + +### Do island ranks affect shop permissions? + +Yes, if your island permissions are configured to control interaction rights. + +QuickShop follows island rules. + +### What happens if IridiumSkyblock is removed? + +QuickShop returns to normal behavior and stops checking island permissions. + +--- + +## Summary + +The IridiumSkyblock compat module: + +- Protects island economies +- Enforces island-based permissions +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is recommended for any server running IridiumSkyblock. diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md new file mode 100644 index 0000000000..3b4726cb9d --- /dev/null +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md @@ -0,0 +1,151 @@ +# ItemMatcherPlus + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +The ItemMatcherPlus module improves how QuickShop matches custom and plugin-modified items. + +It allows QuickShop to properly recognize and stack items created by other plugins that normally would not match using standard Bukkit item comparisons. + +This module is especially useful for servers that use: + +- Custom items +- Modified metadata +- NBT-based systems +- Advanced crate rewards +- Custom brewing systems +- Custom fishing rewards + +--- + +## What Does It Do? + +By default, Minecraft item matching checks: + +- Material type +- Basic metadata + +However, many plugins modify items with: + +- Custom NBT data +- Hidden tags +- Custom lore formats +- Unique identifiers + +Without enhanced matching: + +- Items may not stack +- Shops may refuse valid items +- Transactions may fail +- Buying/selling may not behave correctly + +ItemMatcherPlus improves compatibility and matching accuracy. + +--- + +## Supported Plugins + +ItemMatcherPlus includes built-in support for: + +- AdvancedItems +- BreweryX +- CrazyCrates +- ExcellentCrates +- PyroFishing +- SilkSpawners + +If any of these plugins are installed, QuickShop will automatically use enhanced matching logic. + +No additional configuration is required. + +--- + +## How It Works + +When a player trades with a shop: + +1. QuickShop checks the item. +2. If ItemMatcherPlus is enabled, it performs advanced matching. +3. Plugin-specific metadata is validated. +4. The item is confirmed as a match (or rejected safely). + +This allows: + +- Proper stacking of custom items +- Correct shop transactions +- Accurate buy/sell detection +- Reduced false mismatches + +--- + +## Installation + +1. Download the ItemMatcherPlus module. +2. Place the JAR into your `plugins` folder. +3. Restart your server. + +If supported plugins are detected, compatibility activates automatically. + +--- + +## Configuration + +ItemMatcherPlus does not require configuration. + +It activates automatically when: + +- The module is installed +- A supported plugin is detected + +If a supported plugin is not installed, no extra logic runs. + +--- + +## Why You Should Use It + +You should install ItemMatcherPlus if your server uses: + +- Custom fishing plugins +- Custom brewing systems +- Crate plugins with modified items +- Custom spawners +- Any plugin that modifies NBT data + +Without it, shops may not properly recognize custom items. + +--- + +## Common Questions + +### Do I need this if I don't use custom item plugins? + +No. +If you only use vanilla items, this module is not necessary. + +### Does this affect performance? + +The module only activates enhanced matching when needed. + +Normal item matching remains fast and efficient. + +### Will it break existing shops? + +No. +It improves compatibility and matching accuracy without modifying existing shop data. + +--- + +## Summary + +ItemMatcherPlus: + +- Improves item matching accuracy +- Adds support for major custom item plugins +- Prevents stacking and trade issues +- Requires no configuration +- Activates automatically + +If you run a heavily customized economy server, this module is highly recommended. \ No newline at end of file diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md index ba87606698..d4ae7d129a 100644 --- a/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/lands.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/lands.md index 06296f5779..7671fcdfe0 100644 --- a/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/lands.md +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/lands.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/openinv.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/openinv.md index c51f628615..4807d57873 100644 --- a/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/openinv.md +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/openinv.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md new file mode 100644 index 0000000000..c2136320b0 --- /dev/null +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md @@ -0,0 +1,138 @@ +# SimpleClaimSystem + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and SimpleClaimSystem. + +It ensures that shop creation and trading respect land ownership and claim permissions defined by SimpleClaimSystem. + +--- + +## What Does It Do? + +SimpleClaimSystem allows players to claim land and protect it from unauthorized interaction. + +Without compatibility: + +- Players could create shops inside claims they do not own. +- Visitors might trade inside protected areas. +- Claim protection might not apply correctly to shops. + +The SimpleClaimSystem compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops within their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a SimpleClaimSystem claim. +- Whether the player has permission within that claim. +- Whether claim rules allow shop interaction. + +If the action is not permitted by the claim, QuickShop blocks it. + +If the location is outside any claim, default QuickShop behavior applies. + +--- + +## Claim Owner Control + +With this module enabled: + +- Claim owners can create and manage shops inside their claim. +- Trusted players follow claim-based permissions. +- Visitors are restricted unless explicitly allowed. +- Claim protection rules apply automatically to shop interactions. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install SimpleClaimSystem. +2. Install the QuickShop SimpleClaimSystem compat module. +3. Restart your server. + +The module activates automatically if SimpleClaimSystem is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If SimpleClaimSystem is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Enable owner override for easier management. + +This ensures players maintain control over their protected land. + +--- + +## Common Questions + +### Can players create shops in someone else's claim? + +Only if claim permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can allow shops outside claims or restrict them. + +### What happens if SimpleClaimSystem is removed? + +QuickShop will revert to default behavior and stop checking claim permissions. + +--- + +## Summary + +The SimpleClaimSystem compat module: + +- Enforces claim-based permissions +- Prevents unauthorized shop creation +- Protects land from unwanted trading +- Requires minimal setup + +It is recommended for servers running SimpleClaimSystem. \ No newline at end of file diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md index a84dbf057b..4dfa8ae97c 100644 --- a/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/towny.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/towny.md index 52ab4818f4..b26c19d335 100644 --- a/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/towny.md +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/towny.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -26,7 +26,7 @@ Town sub-command allow you switch a quickshop between regular shop and town shop For a nation shop, the shop owner will changed to nation fake player created by Towny, and use Nation's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from nation Towny account.\ +All purchases will deposit or withdraw money from nation Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Nation Shop. @@ -35,7 +35,7 @@ If Plot type restriction is enabled, only a specific Plot type can create a Nati For a town shop, the shop owner will changed to town fake player created by Towny, and use Town's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from town Towny account.\ +All purchases will deposit or withdraw money from town Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Town Shop. @@ -88,7 +88,7 @@ bank-mode: ## Permission Override -By adjust configuration, you're allow mayor or king automaticlly grant administrator permission on all shops in their management range. +By adjust configuration, you're allow mayor or king automatically grant administrator permission on all shops in their management range. ```yaml #Should allow Mayor grant the shop administrator permission on they town. @@ -168,7 +168,7 @@ This causes Towny and QuickShop Hikari to use accounts with the same name but di You can adjust the option in configuration to enable workaround. -NOTE: It will force turned on if detected EssentialsX installed on your server.\ +NOTE: It will force turned on if detected EssentialsX installed on your server. At present, we do not provide a method for disable it. ```yaml diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md new file mode 100644 index 0000000000..0189958495 --- /dev/null +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md @@ -0,0 +1,138 @@ +# UltimateClaims + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and UltimateClaims. + +It ensures that shop creation and trading respect land claim permissions managed by UltimateClaims. + +--- + +## What Does It Do? + +On servers using land-claim plugins, players protect areas of the world from unauthorized interaction. + +Without compatibility: + +- Players may create shops inside claims they do not own. +- Visitors might trade in areas where they should not. +- Claim protection rules might not apply correctly to shops. + +The UltimateClaims compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops inside their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a claim. +- Whether the player has permission in that claim. +- Whether claim rules allow shop interaction. + +If the action violates claim settings, QuickShop blocks it. + +Outside of claims, normal QuickShop behavior applies. + +--- + +## Claim Owner Permissions + +With this module enabled: + +- Claim owners can create and manage shops within their claim. +- Trusted players follow claim permission settings. +- Visitors are restricted based on claim configuration. +- Shop actions outside of claims behave normally. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install UltimateClaims. +2. Install the QuickShop UltimateClaims compat module. +3. Restart your server. + +If UltimateClaims is detected on startup, compatibility activates automatically. + +No additional linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Common options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If UltimateClaims is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Keep owner override enabled for better control. + +This ensures players maintain full control over their protected land. + +--- + +## Common Questions + +### Can players create shops inside someone else's claim? + +Only if the claim permissions allow it. + +Otherwise, QuickShop will block the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can choose to restrict shops to claimed land only. + +### What happens if UltimateClaims is removed? + +QuickShop returns to normal behavior without claim checks. + +--- + +## Summary + +The UltimateClaims compat module: + +- Protects claimed land from unauthorized shop usage +- Enforces claim-based permissions +- Integrates smoothly with land-claim servers +- Requires minimal setup + +It is recommended for any server running UltimateClaims. \ No newline at end of file diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md index 87a71a205c..6437754503 100644 --- a/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md @@ -2,8 +2,10 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. Find out more [here](../modules/shops/worldedit.md). + +Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. \ No newline at end of file diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/development/01-getting-start.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/development/01-getting-start.md index 92b773451e..0e78e52367 100644 --- a/i18n/vi-VN/docusaurus-plugin-content-docs/current/development/01-getting-start.md +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/development/01-getting-start.md @@ -6,8 +6,8 @@ This series of articles will help you build extensions for QuickShop-Hikari or i ## License -QuickShop-Hikari is open source using the [GPLv3](https://www.gnu.org/licenses/quick-guide-gplv3.en.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari).\ -You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the GPLv3 agreement. +QuickShop-Hikari is open source using the [AGPLv3](https://www.gnu.org/licenses/agpl-3.0.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari). +You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the AGPLv3 agreement. ## 🚧Don't trust Javadoc too much @@ -48,7 +48,7 @@ QuickShop-Hikari divides operation sources into three types: - Server Main Thread - Async Thread (any other threads but not server main thread) -- Hybird +- Hybrid If you access the API through the wrong thread, QuickShop-Hikari will force a runtime error to be thrown. @@ -58,4 +58,4 @@ For APIs that may trigger network IO or long-time disk IO, you are required not You can see [Util.ensureThread()](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/3d1d271e1106ea1c83cc6068f8232ab7c7860918/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/util/Util.java#L351) and find out the requirements of the different APIs by looking up their use. APIs that do not use Util.ensureThread() are allowed to be called from any thread by default. -You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. +You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. \ No newline at end of file diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md index aa2404c594..7828d414ad 100644 --- a/i18n/vi-VN/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md @@ -10,7 +10,7 @@ ShopManager manager = api.getShopManager(); ## Getting a shop -Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates.\ +Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates. QuickShop-Hikari's store is only bound to one half of "Large Chest", so to get the store, you need to query both the cube itself and its associated cube. The good thing is that there is an API in the plugin that allows you to handle this situation very easily. @@ -71,7 +71,7 @@ manager.deleteShop(shop) // Permanently delete this store, both memory and datab ## Identify a store -Please note that store locations are technically variable and you should not use coordinates to identify a store.\ +Please note that store locations are technically variable and you should not use coordinates to identify a store. Also RuntimeRandomUniqueId should not be used to identify the store, as the name suggests, the value changes every time the server restarts, it should only be used to handle scenarios where the player interacts with the server. ```java diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md index 543f1851da..4f839ed652 100644 --- a/i18n/vi-VN/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md @@ -1,6 +1,6 @@ # 0x05 Per shop permission -QuickShop-Hikari has a per shop permission management system.\ +QuickShop-Hikari has a per shop permission management system. Therefore, for a normal permission node check is not enough, you need to attach an additional check. ## Check with shop diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/development/06-protocol-system.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/development/06-protocol-system.md index 5d37a15536..0380b789f9 100644 --- a/i18n/vi-VN/docusaurus-plugin-content-docs/current/development/06-protocol-system.md +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/development/06-protocol-system.md @@ -15,30 +15,30 @@ This documentation will guide developers through the components, implementation - **Purpose**: Manages packet handling and initialization logic. - **Interface**: `PacketHandler` - **Key Methods**: - - `Map> factories()` - - Retrieves a map of supported `PacketFactory` instances keyed by game versions. - - `void initialize()` - - Initializes the packet handler. - - `Optional> factory(String version)` - - Retrieves a `PacketFactory` for a specific game version. + - `Map> factories()` + - Retrieves a map of supported `PacketFactory` instances keyed by game versions. + - `void initialize()` + - Initializes the packet handler. + - `Optional> factory(String version)` + - Retrieves a `PacketFactory` for a specific game version. ### 2. **PacketFactory** - **Purpose**: Creates and sends specific packet types. - **Interface**: `PacketFactory` - **Supported Packets**: - - **Spawn Packet**: - - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. - - Example Use: Representing shop items visually. - - **Metadata Packet**: - - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. - - Example Use: Updating item display name or properties. - - **Velocity Packet**: - - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. - - Example Use: Custom animations for virtual items. - - **Destroy Packet**: - - Removes the entity from the client view. Created using `createDestroyPacket()`. - - Example Use: Unloading or removing a virtual display item. + - **Spawn Packet**: + - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. + - Example Use: Representing shop items visually. + - **Metadata Packet**: + - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. + - Example Use: Updating item display name or properties. + - **Velocity Packet**: + - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. + - Example Use: Custom animations for virtual items. + - **Destroy Packet**: + - Removes the entity from the client view. Created using `createDestroyPacket()`. + - Example Use: Unloading or removing a virtual display item. Developers implementing custom `PacketFactory` should ensure these packets are correctly handled and optimized for performance. @@ -46,24 +46,24 @@ Developers implementing custom `PacketFactory` should ensure these packets are c - **Purpose**: Oversees the lifecycle of virtual display items and integrates with packet handlers. - **Key Features**: - - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). - - Manages virtual display items mapped to chunks. - - Provides thread-safe operations for adding and removing display items. + - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). + - Manages virtual display items mapped to chunks. + - Provides thread-safe operations for adding and removing display items. ### 4. **VirtualDisplayItem** - **Purpose**: Represents a virtual item displayed to players. - **Key Features**: - - Generates and caches packets for spawning, metadata, velocity, and destruction. - - Manages packet senders for each player. - - Handles spawn and removal operations dynamically. + - Generates and caches packets for spawning, metadata, velocity, and destruction. + - Manages packet senders for each player. + - Handles spawn and removal operations dynamically. ### 5. **ProtocolLibHandler and PacketEventsHandler** - **Purpose**: Provide implementations of `PacketHandler` using ProtocolLib and PacketEvents, respectively. - **Differences**: - - `ProtocolLibHandler` leverages ProtocolLib API. - - `PacketEventsHandler` uses the PacketEvents library. + - `ProtocolLibHandler` leverages ProtocolLib API. + - `PacketEventsHandler` uses the PacketEvents library. --- @@ -140,11 +140,11 @@ public class CustomPacketFactory implements PacketFactory { Packet factories are provided for specific game versions through two primary implementations: - **ProtocolLib**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` - **PacketEvents**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` --- diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md new file mode 100644 index 0000000000..aebc035f87 --- /dev/null +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md @@ -0,0 +1,297 @@ +# Interaction System (Developer Guide) + +The Interaction System allows developers to fully customize how players interact with shops. + +As of 6.2.0.11, the system has been redesigned to be: + +- Modular +- Extensible +- Thread-safe +- Fully customizable by third-party addons + +This guide will walk you through: + +1. What the Interaction System is +2. Getting the `InteractionManager` +3. Understanding `InteractionType` +4. Understanding `InteractionBehavior` +5. Registering custom interactions +6. Best practices + +--- + +# Overview + +The Interaction System is composed of three main components: + +| Component | Purpose | +| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| `InteractionType` | Describes **what kind of click happened** (standing, sneaking, left-click, sign, shopblock, etc.) | +| `InteractionBehavior` | Describes **what action should happen** when that type is triggered | +| `InteractionManager` | Central registry that manages interactions and behaviors | + +This separation allows developers to: + +- Add new click types +- Add new behaviors +- Override existing ones +- Extend QuickShop without modifying core code + +--- + +# Getting the InteractionManager + +To begin registering custom interactions, you must retrieve the `InteractionManager` instance. + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +If you are working directly with the plugin instance: + +```java +InteractionManager manager = QuickShop.getInstance().getInteractionManager(); +``` + +Once obtained, you can: + +- Register new interaction types +- Register new behaviors +- Override existing behaviors + +--- + +# Understanding InteractionType + +`InteractionType` represents **how** a player interacted with a shop. + +Examples include: + +- `STANDING_LEFT_CLICK_SIGN` +- `STANDING_RIGHT_CLICK_SHOPBLOCK` +- `SNEAKING_LEFT_CLICK_CONTAINER` +- etc. + +Each `InteractionType` defines: + +- Player stance (standing/sneaking) +- Click type (left/right) +- Target (sign/shopblock/container) + +InteractionTypes do NOT define behavior — they only define the trigger. + +--- + +# Understanding InteractionBehavior + +`InteractionBehavior` defines **what happens** when an interaction is triggered. + +Examples of built-in behaviors: + +- `TRADE_INTERACTION` +- `TRADE_UI` +- `CONTROL_PANEL` +- `CONTROL_PANEL_UI` +- `NONE` + +A behavior: + +- Executes logic +- May open GUIs +- May send chat panels +- May directly trade items +- Can cancel or modify flow + +This separation makes it easy to reuse behaviors across multiple interaction types. + +--- + +# Registering Custom Interactions + +There are two things you can register: + +- A custom `InteractionType` +- A custom `InteractionBehavior` + +--- + +## Creating a Custom InteractionBehavior + +Create a class implementing `InteractionBehavior`. + +Example: + +```java +public class MyTradeBehavior implements InteractionBehavior { + + @Override + public String getKey() { + return "MY_CUSTOM_TRADE"; + } + + @Override + public void execute(InteractionClick click) { + Player player = click.getPlayer(); + Shop shop = click.getShop(); + + player.sendMessage("You triggered my custom interaction!"); + + // Add your custom logic here + } +} +``` + +Then register it: + +```java +InteractionManager manager = api.getInteractionManager(); +manager.behavior(new MyTradeBehavior()); +``` + +Now your behavior is available for use. + +--- + +## Creating a Custom InteractionType + +You may also register custom interaction types if you want to introduce new trigger definitions. + +Example: + +```java +public class MyCustomInteraction implements InteractionType { + + @Override + public String getKey() { + return "STANDING_DOUBLE_CLICK_SIGN"; + } + + @Override + public boolean matches(InteractionClick click) { + // Define custom logic to detect this interaction + return click.isStanding() + && click.isSign() + && click.isDoubleClick(); + } +} +``` + +Register it: + +```java +manager.interaction(new MyCustomInteraction()); +``` + +--- + +# Binding Types to Behaviors + +The InteractionManager internally maps interaction types to behaviors based on configuration and registration order. + +Once your behavior is registered: + +- It can be referenced in `interaction.yml` +- Or attached programmatically + +Example interaction.yml usage: + +```yaml +STANDING_LEFT_CLICK_SIGN: MY_CUSTOM_TRADE +``` + +--- + +# The InteractionClick Object + +When your behavior executes, you receive an `InteractionClick` object. + +It provides: + +- `getPlayer()` +- `getShop()` +- `getLocation()` +- `isSneaking()` +- `isSign()` +- `isShopBlock()` +- etc. + +This gives full context for safe execution. + +--- + +# Advanced: Overriding Built-in Behavior + +If you register a behavior using the same key as an existing one, your behavior can override the default. + +⚠️ Be careful when doing this — you are replacing core functionality. + +--- + +# Best Practices + +### Always Use Unique Keys + +Avoid naming collisions: + +``` +MYPLUGIN_CUSTOM_BEHAVIOR +``` + +### Keep Behavior Lightweight + +Do not block the main thread with: + +- Heavy database calls +- File IO +- Network calls + +Use async tasks if needed. + +### Respect Permissions + +Always validate: + +```java +if (!player.hasPermission("myplugin.use")) { + return; +} +``` + +### Avoid Hard Overrides Unless Necessary + +Instead of replacing built-in behaviors, consider extending them. + +--- + +# Example: Full Minimal Implementation + +```java +public class ExampleAddon { + + public void register(QuickShopAPI api) { + + InteractionManager manager = api.getInteractionManager(); + + manager.behavior(new MyTradeBehavior()); + manager.interaction(new MyCustomInteraction()); + } +} +``` + +--- + +# Conclusion + +The Interaction System is designed to allow: + +- Full extensibility +- Clean separation of triggers and actions +- Easy integration for third-party developers + +By retrieving the `InteractionManager`: + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +You gain full control over how shops respond to player actions. \ No newline at end of file diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/development/08-tax-manager.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/development/08-tax-manager.md new file mode 100644 index 0000000000..72a56f9e88 --- /dev/null +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/development/08-tax-manager.md @@ -0,0 +1,266 @@ +# Tax System (Developer Guide) + +The QuickShop tax system allows server owners and developers to define how transaction taxes are calculated, distributed, and extended. + +As of 6.2.0.11, the tax system has been fully rewritten to provide: + +- A flexible TaxManager +- Pluggable TaxProvider support +- Progressive taxation +- Tax targeting (shop owner, interacting player, or both) +- Custom extension capability for third-party addons + +This guide explains how to work with the tax system programmatically. + +--- + +# Overview + +The tax system is composed of three core components: + +TaxManager +Responsible for coordinating tax calculation and execution. + +TaxProvider +Defines how tax values are calculated. + +TaxRates +Represents calculated tax results for a transaction. + +The system is designed to allow custom providers to be registered and used without modifying core logic. + +--- + +# Getting the TaxManager + +To work with the tax system, retrieve the TaxManager from the ShopManager. + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +Once obtained, you can: + +- Access current tax configuration +- Register custom tax providers +- Calculate tax values +- Hook into tax events + +--- + +# How the Tax System Works + +During a shop transaction: + +1. A base price is determined. +2. The TaxManager selects the active TaxProvider. +3. The TaxProvider calculates applicable tax. +4. A TaxRates object is produced. +5. The system applies the tax to: + + - Shop owner + - Interacting player + - Or both (depending on configuration) + +This architecture allows tax behavior to be modified without altering transaction logic. + +--- + +# TaxProvider + +A TaxProvider defines how tax values are calculated. + +You may create your own provider to implement: + +- Progressive tax brackets +- Flat percentage tax +- Conditional tax rules +- Region-based tax +- Rank-based tax +- Time-based tax + +Example minimal provider: + +```java +public class MyCustomTaxProvider implements TaxProvider { + + @Override + public TaxRates calculateTax(TaxContext context) { + + double basePrice = context.getPrice(); + + double taxAmount = basePrice * 0.05; // 5% flat tax + + return new TaxRates() + .ownerTax(taxAmount) + .buyerTax(0.0); + } +} +``` + +Then register it: + +```java +taxManager.provider(new MyCustomTaxProvider()); +``` + +Once registered, your provider will be used for tax calculations. + +--- + +# TaxRates + +TaxRates represents the result of a tax calculation. + +It typically contains: + +- Owner tax amount +- Buyer tax amount +- Total tax impact +- Metadata (if applicable) + +The transaction system will read from TaxRates and apply deductions accordingly. + +--- + +# Progressive Taxation + +The built-in system supports progressive tax structures. + +This allows server administrators to tax based on: + +- Player balance +- Shop owner balance +- Configured tax brackets + +Example configuration concept: + +- 0–10,000 balance → 1% tax +- 10,000–100,000 → 2% tax +- 100,000+ → 3% tax + +Developers can extend or override this logic inside a custom TaxProvider. + +--- + +# Targeting Tax + +The new tax system allows taxes to be applied to: + +- Shop owner +- Interacting player +- Both + +This is controlled via configuration, but custom providers can override distribution logic by adjusting TaxRates output. + +Example: + +```java +return new TaxRates() + .ownerTax(basePrice * 0.02) + .buyerTax(basePrice * 0.01); +``` + +--- + +# Registering a Custom TaxProvider + +To replace or extend tax logic: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); + +taxManager.provider(new MyCustomTaxProvider()); +``` + +You may register only one primary provider at a time. If multiple providers are needed, implement internal delegation within your custom provider. + +--- + +# Tax Events + +The tax system integrates with the event system. + +The modern event used is: + +ShopEnhancedTaxEvent + +This replaces legacy tax events and provides improved context, including: + +- Transaction builder reference +- TaxRates object +- Modification capability before final execution + +You can listen for the event and modify tax behavior dynamically: + +```java +@EventHandler +public void onTax(ShopEnhancedTaxEvent event) { + + TaxRates rates = event.getTaxRates(); + + // Example: Give VIP players reduced owner tax + if (event.getOwner().hasPermission("vip.tax.discount")) { + rates.ownerTax(rates.getOwnerTax() * 0.5); + } +} +``` + +--- + +# Best Practices + +Always keep tax calculations lightweight. + +Avoid: + +- Heavy database queries inside calculateTax +- Blocking network calls +- Long-running computations + +If complex logic is required, pre-cache required data outside the tax execution path. + +Ensure negative tax values are not returned unless intentional. + +Always validate final amounts before applying modifications. + +Respect configuration hierarchy unless intentionally overriding it. + +--- + +# Example Full Implementation + +```java +public class ExampleTaxAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + TaxManager taxManager = manager.taxManager(); + + taxManager.provider(new MyCustomTaxProvider()); + } +} +``` + +--- + +# Conclusion + +The new tax system is designed for: + +- Flexibility +- Extensibility +- Clean separation of concerns +- Future expansion + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +You gain full control over how QuickShop calculates and applies tax during transactions. \ No newline at end of file diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/development/09-layout-provider.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/development/09-layout-provider.md new file mode 100644 index 0000000000..55e3cd3e91 --- /dev/null +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/development/09-layout-provider.md @@ -0,0 +1,275 @@ +# Shop Layout Provider (Developer Guide) + +The Shop Layout Provider system allows developers to customize how shop signs are structured and rendered. + +As of 6.2.0.11, shop layouts are no longer hardcoded. Instead, they are controlled through the `IShopLayoutProvider` interface, which allows: + +- Custom sign line ordering +- Per-shop-type layouts (BUYING, SELLING, FROZEN, or custom types) +- Dynamic layout resolution +- Complete replacement of the default layout system + +This guide explains how to access, override, and implement a custom layout provider. + +--- + +# Overview + +The layout provider controls how shop sign lines are arranged. + +Instead of hardcoding: + +Line 1 → Header +Line 2 → Trading info +Line 3 → Item +Line 4 → Price + +The system now allows full customization through: + +- Config-based layout definitions +- Custom `IShopLayoutProvider` implementations +- Runtime overrides + +The default implementation is `SimpleShopLayoutProvider`. + +--- + +# Accessing the Layout Provider + +To retrieve the current layout provider: + +```java +ShopManager manager = api.getShopManager(); +IShopLayoutProvider provider = manager.shopLayoutProvider(); +``` + +To replace the layout provider with a custom one: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Once replaced, your implementation will control how shop layouts are generated. + +--- + +# Understanding IShopLayoutProvider + +`IShopLayoutProvider` defines how layout data is retrieved and resolved. + +It is responsible for: + +- Providing layout configuration per shop type +- Determining which layout to use +- Supplying formatted line keys +- Allowing future extensibility + +The default implementation reads layout definitions from configuration and applies them based on shop type. + +--- + +# Default Layout Example + +The default configuration-based layout looks like this: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +Each line maps to a layout component key. + +An empty string (`""`) leaves that line blank. + +The layout provider resolves these keys into actual sign content. + +--- + +# Creating a Custom Layout Provider + +To override the default behavior, implement `IShopLayoutProvider`. + +Example minimal implementation: + +```java +public class MyCustomLayoutProvider implements IShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + + ShopLayout layout = new ShopLayout(); + + layout.setLine(1, "Custom Header"); + layout.setLine(2, "Owner: " + shop.getOwnerName()); + layout.setLine(3, shop.getItem().getType().name()); + layout.setLine(4, "$" + shop.getPrice()); + + return layout; + } +} +``` + +Then register it: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Your layout will now control all shop sign formatting. + +--- + +# Per-Type Layout Control + +Because the system no longer depends on the legacy ShopType enum, layouts can support: + +- Built-in types (BUYING, SELLING, FROZEN) +- Custom shop types +- Addon-defined shop types + +Your provider can determine layout logic dynamically: + +```java +@Override +public ShopLayout provideLayout(Shop shop) { + + if (shop.getShopType().key().equals("FROZEN")) { + return frozenLayout(shop); + } + + return defaultLayout(shop); +} +``` + +This allows conditional formatting, localization adjustments, or special event styling. + +--- + +# Advanced Customization + +A custom layout provider can: + +- Pull data from external plugins +- Inject dynamic placeholders +- Modify layout per player +- Apply formatting logic +- Override color schemes +- Apply region-based formatting +- Implement animated sign systems + +Because the layout provider is resolved at runtime, you can compute layouts dynamically instead of reading static config. + +--- + +# Replacing vs Extending the Default Provider + +You have two options: + +Replace entirely: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Or extend the default implementation: + +```java +public class ExtendedLayoutProvider extends SimpleShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + ShopLayout base = super.provideLayout(shop); + + base.setLine(1, "[Extended] " + base.getLine(1)); + + return base; + } +} +``` + +Extending is safer if you only want to modify small portions. + +--- + +# Best Practices + +Keep layout generation lightweight. + +Avoid: + +- Heavy database queries +- Blocking IO +- Complex network calls + +Layout generation runs during shop updates and sign refresh events. + +Always handle null values safely. + +Ensure layout line count does not exceed sign limits. + +Avoid hardcoding shop type names unless necessary. + +If your layout supports custom shop types, validate their keys properly. + +--- + +# Example Full Registration + +```java +public class LayoutAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + + manager.shopLayoutProvider(new MyCustomLayoutProvider()); + } +} +``` + +--- + +# Conclusion + +The Shop Layout Provider system allows complete control over shop sign structure. + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +``` + +And setting: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +You can redefine how every shop is displayed on the server. + +This system was designed to support: + +- Extensibility +- Custom shop types +- Localization +- Dynamic formatting +- Future expansion \ No newline at end of file diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/faq/compare-reremake.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/faq/compare-reremake.md index aaa1a9e507..6b39f02520 100644 --- a/i18n/vi-VN/docusaurus-plugin-content-docs/current/faq/compare-reremake.md +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/faq/compare-reremake.md @@ -64,7 +64,7 @@ If you are a Reremake user, you may be confused about the differences between Hi ## Which one should I use? Well, it depends on what your needs are.\ -If you have an old server (<1.20) instance, Reremake is your only choice.\ +If you have an old server ({'<'}1.20) instance, Reremake is your only choice.\ ~~If you are in China which has GFW interfere, you also should consider Reremake because it doesn't need to load libraries from Global Internet.~~ Solved in 6.0.0.0. If none of these applies, give Hikari a try! diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md index 551f579e7c..172be3a69b 100644 --- a/i18n/vi-VN/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md @@ -1,8 +1,8 @@ # Where Addons/Compacts is -Addons and Compatilibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. +Addons and Compatibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. -- Open Modrinth versions page, locate the version your're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) +- Open Modrinth versions page, locate the version you're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) - Frantically slide your mouse wheel down until the lowest end of the page. - You get it! diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/internal/database-schema.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/internal/database-schema.md index fea685e4fc..45e04adb56 100644 --- a/i18n/vi-VN/docusaurus-plugin-content-docs/current/internal/database-schema.md +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/internal/database-schema.md @@ -4,17 +4,17 @@ This chapter will explain the implementation details of QuickShop Hikari's datab ## Tables -This section explains the database tables created by QuickShop-Hikari.\ -Unless otherwise specified, the initial `qs_` in table name is the table prefix.\ +This section explains the database tables created by QuickShop-Hikari. +Unless otherwise specified, the initial `qs_` in table name is the table prefix. For the latest code definition for each table, see: [DataTables.java](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/hikari/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/database/DataTables.java) ### `data` -This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information.\ -No matter what, a data record should not be modified after it is created, until it got deleted.\ +This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information. +No matter what, a data record should not be modified after it is created, until it got deleted. Any new changes to the shop should create a new copy, apply the changes to the copy, and insert it as a new record. -Basiclly, Copy-on-write. +Basically, Copy-on-write. A data record only be deleted from the database when no any table references their `data_id`. @@ -29,7 +29,7 @@ A data record only be deleted from the database when no any table references the | unlimited | BIT NOT NULL | 0 | Indicates whether this store is an unlimited store, 0=Limited, 1=Unlimited | | hologram | BIT NOT NULL | 0 | Indicates the suspension status of this store's display item, 0=Follow global settings, 1=Disabled | | tax_account | VARCHAR(36) | NULL | The uuid for tax account, If it is not NULL, tax will be paid to the specified account | -| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serilized to JSON string | +| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serialized to JSON string | | extra | LONGTEXT | Empty Yaml | Used to store experimental settings of QuickShop Hikari or persistent data of other plugins | | inv_wrapper | VARCHAR(255) NOT NULL | N/A | Unique identifier for InventoryWrapper for this shop data entry | | inv_symbol_link | TEXT NOT NULL | N/A | Unique Inventory symbol used to pass to InventoryWrapper, for locating inventory | @@ -38,7 +38,7 @@ A data record only be deleted from the database when no any table references the ### `shops` -This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes.\ +This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes. Multiple `shop_id` can correspond to the same `data_id`. | Column Name | DataType | Default | Description | diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/modules/cmd-alias.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/modules/cmd-alias.md index 53f1577685..e6ed381c0d 100644 --- a/i18n/vi-VN/docusaurus-plugin-content-docs/current/modules/cmd-alias.md +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/modules/cmd-alias.md @@ -23,7 +23,7 @@ custom-commands: - cshop ``` -Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect.\ +Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect. The effect should be like this: ![command-alias](./img/command-alias.png) diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/modules/datasource.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/modules/datasource.md index 6fc1bd8931..3fd3a8bdee 100644 --- a/i18n/vi-VN/docusaurus-plugin-content-docs/current/modules/datasource.md +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/modules/datasource.md @@ -48,7 +48,7 @@ Execute the `/quickshop export` command in console, quickshop will export a zip ![exported data](img/database-export.png) -Stop your database, switch the datasource, and start the server.\ +Stop your database, switch the datasource, and start the server. You may noticed all shops are gone, because new datasources had no data inside, we will restore them from export. Rename that exported ZIP file to `recovery.zip`, execute `/quickshop recovery` and restart your server, all shops should back. diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/modules/itemmatcher.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/modules/itemmatcher.md index 56be243019..922907be27 100644 --- a/i18n/vi-VN/docusaurus-plugin-content-docs/current/modules/itemmatcher.md +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/modules/itemmatcher.md @@ -4,7 +4,7 @@ ItemMatcher is a utility used by QuickShop-Hikari to compare the items, it is th :::caution -If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse.\ +If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse. **TL;DR: Keep default unless you know what you're doing.** ::: @@ -26,10 +26,10 @@ matcher: work-type: 1 ``` -By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility.\ +By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility. But still, you can toggle to QuickShop Item Matcher if you need to customize the comparing or running QuickShop on the server jar which have bug affect the Bukkit comparing system. -## Customize the metadata compareing +## Customize the metadata comparing Customize only works under QuickShop Item Matcher. diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md index fc2af69d2b..d04e8f2783 100644 --- a/i18n/vi-VN/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md @@ -4,7 +4,7 @@ ItemStack Loader is a workaround for loading the Bukkit ItemStack. :::caution -Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossble. +Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossible. ::: diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/modules/localization.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/modules/localization.md index e9121e1a36..d47589ab9a 100644 --- a/i18n/vi-VN/docusaurus-plugin-content-docs/current/modules/localization.md +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/modules/localization.md @@ -10,7 +10,7 @@ To help translate QuickShop-Hikari, please visit our [Crowdin Homepage](https:// ## Crowdin OTA -QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will overrided when you reload QuickShop-Hikari or restart your server. +QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will override when you reload QuickShop-Hikari or restart your server. Your installation will keep translations up-to-date without any touch. @@ -110,6 +110,16 @@ To disable the CrowdinOTA, please add it in the startup flag: -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager.enableCrowdinOTA=false ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +use-crowdin-ota: false +``` + ### Self-Hosted OTA Server If you self-hosted our translation server by using [CrowdinCopyDeploy](https://github.com/Ghost-chu/CrowdinCopyDeploy) tool, you're able to change the OTA server to yourself server. @@ -118,4 +128,12 @@ If you self-hosted our translation server by using [CrowdinCopyDeploy](https://g -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager= ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml +Use + +```yaml +crowdin-host: +``` \ No newline at end of file diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/modules/shops/benefit.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/modules/shops/benefit.md index 4d7a9c8f42..c59d92e6d1 100644 --- a/i18n/vi-VN/docusaurus-plugin-content-docs/current/modules/shops/benefit.md +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/modules/shops/benefit.md @@ -37,3 +37,13 @@ By default, for security, QuickShop-Hikari disallow add offline players into sho ```bash -Dcom.ghostchu.quickshop.command.subcommand.SubCommand_Benefit.allowOffline=true ``` + +### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +shop.allow-offline-benefit: true +``` \ No newline at end of file diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/modules/shops/control-panel b/i18n/vi-VN/docusaurus-plugin-content-docs/current/modules/shops/control-panel new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/modules/shops/control-panel @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/modules/shops/history.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/modules/shops/history.md index fa891adeab..195b64a042 100644 --- a/i18n/vi-VN/docusaurus-plugin-content-docs/current/modules/shops/history.md +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/modules/shops/history.md @@ -24,7 +24,7 @@ The History GUI displays the details of each recorded transaction and other usef ### Transaction details -When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed.\ +When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed. If you are checking the history of more than one store, the player head will be replaced with an item from the corresponding store. ![history-gui](./img/history-gui.png) diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md new file mode 100644 index 0000000000..c5ed3b3fe4 --- /dev/null +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md @@ -0,0 +1,90 @@ +# Shop Types + +QuickShop supports multiple shop types, allowing shops to behave differently depending on their mode. + +The built-in shop types are: + +- Selling +- Buying +- Frozen + +Each type changes how the shop interacts with players. + +--- + +## Selling Shop + +A Selling shop allows players to: + +- Buy items from the shop owner +- Pay money to receive items + +This is the most common shop type. + +--- + +## Buying Shop + +A Buying shop allows players to: + +- Sell items to the shop owner +- Receive money in exchange + +This is commonly used for: + +- Resource collection +- Server buy-back shops +- Automated material sinks + +--- + +## Frozen Shop + +A Frozen shop temporarily disables trading. + +While frozen: + +- No buying is allowed +- No selling is allowed +- The shop remains intact +- Staff or admins can manage it + +This is useful for: + +- Temporary suspensions +- Investigation +- Event locking +- Maintenance + +--- + +## Switching Shop Types + +Shop types can be changed through: + +- Control panel +- GUI control panel +- Admin commands + +Frozen mode is also available via: + +/qs freeze + +--- + +## Custom Shop Types + +As of 6.2.x, the system supports extensible shop types internally. + +While server owners use the built-in types, the system now allows future expansion through addons. + +--- + +## Summary + +Shop types allow you to: + +- Control how money flows +- Enable buy-back mechanics +- Temporarily disable shops +- Build advanced economic systems \ No newline at end of file diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md new file mode 100644 index 0000000000..18e0a47407 --- /dev/null +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md @@ -0,0 +1,217 @@ +# Sign Layout + +QuickShop allows you to fully customize how shop signs are structured. + +You can change: + +- What appears on each line +- The order of information +- Layout per shop type +- Whether certain lines are blank + +This gives you complete control over how shops look on your server. + +--- + +## How Sign Layout Works + +Shop signs have four lines. + +Instead of being hardcoded, QuickShop uses a configurable layout system. + +Each shop type can have its own layout: + +- SELLING +- BUYING +- FROZEN + +You define what each line displays using layout keys. + +--- + +## Configuration Location + +Sign layout is configured in `config.yml` under: + +```yaml +layout: +``` + +Example default configuration: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## Available Layout Keys + +Each line value refers to a built-in layout component. + +Common layout keys include: + +- `header` – The shop header line +- `trading` – Buy/Sell direction information +- `item` – Item name +- `price` – Shop price + +These keys are automatically formatted using your language file and formatting settings. + +--- + +## Leaving a Line Blank + +To leave a line empty, use: + +```yaml +line2: "" +``` + +This is useful if you want: + +- Minimalist signs +- Cleaner layouts +- Custom spacing +- Decorative formatting + +--- + +## Customizing Per Shop Type + +Each shop type can have a different layout. + +For example: + +```yaml +layout: + + SELLING: + line1: "header" + line2: "item" + line3: "price" + line4: "" + + BUYING: + line1: "header" + line2: "price" + line3: "item" + line4: "" + + FROZEN: + line1: "header" + line2: "" + line3: "item" + line4: "Frozen" +``` + +This allows you to visually differentiate: + +- Selling shops +- Buying shops +- Frozen shops + +--- + +## Practical Examples + +### Minimal Style + +```yaml +layout: + SELLING: + line1: "item" + line2: "price" + line3: "" + line4: "" +``` + +### Compact Economy Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "price" + line3: "item" + line4: "" +``` + +### Large Clear Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## How Updates Affect Layout + +When you change the layout: + +- Existing shop signs will update automatically when refreshed. +- New shops will use the updated format immediately. + +If needed, you can reload QuickShop to apply changes. + +--- + +## Best Practices + +- Keep important information visible (price and item). +- Avoid overly complex formatting. +- Test layout changes before deploying on large servers. +- Use different layouts for BUYING and SELLING to reduce confusion. + +--- + +## Common Questions + +### Can I add more than four lines? + +No. +Minecraft signs are limited to four lines. + +### Can I add colors? + +Colors are controlled by your language file and formatting settings. + +### Can I change layout without restarting? + +Yes, but reloading or refreshing shops is recommended to ensure full update. + +--- + +## Summary + +The Sign Layout system allows you to: + +- Fully customize shop sign appearance +- Create per-type layouts +- Simplify or expand shop information +- Improve clarity for players + +All layout customization is handled inside `config.yml`. diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md new file mode 100644 index 0000000000..980bad10f2 --- /dev/null +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md @@ -0,0 +1,130 @@ +# Shop Sign Waxing + +QuickShop can automatically wax shop signs to prevent players from editing them manually. + +Waxing protects the integrity of your shop signs and helps prevent tampering, spoofing, and accidental modification. + +As of modern Minecraft versions, waxed signs cannot be edited unless they are unwaxed first. + +--- + +## What Is Sign Waxing? + +In Minecraft, waxing a sign locks it so that: + +- Players cannot edit the text +- Players cannot modify lines +- Accidental changes are prevented +- Malicious edits are blocked + +When enabled in QuickShop, shop signs are automatically waxed when created. + +--- + +## Why Use It? + +Sign waxing protects against: + +- Players editing price lines +- Changing item names on signs +- Spoofing shop information +- Accidental formatting issues +- Sign hijacking attempts + +On public servers, this feature is strongly recommended. + +--- + +## How It Works + +When a shop is created: + +1. QuickShop generates the shop sign. +2. The sign text is written. +3. The sign is automatically waxed (if enabled). + +If a shop is updated: + +- The sign will be safely updated by QuickShop. +- The wax state is maintained. + +Players cannot manually edit shop signs while waxing is enabled. + +--- + +## Configuration + +To enable or disable sign waxing, edit `config.yml`: + +```yaml +shop: + sign-wax: true +``` + +### true + +- Shop signs are automatically waxed. +- Players cannot edit the sign manually. + +### false + +- Shop signs behave like normal Minecraft signs. +- Players may edit them if permitted by the game. + +--- + +## Recommended Setting + +For most servers: + +```yaml +shop: + sign-wax: true +``` + +This ensures shop data stays accurate and secure. + +--- + +## Common Questions + +### Can admins still modify shop signs? + +QuickShop controls shop sign formatting. +Manual edits are not recommended. + +Admins should use: + +- Control panel +- Shop commands +- Direct configuration changes + +### Does waxing affect shop functionality? + +No. +Waxing only prevents manual text edits. +The shop continues to function normally. + +### Can players un-wax shop signs? + +No. +QuickShop manages the sign state automatically. + +--- + +## Best Practices + +- Keep sign-wax enabled on survival servers. +- Combine sign-wax with proper permissions. +- Avoid manually editing shop signs through other plugins. + +--- + +## Summary + +Sign Waxing: + +- Prevents tampering +- Requires no additional setup + +Enable it once and QuickShop handles the rest. \ No newline at end of file diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/modules/shops/taxes.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/modules/shops/taxes.md new file mode 100644 index 0000000000..1a273fd978 --- /dev/null +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/modules/shops/taxes.md @@ -0,0 +1,92 @@ +# Taxation System + +QuickShop includes a taxation system designed to give server owners more flexibility and control over shop-based income. + +This system was revamped as of 6.2.0.11+ + +The new system allows you to: + +- Apply tax to shop owners +- Apply tax to buyers +- Apply tax to both +- Use progressive tax brackets +- Customize tax behavior in configuration + +This system replaces the legacy tax configuration. + +--- + +## How It Works + +During a transaction: + +1. The shop price is calculated. +2. Tax is calculated based on your configuration. +3. Tax is deducted from the configured target(s). +4. Remaining funds are distributed normally. + +You can configure: + +- Flat percentage tax +- Progressive tax based on player balance +- Tax accounts +- Distribution rules + +--- + +## Progressive Tax + +The new system allows you to tax based on balance brackets. + +Example concept: + +- 0 – 10,000 balance → 1% tax +- 10,000 – 100,000 → 2% tax +- 100,000+ → 3% tax + +This helps prevent extremely wealthy players from dominating the economy. + +--- + +## Who Pays the Tax? + +You can configure whether tax applies to: + +- The shop owner +- The buyer +- Both + +This gives you flexibility depending on your economy design. + +--- + +## Configuration + +All tax-related settings are located under the `shop-tax` section in `config.yml`. + +After updating to 6.2.0.11+, review your tax configuration carefully, as the old tax system has been replaced. + +--- + +## Why Use Tax? + +The taxation system can help: + +- Remove currency from circulation +- Fund server banks or towns +- Create sink mechanics +- Balance inflation +- Reward active players + +--- + +## Summary + +The new taxation system is: + +- Flexible +- Configurable +- Balance-aware +- Designed for modern economy servers + +Make sure to review your configuration after upgrading. \ No newline at end of file diff --git a/i18n/vi-VN/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md b/i18n/vi-VN/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md new file mode 100644 index 0000000000..247c24712d --- /dev/null +++ b/i18n/vi-VN/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md @@ -0,0 +1,161 @@ +# WorldEdit & FAWE Support + +QuickShop includes built-in protection and integration for WorldEdit and FastAsyncWorldEdit (FAWE). + +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. + +You do not need to download or install any additional compatibility plugins. + +--- + +## What This Does + +WorldEdit and FAWE allow administrators and builders to: + +- Copy and paste regions +- Replace large areas of blocks +- Mass-delete regions +- Roll back areas +- Regenerate terrain + +Without protection, these operations could: + +- Create ghost shops +- Leave orphaned shop data in the database +- Duplicate shops unintentionally +- Delete containers without cleaning up shop data +- Cause inconsistencies between world and database + +QuickShop now automatically detects and safely processes WorldEdit and FAWE operations. + +--- + +## Built-In Behavior + +When WorldEdit or FAWE modifies blocks: + +- Shops removed via WorldEdit are properly deleted from the database. +- Shop data stays synchronized with world changes. +- Ghost shops are prevented. +- Mass block replacements will not leave broken shop entries behind. + +This applies to: + +- //set +- //replace +- //cut +- //paste +- //regen +- Region deletion +- Mass container removal + +No configuration is required. + +--- + +## FAWE Support + +FastAsyncWorldEdit (FAWE) is fully supported. + +Because FAWE processes edits asynchronously, QuickShop handles: + +- Region-thread safe processing +- Async block updates +- Safe shop deletion during batch edits + +You do not need to enable anything manually. + +--- + +## Removing Shops with WorldEdit + +If you delete containers (chests, barrels, etc.) using WorldEdit: + +QuickShop will automatically: + +- Detect the block removal +- Unregister the shop +- Clean the database entry +- Prevent ghost shops + +You do not need to run `/qs cleanghost` after WorldEdit usage in normal circumstances. + +--- + +## Copying and Pasting Shops + +If you copy and paste regions that contain shops: + +- Shop data will not duplicate incorrectly. +- Shop IDs remain consistent. +- Invalid pasted shops will not auto-register unless properly created. + +This prevents accidental duplication exploits. + +--- + +## Performance + +WorldEdit and FAWE operations can modify thousands of blocks at once. + +QuickShop processes these safely and efficiently: + +- Batch-aware cleanup +- Thread-safe region access (especially on Folia) +- Minimal performance impact during mass edits + +--- + +## Configuration + +There are no specific WorldEdit configuration options in QuickShop. + +Support is automatic and always enabled if WorldEdit or FAWE is detected. + +If WorldEdit is not installed, no extra code is executed. + +--- + +## Common Questions + +### Do I need the old WorldEdit compatibility jar? + +No. + +As of 6.2.0.11, WorldEdit support is built-in and the separate compatibility module has been removed. + +### Does this work with FAWE? + +Yes. FAWE is fully supported. + +### Will shops break if I use //set air? + +No. Shops will be safely removed and cleaned up. + +### Do I need to restart after installing WorldEdit? + +No. QuickShop detects WorldEdit automatically on startup. + +--- + +## Best Practices + +Even though QuickShop safely handles WorldEdit operations, it is recommended to: + +- Avoid copying shops intentionally unless required +- Use backups before large region edits +- Test large FAWE operations on staging servers when possible + +--- + +## Summary + +QuickShop’s built-in WorldEdit and FAWE integration ensures: + +- Safe mass edits +- No ghost shops +- Automatic database cleanup +- Thread-safe processing +- No extra modules required + +WorldEdit support is now a core feature of QuickShop. \ No newline at end of file diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/addon/limited.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/addon/limited.md index 0192d9d7be..7668df0b47 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/addon/limited.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/addon/limited.md @@ -2,13 +2,7 @@ :::info -找不到在哪里下载JAR? [点击这里](../faq/where-addons-compacts-at.md). [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -此插件在 4.1.0.0-SNAPSHOT 添加到 QuickShop-Hikari 中 +找不到在哪里下载JAR? [点击这里](../faq/where-addons-compacts-at.md). [Click here](../faq/where-addons-compacts-at). ::: @@ -41,10 +35,10 @@ /quickshop limit period MONTH ``` -该系统基于QuickShop-Hikari日历系统。\ -时间使用 “值变化” 更新系统进行更新,这意味着 2022-12-31 到 2023-01-01 也被视为一年,且同时会更新月、周、日、小时、分钟、秒的限制。\ -其余的也都一样。\ -The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year.\ +该系统基于QuickShop-Hikari日历系统。 +时间使用 “值变化” 更新系统进行更新,这意味着 2022-12-31 到 2023-01-01 也被视为一年,且同时会更新月、周、日、小时、分钟、秒的限制。 +其余的也都一样。 +The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year. Same for days, months and hours. 可用时间单位: diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/addon/list.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/addon/list.md index 2f9bb8f8d7..a96eb075d9 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/addon/list.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/addon/list.md @@ -2,13 +2,7 @@ :::info -找不到在哪里下载JAR? [点击这里](../faq/where-addons-compacts-at.md). [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -此插件在 4.1.0.0-SNAPSHOT 添加到 QuickShop-Hikari 中 +找不到在哪里下载JAR? [点击这里](../faq/where-addons-compacts-at.md). [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/addon/plan.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/addon/plan.md index 2fec4b7a80..db71123162 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/addon/plan.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/addon/plan.md @@ -2,7 +2,7 @@ :::info -找不到在哪里下载JAR? [点击这里](../faq/where-addons-compacts-at.md). [Click here](../faq/where-addons-compacts-at.md). +找不到在哪里下载JAR? [点击这里](../faq/where-addons-compacts-at.md). [Click here](../faq/where-addons-compacts-at). ::: @@ -18,8 +18,7 @@ Plan 扩展组件允许通过 Plan 在服务器上展示最近的 QuickShop-Hika - 所有商店(商店列表) - 最近的购买历史(包括删除或无效的商店),仅在最近365天或者最近1000行将被显示。 -由于 Plan 的局限性, 我们不能将更多数据添加到列表中,因为最大列列数被插件硬编码,无法更改。 该数值在服务器范围内限制为 `5` 。\ -仍然是 Plan 的限制,列表排序被打乱,所以显示顺序不是实际顺序。\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `5` in server scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## 玩家范围 @@ -28,8 +27,7 @@ And still is Plan limitations, the list sorting is disturbed, so the display ord - 所有拥有的商店(商店列表) - 最近的购买历史记录(包括已删除或无效的商店),仅显示最近 365 天内的 50 行。 -由于 Plan 的局限性, 我们不能将更多数据添加到列表中,因为最大列列数是硬编码的。 在玩家范围内限制为 `4` 。\ -仍然是 Plan 限制,列表排序被打乱,所以显示顺序不是实际顺序。\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `4` in player scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## 展示 diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/addon/reforges.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/addon/reforges.md index d4062cc1ec..0fac344239 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/addon/reforges.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/addon/reforges.md @@ -2,13 +2,7 @@ :::info -找不到在哪里下载JAR? [点击这里](../faq/where-addons-compacts-at.md). [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -此插件在 5.0.0.0快照版本添加到 QuickShop-Hikari 中。 +找不到在哪里下载JAR? [点击这里](../faq/where-addons-compacts-at.md). [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md index f18e2e1e12..69ab9de892 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? 找不到在哪里下载文件? [点击这里](../faq/where-addons-compacts-at.md). - -::: - -:::info - -此插件在 5.1.1.0 添加到 QuickShop-Hikari 中 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -44,8 +38,8 @@ _如果您使用的是 H2 数据库,则不需要这样做。_ ### 准备转换 -为了避免数据损坏,在进行数据转换时,服务器上不允许玩家(包括管理员) 在线,所有操作都将在控制台上进行。\ -如果玩家在服务器中,则无法开始转换。\ +为了避免数据损坏,在进行数据转换时,服务器上不允许玩家(包括管理员) 在线,所有操作都将在控制台上进行。 +如果玩家在服务器中,则无法开始转换。 If a player is in the server, the conversion cannot be started. 转换开始后, 服务器将在数据转换过程中被锁定,任何玩家在数据转换过程中都不能加入服务器。 diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/addon/shopitemonly.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/addon/shopitemonly.md index dd8a0436cc..a0f82025a1 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/addon/shopitemonly.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/addon/shopitemonly.md @@ -2,18 +2,12 @@ :::info -找不到在哪里下载JAR? [点击这里](../faq/where-addons-compacts-at.md). [Click here](../faq/where-addons-compacts-at.md). +找不到在哪里下载JAR? [点击这里](../faq/where-addons-compacts-at.md). [Click here](../faq/where-addons-compacts-at). ::: -:::info - -此插件在 4.1.0.0-SNAPSHOT 添加到 QuickShop-Hikari 中 - -::: - -此插件可防止玩家将非商店物品放入商店容器中。\ -不适用于 InventoryWrapper API 控制的商店。\ +此插件可防止玩家将非商店物品放入商店容器中。 +不适用于 InventoryWrapper API 控制的商店。 Does not apply to stores that use the item inventory redirection API (aka. InventoryWrapper API). 此插件将在诸如玩家关闭容器或漏斗访问等事件中检查容器中的(或转移的)物品。 diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md new file mode 100644 index 0000000000..9c8b4f7407 --- /dev/null +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md @@ -0,0 +1,55 @@ +# 6.2.0.10 + +## Major Changes + +- Added support for 1.21.6 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.7 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.8 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Some internal updates for packetevents(2.9.0 is now required.) +- Updated Lands support + +## Addon Changes + +- Added MatcherPlus Addon + - Allows support for BreweryX and AdvancedItems stacks in shops with improved matching abilities +- Added FabledSkyblock Compat +- Added Dominion Compat +- Added HuskTowns Compat +- Added IridiumSkyblock Compat +- Added member-create for member creation in ARM compat +- Added admin-override and quickshop.arm.admin permission for admin overrides in ARM + +## Minor Changes + +- Added configurations for the coordinates of the display item. +- Added /qs toggledisplayall on/off server/owned + - Players need to have permission node quickshop.toggledisplayall.admin to toggle all on the server. +- Added ability to use abbreviations in /qs price and /qs create commands such as 2.5k for 2500 +- Added ability to set default display status using shop.default-display in config.yml + +## Fixes + +- Fixed issue with display item being sent to the moon on 1.21.5 +- Fixed issue where TRADE_UI interactions interfered with quick create. +- Fixed issue with displays on protocollib falling through the chest +- Fixed issue with signs on .9 and previous .10 snapshots on early versions +- Implemented some performance improvements for paper servers +- Fixed all outstanding issues with Folia usage.(thanks to RootB33R/SleazLee for contributions) + +## Possible 6.2.0.11 Features + +Here's an outline for some features that may arrive in 6.2.0.11: + +- Additional compats/addons that have been piling up. + - see: https://github.com/QuickShop-Community/QuickShop-Hikari/issues/1756 +- gradle?(interested to see compilation time uplifts) +- Update documentation +- Update configuration comments +- Update configuration system? + - auto updating? + - Allows removal of the update code +- Remove waste spigot modules? + - Any versions of 1.20 that can be discarded due to low use? +- Bug fixing, of course +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... \ No newline at end of file diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md new file mode 100644 index 0000000000..b41c88662a --- /dev/null +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md @@ -0,0 +1,173 @@ +## Outline + +- Update documentation +- Update configuration comments +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... + +# 6.2.0.11 + +## Major Changes + +- Removed Spigot Platform Modules, and stopped loading QS if Spigot is detected. This will mean that unless the protocol changes that we use for display items, QS won't need updated for each version. +- Revamped Economy Code Completely + - New classes for all economy-related systems + - Any economy-related or benefits-related events are incompatible with previous versions. +- Added sign layout customizations per-type allowing you to change how lines are configured, an empty string('') will leave an empty line for that line of the sign. + +``` + #The layout of signs for shops. + layout: + + #The layout of BUYING shops. + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of FROZEN shops. + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of SELLING shops. + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +- Add wildcard support for item blacklist patterns(thanks to bennycallanan) + - Added support for wildcard patterns in the item blacklist configuration, allowing users to block entire categories of items with simple patterns. + + - Features + - Wildcard patterns like \*_AXE and \*_SPAWN_EGG now work in blacklist configuration + - Supports \* for any characters and ? for single character matching + - Case-insensitive pattern matching +- Overhauled GUI system(thanks to Yusakidev) + - Implemented gui.yml configuration file for customizing the GUI. + - Implemented better filtering for qs browse + - Implement GUI system to be more stable, and less error prone. + - Added gui.yml for fully configurable GUI layouts and text + - Browse menu: search, sort (price/name/stock), and filter (all/buying/selling/in-stock) + - Staff menu: search functionality for player/staff selection + - Grouped item pages for better shop browsing + - Refactored all menu pages to use configurable display/lore +- Added worldedit compat to QS internally as it's widely used. +- Revamped the taxation system to be more flexible and easier to configure. + - introduced a new progressive tax system that allows you to tax based on the balance of players.(suggested by YuanYuanOwO) + - introduced the ability to tax the player interacting with the shop, the owner, or both + - all tax-related configurations have been moved under the shop-tax section of the config. this may require reconfiguration of your tax settings. + - added a new ShopEnhancedTaxEvent, deprecated the old ShopTaxEvent. + - Added a new TaxManager, and TaxProvider interfaces, this allows for custom tax providers to be added by addons/third-party developers. + +## Addons/Compats Changes + +- Added UltimateClaims compat +- Added SimpleClaimSystem compat +- Added Quests by Pika addon +- Added BetonQuest addon +- Added Pl3xMap addon +- MatcherPlus Compat Improvements + - Added support for CrazyCrates + - Added support for ExcellentCrates + - Added support for SilkSpawners. +- WorldGuard Compat Improvements(Thanks to golovin12) + - Added clear permission handling: + - Region owners and members automatically have permission to create and trade in their own regions. + - Other players must have the appropriate WorldGuard flags enabled (quickshophikari-create, quickshophikari-trade) to interact with shops. + - If a shop is located outside any region, default QuickShop behavior applies (no extra restrictions) +- Added colored markers based on shop state for bluemap(thanks to YusakiDev) +- Updated dynmap/towny addons to use the new ShopTypeEnhancedEvent instead of ShopTypeEvent. +- Removed worldedit compat, it's now included in the main plugin. +- Added support for global flags to the worldguard compat. + +## Internals/Developer APIs + +- Removed several deprecated methods and classes. +- Revamped the interaction manager. It is now more flexible and allows external additions + - This involves two classes InteractionBehavior and InteractionType. + - InteractionType details the type of interaction such as: STANDING_LEFT_CLICK_SIGN, STANDING_LEFT_CLICK_SHOP + - InteractionBehavior outlines a behavior for an InteractionType such as CONTROL_PANEL and TRADE_UI +- Added UserLimitCalculationEvent, which allows for custom limits to be applied to users. + - This is useful for limiting the number of shops a user can have, or adding on to the existing limits provided by the ranks system without needing to implement a new RankLimiter. +- Added a new ShopLayoutProvider interface, and default implementation. + - This allows for custom layouts to be used for shops, allowing for more customization. + - This also allows for developers to override the default layout provider and create their own implementation. +- How to make your own? + - Implement the classes you would like to then register with the InteractionManager: + - ```java + InteractionManager manager = QuickShop.getInstance().getInteractionManager(); + + manager.interaction(new MyTradeInteraction()); + manager.behavior(new MyTradeBehavior()); + ``` +- Replaced some Apache Commons calls that could be easily replaced with built-in java methods, reduces some calls by ~ 1100ms/method call +- Deprecated the ShopType enum, and the ShopTypeEvent. These are replaced with the new IShopType interface and implementing classes. + - The new event is ShopTypeEnhancedEvent. + - This allows for third-party addons to add their own shop types, and simplifies code checks for translations. +- Updated config system to use Boosted-yaml + - this allows for auto-updating of config files without complex update scripts + - this also allows for the config system to not be minecraft-dependent. +- Replaced logical PaperLib calls with native PaperAPI calls. + +## Minor Changes + +- Bump Java version up to 21 +- Added shop.display-allow-enchants to enable/disable enchantments for display items on shops. +- Added workaround for packetevents not supporting custom enchants on itemstacks for virtual display items. +- Using locale translations for shop-type in mode toggle icon(thanks to ExyiN) +- Bumped Residence version for the compat(thanks to YuanYuanOwO) +- add world whitelist support(thanks to wling-art) +- added /qs database save command, which saves all currently dirty-marked shops to the database. +- Split up interactions _SHOPBLOCK into _SHOPBLOCK and _CONTAINER. + - _SHOPBLOCK relates to shops, where _CONTAINER relates to shop-valid containers that are not currently shops. +- Added inventory as an option for command panel, this is useful for adding a secondary option for players to open a shop's inventory. +- Moved crowdin arguments from system properties to config.yml + - crowdin-host + - use-crowdin-ota + +## Fixes + +- Fixes issue with item price restrictions(thanks to maxcom1) +- Fixes issue with 1.20.x protocol lib displays(thanks to YuanYuanOwO) +- Fixes issue when no item is in hand for itemdebug(thanks to YuanYuanOwO) +- Fixes issue with dominion addon(thanks to YuanYuanOwO) +- Add a simple check to avoid this. If it is not own shop, reject limit request directly.(Thanks to YuanYuanOwO) +- Fix NPE by not setting tax for price in TransactionBuilder(thanks to maxcom1) +- Fixes /quickshop suggestprice to differentiate between buy/sell shops. (Thanks to MidSpike) +- PacketEvents ClassNotFoundException with ProtocolLib(thanks to wling-art) +- Reallocate block state access to region thread for shop creation(thanks to r00tbeerman) +- resolve SLF4J StaticLoggerBinder loading error(thanks to wling-art) +- sign hijacking issue by validating sign facing direction(thanks to wling-art) +- Performance improvements for QuickShop disabling to prevent potential freezes. +- Fixed issue with 1.20.4 packetevents virtual displays not staying put. +- Fixes critical issue in GriefPrevention compatibility plugin. +- Fixes issue with shop owner not getting money when benefits active. +- Fixes for lands addon on folia, Use regionThread for Folia compatibility(thanks to YusakiDev) +- Fixes for TRADE_DIRECT on stacking shops +- Fixes issue for protocollib 5.4.0 with undocumented packet changes. +- Fixes issue where item stacks could be used on creation above the max stack size. +- Fixes issue with BukkitAudiences-related crashes on 1.21.11. +- Fix issue with shop deletion when getting too impatient. +- Fix the permission check issue when a shop owned by a non-owner is transferred to someone else. (thanks to YuanYuanOwO) +- Fix ui with supertool (thanks to YuanYuanOwO) +- Fix issue with logs generating outside debug mode. +- Fix issue with /qs find. +- Fix configuration loading timing. +- Fix configuration loading/creation warning message language. +- Fix command description language key mismatch(thanks to wling-art) +- Fix qs clean command on folia(thanks to wling-art) +- Fix per-player-shop-sign on folia(thanks to wling-art) +- Fix potential recursive deadlock in virtual display packet sending(thanks to wling-art) +- Fix configuration loading/creation warning message language. +- Fix issue with /qs browse and ShopItemOnly addon not behaving properly together on folia. +- Fix issue with PLAN using outdated APIs. +- Fix issue with /qs clean on folia.(thanks to wling-art) +- Fix issue with /qs cleanghost on folia(thanks to wling-art) +- More thread safety fixes for shops on folia.(thanks to wling-art) +- Fix owner payment calculations with benefits(thanks to wling-art) \ No newline at end of file diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md index 8172f9b410..dcc3edc67d 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md @@ -20,20 +20,20 @@ the ControlComponent object with a custom one that will replace the original dur ### Introduction of the Revamped Packet System 1. **About**: - - A modular and scalable system for managing packets related to virtual display items in Minecraft. - - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. + - A modular and scalable system for managing packets related to virtual display items in Minecraft. + - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. 2. **Custom Packet Factories**: - - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. - - Packet types: - - **Spawn Packet**: Spawns a virtual item entity at a specific location. - - **Metadata Packet**: Updates the visual properties of virtual items. - - **Velocity Packet**: Adds motion/velocity to entities (currently optional). - - **Destroy Packet**: Removes the entity from the client view. + - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. + - Packet types: + - **Spawn Packet**: Spawns a virtual item entity at a specific location. + - **Metadata Packet**: Updates the visual properties of virtual items. + - **Velocity Packet**: Adds motion/velocity to entities (currently optional). + - **Destroy Packet**: Removes the entity from the client view. 3. **Error Handling and Logging**: - - Enhanced debug logs to trace packet-related issues. - - Detailed error messages for missing factories or unregistered listeners. + - Enhanced debug logs to trace packet-related issues. + - Detailed error messages for missing factories or unregistered listeners. #### Improvements: diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md index 2bee5cad01..3af5ee628f 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md @@ -2,7 +2,7 @@ :::info -找不到在哪里下载JAR? [点击这里](../faq/where-addons-compacts-at.md). [Click here](../faq/where-addons-compacts-at.md). +找不到在哪里下载JAR? [点击这里](../faq/where-addons-compacts-at.md). [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md index c40be9e52b..36334d6c34 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md @@ -2,7 +2,7 @@ :::info -找不到在哪里下载JAR? [点击这里](../faq/where-addons-compacts-at.md). [Click here](../faq/where-addons-compacts-at.md). +找不到在哪里下载JAR? [点击这里](../faq/where-addons-compacts-at.md). [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md index 8e06994563..1b4e9ffa89 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md @@ -2,7 +2,7 @@ :::info -找不到在哪里下载JAR? [点击这里](../faq/where-addons-compacts-at.md). [Click here](../faq/where-addons-compacts-at.md). +找不到在哪里下载JAR? [点击这里](../faq/where-addons-compacts-at.md). [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md index 2b5c4311f5..f69497f205 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md @@ -2,7 +2,7 @@ :::info -找不到在哪里下载JAR? [点击这里](../faq/where-addons-compacts-at.md). [Click here](../faq/where-addons-compacts-at.md). +找不到在哪里下载JAR? [点击这里](../faq/where-addons-compacts-at.md). [Click here](../faq/where-addons-compacts-at). ::: @@ -10,6 +10,6 @@ ## How does it work? -BungeeCord Bridge 插件将会注册一个 `quickshop:bungee` 频道,可使玩家跨服输入插件所要求的信息。 +BungeeCord Bridge plugins will register a `quickshop:bungee` channel for forwarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. 所有转发都由 QuickShop-Hikari 在 Spigot 服务器上表示,并在不需要时结束。 diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md index 7e640e664f..6b65986729 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md @@ -2,7 +2,7 @@ :::info -找不到在哪里下载JAR? [点击这里](../faq/where-addons-compacts-at.md). [Click here](../faq/where-addons-compacts-at.md). +找不到在哪里下载JAR? [点击这里](../faq/where-addons-compacts-at.md). [Click here](../faq/where-addons-compacts-at). ::: @@ -10,6 +10,6 @@ ## How does it work? -该兼容模块会阻止虚假的保护检查事件传递至 Chest Protect 的监听器,以防止原有的保护意外消失。\ -它也能阻止玩家对着其他玩家上锁的容器创建商店。\ +该兼容模块会阻止虚假的保护检查事件传递至 Chest Protect 的监听器,以防止原有的保护意外消失。 +它也能阻止玩家对着其他玩家上锁的容器创建商店。 It also prevents players from creating shops on ChestProtect protected containers. diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md index a17bff51ad..b7147fcfd1 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md @@ -2,7 +2,7 @@ :::info -找不到在哪里下载JAR? [点击这里](../faq/where-addons-compacts-at.md). [Click here](../faq/where-addons-compacts-at.md). +找不到在哪里下载JAR? [点击这里](../faq/where-addons-compacts-at.md). [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/dominion.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/dominion.md new file mode 100644 index 0000000000..e1195278a8 --- /dev/null +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/dominion.md @@ -0,0 +1,138 @@ +# Dominion + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and Dominion. + +It ensures that shop creation and trading respect Dominion’s land and territory protection system. + +--- + +## What Does It Do? + +Dominion allows players or groups to claim land and define territory-based permissions. + +Without compatibility: + +- Players could create shops inside territories they do not control. +- Visitors might trade inside protected dominions. +- Dominion permission rules might not apply to shop interactions. + +The Dominion compat module ensures that: + +- Shop creation respects territory ownership. +- Shop trading follows Dominion permission settings. +- Protected land remains secure from unauthorized shop usage. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a Dominion-controlled area. +- Whether the player has permission within that territory. +- Whether Dominion rules allow shop interaction. + +If the action is not permitted by Dominion settings, QuickShop blocks it. + +If the location is outside any Dominion territory, default QuickShop behavior applies. + +--- + +## Territory Owner Control + +With this module enabled: + +- Territory owners can create and manage shops inside their dominion. +- Trusted members follow territory-based permissions. +- Outsiders are restricted unless explicitly allowed. +- Shop actions respect Dominion’s land rules automatically. + +This prevents unauthorized shop placement inside protected territories. + +--- + +## Installation + +1. Install Dominion. +2. Install the QuickShop Dominion compat module. +3. Restart your server. + +The module activates automatically if Dominion is detected. + +No manual configuration linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside dominions +whitelist-mode: false + +# Allow territory owners to override shop permissions +allow-owner-override: true +``` + +If Dominion is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For servers using Dominion: + +- Restrict shop creation to territory owners or trusted members. +- Prevent shop creation in wilderness if desired. +- Allow dominion owners to manage shop permissions. +- Review Dominion permission settings to align with shop behavior. + +This ensures protected territories remain secure and organized. + +--- + +## Common Questions + +### Can players create shops in someone else's dominion? + +Only if Dominion permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You may allow or restrict shops outside dominions. + +### What happens if Dominion is removed? + +QuickShop returns to normal behavior and stops checking Dominion territories. + +--- + +## Summary + +The Dominion compat module: + +- Enforces territory-based permissions +- Prevents unauthorized shop creation +- Protects claimed land from misuse +- Integrates seamlessly with Dominion + +It is recommended for servers running Dominion. \ No newline at end of file diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md index e8eb4a388f..e572054278 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md @@ -2,7 +2,7 @@ :::info -找不到在哪里下载JAR? [点击这里](../faq/where-addons-compacts-at.md). [Click here](../faq/where-addons-compacts-at.md). +找不到在哪里下载JAR? [点击这里](../faq/where-addons-compacts-at.md). [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md new file mode 100644 index 0000000000..07ba4ada66 --- /dev/null +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md @@ -0,0 +1,133 @@ +# FabledSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and FabledSkyblock. + +It ensures that shop creation and trading properly respect island boundaries and island permissions. + +--- + +## What Does It Do? + +On Skyblock servers, players build and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Players might trade in areas they should not. +- Island protection rules might not apply to shops. + +The FabledSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members behave correctly with shops. +- Island visitors are restricted appropriately. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a FabledSkyblock island. +- Whether the player has permission on that island. +- Whether island settings allow the action. + +If the action is not permitted by island rules, QuickShop will deny it. + +--- + +## Island Ownership Rules + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow island permission settings. +- Visitors can only trade if island permissions allow it. +- Outside of islands, default QuickShop behavior applies. + +--- + +## Installation + +1. Install FabledSkyblock. +2. Install the QuickShop FabledSkyblock compat module. +3. Restart your server. + +The module activates automatically if FabledSkyblock is detected. + +No manual linking is required. + +--- + +## Configuration + +If the module provides configuration options, they will appear in its `config.yml`. + +Typical options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If FabledSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most Skyblock servers: + +- Allow shop creation only inside islands. +- Prevent trading in the void or wilderness. +- Let island owners control shop permissions. +- Use island rank systems to manage shop access. + +This helps maintain economic balance between islands. + +--- + +## Common Questions + +### Can players create shops in the void? + +Only if your configuration allows it. +Most servers disable shop creation outside islands. + +### Does this affect island war or PvP modes? + +No. +The module only checks island ownership and permissions for shop interactions. + +### What happens if FabledSkyblock is removed? + +QuickShop returns to normal behavior. + +--- + +## Summary + +The FabledSkyblock compat module: + +- Protects island economies +- Enforces island permission rules +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is strongly recommended for any server running FabledSkyblock. \ No newline at end of file diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md index 58e38580d4..303a933e8a 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md @@ -2,17 +2,17 @@ :::info -找不到在哪里下载JAR? [点击这里](../faq/where-addons-compacts-at.md). [Click here](../faq/where-addons-compacts-at.md). +找不到在哪里下载JAR? [点击这里](../faq/where-addons-compacts-at.md). [Click here](../faq/where-addons-compacts-at). ::: -GreifPrevention 兼容模块添加了与 GF 的兼容性。 +GreifPrevention compatibility module added compatibility with GF. ## How does it work 此模块允许 QuickShop-Hikari 检查玩家是否有权限在特定区域创建或使用 QuickShop。 -And delete shops when claim removed, untrusted, unclimed, expired, resized or subclaim created. +And delete shops when claim removed, untrusted, unclaimed, expired, resized or subclaim created. ## 配置 diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md new file mode 100644 index 0000000000..e71b34d462 --- /dev/null +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md @@ -0,0 +1,139 @@ +# HuskTowns + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and HuskTowns. + +It ensures that shop creation and trading respect town and claim permissions defined by HuskTowns. + +--- + +## What Does It Do? + +HuskTowns allows players to create towns and claim land. + +Without compatibility: + +- Players could create shops inside towns they do not belong to. +- Visitors might trade inside protected towns. +- Town permission rules might not apply to shop interactions. + +The HuskTowns compat module ensures that: + +- Shop creation respects town ownership. +- Trading follows town permission settings. +- Town members and visitors are handled correctly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a HuskTowns claim. +- Whether the player is a town member, trusted player, or outsider. +- Whether the town's permission settings allow the action. + +If the action is not permitted by town rules, QuickShop blocks it. + +Outside of town claims, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Town Owner Control + +With this module enabled: + +- Town owners can create and manage shops inside their town. +- Town members follow town-based permission settings. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect town claim protection. + +This prevents unauthorized shop placement and trading inside protected towns. + +--- + +## Installation + +1. Install HuskTowns. +2. Install the QuickShop HuskTowns compat module. +3. Restart your server. + +The module activates automatically if HuskTowns is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside towns +whitelist-mode: false + +# Allow town owners to override shop permissions +allow-owner-override: true +``` + +If HuskTowns is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For town-based survival servers: + +- Restrict shop creation to town members. +- Allow trading only where town permissions permit. +- Prevent shop creation in wilderness if desired. +- Enable owner override for better administrative control. + +This helps maintain town-based economic balance. + +--- + +## Common Questions + +### Can players create shops in another town? + +Only if that town's permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You can allow or restrict shops outside towns. + +### What happens if HuskTowns is removed? + +QuickShop returns to normal behavior and stops checking town permissions. + +--- + +## Summary + +The HuskTowns compat module: + +- Enforces town-based land permissions +- Protects towns from unauthorized shop usage +- Integrates smoothly with HuskTowns +- Requires minimal setup + +It is recommended for any server running HuskTowns. \ No newline at end of file diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md new file mode 100644 index 0000000000..3fa2995eb0 --- /dev/null +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md @@ -0,0 +1,139 @@ +# IridiumSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and IridiumSkyblock. + +It ensures that shop creation and trading respect island boundaries and island permission settings defined by IridiumSkyblock. + +--- + +## What Does It Do? + +IridiumSkyblock allows players to create and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Visitors might trade inside protected islands. +- Island protection rules might not apply correctly to shops. + +The IridiumSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members and visitors are handled properly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside an IridiumSkyblock island. +- Whether the player is the island owner, member, or visitor. +- Whether island permissions allow shop interaction. + +If the action is not permitted, QuickShop blocks it. + +Outside of islands, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Island Owner Permissions + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow the island's permission configuration. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect island protection rules. + +This prevents unauthorized shop usage inside protected islands. + +--- + +## Installation + +1. Install IridiumSkyblock. +2. Install the QuickShop IridiumSkyblock compat module. +3. Restart your server. + +The module activates automatically if IridiumSkyblock is detected. + +No additional setup is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If IridiumSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most IridiumSkyblock servers: + +- Restrict shop creation to island owners. +- Allow island members to trade if trusted. +- Prevent shop creation in the void or wilderness. +- Enable owner override for better management. + +This helps maintain balanced island economies. + +--- + +## Common Questions + +### Can players create shops outside their island? + +Only if your configuration allows it. + +Most Skyblock servers restrict shops to island areas. + +### Do island ranks affect shop permissions? + +Yes, if your island permissions are configured to control interaction rights. + +QuickShop follows island rules. + +### What happens if IridiumSkyblock is removed? + +QuickShop returns to normal behavior and stops checking island permissions. + +--- + +## Summary + +The IridiumSkyblock compat module: + +- Protects island economies +- Enforces island-based permissions +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is recommended for any server running IridiumSkyblock. diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md new file mode 100644 index 0000000000..3b4726cb9d --- /dev/null +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md @@ -0,0 +1,151 @@ +# ItemMatcherPlus + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +The ItemMatcherPlus module improves how QuickShop matches custom and plugin-modified items. + +It allows QuickShop to properly recognize and stack items created by other plugins that normally would not match using standard Bukkit item comparisons. + +This module is especially useful for servers that use: + +- Custom items +- Modified metadata +- NBT-based systems +- Advanced crate rewards +- Custom brewing systems +- Custom fishing rewards + +--- + +## What Does It Do? + +By default, Minecraft item matching checks: + +- Material type +- Basic metadata + +However, many plugins modify items with: + +- Custom NBT data +- Hidden tags +- Custom lore formats +- Unique identifiers + +Without enhanced matching: + +- Items may not stack +- Shops may refuse valid items +- Transactions may fail +- Buying/selling may not behave correctly + +ItemMatcherPlus improves compatibility and matching accuracy. + +--- + +## Supported Plugins + +ItemMatcherPlus includes built-in support for: + +- AdvancedItems +- BreweryX +- CrazyCrates +- ExcellentCrates +- PyroFishing +- SilkSpawners + +If any of these plugins are installed, QuickShop will automatically use enhanced matching logic. + +No additional configuration is required. + +--- + +## How It Works + +When a player trades with a shop: + +1. QuickShop checks the item. +2. If ItemMatcherPlus is enabled, it performs advanced matching. +3. Plugin-specific metadata is validated. +4. The item is confirmed as a match (or rejected safely). + +This allows: + +- Proper stacking of custom items +- Correct shop transactions +- Accurate buy/sell detection +- Reduced false mismatches + +--- + +## Installation + +1. Download the ItemMatcherPlus module. +2. Place the JAR into your `plugins` folder. +3. Restart your server. + +If supported plugins are detected, compatibility activates automatically. + +--- + +## Configuration + +ItemMatcherPlus does not require configuration. + +It activates automatically when: + +- The module is installed +- A supported plugin is detected + +If a supported plugin is not installed, no extra logic runs. + +--- + +## Why You Should Use It + +You should install ItemMatcherPlus if your server uses: + +- Custom fishing plugins +- Custom brewing systems +- Crate plugins with modified items +- Custom spawners +- Any plugin that modifies NBT data + +Without it, shops may not properly recognize custom items. + +--- + +## Common Questions + +### Do I need this if I don't use custom item plugins? + +No. +If you only use vanilla items, this module is not necessary. + +### Does this affect performance? + +The module only activates enhanced matching when needed. + +Normal item matching remains fast and efficient. + +### Will it break existing shops? + +No. +It improves compatibility and matching accuracy without modifying existing shop data. + +--- + +## Summary + +ItemMatcherPlus: + +- Improves item matching accuracy +- Adds support for major custom item plugins +- Prevents stacking and trade issues +- Requires no configuration +- Activates automatically + +If you run a heavily customized economy server, this module is highly recommended. \ No newline at end of file diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md index afa0a3afaa..595a244821 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md @@ -2,13 +2,7 @@ :::info -找不到在哪里下载JAR? [点此](../faq/where-addons-compacts-at.md)。 [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -该拓展模块是在 6.0.0.0 之后的版本加入的。 +找不到在哪里下载JAR? [点此](../faq/where-addons-compacts-at.md)。 [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/lands.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/lands.md index ff8154f420..3b9b8adb3f 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/lands.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/lands.md @@ -2,7 +2,7 @@ :::info -找不到在哪里下载JAR? [点击这里](../faq/where-addons-compacts-at.md). [Click here](../faq/where-addons-compacts-at.md). +找不到在哪里下载JAR? [点击这里](../faq/where-addons-compacts-at.md). [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/openinv.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/openinv.md index 00e7067240..a40067d62d 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/openinv.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/openinv.md @@ -2,7 +2,7 @@ :::info -找不到在哪里下载JAR? [点击这里](../faq/where-addons-compacts-at.md). [Click here](../faq/where-addons-compacts-at.md). +找不到在哪里下载JAR? [点击这里](../faq/where-addons-compacts-at.md). [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md new file mode 100644 index 0000000000..c2136320b0 --- /dev/null +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md @@ -0,0 +1,138 @@ +# SimpleClaimSystem + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and SimpleClaimSystem. + +It ensures that shop creation and trading respect land ownership and claim permissions defined by SimpleClaimSystem. + +--- + +## What Does It Do? + +SimpleClaimSystem allows players to claim land and protect it from unauthorized interaction. + +Without compatibility: + +- Players could create shops inside claims they do not own. +- Visitors might trade inside protected areas. +- Claim protection might not apply correctly to shops. + +The SimpleClaimSystem compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops within their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a SimpleClaimSystem claim. +- Whether the player has permission within that claim. +- Whether claim rules allow shop interaction. + +If the action is not permitted by the claim, QuickShop blocks it. + +If the location is outside any claim, default QuickShop behavior applies. + +--- + +## Claim Owner Control + +With this module enabled: + +- Claim owners can create and manage shops inside their claim. +- Trusted players follow claim-based permissions. +- Visitors are restricted unless explicitly allowed. +- Claim protection rules apply automatically to shop interactions. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install SimpleClaimSystem. +2. Install the QuickShop SimpleClaimSystem compat module. +3. Restart your server. + +The module activates automatically if SimpleClaimSystem is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If SimpleClaimSystem is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Enable owner override for easier management. + +This ensures players maintain control over their protected land. + +--- + +## Common Questions + +### Can players create shops in someone else's claim? + +Only if claim permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can allow shops outside claims or restrict them. + +### What happens if SimpleClaimSystem is removed? + +QuickShop will revert to default behavior and stop checking claim permissions. + +--- + +## Summary + +The SimpleClaimSystem compat module: + +- Enforces claim-based permissions +- Prevents unauthorized shop creation +- Protects land from unwanted trading +- Requires minimal setup + +It is recommended for servers running SimpleClaimSystem. \ No newline at end of file diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md index 144951cdb3..a68c3abf1a 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md @@ -2,13 +2,7 @@ :::info -找不到在哪里下载JAR? [点此](../faq/where-addons-compacts-at.md)。 [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -该拓展模块是在 6.0.0.0 之后的版本加入的。 +找不到在哪里下载JAR? [点此](../faq/where-addons-compacts-at.md)。 [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/towny.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/towny.md index 07986cb1b6..bb4bda9923 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/towny.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/towny.md @@ -2,7 +2,7 @@ :::info -找不到在哪里下载JAR? [点击这里](../faq/where-addons-compacts-at.md). [Click here](../faq/where-addons-compacts-at.md). +找不到在哪里下载JAR? [点击这里](../faq/where-addons-compacts-at.md). [Click here](../faq/where-addons-compacts-at). ::: @@ -26,7 +26,7 @@ Town 子命令允许您在普通商店和城镇商店之间切换。 对于国家商店,店主将更改为由Towny创建的对应国家的假玩家,并使用该国家所指定的税收账户作为其税务帐户。 -All purchases will deposit or withdraw money from nation Towny account.\ +All purchases will deposit or withdraw money from nation Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. 如果启用了地皮类型限制,则只有特定的地皮类型才能创建国家商店。 @@ -35,7 +35,7 @@ At the same time, if the bank mode is enabled, the price will be forced to adjus 对于城镇商店,店主将更改为Towny创建的城镇的假玩家,并使用该城镇所指定的的税收帐户作为其税务账户。 -All purchases will deposit or withdraw money from town Towny account.\ +All purchases will deposit or withdraw money from town Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. 如果启用了地皮类型限制,则只有特定的地皮类型才能创建城镇商店。 @@ -88,7 +88,7 @@ At the same time, if the bank mode is enabled, the price will be forced to adjus ## 权限覆盖 -通过调整配置,您可以允许市长或国王自动授予其管理范围内所有商店的管理员权限。 +By adjust configuration, you're allow mayor or king automatically grant administrator permission on all shops in their management range. ```yaml #由市长授权设立商店管理员。 @@ -168,7 +168,7 @@ Because Essentials use username to lookup user account if API calls is username You can adjust the option in configuration to enable workaround. -NOTE: It will force turned on if detected EssentialsX installed on your server.\ +NOTE: It will force turned on if detected EssentialsX installed on your server. At present, we do not provide a method for disable it. ```yaml diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md new file mode 100644 index 0000000000..0189958495 --- /dev/null +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md @@ -0,0 +1,138 @@ +# UltimateClaims + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and UltimateClaims. + +It ensures that shop creation and trading respect land claim permissions managed by UltimateClaims. + +--- + +## What Does It Do? + +On servers using land-claim plugins, players protect areas of the world from unauthorized interaction. + +Without compatibility: + +- Players may create shops inside claims they do not own. +- Visitors might trade in areas where they should not. +- Claim protection rules might not apply correctly to shops. + +The UltimateClaims compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops inside their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a claim. +- Whether the player has permission in that claim. +- Whether claim rules allow shop interaction. + +If the action violates claim settings, QuickShop blocks it. + +Outside of claims, normal QuickShop behavior applies. + +--- + +## Claim Owner Permissions + +With this module enabled: + +- Claim owners can create and manage shops within their claim. +- Trusted players follow claim permission settings. +- Visitors are restricted based on claim configuration. +- Shop actions outside of claims behave normally. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install UltimateClaims. +2. Install the QuickShop UltimateClaims compat module. +3. Restart your server. + +If UltimateClaims is detected on startup, compatibility activates automatically. + +No additional linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Common options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If UltimateClaims is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Keep owner override enabled for better control. + +This ensures players maintain full control over their protected land. + +--- + +## Common Questions + +### Can players create shops inside someone else's claim? + +Only if the claim permissions allow it. + +Otherwise, QuickShop will block the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can choose to restrict shops to claimed land only. + +### What happens if UltimateClaims is removed? + +QuickShop returns to normal behavior without claim checks. + +--- + +## Summary + +The UltimateClaims compat module: + +- Protects claimed land from unauthorized shop usage +- Enforces claim-based permissions +- Integrates smoothly with land-claim servers +- Requires minimal setup + +It is recommended for any server running UltimateClaims. \ No newline at end of file diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md index 4896b566e6..80a1fb059a 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md @@ -2,8 +2,10 @@ :::info -找不到在哪里下载JAR? [点击这里](../faq/where-addons-compacts-at.md). [Click here](../faq/where-addons-compacts-at.md). +找不到在哪里下载JAR? [点击这里](../faq/where-addons-compacts-at.md). [Click here](../faq/where-addons-compacts-at). ::: -简单的拓展模块,可以在编辑区内一并删除商店,防止诸如幽灵商店等问题的出现。 +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. Find out more [here](../modules/shops/worldedit.md). + +简单的拓展模块,可以在编辑区内一并删除商店,防止诸如幽灵商店等问题的出现。 \ No newline at end of file diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/development/01-getting-start.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/development/01-getting-start.md index 9aeb270c87..fb1b1eeeba 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/development/01-getting-start.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/development/01-getting-start.md @@ -6,9 +6,8 @@ Hello! 你好呀~ 欢迎来到QuickShop-Hikari的开发者社区! ## License -QuickShop-Hikari 以 [GPLv3协议](https://www.gnu.org/licenses/quick-guide-gplv3.en.html) 许可证开源,你可以随时在 [Github 页面](https://github.com/QuickShop-Community/QuickShop-Hikari) 浏览本项目的源码。\ -你可以自由修改或使用 QuickShop-Hikari 任意部分的代码,但前提是遵守 GPLv3 协议。\ -You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the GPLv3 agreement. +QuickShop-Hikari is open source using the [AGPLv3](https://www.gnu.org/licenses/agpl-3.0.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari). +You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the AGPLv3 agreement. ## 🚧不要太相信 Javadoc @@ -49,7 +48,7 @@ QuickShop-Hikari 将操作源分为三种类型: - 服务器主线程 - 异步线程(任何其他线程,但不包括服务器主线程) -- Hybird +- Hybrid 如果通过错误的线程访问 API,QuickShop-Hikari 将强制性显示运行错误。 @@ -59,4 +58,4 @@ QuickShop-Hikari 将操作源分为三种类型: 你可以浏览 [Util.ensureThread()](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/3d1d271e1106ea1c83cc6068f8232ab7c7860918/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/util/Util.java#L351) 并通过查找用法得出不同 API 的使用条件。 默认情况下,允许从任何线程调用不使用 Util.ensureThread() 的 API。 APIs that do not use Util.ensureThread() are allowed to be called from any thread by default. -您不应绕过此限制,我们只是在必要时添加此检查,它是插件性能和服务器稳定性的最基本保证。 如果您触发了线程检查,请使用调度器来完成您的任务。 +您不应绕过此限制,我们只是在必要时添加此检查,它是插件性能和服务器稳定性的最基本保证。 如果您触发了线程检查,请使用调度器来完成您的任务。 \ No newline at end of file diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md index 7406031245..5a6e26137a 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md @@ -10,8 +10,8 @@ ShopManager manager = api.getShopManager(); ## 获取商店 -Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates.\ -因为 Minecraft 有一个特殊的“大型箱子”,我们不能直接通过坐标绘制商店分布地图。\ +Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates. +因为 Minecraft 有一个特殊的“大型箱子”,我们不能直接通过坐标绘制商店分布地图。 QuickShop-Hikari 的商店只会与半个“大型箱子”绑定,所以若要获取商店信息,你需要找到箱子方块本身,以及与其相连的另一个箱子。 好消息是,插件内置了一个 API,能快速处理这种情况。 @@ -72,8 +72,8 @@ manager.deleteShop(shop) // 从内存与数据库中完全删除此商店 ## 识别商店 -Please note that store locations are technically variable and you should not use coordinates to identify a store.\ -需要注意的是,商店位置是一种内部变量,且不应通过坐标查找商店。\ +Please note that store locations are technically variable and you should not use coordinates to identify a store. +需要注意的是,商店位置是一种内部变量,且不应通过坐标查找商店。 另外,RuntimeRandomUniqueId 不应用于识别商店,因为正如其名称所述,它的值会在服务器每次重启时刷新,因此它应当只用于玩家与服务器交互时的场景。 ```java diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md index 8f29346dcf..77abc1b66a 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md @@ -1,7 +1,7 @@ # 0x05 分商店权限 -QuickShop-Hikari 有一个分商店管理权限的系统。\ -因此,直接对权限进行判断是不够的,你还需要进行一些额外的检查。\ +QuickShop-Hikari 有一个分商店管理权限的系统。 +因此,直接对权限进行判断是不够的,你还需要进行一些额外的检查。 Therefore, for a normal permission node check is not enough, you need to attach an additional check. ## 检查商店 diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/development/06-protocol-system.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/development/06-protocol-system.md index 5d37a15536..0380b789f9 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/development/06-protocol-system.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/development/06-protocol-system.md @@ -15,30 +15,30 @@ This documentation will guide developers through the components, implementation - **Purpose**: Manages packet handling and initialization logic. - **Interface**: `PacketHandler` - **Key Methods**: - - `Map> factories()` - - Retrieves a map of supported `PacketFactory` instances keyed by game versions. - - `void initialize()` - - Initializes the packet handler. - - `Optional> factory(String version)` - - Retrieves a `PacketFactory` for a specific game version. + - `Map> factories()` + - Retrieves a map of supported `PacketFactory` instances keyed by game versions. + - `void initialize()` + - Initializes the packet handler. + - `Optional> factory(String version)` + - Retrieves a `PacketFactory` for a specific game version. ### 2. **PacketFactory** - **Purpose**: Creates and sends specific packet types. - **Interface**: `PacketFactory` - **Supported Packets**: - - **Spawn Packet**: - - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. - - Example Use: Representing shop items visually. - - **Metadata Packet**: - - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. - - Example Use: Updating item display name or properties. - - **Velocity Packet**: - - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. - - Example Use: Custom animations for virtual items. - - **Destroy Packet**: - - Removes the entity from the client view. Created using `createDestroyPacket()`. - - Example Use: Unloading or removing a virtual display item. + - **Spawn Packet**: + - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. + - Example Use: Representing shop items visually. + - **Metadata Packet**: + - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. + - Example Use: Updating item display name or properties. + - **Velocity Packet**: + - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. + - Example Use: Custom animations for virtual items. + - **Destroy Packet**: + - Removes the entity from the client view. Created using `createDestroyPacket()`. + - Example Use: Unloading or removing a virtual display item. Developers implementing custom `PacketFactory` should ensure these packets are correctly handled and optimized for performance. @@ -46,24 +46,24 @@ Developers implementing custom `PacketFactory` should ensure these packets are c - **Purpose**: Oversees the lifecycle of virtual display items and integrates with packet handlers. - **Key Features**: - - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). - - Manages virtual display items mapped to chunks. - - Provides thread-safe operations for adding and removing display items. + - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). + - Manages virtual display items mapped to chunks. + - Provides thread-safe operations for adding and removing display items. ### 4. **VirtualDisplayItem** - **Purpose**: Represents a virtual item displayed to players. - **Key Features**: - - Generates and caches packets for spawning, metadata, velocity, and destruction. - - Manages packet senders for each player. - - Handles spawn and removal operations dynamically. + - Generates and caches packets for spawning, metadata, velocity, and destruction. + - Manages packet senders for each player. + - Handles spawn and removal operations dynamically. ### 5. **ProtocolLibHandler and PacketEventsHandler** - **Purpose**: Provide implementations of `PacketHandler` using ProtocolLib and PacketEvents, respectively. - **Differences**: - - `ProtocolLibHandler` leverages ProtocolLib API. - - `PacketEventsHandler` uses the PacketEvents library. + - `ProtocolLibHandler` leverages ProtocolLib API. + - `PacketEventsHandler` uses the PacketEvents library. --- @@ -140,11 +140,11 @@ public class CustomPacketFactory implements PacketFactory { Packet factories are provided for specific game versions through two primary implementations: - **ProtocolLib**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` - **PacketEvents**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` --- diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md new file mode 100644 index 0000000000..aebc035f87 --- /dev/null +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md @@ -0,0 +1,297 @@ +# Interaction System (Developer Guide) + +The Interaction System allows developers to fully customize how players interact with shops. + +As of 6.2.0.11, the system has been redesigned to be: + +- Modular +- Extensible +- Thread-safe +- Fully customizable by third-party addons + +This guide will walk you through: + +1. What the Interaction System is +2. Getting the `InteractionManager` +3. Understanding `InteractionType` +4. Understanding `InteractionBehavior` +5. Registering custom interactions +6. Best practices + +--- + +# Overview + +The Interaction System is composed of three main components: + +| Component | Purpose | +| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| `InteractionType` | Describes **what kind of click happened** (standing, sneaking, left-click, sign, shopblock, etc.) | +| `InteractionBehavior` | Describes **what action should happen** when that type is triggered | +| `InteractionManager` | Central registry that manages interactions and behaviors | + +This separation allows developers to: + +- Add new click types +- Add new behaviors +- Override existing ones +- Extend QuickShop without modifying core code + +--- + +# Getting the InteractionManager + +To begin registering custom interactions, you must retrieve the `InteractionManager` instance. + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +If you are working directly with the plugin instance: + +```java +InteractionManager manager = QuickShop.getInstance().getInteractionManager(); +``` + +Once obtained, you can: + +- Register new interaction types +- Register new behaviors +- Override existing behaviors + +--- + +# Understanding InteractionType + +`InteractionType` represents **how** a player interacted with a shop. + +Examples include: + +- `STANDING_LEFT_CLICK_SIGN` +- `STANDING_RIGHT_CLICK_SHOPBLOCK` +- `SNEAKING_LEFT_CLICK_CONTAINER` +- etc. + +Each `InteractionType` defines: + +- Player stance (standing/sneaking) +- Click type (left/right) +- Target (sign/shopblock/container) + +InteractionTypes do NOT define behavior — they only define the trigger. + +--- + +# Understanding InteractionBehavior + +`InteractionBehavior` defines **what happens** when an interaction is triggered. + +Examples of built-in behaviors: + +- `TRADE_INTERACTION` +- `TRADE_UI` +- `CONTROL_PANEL` +- `CONTROL_PANEL_UI` +- `NONE` + +A behavior: + +- Executes logic +- May open GUIs +- May send chat panels +- May directly trade items +- Can cancel or modify flow + +This separation makes it easy to reuse behaviors across multiple interaction types. + +--- + +# Registering Custom Interactions + +There are two things you can register: + +- A custom `InteractionType` +- A custom `InteractionBehavior` + +--- + +## Creating a Custom InteractionBehavior + +Create a class implementing `InteractionBehavior`. + +Example: + +```java +public class MyTradeBehavior implements InteractionBehavior { + + @Override + public String getKey() { + return "MY_CUSTOM_TRADE"; + } + + @Override + public void execute(InteractionClick click) { + Player player = click.getPlayer(); + Shop shop = click.getShop(); + + player.sendMessage("You triggered my custom interaction!"); + + // Add your custom logic here + } +} +``` + +Then register it: + +```java +InteractionManager manager = api.getInteractionManager(); +manager.behavior(new MyTradeBehavior()); +``` + +Now your behavior is available for use. + +--- + +## Creating a Custom InteractionType + +You may also register custom interaction types if you want to introduce new trigger definitions. + +Example: + +```java +public class MyCustomInteraction implements InteractionType { + + @Override + public String getKey() { + return "STANDING_DOUBLE_CLICK_SIGN"; + } + + @Override + public boolean matches(InteractionClick click) { + // Define custom logic to detect this interaction + return click.isStanding() + && click.isSign() + && click.isDoubleClick(); + } +} +``` + +Register it: + +```java +manager.interaction(new MyCustomInteraction()); +``` + +--- + +# Binding Types to Behaviors + +The InteractionManager internally maps interaction types to behaviors based on configuration and registration order. + +Once your behavior is registered: + +- It can be referenced in `interaction.yml` +- Or attached programmatically + +Example interaction.yml usage: + +```yaml +STANDING_LEFT_CLICK_SIGN: MY_CUSTOM_TRADE +``` + +--- + +# The InteractionClick Object + +When your behavior executes, you receive an `InteractionClick` object. + +It provides: + +- `getPlayer()` +- `getShop()` +- `getLocation()` +- `isSneaking()` +- `isSign()` +- `isShopBlock()` +- etc. + +This gives full context for safe execution. + +--- + +# Advanced: Overriding Built-in Behavior + +If you register a behavior using the same key as an existing one, your behavior can override the default. + +⚠️ Be careful when doing this — you are replacing core functionality. + +--- + +# Best Practices + +### Always Use Unique Keys + +Avoid naming collisions: + +``` +MYPLUGIN_CUSTOM_BEHAVIOR +``` + +### Keep Behavior Lightweight + +Do not block the main thread with: + +- Heavy database calls +- File IO +- Network calls + +Use async tasks if needed. + +### Respect Permissions + +Always validate: + +```java +if (!player.hasPermission("myplugin.use")) { + return; +} +``` + +### Avoid Hard Overrides Unless Necessary + +Instead of replacing built-in behaviors, consider extending them. + +--- + +# Example: Full Minimal Implementation + +```java +public class ExampleAddon { + + public void register(QuickShopAPI api) { + + InteractionManager manager = api.getInteractionManager(); + + manager.behavior(new MyTradeBehavior()); + manager.interaction(new MyCustomInteraction()); + } +} +``` + +--- + +# Conclusion + +The Interaction System is designed to allow: + +- Full extensibility +- Clean separation of triggers and actions +- Easy integration for third-party developers + +By retrieving the `InteractionManager`: + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +You gain full control over how shops respond to player actions. \ No newline at end of file diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/development/08-tax-manager.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/development/08-tax-manager.md new file mode 100644 index 0000000000..72a56f9e88 --- /dev/null +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/development/08-tax-manager.md @@ -0,0 +1,266 @@ +# Tax System (Developer Guide) + +The QuickShop tax system allows server owners and developers to define how transaction taxes are calculated, distributed, and extended. + +As of 6.2.0.11, the tax system has been fully rewritten to provide: + +- A flexible TaxManager +- Pluggable TaxProvider support +- Progressive taxation +- Tax targeting (shop owner, interacting player, or both) +- Custom extension capability for third-party addons + +This guide explains how to work with the tax system programmatically. + +--- + +# Overview + +The tax system is composed of three core components: + +TaxManager +Responsible for coordinating tax calculation and execution. + +TaxProvider +Defines how tax values are calculated. + +TaxRates +Represents calculated tax results for a transaction. + +The system is designed to allow custom providers to be registered and used without modifying core logic. + +--- + +# Getting the TaxManager + +To work with the tax system, retrieve the TaxManager from the ShopManager. + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +Once obtained, you can: + +- Access current tax configuration +- Register custom tax providers +- Calculate tax values +- Hook into tax events + +--- + +# How the Tax System Works + +During a shop transaction: + +1. A base price is determined. +2. The TaxManager selects the active TaxProvider. +3. The TaxProvider calculates applicable tax. +4. A TaxRates object is produced. +5. The system applies the tax to: + + - Shop owner + - Interacting player + - Or both (depending on configuration) + +This architecture allows tax behavior to be modified without altering transaction logic. + +--- + +# TaxProvider + +A TaxProvider defines how tax values are calculated. + +You may create your own provider to implement: + +- Progressive tax brackets +- Flat percentage tax +- Conditional tax rules +- Region-based tax +- Rank-based tax +- Time-based tax + +Example minimal provider: + +```java +public class MyCustomTaxProvider implements TaxProvider { + + @Override + public TaxRates calculateTax(TaxContext context) { + + double basePrice = context.getPrice(); + + double taxAmount = basePrice * 0.05; // 5% flat tax + + return new TaxRates() + .ownerTax(taxAmount) + .buyerTax(0.0); + } +} +``` + +Then register it: + +```java +taxManager.provider(new MyCustomTaxProvider()); +``` + +Once registered, your provider will be used for tax calculations. + +--- + +# TaxRates + +TaxRates represents the result of a tax calculation. + +It typically contains: + +- Owner tax amount +- Buyer tax amount +- Total tax impact +- Metadata (if applicable) + +The transaction system will read from TaxRates and apply deductions accordingly. + +--- + +# Progressive Taxation + +The built-in system supports progressive tax structures. + +This allows server administrators to tax based on: + +- Player balance +- Shop owner balance +- Configured tax brackets + +Example configuration concept: + +- 0–10,000 balance → 1% tax +- 10,000–100,000 → 2% tax +- 100,000+ → 3% tax + +Developers can extend or override this logic inside a custom TaxProvider. + +--- + +# Targeting Tax + +The new tax system allows taxes to be applied to: + +- Shop owner +- Interacting player +- Both + +This is controlled via configuration, but custom providers can override distribution logic by adjusting TaxRates output. + +Example: + +```java +return new TaxRates() + .ownerTax(basePrice * 0.02) + .buyerTax(basePrice * 0.01); +``` + +--- + +# Registering a Custom TaxProvider + +To replace or extend tax logic: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); + +taxManager.provider(new MyCustomTaxProvider()); +``` + +You may register only one primary provider at a time. If multiple providers are needed, implement internal delegation within your custom provider. + +--- + +# Tax Events + +The tax system integrates with the event system. + +The modern event used is: + +ShopEnhancedTaxEvent + +This replaces legacy tax events and provides improved context, including: + +- Transaction builder reference +- TaxRates object +- Modification capability before final execution + +You can listen for the event and modify tax behavior dynamically: + +```java +@EventHandler +public void onTax(ShopEnhancedTaxEvent event) { + + TaxRates rates = event.getTaxRates(); + + // Example: Give VIP players reduced owner tax + if (event.getOwner().hasPermission("vip.tax.discount")) { + rates.ownerTax(rates.getOwnerTax() * 0.5); + } +} +``` + +--- + +# Best Practices + +Always keep tax calculations lightweight. + +Avoid: + +- Heavy database queries inside calculateTax +- Blocking network calls +- Long-running computations + +If complex logic is required, pre-cache required data outside the tax execution path. + +Ensure negative tax values are not returned unless intentional. + +Always validate final amounts before applying modifications. + +Respect configuration hierarchy unless intentionally overriding it. + +--- + +# Example Full Implementation + +```java +public class ExampleTaxAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + TaxManager taxManager = manager.taxManager(); + + taxManager.provider(new MyCustomTaxProvider()); + } +} +``` + +--- + +# Conclusion + +The new tax system is designed for: + +- Flexibility +- Extensibility +- Clean separation of concerns +- Future expansion + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +You gain full control over how QuickShop calculates and applies tax during transactions. \ No newline at end of file diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/development/09-layout-provider.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/development/09-layout-provider.md new file mode 100644 index 0000000000..55e3cd3e91 --- /dev/null +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/development/09-layout-provider.md @@ -0,0 +1,275 @@ +# Shop Layout Provider (Developer Guide) + +The Shop Layout Provider system allows developers to customize how shop signs are structured and rendered. + +As of 6.2.0.11, shop layouts are no longer hardcoded. Instead, they are controlled through the `IShopLayoutProvider` interface, which allows: + +- Custom sign line ordering +- Per-shop-type layouts (BUYING, SELLING, FROZEN, or custom types) +- Dynamic layout resolution +- Complete replacement of the default layout system + +This guide explains how to access, override, and implement a custom layout provider. + +--- + +# Overview + +The layout provider controls how shop sign lines are arranged. + +Instead of hardcoding: + +Line 1 → Header +Line 2 → Trading info +Line 3 → Item +Line 4 → Price + +The system now allows full customization through: + +- Config-based layout definitions +- Custom `IShopLayoutProvider` implementations +- Runtime overrides + +The default implementation is `SimpleShopLayoutProvider`. + +--- + +# Accessing the Layout Provider + +To retrieve the current layout provider: + +```java +ShopManager manager = api.getShopManager(); +IShopLayoutProvider provider = manager.shopLayoutProvider(); +``` + +To replace the layout provider with a custom one: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Once replaced, your implementation will control how shop layouts are generated. + +--- + +# Understanding IShopLayoutProvider + +`IShopLayoutProvider` defines how layout data is retrieved and resolved. + +It is responsible for: + +- Providing layout configuration per shop type +- Determining which layout to use +- Supplying formatted line keys +- Allowing future extensibility + +The default implementation reads layout definitions from configuration and applies them based on shop type. + +--- + +# Default Layout Example + +The default configuration-based layout looks like this: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +Each line maps to a layout component key. + +An empty string (`""`) leaves that line blank. + +The layout provider resolves these keys into actual sign content. + +--- + +# Creating a Custom Layout Provider + +To override the default behavior, implement `IShopLayoutProvider`. + +Example minimal implementation: + +```java +public class MyCustomLayoutProvider implements IShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + + ShopLayout layout = new ShopLayout(); + + layout.setLine(1, "Custom Header"); + layout.setLine(2, "Owner: " + shop.getOwnerName()); + layout.setLine(3, shop.getItem().getType().name()); + layout.setLine(4, "$" + shop.getPrice()); + + return layout; + } +} +``` + +Then register it: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Your layout will now control all shop sign formatting. + +--- + +# Per-Type Layout Control + +Because the system no longer depends on the legacy ShopType enum, layouts can support: + +- Built-in types (BUYING, SELLING, FROZEN) +- Custom shop types +- Addon-defined shop types + +Your provider can determine layout logic dynamically: + +```java +@Override +public ShopLayout provideLayout(Shop shop) { + + if (shop.getShopType().key().equals("FROZEN")) { + return frozenLayout(shop); + } + + return defaultLayout(shop); +} +``` + +This allows conditional formatting, localization adjustments, or special event styling. + +--- + +# Advanced Customization + +A custom layout provider can: + +- Pull data from external plugins +- Inject dynamic placeholders +- Modify layout per player +- Apply formatting logic +- Override color schemes +- Apply region-based formatting +- Implement animated sign systems + +Because the layout provider is resolved at runtime, you can compute layouts dynamically instead of reading static config. + +--- + +# Replacing vs Extending the Default Provider + +You have two options: + +Replace entirely: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Or extend the default implementation: + +```java +public class ExtendedLayoutProvider extends SimpleShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + ShopLayout base = super.provideLayout(shop); + + base.setLine(1, "[Extended] " + base.getLine(1)); + + return base; + } +} +``` + +Extending is safer if you only want to modify small portions. + +--- + +# Best Practices + +Keep layout generation lightweight. + +Avoid: + +- Heavy database queries +- Blocking IO +- Complex network calls + +Layout generation runs during shop updates and sign refresh events. + +Always handle null values safely. + +Ensure layout line count does not exceed sign limits. + +Avoid hardcoding shop type names unless necessary. + +If your layout supports custom shop types, validate their keys properly. + +--- + +# Example Full Registration + +```java +public class LayoutAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + + manager.shopLayoutProvider(new MyCustomLayoutProvider()); + } +} +``` + +--- + +# Conclusion + +The Shop Layout Provider system allows complete control over shop sign structure. + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +``` + +And setting: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +You can redefine how every shop is displayed on the server. + +This system was designed to support: + +- Extensibility +- Custom shop types +- Localization +- Dynamic formatting +- Future expansion \ No newline at end of file diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/faq/compare-reremake.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/faq/compare-reremake.md index fe1632287b..6b39f02520 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/faq/compare-reremake.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/faq/compare-reremake.md @@ -1,70 +1,70 @@ -# Hikari 和 Reremake 之间的差异 +# Differences between Hikari and Reremake -如果你是 Reremake 用户,你可能会对 Hikari 和 Reremake 之间的差异感到困惑。 +If you are a Reremake user, you may be confused about the differences between Hikari and Reremake. -## 对比 +## Comparison -✔️ = 完全支持\ -✔️ + = 增强的充分支持\ -❌ = 不支持\ -⚠️ = 部分支持(或不支持) +✔️ = Full Support\ +✔️+ = Enhanced full support\ +❌ = Unsupported\ +⚠️ = Partial Support (or doesn't work) -| 功能介绍 | Reremake | Hikari | -| ------------------------------------------------------------------------ | ------------------------ | ------------------------ | -| Minecraft版本兼容性 | 1.15+ | 1.20+ | -| 简单的交互 | ✔️ | ✔️ | -| 完全自定义交互 | ❌ | ✔️ | -| NBT | ✔️ | ✔️ | -| Potions | ✔️ | ✔️ | -| 附魔(或书) | ✔️ | ✔️ | -| Item Damage | ✔️ | ✔️ | -| Mob Eggs | ✔️ | ✔️ | -| 大箱子 | ✔️ | ✔️ | -| 带有自定义模型数据的物品 | ✔️ | ✔️ | -| [系统商店(无限商店)](../modules/shops/adminshop.md) | ✔️ | ✔️ | -| [黑名单](../modules/shops//blacklist.md) | ✔️ | ✔️+ | -| DoubleChest | ✔️ | ✔️ | -| [物品预览](../modules/shops/shop-basic.md#preview-the-item) | ✔️ | ✔️ | -| [本地化](../modules/localization.md) | ✔️ | ✔️ | -| 客户端语言本地化适应 | ✔️ | ✔️ | -| 本地化格式 | MineDown | MiniMessage | -| [物品查找(/qs find)](../modules/shops/shop-search.md) | ✔️ | ⚠️ | -| 控制面板 | ✔️ | ✔️ | -| 1.14+ 牌子 | ✔️ | ✔️ | -| [多货币](../modules/multi-currency.md) | ✔️ | ✔️ | -| [保护检查](../modules/shops/protection-checker.md) | ✔️ | ✔️+ | -| [商店分成](../modules/shops/benefit.md) | ❌ | ✔️ | -| [虚拟悬浮物](../modules/shops/display-system.md) | ✔️ | ✔️ | -| [每个商店的权限管理](../modules/shops/per-shop-perms-management.md) | ❌ | ✔️ | -| [价格限制](../modules/shops/price-system.md) | ✔️ | ✔️+ | -| [商店保护](../modules/shops/protection.md) | ✔️ | ✔️ | -| [等级](../modules/shops/ranks.md) | ✔️ | ✔️ | -| 多个商店方块 | ✔️ | ✔️ | -| [商店费用](../modules/shops/shop-fees.md) | ✔️ | ✔️+ | -| [商店删除器](../modules/shops/shop-purger.md) | ✔️ | ✔️ | -| [堆叠商店](../modules/shops/stacking-shop.md) | ✔️ | ✔️ | -| [命令别名](../modules/cmd-alias.md) | ✔️ | ✔️ | -| [物品引用 (物品查找)](../modules/item-ref.md) | ❌ | ✔️ | -| [Shop History](../modules/shops/shop-history.md) | ❌ | ✔️ | -| [经济格式化](../modules/economy-formatter.md) | ✔️ | ✔️ | -| [数据库备份 (导出/导入)](../modules/datasource.md) | ⚠️ | ✔️ | -| [数据库类型](../modules/datasource.md) | MySQL/SQLite | MySQL/H2 | -| [本地化](../modules/localization.md) | Bundled+Crowdin+Override | Bundled+Crowdin+Override | -| [每个玩家商店牌子信息本地化](../modules/shops/per-shop-perms-management.md) | ⚠️ | ✔️ | -| 声音和效果 | ✔️ | ✔️ | -| [交易系统](../modules/transaction-system.md) | ⚠️ (实际上根本不起作用) | ✔️+ | -| Jar 数字签名和完整性检查自我保护 | ✔️ | ❌ | -| 自动调整服务器配置 | ✔️ | ❌ | -| 附魔过滤器 | ❌ | ✔️ | -| 在单个方块中进行交易 | ❌ | ❌ | -| [Interaction Manager](../modules/interaction) | ❌ | ✔️ | -| [Freeze Mode](../modules/shops/shop-basic.md#turn-a-shop-to-freeze-mode) | ❌ | ✔️ | -| Folia Support | ❌ | ✔️ | +| Features | Reremake | Hikari | +| --------------------------------------------------------------------------------------- | ------------------------------------------------------- | ------------------------ | +| Minecraft version compatibility | 1.15+ | 1.20+ | +| Simple interaction | ✔️ | ✔️ | +| Full customize interaction | ❌ | ✔️ | +| NBT | ✔️ | ✔️ | +| Potions | ✔️ | ✔️ | +| Enchantment (or Book) | ✔️ | ✔️ | +| Item Damage | ✔️ | ✔️ | +| Mob Eggs | ✔️ | ✔️ | +| Shulker Boxes | ✔️ | ✔️ | +| Item with Custom Model Data | ✔️ | ✔️ | +| [AdminShop (Unlimited Shop)](../modules/shops/adminshop.md) | ✔️ | ✔️ | +| [BlackList](../modules/shops//blacklist.md) | ✔️ | ✔️+ | +| DoubleChest | ✔️ | ✔️ | +| [Item Preview](../modules/shops/shop-basic.md#preview-the-item) | ✔️ | ✔️ | +| [Localization](../modules/localization.md) | ✔️ | ✔️ | +| Localization client adaptation | ✔️ | ✔️ | +| Localization Format | MineDown | MiniMessage | +| [Item Find (/qs find)](../modules/shops/shop-search.md) | ✔️ | ⚠️ | +| Chat Control Panel | ✔️ | ✔️ | +| 1.14+ Signs | ✔️ | ✔️ | +| [Multi-Currency](../modules/multi-currency.md) | ✔️ | ✔️ | +| [Protection Checker](../modules/shops/protection-checker.md) | ✔️ | ✔️+ | +| [Shop Benefits](../modules/shops/benefit.md) | ❌ | ✔️ | +| [Virtual DisplayItem](../modules/shops/display-system.md) | ✔️ | ✔️ | +| [Per shop permission management](../modules/shops/per-shop-perms-management.md) | ❌ | ✔️ | +| [Price Limiter](../modules/shops/price-system.md) | ✔️ | ✔️+ | +| [Shop Protection](../modules/shops/protection.md) | ✔️ | ✔️ | +| [Ranks](../modules/shops/ranks.md) | ✔️ | ✔️ | +| Multiple shop blocks | ✔️ | ✔️ | +| [Shop Fees](../modules/shops/shop-fees.md) | ✔️ | ✔️+ | +| [Shop Purger](../modules/shops/shop-purger.md) | ✔️ | ✔️ | +| [Stacking Shop](../modules/shops/stacking-shop.md) | ✔️ | ✔️ | +| [Command Alias](../modules/cmd-alias.md) | ✔️ | ✔️ | +| [Item Reference (Item Lookup)](../modules/item-ref.md) | ❌ | ✔️ | +| [Shop History](../modules/shops/shop-history.md) | ❌ | ✔️ | +| [Economy Formatter](../modules/economy-formatter.md) | ✔️ | ✔️ | +| [Database Backup (Exporter/Importer)](../modules/datasource.md) | ⚠️ | ✔️ | +| [Database Type](../modules/datasource.md) | MySQL/SQLite | MySQL/H2 | +| [Localization](../modules/localization.md) | Bundled+Crowdin+Override | Bundled+Crowdin+Override | +| [Per player shop info sign localization](../modules/shops/per-shop-perms-management.md) | ⚠️ | ✔️ | +| Sounds And Effects | ✔️ | ✔️ | +| [Transaction System](../modules/transaction-system.md) | ⚠️ (It doesn't work at all actually) | ✔️+ | +| Jar digital signature and integrity check self-protection | ✔️ | ❌ | +| Automatically adjust server configs | ✔️ | ❌ | +| Enchantments Filter | ❌ | ✔️ | +| Buy & Sell in single block | ❌ | ❌ | +| [Interaction Manager](../modules/interaction) | ❌ | ✔️ | +| [Freeze Mode](../modules/shops/shop-basic.md#turn-a-shop-to-freeze-mode) | ❌ | ✔️ | +| Folia Support | ❌ | ✔️ | -## 我应该使用哪一个? +## Which one should I use? Well, it depends on what your needs are.\ -If you have an old server (<1.20) instance, Reremake is your only choice.\ +If you have an old server ({'<'}1.20) instance, Reremake is your only choice.\ ~~If you are in China which has GFW interfere, you also should consider Reremake because it doesn't need to load libraries from Global Internet.~~ Solved in 6.0.0.0. -如果所有这些都不适用,请尝试Hikari! +If none of these applies, give Hikari a try! diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md index 8ccb1ec9ac..440194a5b7 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md @@ -1,8 +1,8 @@ # Where Addons/Compacts is -附加组件和兼容性模块与QuickShop-Hikari一起发布,您可以在版本页面找到它们。 +Addons and Compatibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. -- Open Modrinth versions page, locate the version your're using. 打开 Modrinth 版本页面,找到您正在使用的版本。 或使用 [最新版本](https://modrinth.com/plugin/quickshop-hikari/version/) +- Open Modrinth versions page, locate the version you're using. 打开 Modrinth 版本页面,找到您正在使用的版本。 或使用 [最新版本](https://modrinth.com/plugin/quickshop-hikari/version/) - Frantically slide your mouse wheel down until the lowest end of the page. - 成了! diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/internal/database-schema.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/internal/database-schema.md index 89c263367e..6e6ab6911f 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/internal/database-schema.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/internal/database-schema.md @@ -4,21 +4,21 @@ ## 数据表 -This section explains the database tables created by QuickShop-Hikari.\ -Unless otherwise specified, the initial `qs_` in table name is the table prefix.\ -该部分解释了 QuickShop-Hikari 创建的数据库表\ -除非特别注明,表内默认的 `qs_` 即为表前缀。\ +This section explains the database tables created by QuickShop-Hikari. +Unless otherwise specified, the initial `qs_` in table name is the table prefix. +该部分解释了 QuickShop-Hikari 创建的数据库表 +除非特别注明,表内默认的 `qs_` 即为表前缀。 若要查找每个表的最新代码定义,请参阅:[DataTables.java](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/hikari/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/database/DataTables.java) ### `数据` -此数据表存储此服务器上的所有现有存储数据或已删除但仍以特定形式引用的存储数据,并且不包含坐标信息。\ -无论如何,数据记录在创建后都不应被修改,直到它被删除。\ -对商店的任何新更改都应创建一个新副本,将更改应用于该副本,并将其作为新记录插入。\ -No matter what, a data record should not be modified after it is created, until it got deleted.\ +此数据表存储此服务器上的所有现有存储数据或已删除但仍以特定形式引用的存储数据,并且不包含坐标信息。 +无论如何,数据记录在创建后都不应被修改,直到它被删除。 +对商店的任何新更改都应创建一个新副本,将更改应用于该副本,并将其作为新记录插入。 +No matter what, a data record should not be modified after it is created, until it got deleted. Any new changes to the shop should create a new copy, apply the changes to the copy, and insert it as a new record. -Basiclly, Copy-on-write. +Basically, Copy-on-write. 仅当没有任何表引用其数据记录时,才会从数据库中删除数据记录 `data_id`. @@ -33,7 +33,7 @@ Basiclly, Copy-on-write. | unlimited | BIT NOT NULL | 0 | 用于表示该商店是否为无限收购/出售,0 表示有限,1 表示无限 | | hologram | BIT NOT NULL | 0 | 表示商店展示物品的暂停状态,0 表示跟随全局设置,1 表示禁用 | | tax_account | VARCHAR(36) | NULL | 税收账户的 UUID,若非空,则税收将会汇入指定账户 | -| permissions | MEDIUMTEXT | 空 Json | 显示商店玩家权限组的覆盖状态,序列化为 JSON 格式字符串 | +| permissions | MEDIUMTEXT | 空 Json | Indicates the override status of the store player permission group, serialized to JSON string | | extra | LONGTEXT | 空 Yaml | 用于存储 QuickShop Hikari 的实验性设定或其他插件的持久化数据 | | inv_wrapper | VARCHAR(255) NOT NULL | 无 | 该商店条目使用的 InventoryWrapper 独立 ID | | inv_symbol_link | TEXT NOT NULL | 无 | 用于传递至 InventoryWrapper 的界面标识符,用于定位界面 | @@ -42,8 +42,8 @@ Basiclly, Copy-on-write. ### `shops` -该表用于存储商店数据映射,因此商店 ID 不会在商店数据变化时变化。\ -多个 `shop_id` 可以对应同一个 `data_id`。\ +该表用于存储商店数据映射,因此商店 ID 不会在商店数据变化时变化。 +多个 `shop_id` 可以对应同一个 `data_id`。 Multiple `shop_id` can correspond to the same `data_id`. | Column Name | 数据类型 | 默认值 | 说明 | diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/intro.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/intro.md index 71d0d9a481..9f9e8a001a 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/intro.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/intro.md @@ -2,33 +2,30 @@ sidebar_position: 1 --- -# Welcome to QuickShop-Hikari Documents +# 欢迎使用 QuickShop-Hikari 帮助文档 :::caution -This docs site is WORK IN PROGRESS! For more information, please contact join via our [Discord](https://discord.gg/Bu3dVtmsD3) +该帮助文档仍在编辑! 欲了解更多信息,请加入我们的[Discord](https://discord.gg/Bu3dVtmsD3) ::: -QuickShop-Hikari is a shop plugin for Minecraft that lets the players create chest shops, which allows them to quickly sell and buy items from others without using any commands.\ -All commands in QuickShop are not even needed for regular gameplay. +QuickShop-Hikari 是一款适用于 Minecraft 服务端的插件,允许玩家在游戏内建立属于自己的箱子商店,且无需任何指令即可向他人便捷地售卖和收购物品。\ +玩家在正常游戏中几乎不需要使用QuickShop的指令。 -This version of QuickShop ([QuickShop-Community/QuickShop-Hikari][quickshop-hikari]) is a fork -from [PotatoCraft-Studio's version][quickshop-potato] which itself is a fork from the [Reremake][quickshop-ghostchu] of -the [original QuickShop][quickshop-original]. +该版本的QuickShop([QuickShop-Community/QuickShop-Hikari][quickshop-hikari])属于[PotatoCraft-Studio版本][quickshop-potato]的一个分支,而PotatoCraft-Studio的版本又是[原QuickShop][quickshop-original]的重制版([QuickShop-Reremake][quickshop-ghostchu])。 -QuickShop Hikari is maintained by creatorfromhell and has the goal of modernizing the core content of QuickShop and adapting it to -the latest versions of Minecraft. +QuickShop-Hikari由creatorfromhell维护,致力于现代化QuickShop的核心代码并适配至最新版本的Minecraft。 [quickshop-hikari]: https://github.com/QuickShop-Community/QuickShop-Hikari [quickshop-potato]: https://github.com/PotatoCraft-Studio/QuickShop-Reremake/ [quickshop-ghostchu]: https://github.com/Ghost-chu/QuickShop-Reremake [quickshop-original]: https://github.com/KaiKikuchi/QuickShop -## Help us translate or improve the documents +## 帮助我们翻译/改进文档 -For translation, please check here: https://crowdin.com/project/qs-hikari-docs +翻译文档请点击这里:https://crowdin.com/project/qs-hikari-docs -If you want to help us improve the page, please switch to `American English` and click `Edit this page` at the bottom of the document to open a Pull Request on Github. +如果您想要帮助我们改进文档,请将文档语言切换至`American English`(美式英文)并点击页面上的`Edit this page`(编辑此页面)以在Github上提议更改。 diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/cmd-alias.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/cmd-alias.md index 53f1577685..8d30bb37a3 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/cmd-alias.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/cmd-alias.md @@ -1,16 +1,16 @@ -# Command Alias +# 命令别名 -By default, QuickShop will register the command prefix below: +默认情况下,QuickShop 将注册以下命令前缀: -- quickshop (root command, cannot remove or change it) +- quickshop(根命令,不可被移除或修改) - qs - shop - chestshop - cshop -## Register a new prefix or remove a prefix +## 注册一个新的前缀或者移除一个前缀 -All optional prefix are defined in config.yml like this: +所有可选的前缀都在 config.yml 定义了,就像这样: ```yaml #Set the command alias for qs main command @@ -23,7 +23,7 @@ custom-commands: - cshop ``` -Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect.\ -The effect should be like this: +只需简单地从 `custom-commands` 列表添加或移除前缀,然后可能再重启一下服务器就可以生效了。 +效果就像是这样: ![command-alias](./img/command-alias.png) diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/datasource.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/datasource.md index 21ca106c35..5eb572e499 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/datasource.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/datasource.md @@ -48,7 +48,7 @@ Execute the `/quickshop export` command in console, quickshop will export a zip ![exported data](img/database-export.png) -Stop your database, switch the datasource, and start the server.\ +Stop your database, switch the datasource, and start the server. You may noticed all shops are gone, because new datasources had no data inside, we will restore them from export. Rename that exported ZIP file to `recovery.zip`, execute `/quickshop recovery` and restart your server, all shops should back. diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/itemmatcher.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/itemmatcher.md index bea7ca2f21..a70d7272b6 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/itemmatcher.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/itemmatcher.md @@ -4,8 +4,8 @@ ItemMatcher是QuickShop-Hikari用来比较项目的工具,它是整个系统 :::caution -如果此功能配置错误,将导致插件停止工作,甚至可用于物品复制、物品克隆、刷钱甚至更糟的事情。\ -**TL;DR:除非您知道自己在做什么,否则保持默认设定。**\ +如果此功能配置错误,将导致插件停止工作,甚至可用于物品复制、物品克隆、刷钱甚至更糟的事情。 +**TL;DR:除非您知道自己在做什么,否则保持默认设定。** **TL;DR: Keep default unless you know what you're doing.** ::: @@ -27,10 +27,10 @@ matcher: work-type: 1 ``` -By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility.\ +By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility. But still, you can toggle to QuickShop Item Matcher if you need to customize the comparing or running QuickShop on the server jar which have bug affect the Bukkit comparing system. -## Customize the metadata compareing +## Customize the metadata comparing Customize only works under QuickShop Item Matcher. diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md index 6bf269736e..919bb12636 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md @@ -4,7 +4,7 @@ ItemStack加载器是加载Bukkit ItemStack的工具。 :::caution -Before use this function, you **MUST** create a server full backup. 在使用此功能之前, **必须** 创建服务器完整备份。 启用此功能后,所有更改都会写入世界和数据库,并且是持久性的,没有备份的回滚是不可能的。 +Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossible. ::: diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/localization.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/localization.md index a54d7057dd..2cac3719e1 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/localization.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/localization.md @@ -1,6 +1,6 @@ # 本地化 -QuickShop-Hikari使用客户端语言为玩家显示语言。 所有翻译均由志愿者在Crowdin上提供。 All translations offered by volunteers on Crowdin. +QuickShop-Hikari使用客户端语言为玩家显示语言。 所有翻译均由志愿者在Crowdin上提供。 所有翻译都是由志愿者在 Crowdin 上提供的。 ## Crowdin 项目 @@ -10,7 +10,7 @@ To help translate QuickShop-Hikari, please visit our [Crowdin Homepage](https:// ## Crowdin OTA -QuickShop-Hikari将自动从 Crowdin 通过 Crowdin OTA更新翻译。当您重新加载QuickShop-Hikari 或重新启动您的服务器时,所有本地更改都会被直接覆盖。 +QuickShop-Hikari 会自动通过 Crowdin OTA 从 Crowdin 更新翻译。当您重新加载 QuickShop-Hikari 或重启服务器时,在本地进行的直接更改将被覆盖。 您的插件会保持最新翻译,无需任何调整。 @@ -110,6 +110,16 @@ To disable the CrowdinOTA, please add it in the startup flag: -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager.enableCrowdinOTA=false ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +use-crowdin-ota: false +``` + ### Self-Hosted OTA Server If you self-hosted our translation server by using [CrowdinCopyDeploy](https://github.com/Ghost-chu/CrowdinCopyDeploy) tool, you're able to change the OTA server to yourself server. @@ -118,4 +128,12 @@ If you self-hosted our translation server by using [CrowdinCopyDeploy](https://g -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager= ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml +Use + +```yaml +crowdin-host: +``` \ No newline at end of file diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/placeholders.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/placeholders.md index 9f719bf1f6..fe55b5b569 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/placeholders.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/placeholders.md @@ -1,29 +1,29 @@ -# Placeholders +# 变量 -QuickShop-Hikari integrates with the PlaceHolderAPI and provides the ability to use PlaceHolders. +QuickShop-Hikari 与 PlaceholderAPI 一同安装时,会提供一些可在其他地方使用的变量。 -## Use 3rd-party placeholders in QuickShop-Hikari +## 在本插件中使用第三方变量 -Most messages are supports PlaceHolderAPI's placeholders. +本插件中的大部分消息均支持嵌入 PlaceholderAPI 的变量。 -## QuickShop Placeholders +## QuickShop 变量 -QuickShop-Hikari registered some placeholders into PlaceHolderAPI, you can use them in any plugin that also support PlaceHolderAPI. +QuickShop-Hikari 会向 PlaceholderAPI 注册一些变量,你可以在其他支持的地方使用它们。 -All placeholders are cached for 15mins to avoid impact server performance. +所有变量的数据缓存至多 15 分钟,避免影响服务器性能。 -- `%qs_metrics_recent_purchases_global_all_x%` - Count all purchases in recent x days with all types -- `%qs_metrics_recent_purchases_global_selling_x%` - Count all purchases in recent x days which only selling shops -- `%qs_metrics_recent_purchases_global_buying_x%` - Count all purchases in recent x days which only buying shops -- `%qs_metrics_recent_purchases_global_buying_x%` - Count all purchases in recent x days which only buying shops -- `%qs_metrics_recent_purchases_player_all_x%` - Count all purchases in recent x days with all types -- `%qs_metrics_recent_purchases_player_selling_x%` - Count all purchases in recent x days which only selling shops for single player -- `%qs_metrics_recent_purchases_player_buying_x%` - Count all purchases in recent x days which only buying shops for single player -- `%qs_metrics_recent_purchases_player_buying_x%` - Count all purchases in recent x days which only buying shops for single player -- `%qs_metrics_recent_transactionamount_global_all_x%` - Count all purchases transaction amount in recent x days with all types -- `%qs_metrics_recent_transactionamount_global_selling_x%` - Count all purchases transaction amount in recent x days which only selling shops -- `%qs_metrics_recent_transactionamount_global_buying_x%` - Count all purchases transaction amount in recent x days which only buying shops -- `%qs_metrics_recent_transactionamount_global_buying_x%` - Count all purchases transaction amount in recent x days which only buying shops +- `%qs_metrics_recent_purchases_global_all_x%` - 最近 x 日任意类型交易次数总计 +- `%qs_metrics_recent_purchases_global_selling_x%` - 最近 x 日出售类型交易次数总计 +- `%qs_metrics_recent_purchases_global_buying_x%` - 最近 x 日收购类型交易次数总计 +- `%qs_metrics_recent_purchases_global_buying_x%` - 最近 x 日仅收购类型交易次数总计 +- `%qs_metrics_recent_purchases_player_all_x%` - 最近 x 日任意类型交易次数总计 +- `%qs_metrics_recent_purchases_player_selling_x%` - 最近 x 日单玩家出售类型交易次数总计 +- `%qs_metrics_recent_purchases_player_buying_x%` - 最近 x 日单玩家仅收购类型交易次数总计 +- `%qs_metrics_recent_purchases_player_buying_x%` - 最近 x 日单玩家收购类型交易次数总计 +- `%qs_metrics_recent_transactionamount_global_all_x%` - 最近 x 日任意类型交易次数总计 +- `%qs_metrics_recent_transactionamount_global_selling_x%` - 最近 x 日仅出售类型交易额度总计 +- `%qs_metrics_recent_transactionamount_global_buying_x%` - 最近 x 日仅收购类型交易额度总计 +- `%qs_metrics_recent_transactionamount_global_buying_x%` - 最近 x 日仅收购类型交易额度总计 - `%qs_metrics_recent_transactionamount_player_all_x%` - Count all purchases transaction amount in recent x days with all types - `%qs_metrics_recent_transactionamount_player_selling_x%` - Count all purchases transaction amount in recent x days which only selling shops for single player - `%qs_metrics_recent_transactionamount_player_buying_x%` - Count all purchases transaction amount in recent x days which only buying shops for single player diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/shops/benefit.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/shops/benefit.md index f0754f8aeb..d0b7e2468d 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/shops/benefit.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/shops/benefit.md @@ -37,3 +37,13 @@ QuickShop-Hikari 对此问题已经有一些处理,但无法完美解决。如 ```bash -Dcom.ghostchu.quickshop.command.subcommand.SubCommand_Benefit.allowOffline=true ``` + +### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +shop.allow-offline-benefit: true +``` \ No newline at end of file diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/shops/control-panel b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/shops/control-panel new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/shops/control-panel @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/shops/history.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/shops/history.md index 4a4249d621..456db623ee 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/shops/history.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/shops/history.md @@ -24,7 +24,7 @@ ### 交易细节 -When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed.\ +When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed. 在浏览物品时,商店名称(及其坐标)、买家、交易物品、数量、税收等都会展示在这里。\ 如果你需要检查多个商店的历史记录,玩家头颅会被对应商店的图标替换。 diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/shops/protection-checker.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/shops/protection-checker.md index 44651ac5f2..037b46ec8e 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/shops/protection-checker.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/shops/protection-checker.md @@ -79,7 +79,7 @@ shop: protection-checking: true ``` -Or only disable in specific worlds: +或者只是明确地在某个世界禁用: ```yaml shop: diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/shops/protection.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/shops/protection.md index fe55d65054..c41e7a64c9 100644 --- a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/shops/protection.md +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/shops/protection.md @@ -21,7 +21,7 @@ By default, QuickShop will protect shop container and shop sign from entity, blo | -------------------------------------------- | ---------------------------------------------- | ------------------------------------------------ | --------------------------------------------------------- | | ![block-protect](./img/protection-block.png) | ![entity-protect](./img/protection-entity.png) | ![explode-protect](./img/protection-explode.png) | ![hopper-protect](./img/protection-hopper.png) | -You can toggle the protections above by tweak settings: +你可以通过调整设置来切换上述的保护功能: ```yaml #The protection that a shop should check. diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md new file mode 100644 index 0000000000..c5ed3b3fe4 --- /dev/null +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md @@ -0,0 +1,90 @@ +# Shop Types + +QuickShop supports multiple shop types, allowing shops to behave differently depending on their mode. + +The built-in shop types are: + +- Selling +- Buying +- Frozen + +Each type changes how the shop interacts with players. + +--- + +## Selling Shop + +A Selling shop allows players to: + +- Buy items from the shop owner +- Pay money to receive items + +This is the most common shop type. + +--- + +## Buying Shop + +A Buying shop allows players to: + +- Sell items to the shop owner +- Receive money in exchange + +This is commonly used for: + +- Resource collection +- Server buy-back shops +- Automated material sinks + +--- + +## Frozen Shop + +A Frozen shop temporarily disables trading. + +While frozen: + +- No buying is allowed +- No selling is allowed +- The shop remains intact +- Staff or admins can manage it + +This is useful for: + +- Temporary suspensions +- Investigation +- Event locking +- Maintenance + +--- + +## Switching Shop Types + +Shop types can be changed through: + +- Control panel +- GUI control panel +- Admin commands + +Frozen mode is also available via: + +/qs freeze + +--- + +## Custom Shop Types + +As of 6.2.x, the system supports extensible shop types internally. + +While server owners use the built-in types, the system now allows future expansion through addons. + +--- + +## Summary + +Shop types allow you to: + +- Control how money flows +- Enable buy-back mechanics +- Temporarily disable shops +- Build advanced economic systems \ No newline at end of file diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md new file mode 100644 index 0000000000..18e0a47407 --- /dev/null +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md @@ -0,0 +1,217 @@ +# Sign Layout + +QuickShop allows you to fully customize how shop signs are structured. + +You can change: + +- What appears on each line +- The order of information +- Layout per shop type +- Whether certain lines are blank + +This gives you complete control over how shops look on your server. + +--- + +## How Sign Layout Works + +Shop signs have four lines. + +Instead of being hardcoded, QuickShop uses a configurable layout system. + +Each shop type can have its own layout: + +- SELLING +- BUYING +- FROZEN + +You define what each line displays using layout keys. + +--- + +## Configuration Location + +Sign layout is configured in `config.yml` under: + +```yaml +layout: +``` + +Example default configuration: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## Available Layout Keys + +Each line value refers to a built-in layout component. + +Common layout keys include: + +- `header` – The shop header line +- `trading` – Buy/Sell direction information +- `item` – Item name +- `price` – Shop price + +These keys are automatically formatted using your language file and formatting settings. + +--- + +## Leaving a Line Blank + +To leave a line empty, use: + +```yaml +line2: "" +``` + +This is useful if you want: + +- Minimalist signs +- Cleaner layouts +- Custom spacing +- Decorative formatting + +--- + +## Customizing Per Shop Type + +Each shop type can have a different layout. + +For example: + +```yaml +layout: + + SELLING: + line1: "header" + line2: "item" + line3: "price" + line4: "" + + BUYING: + line1: "header" + line2: "price" + line3: "item" + line4: "" + + FROZEN: + line1: "header" + line2: "" + line3: "item" + line4: "Frozen" +``` + +This allows you to visually differentiate: + +- Selling shops +- Buying shops +- Frozen shops + +--- + +## Practical Examples + +### Minimal Style + +```yaml +layout: + SELLING: + line1: "item" + line2: "price" + line3: "" + line4: "" +``` + +### Compact Economy Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "price" + line3: "item" + line4: "" +``` + +### Large Clear Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## How Updates Affect Layout + +When you change the layout: + +- Existing shop signs will update automatically when refreshed. +- New shops will use the updated format immediately. + +If needed, you can reload QuickShop to apply changes. + +--- + +## Best Practices + +- Keep important information visible (price and item). +- Avoid overly complex formatting. +- Test layout changes before deploying on large servers. +- Use different layouts for BUYING and SELLING to reduce confusion. + +--- + +## Common Questions + +### Can I add more than four lines? + +No. +Minecraft signs are limited to four lines. + +### Can I add colors? + +Colors are controlled by your language file and formatting settings. + +### Can I change layout without restarting? + +Yes, but reloading or refreshing shops is recommended to ensure full update. + +--- + +## Summary + +The Sign Layout system allows you to: + +- Fully customize shop sign appearance +- Create per-type layouts +- Simplify or expand shop information +- Improve clarity for players + +All layout customization is handled inside `config.yml`. diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md new file mode 100644 index 0000000000..980bad10f2 --- /dev/null +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md @@ -0,0 +1,130 @@ +# Shop Sign Waxing + +QuickShop can automatically wax shop signs to prevent players from editing them manually. + +Waxing protects the integrity of your shop signs and helps prevent tampering, spoofing, and accidental modification. + +As of modern Minecraft versions, waxed signs cannot be edited unless they are unwaxed first. + +--- + +## What Is Sign Waxing? + +In Minecraft, waxing a sign locks it so that: + +- Players cannot edit the text +- Players cannot modify lines +- Accidental changes are prevented +- Malicious edits are blocked + +When enabled in QuickShop, shop signs are automatically waxed when created. + +--- + +## Why Use It? + +Sign waxing protects against: + +- Players editing price lines +- Changing item names on signs +- Spoofing shop information +- Accidental formatting issues +- Sign hijacking attempts + +On public servers, this feature is strongly recommended. + +--- + +## How It Works + +When a shop is created: + +1. QuickShop generates the shop sign. +2. The sign text is written. +3. The sign is automatically waxed (if enabled). + +If a shop is updated: + +- The sign will be safely updated by QuickShop. +- The wax state is maintained. + +Players cannot manually edit shop signs while waxing is enabled. + +--- + +## Configuration + +To enable or disable sign waxing, edit `config.yml`: + +```yaml +shop: + sign-wax: true +``` + +### true + +- Shop signs are automatically waxed. +- Players cannot edit the sign manually. + +### false + +- Shop signs behave like normal Minecraft signs. +- Players may edit them if permitted by the game. + +--- + +## Recommended Setting + +For most servers: + +```yaml +shop: + sign-wax: true +``` + +This ensures shop data stays accurate and secure. + +--- + +## Common Questions + +### Can admins still modify shop signs? + +QuickShop controls shop sign formatting. +Manual edits are not recommended. + +Admins should use: + +- Control panel +- Shop commands +- Direct configuration changes + +### Does waxing affect shop functionality? + +No. +Waxing only prevents manual text edits. +The shop continues to function normally. + +### Can players un-wax shop signs? + +No. +QuickShop manages the sign state automatically. + +--- + +## Best Practices + +- Keep sign-wax enabled on survival servers. +- Combine sign-wax with proper permissions. +- Avoid manually editing shop signs through other plugins. + +--- + +## Summary + +Sign Waxing: + +- Prevents tampering +- Requires no additional setup + +Enable it once and QuickShop handles the rest. \ No newline at end of file diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/shops/taxes.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/shops/taxes.md new file mode 100644 index 0000000000..1a273fd978 --- /dev/null +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/shops/taxes.md @@ -0,0 +1,92 @@ +# Taxation System + +QuickShop includes a taxation system designed to give server owners more flexibility and control over shop-based income. + +This system was revamped as of 6.2.0.11+ + +The new system allows you to: + +- Apply tax to shop owners +- Apply tax to buyers +- Apply tax to both +- Use progressive tax brackets +- Customize tax behavior in configuration + +This system replaces the legacy tax configuration. + +--- + +## How It Works + +During a transaction: + +1. The shop price is calculated. +2. Tax is calculated based on your configuration. +3. Tax is deducted from the configured target(s). +4. Remaining funds are distributed normally. + +You can configure: + +- Flat percentage tax +- Progressive tax based on player balance +- Tax accounts +- Distribution rules + +--- + +## Progressive Tax + +The new system allows you to tax based on balance brackets. + +Example concept: + +- 0 – 10,000 balance → 1% tax +- 10,000 – 100,000 → 2% tax +- 100,000+ → 3% tax + +This helps prevent extremely wealthy players from dominating the economy. + +--- + +## Who Pays the Tax? + +You can configure whether tax applies to: + +- The shop owner +- The buyer +- Both + +This gives you flexibility depending on your economy design. + +--- + +## Configuration + +All tax-related settings are located under the `shop-tax` section in `config.yml`. + +After updating to 6.2.0.11+, review your tax configuration carefully, as the old tax system has been replaced. + +--- + +## Why Use Tax? + +The taxation system can help: + +- Remove currency from circulation +- Fund server banks or towns +- Create sink mechanics +- Balance inflation +- Reward active players + +--- + +## Summary + +The new taxation system is: + +- Flexible +- Configurable +- Balance-aware +- Designed for modern economy servers + +Make sure to review your configuration after upgrading. \ No newline at end of file diff --git a/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md new file mode 100644 index 0000000000..247c24712d --- /dev/null +++ b/i18n/zh-CN/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md @@ -0,0 +1,161 @@ +# WorldEdit & FAWE Support + +QuickShop includes built-in protection and integration for WorldEdit and FastAsyncWorldEdit (FAWE). + +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. + +You do not need to download or install any additional compatibility plugins. + +--- + +## What This Does + +WorldEdit and FAWE allow administrators and builders to: + +- Copy and paste regions +- Replace large areas of blocks +- Mass-delete regions +- Roll back areas +- Regenerate terrain + +Without protection, these operations could: + +- Create ghost shops +- Leave orphaned shop data in the database +- Duplicate shops unintentionally +- Delete containers without cleaning up shop data +- Cause inconsistencies between world and database + +QuickShop now automatically detects and safely processes WorldEdit and FAWE operations. + +--- + +## Built-In Behavior + +When WorldEdit or FAWE modifies blocks: + +- Shops removed via WorldEdit are properly deleted from the database. +- Shop data stays synchronized with world changes. +- Ghost shops are prevented. +- Mass block replacements will not leave broken shop entries behind. + +This applies to: + +- //set +- //replace +- //cut +- //paste +- //regen +- Region deletion +- Mass container removal + +No configuration is required. + +--- + +## FAWE Support + +FastAsyncWorldEdit (FAWE) is fully supported. + +Because FAWE processes edits asynchronously, QuickShop handles: + +- Region-thread safe processing +- Async block updates +- Safe shop deletion during batch edits + +You do not need to enable anything manually. + +--- + +## Removing Shops with WorldEdit + +If you delete containers (chests, barrels, etc.) using WorldEdit: + +QuickShop will automatically: + +- Detect the block removal +- Unregister the shop +- Clean the database entry +- Prevent ghost shops + +You do not need to run `/qs cleanghost` after WorldEdit usage in normal circumstances. + +--- + +## Copying and Pasting Shops + +If you copy and paste regions that contain shops: + +- Shop data will not duplicate incorrectly. +- Shop IDs remain consistent. +- Invalid pasted shops will not auto-register unless properly created. + +This prevents accidental duplication exploits. + +--- + +## Performance + +WorldEdit and FAWE operations can modify thousands of blocks at once. + +QuickShop processes these safely and efficiently: + +- Batch-aware cleanup +- Thread-safe region access (especially on Folia) +- Minimal performance impact during mass edits + +--- + +## Configuration + +There are no specific WorldEdit configuration options in QuickShop. + +Support is automatic and always enabled if WorldEdit or FAWE is detected. + +If WorldEdit is not installed, no extra code is executed. + +--- + +## Common Questions + +### Do I need the old WorldEdit compatibility jar? + +No. + +As of 6.2.0.11, WorldEdit support is built-in and the separate compatibility module has been removed. + +### Does this work with FAWE? + +Yes. FAWE is fully supported. + +### Will shops break if I use //set air? + +No. Shops will be safely removed and cleaned up. + +### Do I need to restart after installing WorldEdit? + +No. QuickShop detects WorldEdit automatically on startup. + +--- + +## Best Practices + +Even though QuickShop safely handles WorldEdit operations, it is recommended to: + +- Avoid copying shops intentionally unless required +- Use backups before large region edits +- Test large FAWE operations on staging servers when possible + +--- + +## Summary + +QuickShop’s built-in WorldEdit and FAWE integration ensures: + +- Safe mass edits +- No ghost shops +- Automatic database cleanup +- Thread-safe processing +- No extra modules required + +WorldEdit support is now a core feature of QuickShop. \ No newline at end of file diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/addon/limited.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/addon/limited.md index 70af27e240..fae55a8c95 100644 --- a/i18n/zh-HK/docusaurus-plugin-content-docs/current/addon/limited.md +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/addon/limited.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -41,8 +35,8 @@ Limit players to purchase up to 16 items per month. /quickshop limit period MONTH ``` -The system is based on the QuickShop-Hikari calendar system.\ -The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year.\ +The system is based on the QuickShop-Hikari calendar system. +The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year. Same for days, months and hours. Available time units: diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/addon/list.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/addon/list.md index 93d182f083..f20b91fd7b 100644 --- a/i18n/zh-HK/docusaurus-plugin-content-docs/current/addon/list.md +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/addon/list.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/addon/plan.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/addon/plan.md index 52a6e79cb4..c10ef4df42 100644 --- a/i18n/zh-HK/docusaurus-plugin-content-docs/current/addon/plan.md +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/addon/plan.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -18,7 +18,7 @@ Recorded data can be displayed from Hikari v2.0.0.0 onwards, but only after vers - All shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 1000 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `5` in server scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `5` in server scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Player Scope @@ -27,7 +27,7 @@ And still is Plan limitations, the list sorting is disturbed, so the display ord - All owned shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 50 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `4` in player scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `4` in player scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Showcase diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/addon/reforges.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/addon/reforges.md index 2a14509eb7..25fff1752a 100644 --- a/i18n/zh-HK/docusaurus-plugin-content-docs/current/addon/reforges.md +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/addon/reforges.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.0.0.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md index 304d39bc05..6f9f51d250 100644 --- a/i18n/zh-HK/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.1.1.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -44,7 +38,7 @@ _This is not necessary if you are using an H2 database._ ### Prepare for convert -To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console.\ +To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console. If a player is in the server, the conversion cannot be started. Once the conversion has begun, the server will be locked during the conversion process and no players will be able to join the server during the conversion. diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/addon/shopitemonly.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/addon/shopitemonly.md index c45062f8c2..1ccfe977b3 100644 --- a/i18n/zh-HK/docusaurus-plugin-content-docs/current/addon/shopitemonly.md +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/addon/shopitemonly.md @@ -2,17 +2,11 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT - -::: - -This addon prevents players from putting non-store items into store containers.\ +This addon prevents players from putting non-store items into store containers. Does not apply to stores that use the item inventory redirection API (aka. InventoryWrapper API). This Addon will check for container (or transferring) items on events such as the player closing the container or hopper access. diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md new file mode 100644 index 0000000000..9c8b4f7407 --- /dev/null +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md @@ -0,0 +1,55 @@ +# 6.2.0.10 + +## Major Changes + +- Added support for 1.21.6 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.7 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.8 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Some internal updates for packetevents(2.9.0 is now required.) +- Updated Lands support + +## Addon Changes + +- Added MatcherPlus Addon + - Allows support for BreweryX and AdvancedItems stacks in shops with improved matching abilities +- Added FabledSkyblock Compat +- Added Dominion Compat +- Added HuskTowns Compat +- Added IridiumSkyblock Compat +- Added member-create for member creation in ARM compat +- Added admin-override and quickshop.arm.admin permission for admin overrides in ARM + +## Minor Changes + +- Added configurations for the coordinates of the display item. +- Added /qs toggledisplayall on/off server/owned + - Players need to have permission node quickshop.toggledisplayall.admin to toggle all on the server. +- Added ability to use abbreviations in /qs price and /qs create commands such as 2.5k for 2500 +- Added ability to set default display status using shop.default-display in config.yml + +## Fixes + +- Fixed issue with display item being sent to the moon on 1.21.5 +- Fixed issue where TRADE_UI interactions interfered with quick create. +- Fixed issue with displays on protocollib falling through the chest +- Fixed issue with signs on .9 and previous .10 snapshots on early versions +- Implemented some performance improvements for paper servers +- Fixed all outstanding issues with Folia usage.(thanks to RootB33R/SleazLee for contributions) + +## Possible 6.2.0.11 Features + +Here's an outline for some features that may arrive in 6.2.0.11: + +- Additional compats/addons that have been piling up. + - see: https://github.com/QuickShop-Community/QuickShop-Hikari/issues/1756 +- gradle?(interested to see compilation time uplifts) +- Update documentation +- Update configuration comments +- Update configuration system? + - auto updating? + - Allows removal of the update code +- Remove waste spigot modules? + - Any versions of 1.20 that can be discarded due to low use? +- Bug fixing, of course +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... \ No newline at end of file diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md new file mode 100644 index 0000000000..b41c88662a --- /dev/null +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md @@ -0,0 +1,173 @@ +## Outline + +- Update documentation +- Update configuration comments +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... + +# 6.2.0.11 + +## Major Changes + +- Removed Spigot Platform Modules, and stopped loading QS if Spigot is detected. This will mean that unless the protocol changes that we use for display items, QS won't need updated for each version. +- Revamped Economy Code Completely + - New classes for all economy-related systems + - Any economy-related or benefits-related events are incompatible with previous versions. +- Added sign layout customizations per-type allowing you to change how lines are configured, an empty string('') will leave an empty line for that line of the sign. + +``` + #The layout of signs for shops. + layout: + + #The layout of BUYING shops. + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of FROZEN shops. + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of SELLING shops. + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +- Add wildcard support for item blacklist patterns(thanks to bennycallanan) + - Added support for wildcard patterns in the item blacklist configuration, allowing users to block entire categories of items with simple patterns. + + - Features + - Wildcard patterns like \*_AXE and \*_SPAWN_EGG now work in blacklist configuration + - Supports \* for any characters and ? for single character matching + - Case-insensitive pattern matching +- Overhauled GUI system(thanks to Yusakidev) + - Implemented gui.yml configuration file for customizing the GUI. + - Implemented better filtering for qs browse + - Implement GUI system to be more stable, and less error prone. + - Added gui.yml for fully configurable GUI layouts and text + - Browse menu: search, sort (price/name/stock), and filter (all/buying/selling/in-stock) + - Staff menu: search functionality for player/staff selection + - Grouped item pages for better shop browsing + - Refactored all menu pages to use configurable display/lore +- Added worldedit compat to QS internally as it's widely used. +- Revamped the taxation system to be more flexible and easier to configure. + - introduced a new progressive tax system that allows you to tax based on the balance of players.(suggested by YuanYuanOwO) + - introduced the ability to tax the player interacting with the shop, the owner, or both + - all tax-related configurations have been moved under the shop-tax section of the config. this may require reconfiguration of your tax settings. + - added a new ShopEnhancedTaxEvent, deprecated the old ShopTaxEvent. + - Added a new TaxManager, and TaxProvider interfaces, this allows for custom tax providers to be added by addons/third-party developers. + +## Addons/Compats Changes + +- Added UltimateClaims compat +- Added SimpleClaimSystem compat +- Added Quests by Pika addon +- Added BetonQuest addon +- Added Pl3xMap addon +- MatcherPlus Compat Improvements + - Added support for CrazyCrates + - Added support for ExcellentCrates + - Added support for SilkSpawners. +- WorldGuard Compat Improvements(Thanks to golovin12) + - Added clear permission handling: + - Region owners and members automatically have permission to create and trade in their own regions. + - Other players must have the appropriate WorldGuard flags enabled (quickshophikari-create, quickshophikari-trade) to interact with shops. + - If a shop is located outside any region, default QuickShop behavior applies (no extra restrictions) +- Added colored markers based on shop state for bluemap(thanks to YusakiDev) +- Updated dynmap/towny addons to use the new ShopTypeEnhancedEvent instead of ShopTypeEvent. +- Removed worldedit compat, it's now included in the main plugin. +- Added support for global flags to the worldguard compat. + +## Internals/Developer APIs + +- Removed several deprecated methods and classes. +- Revamped the interaction manager. It is now more flexible and allows external additions + - This involves two classes InteractionBehavior and InteractionType. + - InteractionType details the type of interaction such as: STANDING_LEFT_CLICK_SIGN, STANDING_LEFT_CLICK_SHOP + - InteractionBehavior outlines a behavior for an InteractionType such as CONTROL_PANEL and TRADE_UI +- Added UserLimitCalculationEvent, which allows for custom limits to be applied to users. + - This is useful for limiting the number of shops a user can have, or adding on to the existing limits provided by the ranks system without needing to implement a new RankLimiter. +- Added a new ShopLayoutProvider interface, and default implementation. + - This allows for custom layouts to be used for shops, allowing for more customization. + - This also allows for developers to override the default layout provider and create their own implementation. +- How to make your own? + - Implement the classes you would like to then register with the InteractionManager: + - ```java + InteractionManager manager = QuickShop.getInstance().getInteractionManager(); + + manager.interaction(new MyTradeInteraction()); + manager.behavior(new MyTradeBehavior()); + ``` +- Replaced some Apache Commons calls that could be easily replaced with built-in java methods, reduces some calls by ~ 1100ms/method call +- Deprecated the ShopType enum, and the ShopTypeEvent. These are replaced with the new IShopType interface and implementing classes. + - The new event is ShopTypeEnhancedEvent. + - This allows for third-party addons to add their own shop types, and simplifies code checks for translations. +- Updated config system to use Boosted-yaml + - this allows for auto-updating of config files without complex update scripts + - this also allows for the config system to not be minecraft-dependent. +- Replaced logical PaperLib calls with native PaperAPI calls. + +## Minor Changes + +- Bump Java version up to 21 +- Added shop.display-allow-enchants to enable/disable enchantments for display items on shops. +- Added workaround for packetevents not supporting custom enchants on itemstacks for virtual display items. +- Using locale translations for shop-type in mode toggle icon(thanks to ExyiN) +- Bumped Residence version for the compat(thanks to YuanYuanOwO) +- add world whitelist support(thanks to wling-art) +- added /qs database save command, which saves all currently dirty-marked shops to the database. +- Split up interactions _SHOPBLOCK into _SHOPBLOCK and _CONTAINER. + - _SHOPBLOCK relates to shops, where _CONTAINER relates to shop-valid containers that are not currently shops. +- Added inventory as an option for command panel, this is useful for adding a secondary option for players to open a shop's inventory. +- Moved crowdin arguments from system properties to config.yml + - crowdin-host + - use-crowdin-ota + +## Fixes + +- Fixes issue with item price restrictions(thanks to maxcom1) +- Fixes issue with 1.20.x protocol lib displays(thanks to YuanYuanOwO) +- Fixes issue when no item is in hand for itemdebug(thanks to YuanYuanOwO) +- Fixes issue with dominion addon(thanks to YuanYuanOwO) +- Add a simple check to avoid this. If it is not own shop, reject limit request directly.(Thanks to YuanYuanOwO) +- Fix NPE by not setting tax for price in TransactionBuilder(thanks to maxcom1) +- Fixes /quickshop suggestprice to differentiate between buy/sell shops. (Thanks to MidSpike) +- PacketEvents ClassNotFoundException with ProtocolLib(thanks to wling-art) +- Reallocate block state access to region thread for shop creation(thanks to r00tbeerman) +- resolve SLF4J StaticLoggerBinder loading error(thanks to wling-art) +- sign hijacking issue by validating sign facing direction(thanks to wling-art) +- Performance improvements for QuickShop disabling to prevent potential freezes. +- Fixed issue with 1.20.4 packetevents virtual displays not staying put. +- Fixes critical issue in GriefPrevention compatibility plugin. +- Fixes issue with shop owner not getting money when benefits active. +- Fixes for lands addon on folia, Use regionThread for Folia compatibility(thanks to YusakiDev) +- Fixes for TRADE_DIRECT on stacking shops +- Fixes issue for protocollib 5.4.0 with undocumented packet changes. +- Fixes issue where item stacks could be used on creation above the max stack size. +- Fixes issue with BukkitAudiences-related crashes on 1.21.11. +- Fix issue with shop deletion when getting too impatient. +- Fix the permission check issue when a shop owned by a non-owner is transferred to someone else. (thanks to YuanYuanOwO) +- Fix ui with supertool (thanks to YuanYuanOwO) +- Fix issue with logs generating outside debug mode. +- Fix issue with /qs find. +- Fix configuration loading timing. +- Fix configuration loading/creation warning message language. +- Fix command description language key mismatch(thanks to wling-art) +- Fix qs clean command on folia(thanks to wling-art) +- Fix per-player-shop-sign on folia(thanks to wling-art) +- Fix potential recursive deadlock in virtual display packet sending(thanks to wling-art) +- Fix configuration loading/creation warning message language. +- Fix issue with /qs browse and ShopItemOnly addon not behaving properly together on folia. +- Fix issue with PLAN using outdated APIs. +- Fix issue with /qs clean on folia.(thanks to wling-art) +- Fix issue with /qs cleanghost on folia(thanks to wling-art) +- More thread safety fixes for shops on folia.(thanks to wling-art) +- Fix owner payment calculations with benefits(thanks to wling-art) \ No newline at end of file diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md index 8172f9b410..dcc3edc67d 100644 --- a/i18n/zh-HK/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md @@ -20,20 +20,20 @@ the ControlComponent object with a custom one that will replace the original dur ### Introduction of the Revamped Packet System 1. **About**: - - A modular and scalable system for managing packets related to virtual display items in Minecraft. - - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. + - A modular and scalable system for managing packets related to virtual display items in Minecraft. + - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. 2. **Custom Packet Factories**: - - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. - - Packet types: - - **Spawn Packet**: Spawns a virtual item entity at a specific location. - - **Metadata Packet**: Updates the visual properties of virtual items. - - **Velocity Packet**: Adds motion/velocity to entities (currently optional). - - **Destroy Packet**: Removes the entity from the client view. + - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. + - Packet types: + - **Spawn Packet**: Spawns a virtual item entity at a specific location. + - **Metadata Packet**: Updates the visual properties of virtual items. + - **Velocity Packet**: Adds motion/velocity to entities (currently optional). + - **Destroy Packet**: Removes the entity from the client view. 3. **Error Handling and Logging**: - - Enhanced debug logs to trace packet-related issues. - - Detailed error messages for missing factories or unregistered listeners. + - Enhanced debug logs to trace packet-related issues. + - Detailed error messages for missing factories or unregistered listeners. #### Improvements: diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md index 7775308722..c6e0948d19 100644 --- a/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md index f420997a9c..38587e3784 100644 --- a/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md index 5ed8182c9a..259c55f342 100644 --- a/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md index 924a37ac49..7fd4596a6a 100644 --- a/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,6 +10,6 @@ This is a BungeeCord plugin, you need install it within your BungeeCord's plugin ## How does it work? -BungeeCord Bridge plugins will register a `quickshop:bungee` channel for fowarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. +BungeeCord Bridge plugins will register a `quickshop:bungee` channel for forwarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. All forwarding is indicated by QuickShop-Hikari on the Spigot server and ends when it is not needed. diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md index 27d68956a8..20fbaf7a0c 100644 --- a/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,5 +10,5 @@ This compatibility module added [Chest Protect](https://www.spigotmc.org/resourc ## How does it work? -This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident.\ +This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident. It also prevents players from creating shops on ChestProtect protected containers. diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md index 220e26d8bb..e1757e7be9 100644 --- a/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/dominion.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/dominion.md new file mode 100644 index 0000000000..e1195278a8 --- /dev/null +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/dominion.md @@ -0,0 +1,138 @@ +# Dominion + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and Dominion. + +It ensures that shop creation and trading respect Dominion’s land and territory protection system. + +--- + +## What Does It Do? + +Dominion allows players or groups to claim land and define territory-based permissions. + +Without compatibility: + +- Players could create shops inside territories they do not control. +- Visitors might trade inside protected dominions. +- Dominion permission rules might not apply to shop interactions. + +The Dominion compat module ensures that: + +- Shop creation respects territory ownership. +- Shop trading follows Dominion permission settings. +- Protected land remains secure from unauthorized shop usage. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a Dominion-controlled area. +- Whether the player has permission within that territory. +- Whether Dominion rules allow shop interaction. + +If the action is not permitted by Dominion settings, QuickShop blocks it. + +If the location is outside any Dominion territory, default QuickShop behavior applies. + +--- + +## Territory Owner Control + +With this module enabled: + +- Territory owners can create and manage shops inside their dominion. +- Trusted members follow territory-based permissions. +- Outsiders are restricted unless explicitly allowed. +- Shop actions respect Dominion’s land rules automatically. + +This prevents unauthorized shop placement inside protected territories. + +--- + +## Installation + +1. Install Dominion. +2. Install the QuickShop Dominion compat module. +3. Restart your server. + +The module activates automatically if Dominion is detected. + +No manual configuration linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside dominions +whitelist-mode: false + +# Allow territory owners to override shop permissions +allow-owner-override: true +``` + +If Dominion is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For servers using Dominion: + +- Restrict shop creation to territory owners or trusted members. +- Prevent shop creation in wilderness if desired. +- Allow dominion owners to manage shop permissions. +- Review Dominion permission settings to align with shop behavior. + +This ensures protected territories remain secure and organized. + +--- + +## Common Questions + +### Can players create shops in someone else's dominion? + +Only if Dominion permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You may allow or restrict shops outside dominions. + +### What happens if Dominion is removed? + +QuickShop returns to normal behavior and stops checking Dominion territories. + +--- + +## Summary + +The Dominion compat module: + +- Enforces territory-based permissions +- Prevents unauthorized shop creation +- Protects claimed land from misuse +- Integrates seamlessly with Dominion + +It is recommended for servers running Dominion. \ No newline at end of file diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md index 743d3ae666..2ac9b10488 100644 --- a/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md new file mode 100644 index 0000000000..07ba4ada66 --- /dev/null +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md @@ -0,0 +1,133 @@ +# FabledSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and FabledSkyblock. + +It ensures that shop creation and trading properly respect island boundaries and island permissions. + +--- + +## What Does It Do? + +On Skyblock servers, players build and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Players might trade in areas they should not. +- Island protection rules might not apply to shops. + +The FabledSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members behave correctly with shops. +- Island visitors are restricted appropriately. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a FabledSkyblock island. +- Whether the player has permission on that island. +- Whether island settings allow the action. + +If the action is not permitted by island rules, QuickShop will deny it. + +--- + +## Island Ownership Rules + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow island permission settings. +- Visitors can only trade if island permissions allow it. +- Outside of islands, default QuickShop behavior applies. + +--- + +## Installation + +1. Install FabledSkyblock. +2. Install the QuickShop FabledSkyblock compat module. +3. Restart your server. + +The module activates automatically if FabledSkyblock is detected. + +No manual linking is required. + +--- + +## Configuration + +If the module provides configuration options, they will appear in its `config.yml`. + +Typical options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If FabledSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most Skyblock servers: + +- Allow shop creation only inside islands. +- Prevent trading in the void or wilderness. +- Let island owners control shop permissions. +- Use island rank systems to manage shop access. + +This helps maintain economic balance between islands. + +--- + +## Common Questions + +### Can players create shops in the void? + +Only if your configuration allows it. +Most servers disable shop creation outside islands. + +### Does this affect island war or PvP modes? + +No. +The module only checks island ownership and permissions for shop interactions. + +### What happens if FabledSkyblock is removed? + +QuickShop returns to normal behavior. + +--- + +## Summary + +The FabledSkyblock compat module: + +- Protects island economies +- Enforces island permission rules +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is strongly recommended for any server running FabledSkyblock. \ No newline at end of file diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md index 81b13d2c6b..32614d3019 100644 --- a/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md @@ -2,17 +2,17 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -GreifPrevention compatibility module added compaitibility with GF. +GreifPrevention compatibility module added compatibility with GF. ## How does it work This module allow QuickShop-Hikari check if player have permission to create or use QuickShop in specific region. -And delete shops when claim removed, untrusted, unclimed, expired, resized or subclaim created. +And delete shops when claim removed, untrusted, unclaimed, expired, resized or subclaim created. ## Configuration diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md new file mode 100644 index 0000000000..e71b34d462 --- /dev/null +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md @@ -0,0 +1,139 @@ +# HuskTowns + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and HuskTowns. + +It ensures that shop creation and trading respect town and claim permissions defined by HuskTowns. + +--- + +## What Does It Do? + +HuskTowns allows players to create towns and claim land. + +Without compatibility: + +- Players could create shops inside towns they do not belong to. +- Visitors might trade inside protected towns. +- Town permission rules might not apply to shop interactions. + +The HuskTowns compat module ensures that: + +- Shop creation respects town ownership. +- Trading follows town permission settings. +- Town members and visitors are handled correctly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a HuskTowns claim. +- Whether the player is a town member, trusted player, or outsider. +- Whether the town's permission settings allow the action. + +If the action is not permitted by town rules, QuickShop blocks it. + +Outside of town claims, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Town Owner Control + +With this module enabled: + +- Town owners can create and manage shops inside their town. +- Town members follow town-based permission settings. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect town claim protection. + +This prevents unauthorized shop placement and trading inside protected towns. + +--- + +## Installation + +1. Install HuskTowns. +2. Install the QuickShop HuskTowns compat module. +3. Restart your server. + +The module activates automatically if HuskTowns is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside towns +whitelist-mode: false + +# Allow town owners to override shop permissions +allow-owner-override: true +``` + +If HuskTowns is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For town-based survival servers: + +- Restrict shop creation to town members. +- Allow trading only where town permissions permit. +- Prevent shop creation in wilderness if desired. +- Enable owner override for better administrative control. + +This helps maintain town-based economic balance. + +--- + +## Common Questions + +### Can players create shops in another town? + +Only if that town's permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You can allow or restrict shops outside towns. + +### What happens if HuskTowns is removed? + +QuickShop returns to normal behavior and stops checking town permissions. + +--- + +## Summary + +The HuskTowns compat module: + +- Enforces town-based land permissions +- Protects towns from unauthorized shop usage +- Integrates smoothly with HuskTowns +- Requires minimal setup + +It is recommended for any server running HuskTowns. \ No newline at end of file diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md new file mode 100644 index 0000000000..3fa2995eb0 --- /dev/null +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md @@ -0,0 +1,139 @@ +# IridiumSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and IridiumSkyblock. + +It ensures that shop creation and trading respect island boundaries and island permission settings defined by IridiumSkyblock. + +--- + +## What Does It Do? + +IridiumSkyblock allows players to create and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Visitors might trade inside protected islands. +- Island protection rules might not apply correctly to shops. + +The IridiumSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members and visitors are handled properly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside an IridiumSkyblock island. +- Whether the player is the island owner, member, or visitor. +- Whether island permissions allow shop interaction. + +If the action is not permitted, QuickShop blocks it. + +Outside of islands, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Island Owner Permissions + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow the island's permission configuration. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect island protection rules. + +This prevents unauthorized shop usage inside protected islands. + +--- + +## Installation + +1. Install IridiumSkyblock. +2. Install the QuickShop IridiumSkyblock compat module. +3. Restart your server. + +The module activates automatically if IridiumSkyblock is detected. + +No additional setup is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If IridiumSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most IridiumSkyblock servers: + +- Restrict shop creation to island owners. +- Allow island members to trade if trusted. +- Prevent shop creation in the void or wilderness. +- Enable owner override for better management. + +This helps maintain balanced island economies. + +--- + +## Common Questions + +### Can players create shops outside their island? + +Only if your configuration allows it. + +Most Skyblock servers restrict shops to island areas. + +### Do island ranks affect shop permissions? + +Yes, if your island permissions are configured to control interaction rights. + +QuickShop follows island rules. + +### What happens if IridiumSkyblock is removed? + +QuickShop returns to normal behavior and stops checking island permissions. + +--- + +## Summary + +The IridiumSkyblock compat module: + +- Protects island economies +- Enforces island-based permissions +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is recommended for any server running IridiumSkyblock. diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md new file mode 100644 index 0000000000..3b4726cb9d --- /dev/null +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md @@ -0,0 +1,151 @@ +# ItemMatcherPlus + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +The ItemMatcherPlus module improves how QuickShop matches custom and plugin-modified items. + +It allows QuickShop to properly recognize and stack items created by other plugins that normally would not match using standard Bukkit item comparisons. + +This module is especially useful for servers that use: + +- Custom items +- Modified metadata +- NBT-based systems +- Advanced crate rewards +- Custom brewing systems +- Custom fishing rewards + +--- + +## What Does It Do? + +By default, Minecraft item matching checks: + +- Material type +- Basic metadata + +However, many plugins modify items with: + +- Custom NBT data +- Hidden tags +- Custom lore formats +- Unique identifiers + +Without enhanced matching: + +- Items may not stack +- Shops may refuse valid items +- Transactions may fail +- Buying/selling may not behave correctly + +ItemMatcherPlus improves compatibility and matching accuracy. + +--- + +## Supported Plugins + +ItemMatcherPlus includes built-in support for: + +- AdvancedItems +- BreweryX +- CrazyCrates +- ExcellentCrates +- PyroFishing +- SilkSpawners + +If any of these plugins are installed, QuickShop will automatically use enhanced matching logic. + +No additional configuration is required. + +--- + +## How It Works + +When a player trades with a shop: + +1. QuickShop checks the item. +2. If ItemMatcherPlus is enabled, it performs advanced matching. +3. Plugin-specific metadata is validated. +4. The item is confirmed as a match (or rejected safely). + +This allows: + +- Proper stacking of custom items +- Correct shop transactions +- Accurate buy/sell detection +- Reduced false mismatches + +--- + +## Installation + +1. Download the ItemMatcherPlus module. +2. Place the JAR into your `plugins` folder. +3. Restart your server. + +If supported plugins are detected, compatibility activates automatically. + +--- + +## Configuration + +ItemMatcherPlus does not require configuration. + +It activates automatically when: + +- The module is installed +- A supported plugin is detected + +If a supported plugin is not installed, no extra logic runs. + +--- + +## Why You Should Use It + +You should install ItemMatcherPlus if your server uses: + +- Custom fishing plugins +- Custom brewing systems +- Crate plugins with modified items +- Custom spawners +- Any plugin that modifies NBT data + +Without it, shops may not properly recognize custom items. + +--- + +## Common Questions + +### Do I need this if I don't use custom item plugins? + +No. +If you only use vanilla items, this module is not necessary. + +### Does this affect performance? + +The module only activates enhanced matching when needed. + +Normal item matching remains fast and efficient. + +### Will it break existing shops? + +No. +It improves compatibility and matching accuracy without modifying existing shop data. + +--- + +## Summary + +ItemMatcherPlus: + +- Improves item matching accuracy +- Adds support for major custom item plugins +- Prevents stacking and trade issues +- Requires no configuration +- Activates automatically + +If you run a heavily customized economy server, this module is highly recommended. \ No newline at end of file diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md index ba87606698..d4ae7d129a 100644 --- a/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/lands.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/lands.md index 06296f5779..7671fcdfe0 100644 --- a/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/lands.md +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/lands.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/openinv.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/openinv.md index c51f628615..4807d57873 100644 --- a/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/openinv.md +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/openinv.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md new file mode 100644 index 0000000000..c2136320b0 --- /dev/null +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md @@ -0,0 +1,138 @@ +# SimpleClaimSystem + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and SimpleClaimSystem. + +It ensures that shop creation and trading respect land ownership and claim permissions defined by SimpleClaimSystem. + +--- + +## What Does It Do? + +SimpleClaimSystem allows players to claim land and protect it from unauthorized interaction. + +Without compatibility: + +- Players could create shops inside claims they do not own. +- Visitors might trade inside protected areas. +- Claim protection might not apply correctly to shops. + +The SimpleClaimSystem compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops within their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a SimpleClaimSystem claim. +- Whether the player has permission within that claim. +- Whether claim rules allow shop interaction. + +If the action is not permitted by the claim, QuickShop blocks it. + +If the location is outside any claim, default QuickShop behavior applies. + +--- + +## Claim Owner Control + +With this module enabled: + +- Claim owners can create and manage shops inside their claim. +- Trusted players follow claim-based permissions. +- Visitors are restricted unless explicitly allowed. +- Claim protection rules apply automatically to shop interactions. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install SimpleClaimSystem. +2. Install the QuickShop SimpleClaimSystem compat module. +3. Restart your server. + +The module activates automatically if SimpleClaimSystem is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If SimpleClaimSystem is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Enable owner override for easier management. + +This ensures players maintain control over their protected land. + +--- + +## Common Questions + +### Can players create shops in someone else's claim? + +Only if claim permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can allow shops outside claims or restrict them. + +### What happens if SimpleClaimSystem is removed? + +QuickShop will revert to default behavior and stop checking claim permissions. + +--- + +## Summary + +The SimpleClaimSystem compat module: + +- Enforces claim-based permissions +- Prevents unauthorized shop creation +- Protects land from unwanted trading +- Requires minimal setup + +It is recommended for servers running SimpleClaimSystem. \ No newline at end of file diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md index a84dbf057b..4dfa8ae97c 100644 --- a/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/towny.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/towny.md index 52ab4818f4..b26c19d335 100644 --- a/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/towny.md +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/towny.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -26,7 +26,7 @@ Town sub-command allow you switch a quickshop between regular shop and town shop For a nation shop, the shop owner will changed to nation fake player created by Towny, and use Nation's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from nation Towny account.\ +All purchases will deposit or withdraw money from nation Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Nation Shop. @@ -35,7 +35,7 @@ If Plot type restriction is enabled, only a specific Plot type can create a Nati For a town shop, the shop owner will changed to town fake player created by Towny, and use Town's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from town Towny account.\ +All purchases will deposit or withdraw money from town Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Town Shop. @@ -88,7 +88,7 @@ bank-mode: ## Permission Override -By adjust configuration, you're allow mayor or king automaticlly grant administrator permission on all shops in their management range. +By adjust configuration, you're allow mayor or king automatically grant administrator permission on all shops in their management range. ```yaml #Should allow Mayor grant the shop administrator permission on they town. @@ -168,7 +168,7 @@ This causes Towny and QuickShop Hikari to use accounts with the same name but di You can adjust the option in configuration to enable workaround. -NOTE: It will force turned on if detected EssentialsX installed on your server.\ +NOTE: It will force turned on if detected EssentialsX installed on your server. At present, we do not provide a method for disable it. ```yaml diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md new file mode 100644 index 0000000000..0189958495 --- /dev/null +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md @@ -0,0 +1,138 @@ +# UltimateClaims + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and UltimateClaims. + +It ensures that shop creation and trading respect land claim permissions managed by UltimateClaims. + +--- + +## What Does It Do? + +On servers using land-claim plugins, players protect areas of the world from unauthorized interaction. + +Without compatibility: + +- Players may create shops inside claims they do not own. +- Visitors might trade in areas where they should not. +- Claim protection rules might not apply correctly to shops. + +The UltimateClaims compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops inside their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a claim. +- Whether the player has permission in that claim. +- Whether claim rules allow shop interaction. + +If the action violates claim settings, QuickShop blocks it. + +Outside of claims, normal QuickShop behavior applies. + +--- + +## Claim Owner Permissions + +With this module enabled: + +- Claim owners can create and manage shops within their claim. +- Trusted players follow claim permission settings. +- Visitors are restricted based on claim configuration. +- Shop actions outside of claims behave normally. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install UltimateClaims. +2. Install the QuickShop UltimateClaims compat module. +3. Restart your server. + +If UltimateClaims is detected on startup, compatibility activates automatically. + +No additional linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Common options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If UltimateClaims is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Keep owner override enabled for better control. + +This ensures players maintain full control over their protected land. + +--- + +## Common Questions + +### Can players create shops inside someone else's claim? + +Only if the claim permissions allow it. + +Otherwise, QuickShop will block the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can choose to restrict shops to claimed land only. + +### What happens if UltimateClaims is removed? + +QuickShop returns to normal behavior without claim checks. + +--- + +## Summary + +The UltimateClaims compat module: + +- Protects claimed land from unauthorized shop usage +- Enforces claim-based permissions +- Integrates smoothly with land-claim servers +- Requires minimal setup + +It is recommended for any server running UltimateClaims. \ No newline at end of file diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md index 87a71a205c..6437754503 100644 --- a/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md @@ -2,8 +2,10 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. Find out more [here](../modules/shops/worldedit.md). + +Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. \ No newline at end of file diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/development/01-getting-start.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/development/01-getting-start.md index 92b773451e..0e78e52367 100644 --- a/i18n/zh-HK/docusaurus-plugin-content-docs/current/development/01-getting-start.md +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/development/01-getting-start.md @@ -6,8 +6,8 @@ This series of articles will help you build extensions for QuickShop-Hikari or i ## License -QuickShop-Hikari is open source using the [GPLv3](https://www.gnu.org/licenses/quick-guide-gplv3.en.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari).\ -You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the GPLv3 agreement. +QuickShop-Hikari is open source using the [AGPLv3](https://www.gnu.org/licenses/agpl-3.0.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari). +You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the AGPLv3 agreement. ## 🚧Don't trust Javadoc too much @@ -48,7 +48,7 @@ QuickShop-Hikari divides operation sources into three types: - Server Main Thread - Async Thread (any other threads but not server main thread) -- Hybird +- Hybrid If you access the API through the wrong thread, QuickShop-Hikari will force a runtime error to be thrown. @@ -58,4 +58,4 @@ For APIs that may trigger network IO or long-time disk IO, you are required not You can see [Util.ensureThread()](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/3d1d271e1106ea1c83cc6068f8232ab7c7860918/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/util/Util.java#L351) and find out the requirements of the different APIs by looking up their use. APIs that do not use Util.ensureThread() are allowed to be called from any thread by default. -You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. +You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. \ No newline at end of file diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md index aa2404c594..7828d414ad 100644 --- a/i18n/zh-HK/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md @@ -10,7 +10,7 @@ ShopManager manager = api.getShopManager(); ## Getting a shop -Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates.\ +Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates. QuickShop-Hikari's store is only bound to one half of "Large Chest", so to get the store, you need to query both the cube itself and its associated cube. The good thing is that there is an API in the plugin that allows you to handle this situation very easily. @@ -71,7 +71,7 @@ manager.deleteShop(shop) // Permanently delete this store, both memory and datab ## Identify a store -Please note that store locations are technically variable and you should not use coordinates to identify a store.\ +Please note that store locations are technically variable and you should not use coordinates to identify a store. Also RuntimeRandomUniqueId should not be used to identify the store, as the name suggests, the value changes every time the server restarts, it should only be used to handle scenarios where the player interacts with the server. ```java diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md index 543f1851da..4f839ed652 100644 --- a/i18n/zh-HK/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md @@ -1,6 +1,6 @@ # 0x05 Per shop permission -QuickShop-Hikari has a per shop permission management system.\ +QuickShop-Hikari has a per shop permission management system. Therefore, for a normal permission node check is not enough, you need to attach an additional check. ## Check with shop diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/development/06-protocol-system.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/development/06-protocol-system.md index 5d37a15536..0380b789f9 100644 --- a/i18n/zh-HK/docusaurus-plugin-content-docs/current/development/06-protocol-system.md +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/development/06-protocol-system.md @@ -15,30 +15,30 @@ This documentation will guide developers through the components, implementation - **Purpose**: Manages packet handling and initialization logic. - **Interface**: `PacketHandler` - **Key Methods**: - - `Map> factories()` - - Retrieves a map of supported `PacketFactory` instances keyed by game versions. - - `void initialize()` - - Initializes the packet handler. - - `Optional> factory(String version)` - - Retrieves a `PacketFactory` for a specific game version. + - `Map> factories()` + - Retrieves a map of supported `PacketFactory` instances keyed by game versions. + - `void initialize()` + - Initializes the packet handler. + - `Optional> factory(String version)` + - Retrieves a `PacketFactory` for a specific game version. ### 2. **PacketFactory** - **Purpose**: Creates and sends specific packet types. - **Interface**: `PacketFactory` - **Supported Packets**: - - **Spawn Packet**: - - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. - - Example Use: Representing shop items visually. - - **Metadata Packet**: - - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. - - Example Use: Updating item display name or properties. - - **Velocity Packet**: - - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. - - Example Use: Custom animations for virtual items. - - **Destroy Packet**: - - Removes the entity from the client view. Created using `createDestroyPacket()`. - - Example Use: Unloading or removing a virtual display item. + - **Spawn Packet**: + - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. + - Example Use: Representing shop items visually. + - **Metadata Packet**: + - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. + - Example Use: Updating item display name or properties. + - **Velocity Packet**: + - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. + - Example Use: Custom animations for virtual items. + - **Destroy Packet**: + - Removes the entity from the client view. Created using `createDestroyPacket()`. + - Example Use: Unloading or removing a virtual display item. Developers implementing custom `PacketFactory` should ensure these packets are correctly handled and optimized for performance. @@ -46,24 +46,24 @@ Developers implementing custom `PacketFactory` should ensure these packets are c - **Purpose**: Oversees the lifecycle of virtual display items and integrates with packet handlers. - **Key Features**: - - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). - - Manages virtual display items mapped to chunks. - - Provides thread-safe operations for adding and removing display items. + - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). + - Manages virtual display items mapped to chunks. + - Provides thread-safe operations for adding and removing display items. ### 4. **VirtualDisplayItem** - **Purpose**: Represents a virtual item displayed to players. - **Key Features**: - - Generates and caches packets for spawning, metadata, velocity, and destruction. - - Manages packet senders for each player. - - Handles spawn and removal operations dynamically. + - Generates and caches packets for spawning, metadata, velocity, and destruction. + - Manages packet senders for each player. + - Handles spawn and removal operations dynamically. ### 5. **ProtocolLibHandler and PacketEventsHandler** - **Purpose**: Provide implementations of `PacketHandler` using ProtocolLib and PacketEvents, respectively. - **Differences**: - - `ProtocolLibHandler` leverages ProtocolLib API. - - `PacketEventsHandler` uses the PacketEvents library. + - `ProtocolLibHandler` leverages ProtocolLib API. + - `PacketEventsHandler` uses the PacketEvents library. --- @@ -140,11 +140,11 @@ public class CustomPacketFactory implements PacketFactory { Packet factories are provided for specific game versions through two primary implementations: - **ProtocolLib**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` - **PacketEvents**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` --- diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md new file mode 100644 index 0000000000..aebc035f87 --- /dev/null +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md @@ -0,0 +1,297 @@ +# Interaction System (Developer Guide) + +The Interaction System allows developers to fully customize how players interact with shops. + +As of 6.2.0.11, the system has been redesigned to be: + +- Modular +- Extensible +- Thread-safe +- Fully customizable by third-party addons + +This guide will walk you through: + +1. What the Interaction System is +2. Getting the `InteractionManager` +3. Understanding `InteractionType` +4. Understanding `InteractionBehavior` +5. Registering custom interactions +6. Best practices + +--- + +# Overview + +The Interaction System is composed of three main components: + +| Component | Purpose | +| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| `InteractionType` | Describes **what kind of click happened** (standing, sneaking, left-click, sign, shopblock, etc.) | +| `InteractionBehavior` | Describes **what action should happen** when that type is triggered | +| `InteractionManager` | Central registry that manages interactions and behaviors | + +This separation allows developers to: + +- Add new click types +- Add new behaviors +- Override existing ones +- Extend QuickShop without modifying core code + +--- + +# Getting the InteractionManager + +To begin registering custom interactions, you must retrieve the `InteractionManager` instance. + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +If you are working directly with the plugin instance: + +```java +InteractionManager manager = QuickShop.getInstance().getInteractionManager(); +``` + +Once obtained, you can: + +- Register new interaction types +- Register new behaviors +- Override existing behaviors + +--- + +# Understanding InteractionType + +`InteractionType` represents **how** a player interacted with a shop. + +Examples include: + +- `STANDING_LEFT_CLICK_SIGN` +- `STANDING_RIGHT_CLICK_SHOPBLOCK` +- `SNEAKING_LEFT_CLICK_CONTAINER` +- etc. + +Each `InteractionType` defines: + +- Player stance (standing/sneaking) +- Click type (left/right) +- Target (sign/shopblock/container) + +InteractionTypes do NOT define behavior — they only define the trigger. + +--- + +# Understanding InteractionBehavior + +`InteractionBehavior` defines **what happens** when an interaction is triggered. + +Examples of built-in behaviors: + +- `TRADE_INTERACTION` +- `TRADE_UI` +- `CONTROL_PANEL` +- `CONTROL_PANEL_UI` +- `NONE` + +A behavior: + +- Executes logic +- May open GUIs +- May send chat panels +- May directly trade items +- Can cancel or modify flow + +This separation makes it easy to reuse behaviors across multiple interaction types. + +--- + +# Registering Custom Interactions + +There are two things you can register: + +- A custom `InteractionType` +- A custom `InteractionBehavior` + +--- + +## Creating a Custom InteractionBehavior + +Create a class implementing `InteractionBehavior`. + +Example: + +```java +public class MyTradeBehavior implements InteractionBehavior { + + @Override + public String getKey() { + return "MY_CUSTOM_TRADE"; + } + + @Override + public void execute(InteractionClick click) { + Player player = click.getPlayer(); + Shop shop = click.getShop(); + + player.sendMessage("You triggered my custom interaction!"); + + // Add your custom logic here + } +} +``` + +Then register it: + +```java +InteractionManager manager = api.getInteractionManager(); +manager.behavior(new MyTradeBehavior()); +``` + +Now your behavior is available for use. + +--- + +## Creating a Custom InteractionType + +You may also register custom interaction types if you want to introduce new trigger definitions. + +Example: + +```java +public class MyCustomInteraction implements InteractionType { + + @Override + public String getKey() { + return "STANDING_DOUBLE_CLICK_SIGN"; + } + + @Override + public boolean matches(InteractionClick click) { + // Define custom logic to detect this interaction + return click.isStanding() + && click.isSign() + && click.isDoubleClick(); + } +} +``` + +Register it: + +```java +manager.interaction(new MyCustomInteraction()); +``` + +--- + +# Binding Types to Behaviors + +The InteractionManager internally maps interaction types to behaviors based on configuration and registration order. + +Once your behavior is registered: + +- It can be referenced in `interaction.yml` +- Or attached programmatically + +Example interaction.yml usage: + +```yaml +STANDING_LEFT_CLICK_SIGN: MY_CUSTOM_TRADE +``` + +--- + +# The InteractionClick Object + +When your behavior executes, you receive an `InteractionClick` object. + +It provides: + +- `getPlayer()` +- `getShop()` +- `getLocation()` +- `isSneaking()` +- `isSign()` +- `isShopBlock()` +- etc. + +This gives full context for safe execution. + +--- + +# Advanced: Overriding Built-in Behavior + +If you register a behavior using the same key as an existing one, your behavior can override the default. + +⚠️ Be careful when doing this — you are replacing core functionality. + +--- + +# Best Practices + +### Always Use Unique Keys + +Avoid naming collisions: + +``` +MYPLUGIN_CUSTOM_BEHAVIOR +``` + +### Keep Behavior Lightweight + +Do not block the main thread with: + +- Heavy database calls +- File IO +- Network calls + +Use async tasks if needed. + +### Respect Permissions + +Always validate: + +```java +if (!player.hasPermission("myplugin.use")) { + return; +} +``` + +### Avoid Hard Overrides Unless Necessary + +Instead of replacing built-in behaviors, consider extending them. + +--- + +# Example: Full Minimal Implementation + +```java +public class ExampleAddon { + + public void register(QuickShopAPI api) { + + InteractionManager manager = api.getInteractionManager(); + + manager.behavior(new MyTradeBehavior()); + manager.interaction(new MyCustomInteraction()); + } +} +``` + +--- + +# Conclusion + +The Interaction System is designed to allow: + +- Full extensibility +- Clean separation of triggers and actions +- Easy integration for third-party developers + +By retrieving the `InteractionManager`: + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +You gain full control over how shops respond to player actions. \ No newline at end of file diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/development/08-tax-manager.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/development/08-tax-manager.md new file mode 100644 index 0000000000..72a56f9e88 --- /dev/null +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/development/08-tax-manager.md @@ -0,0 +1,266 @@ +# Tax System (Developer Guide) + +The QuickShop tax system allows server owners and developers to define how transaction taxes are calculated, distributed, and extended. + +As of 6.2.0.11, the tax system has been fully rewritten to provide: + +- A flexible TaxManager +- Pluggable TaxProvider support +- Progressive taxation +- Tax targeting (shop owner, interacting player, or both) +- Custom extension capability for third-party addons + +This guide explains how to work with the tax system programmatically. + +--- + +# Overview + +The tax system is composed of three core components: + +TaxManager +Responsible for coordinating tax calculation and execution. + +TaxProvider +Defines how tax values are calculated. + +TaxRates +Represents calculated tax results for a transaction. + +The system is designed to allow custom providers to be registered and used without modifying core logic. + +--- + +# Getting the TaxManager + +To work with the tax system, retrieve the TaxManager from the ShopManager. + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +Once obtained, you can: + +- Access current tax configuration +- Register custom tax providers +- Calculate tax values +- Hook into tax events + +--- + +# How the Tax System Works + +During a shop transaction: + +1. A base price is determined. +2. The TaxManager selects the active TaxProvider. +3. The TaxProvider calculates applicable tax. +4. A TaxRates object is produced. +5. The system applies the tax to: + + - Shop owner + - Interacting player + - Or both (depending on configuration) + +This architecture allows tax behavior to be modified without altering transaction logic. + +--- + +# TaxProvider + +A TaxProvider defines how tax values are calculated. + +You may create your own provider to implement: + +- Progressive tax brackets +- Flat percentage tax +- Conditional tax rules +- Region-based tax +- Rank-based tax +- Time-based tax + +Example minimal provider: + +```java +public class MyCustomTaxProvider implements TaxProvider { + + @Override + public TaxRates calculateTax(TaxContext context) { + + double basePrice = context.getPrice(); + + double taxAmount = basePrice * 0.05; // 5% flat tax + + return new TaxRates() + .ownerTax(taxAmount) + .buyerTax(0.0); + } +} +``` + +Then register it: + +```java +taxManager.provider(new MyCustomTaxProvider()); +``` + +Once registered, your provider will be used for tax calculations. + +--- + +# TaxRates + +TaxRates represents the result of a tax calculation. + +It typically contains: + +- Owner tax amount +- Buyer tax amount +- Total tax impact +- Metadata (if applicable) + +The transaction system will read from TaxRates and apply deductions accordingly. + +--- + +# Progressive Taxation + +The built-in system supports progressive tax structures. + +This allows server administrators to tax based on: + +- Player balance +- Shop owner balance +- Configured tax brackets + +Example configuration concept: + +- 0–10,000 balance → 1% tax +- 10,000–100,000 → 2% tax +- 100,000+ → 3% tax + +Developers can extend or override this logic inside a custom TaxProvider. + +--- + +# Targeting Tax + +The new tax system allows taxes to be applied to: + +- Shop owner +- Interacting player +- Both + +This is controlled via configuration, but custom providers can override distribution logic by adjusting TaxRates output. + +Example: + +```java +return new TaxRates() + .ownerTax(basePrice * 0.02) + .buyerTax(basePrice * 0.01); +``` + +--- + +# Registering a Custom TaxProvider + +To replace or extend tax logic: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); + +taxManager.provider(new MyCustomTaxProvider()); +``` + +You may register only one primary provider at a time. If multiple providers are needed, implement internal delegation within your custom provider. + +--- + +# Tax Events + +The tax system integrates with the event system. + +The modern event used is: + +ShopEnhancedTaxEvent + +This replaces legacy tax events and provides improved context, including: + +- Transaction builder reference +- TaxRates object +- Modification capability before final execution + +You can listen for the event and modify tax behavior dynamically: + +```java +@EventHandler +public void onTax(ShopEnhancedTaxEvent event) { + + TaxRates rates = event.getTaxRates(); + + // Example: Give VIP players reduced owner tax + if (event.getOwner().hasPermission("vip.tax.discount")) { + rates.ownerTax(rates.getOwnerTax() * 0.5); + } +} +``` + +--- + +# Best Practices + +Always keep tax calculations lightweight. + +Avoid: + +- Heavy database queries inside calculateTax +- Blocking network calls +- Long-running computations + +If complex logic is required, pre-cache required data outside the tax execution path. + +Ensure negative tax values are not returned unless intentional. + +Always validate final amounts before applying modifications. + +Respect configuration hierarchy unless intentionally overriding it. + +--- + +# Example Full Implementation + +```java +public class ExampleTaxAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + TaxManager taxManager = manager.taxManager(); + + taxManager.provider(new MyCustomTaxProvider()); + } +} +``` + +--- + +# Conclusion + +The new tax system is designed for: + +- Flexibility +- Extensibility +- Clean separation of concerns +- Future expansion + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +You gain full control over how QuickShop calculates and applies tax during transactions. \ No newline at end of file diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/development/09-layout-provider.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/development/09-layout-provider.md new file mode 100644 index 0000000000..55e3cd3e91 --- /dev/null +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/development/09-layout-provider.md @@ -0,0 +1,275 @@ +# Shop Layout Provider (Developer Guide) + +The Shop Layout Provider system allows developers to customize how shop signs are structured and rendered. + +As of 6.2.0.11, shop layouts are no longer hardcoded. Instead, they are controlled through the `IShopLayoutProvider` interface, which allows: + +- Custom sign line ordering +- Per-shop-type layouts (BUYING, SELLING, FROZEN, or custom types) +- Dynamic layout resolution +- Complete replacement of the default layout system + +This guide explains how to access, override, and implement a custom layout provider. + +--- + +# Overview + +The layout provider controls how shop sign lines are arranged. + +Instead of hardcoding: + +Line 1 → Header +Line 2 → Trading info +Line 3 → Item +Line 4 → Price + +The system now allows full customization through: + +- Config-based layout definitions +- Custom `IShopLayoutProvider` implementations +- Runtime overrides + +The default implementation is `SimpleShopLayoutProvider`. + +--- + +# Accessing the Layout Provider + +To retrieve the current layout provider: + +```java +ShopManager manager = api.getShopManager(); +IShopLayoutProvider provider = manager.shopLayoutProvider(); +``` + +To replace the layout provider with a custom one: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Once replaced, your implementation will control how shop layouts are generated. + +--- + +# Understanding IShopLayoutProvider + +`IShopLayoutProvider` defines how layout data is retrieved and resolved. + +It is responsible for: + +- Providing layout configuration per shop type +- Determining which layout to use +- Supplying formatted line keys +- Allowing future extensibility + +The default implementation reads layout definitions from configuration and applies them based on shop type. + +--- + +# Default Layout Example + +The default configuration-based layout looks like this: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +Each line maps to a layout component key. + +An empty string (`""`) leaves that line blank. + +The layout provider resolves these keys into actual sign content. + +--- + +# Creating a Custom Layout Provider + +To override the default behavior, implement `IShopLayoutProvider`. + +Example minimal implementation: + +```java +public class MyCustomLayoutProvider implements IShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + + ShopLayout layout = new ShopLayout(); + + layout.setLine(1, "Custom Header"); + layout.setLine(2, "Owner: " + shop.getOwnerName()); + layout.setLine(3, shop.getItem().getType().name()); + layout.setLine(4, "$" + shop.getPrice()); + + return layout; + } +} +``` + +Then register it: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Your layout will now control all shop sign formatting. + +--- + +# Per-Type Layout Control + +Because the system no longer depends on the legacy ShopType enum, layouts can support: + +- Built-in types (BUYING, SELLING, FROZEN) +- Custom shop types +- Addon-defined shop types + +Your provider can determine layout logic dynamically: + +```java +@Override +public ShopLayout provideLayout(Shop shop) { + + if (shop.getShopType().key().equals("FROZEN")) { + return frozenLayout(shop); + } + + return defaultLayout(shop); +} +``` + +This allows conditional formatting, localization adjustments, or special event styling. + +--- + +# Advanced Customization + +A custom layout provider can: + +- Pull data from external plugins +- Inject dynamic placeholders +- Modify layout per player +- Apply formatting logic +- Override color schemes +- Apply region-based formatting +- Implement animated sign systems + +Because the layout provider is resolved at runtime, you can compute layouts dynamically instead of reading static config. + +--- + +# Replacing vs Extending the Default Provider + +You have two options: + +Replace entirely: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Or extend the default implementation: + +```java +public class ExtendedLayoutProvider extends SimpleShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + ShopLayout base = super.provideLayout(shop); + + base.setLine(1, "[Extended] " + base.getLine(1)); + + return base; + } +} +``` + +Extending is safer if you only want to modify small portions. + +--- + +# Best Practices + +Keep layout generation lightweight. + +Avoid: + +- Heavy database queries +- Blocking IO +- Complex network calls + +Layout generation runs during shop updates and sign refresh events. + +Always handle null values safely. + +Ensure layout line count does not exceed sign limits. + +Avoid hardcoding shop type names unless necessary. + +If your layout supports custom shop types, validate their keys properly. + +--- + +# Example Full Registration + +```java +public class LayoutAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + + manager.shopLayoutProvider(new MyCustomLayoutProvider()); + } +} +``` + +--- + +# Conclusion + +The Shop Layout Provider system allows complete control over shop sign structure. + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +``` + +And setting: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +You can redefine how every shop is displayed on the server. + +This system was designed to support: + +- Extensibility +- Custom shop types +- Localization +- Dynamic formatting +- Future expansion \ No newline at end of file diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/faq/compare-reremake.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/faq/compare-reremake.md index aaa1a9e507..6b39f02520 100644 --- a/i18n/zh-HK/docusaurus-plugin-content-docs/current/faq/compare-reremake.md +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/faq/compare-reremake.md @@ -64,7 +64,7 @@ If you are a Reremake user, you may be confused about the differences between Hi ## Which one should I use? Well, it depends on what your needs are.\ -If you have an old server (<1.20) instance, Reremake is your only choice.\ +If you have an old server ({'<'}1.20) instance, Reremake is your only choice.\ ~~If you are in China which has GFW interfere, you also should consider Reremake because it doesn't need to load libraries from Global Internet.~~ Solved in 6.0.0.0. If none of these applies, give Hikari a try! diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md index 551f579e7c..172be3a69b 100644 --- a/i18n/zh-HK/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md @@ -1,8 +1,8 @@ # Where Addons/Compacts is -Addons and Compatilibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. +Addons and Compatibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. -- Open Modrinth versions page, locate the version your're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) +- Open Modrinth versions page, locate the version you're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) - Frantically slide your mouse wheel down until the lowest end of the page. - You get it! diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/internal/database-schema.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/internal/database-schema.md index fea685e4fc..45e04adb56 100644 --- a/i18n/zh-HK/docusaurus-plugin-content-docs/current/internal/database-schema.md +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/internal/database-schema.md @@ -4,17 +4,17 @@ This chapter will explain the implementation details of QuickShop Hikari's datab ## Tables -This section explains the database tables created by QuickShop-Hikari.\ -Unless otherwise specified, the initial `qs_` in table name is the table prefix.\ +This section explains the database tables created by QuickShop-Hikari. +Unless otherwise specified, the initial `qs_` in table name is the table prefix. For the latest code definition for each table, see: [DataTables.java](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/hikari/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/database/DataTables.java) ### `data` -This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information.\ -No matter what, a data record should not be modified after it is created, until it got deleted.\ +This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information. +No matter what, a data record should not be modified after it is created, until it got deleted. Any new changes to the shop should create a new copy, apply the changes to the copy, and insert it as a new record. -Basiclly, Copy-on-write. +Basically, Copy-on-write. A data record only be deleted from the database when no any table references their `data_id`. @@ -29,7 +29,7 @@ A data record only be deleted from the database when no any table references the | unlimited | BIT NOT NULL | 0 | Indicates whether this store is an unlimited store, 0=Limited, 1=Unlimited | | hologram | BIT NOT NULL | 0 | Indicates the suspension status of this store's display item, 0=Follow global settings, 1=Disabled | | tax_account | VARCHAR(36) | NULL | The uuid for tax account, If it is not NULL, tax will be paid to the specified account | -| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serilized to JSON string | +| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serialized to JSON string | | extra | LONGTEXT | Empty Yaml | Used to store experimental settings of QuickShop Hikari or persistent data of other plugins | | inv_wrapper | VARCHAR(255) NOT NULL | N/A | Unique identifier for InventoryWrapper for this shop data entry | | inv_symbol_link | TEXT NOT NULL | N/A | Unique Inventory symbol used to pass to InventoryWrapper, for locating inventory | @@ -38,7 +38,7 @@ A data record only be deleted from the database when no any table references the ### `shops` -This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes.\ +This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes. Multiple `shop_id` can correspond to the same `data_id`. | Column Name | DataType | Default | Description | diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/modules/cmd-alias.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/modules/cmd-alias.md index 53f1577685..e6ed381c0d 100644 --- a/i18n/zh-HK/docusaurus-plugin-content-docs/current/modules/cmd-alias.md +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/modules/cmd-alias.md @@ -23,7 +23,7 @@ custom-commands: - cshop ``` -Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect.\ +Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect. The effect should be like this: ![command-alias](./img/command-alias.png) diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/modules/datasource.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/modules/datasource.md index 6fc1bd8931..3fd3a8bdee 100644 --- a/i18n/zh-HK/docusaurus-plugin-content-docs/current/modules/datasource.md +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/modules/datasource.md @@ -48,7 +48,7 @@ Execute the `/quickshop export` command in console, quickshop will export a zip ![exported data](img/database-export.png) -Stop your database, switch the datasource, and start the server.\ +Stop your database, switch the datasource, and start the server. You may noticed all shops are gone, because new datasources had no data inside, we will restore them from export. Rename that exported ZIP file to `recovery.zip`, execute `/quickshop recovery` and restart your server, all shops should back. diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/modules/itemmatcher.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/modules/itemmatcher.md index 56be243019..922907be27 100644 --- a/i18n/zh-HK/docusaurus-plugin-content-docs/current/modules/itemmatcher.md +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/modules/itemmatcher.md @@ -4,7 +4,7 @@ ItemMatcher is a utility used by QuickShop-Hikari to compare the items, it is th :::caution -If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse.\ +If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse. **TL;DR: Keep default unless you know what you're doing.** ::: @@ -26,10 +26,10 @@ matcher: work-type: 1 ``` -By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility.\ +By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility. But still, you can toggle to QuickShop Item Matcher if you need to customize the comparing or running QuickShop on the server jar which have bug affect the Bukkit comparing system. -## Customize the metadata compareing +## Customize the metadata comparing Customize only works under QuickShop Item Matcher. diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md index fc2af69d2b..d04e8f2783 100644 --- a/i18n/zh-HK/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md @@ -4,7 +4,7 @@ ItemStack Loader is a workaround for loading the Bukkit ItemStack. :::caution -Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossble. +Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossible. ::: diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/modules/localization.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/modules/localization.md index e9121e1a36..d47589ab9a 100644 --- a/i18n/zh-HK/docusaurus-plugin-content-docs/current/modules/localization.md +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/modules/localization.md @@ -10,7 +10,7 @@ To help translate QuickShop-Hikari, please visit our [Crowdin Homepage](https:// ## Crowdin OTA -QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will overrided when you reload QuickShop-Hikari or restart your server. +QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will override when you reload QuickShop-Hikari or restart your server. Your installation will keep translations up-to-date without any touch. @@ -110,6 +110,16 @@ To disable the CrowdinOTA, please add it in the startup flag: -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager.enableCrowdinOTA=false ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +use-crowdin-ota: false +``` + ### Self-Hosted OTA Server If you self-hosted our translation server by using [CrowdinCopyDeploy](https://github.com/Ghost-chu/CrowdinCopyDeploy) tool, you're able to change the OTA server to yourself server. @@ -118,4 +128,12 @@ If you self-hosted our translation server by using [CrowdinCopyDeploy](https://g -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager= ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml +Use + +```yaml +crowdin-host: +``` \ No newline at end of file diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/modules/shops/benefit.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/modules/shops/benefit.md index 4d7a9c8f42..c59d92e6d1 100644 --- a/i18n/zh-HK/docusaurus-plugin-content-docs/current/modules/shops/benefit.md +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/modules/shops/benefit.md @@ -37,3 +37,13 @@ By default, for security, QuickShop-Hikari disallow add offline players into sho ```bash -Dcom.ghostchu.quickshop.command.subcommand.SubCommand_Benefit.allowOffline=true ``` + +### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +shop.allow-offline-benefit: true +``` \ No newline at end of file diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/modules/shops/control-panel b/i18n/zh-HK/docusaurus-plugin-content-docs/current/modules/shops/control-panel new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/modules/shops/control-panel @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/modules/shops/history.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/modules/shops/history.md index fa891adeab..195b64a042 100644 --- a/i18n/zh-HK/docusaurus-plugin-content-docs/current/modules/shops/history.md +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/modules/shops/history.md @@ -24,7 +24,7 @@ The History GUI displays the details of each recorded transaction and other usef ### Transaction details -When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed.\ +When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed. If you are checking the history of more than one store, the player head will be replaced with an item from the corresponding store. ![history-gui](./img/history-gui.png) diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md new file mode 100644 index 0000000000..c5ed3b3fe4 --- /dev/null +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md @@ -0,0 +1,90 @@ +# Shop Types + +QuickShop supports multiple shop types, allowing shops to behave differently depending on their mode. + +The built-in shop types are: + +- Selling +- Buying +- Frozen + +Each type changes how the shop interacts with players. + +--- + +## Selling Shop + +A Selling shop allows players to: + +- Buy items from the shop owner +- Pay money to receive items + +This is the most common shop type. + +--- + +## Buying Shop + +A Buying shop allows players to: + +- Sell items to the shop owner +- Receive money in exchange + +This is commonly used for: + +- Resource collection +- Server buy-back shops +- Automated material sinks + +--- + +## Frozen Shop + +A Frozen shop temporarily disables trading. + +While frozen: + +- No buying is allowed +- No selling is allowed +- The shop remains intact +- Staff or admins can manage it + +This is useful for: + +- Temporary suspensions +- Investigation +- Event locking +- Maintenance + +--- + +## Switching Shop Types + +Shop types can be changed through: + +- Control panel +- GUI control panel +- Admin commands + +Frozen mode is also available via: + +/qs freeze + +--- + +## Custom Shop Types + +As of 6.2.x, the system supports extensible shop types internally. + +While server owners use the built-in types, the system now allows future expansion through addons. + +--- + +## Summary + +Shop types allow you to: + +- Control how money flows +- Enable buy-back mechanics +- Temporarily disable shops +- Build advanced economic systems \ No newline at end of file diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md new file mode 100644 index 0000000000..18e0a47407 --- /dev/null +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md @@ -0,0 +1,217 @@ +# Sign Layout + +QuickShop allows you to fully customize how shop signs are structured. + +You can change: + +- What appears on each line +- The order of information +- Layout per shop type +- Whether certain lines are blank + +This gives you complete control over how shops look on your server. + +--- + +## How Sign Layout Works + +Shop signs have four lines. + +Instead of being hardcoded, QuickShop uses a configurable layout system. + +Each shop type can have its own layout: + +- SELLING +- BUYING +- FROZEN + +You define what each line displays using layout keys. + +--- + +## Configuration Location + +Sign layout is configured in `config.yml` under: + +```yaml +layout: +``` + +Example default configuration: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## Available Layout Keys + +Each line value refers to a built-in layout component. + +Common layout keys include: + +- `header` – The shop header line +- `trading` – Buy/Sell direction information +- `item` – Item name +- `price` – Shop price + +These keys are automatically formatted using your language file and formatting settings. + +--- + +## Leaving a Line Blank + +To leave a line empty, use: + +```yaml +line2: "" +``` + +This is useful if you want: + +- Minimalist signs +- Cleaner layouts +- Custom spacing +- Decorative formatting + +--- + +## Customizing Per Shop Type + +Each shop type can have a different layout. + +For example: + +```yaml +layout: + + SELLING: + line1: "header" + line2: "item" + line3: "price" + line4: "" + + BUYING: + line1: "header" + line2: "price" + line3: "item" + line4: "" + + FROZEN: + line1: "header" + line2: "" + line3: "item" + line4: "Frozen" +``` + +This allows you to visually differentiate: + +- Selling shops +- Buying shops +- Frozen shops + +--- + +## Practical Examples + +### Minimal Style + +```yaml +layout: + SELLING: + line1: "item" + line2: "price" + line3: "" + line4: "" +``` + +### Compact Economy Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "price" + line3: "item" + line4: "" +``` + +### Large Clear Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## How Updates Affect Layout + +When you change the layout: + +- Existing shop signs will update automatically when refreshed. +- New shops will use the updated format immediately. + +If needed, you can reload QuickShop to apply changes. + +--- + +## Best Practices + +- Keep important information visible (price and item). +- Avoid overly complex formatting. +- Test layout changes before deploying on large servers. +- Use different layouts for BUYING and SELLING to reduce confusion. + +--- + +## Common Questions + +### Can I add more than four lines? + +No. +Minecraft signs are limited to four lines. + +### Can I add colors? + +Colors are controlled by your language file and formatting settings. + +### Can I change layout without restarting? + +Yes, but reloading or refreshing shops is recommended to ensure full update. + +--- + +## Summary + +The Sign Layout system allows you to: + +- Fully customize shop sign appearance +- Create per-type layouts +- Simplify or expand shop information +- Improve clarity for players + +All layout customization is handled inside `config.yml`. diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md new file mode 100644 index 0000000000..980bad10f2 --- /dev/null +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md @@ -0,0 +1,130 @@ +# Shop Sign Waxing + +QuickShop can automatically wax shop signs to prevent players from editing them manually. + +Waxing protects the integrity of your shop signs and helps prevent tampering, spoofing, and accidental modification. + +As of modern Minecraft versions, waxed signs cannot be edited unless they are unwaxed first. + +--- + +## What Is Sign Waxing? + +In Minecraft, waxing a sign locks it so that: + +- Players cannot edit the text +- Players cannot modify lines +- Accidental changes are prevented +- Malicious edits are blocked + +When enabled in QuickShop, shop signs are automatically waxed when created. + +--- + +## Why Use It? + +Sign waxing protects against: + +- Players editing price lines +- Changing item names on signs +- Spoofing shop information +- Accidental formatting issues +- Sign hijacking attempts + +On public servers, this feature is strongly recommended. + +--- + +## How It Works + +When a shop is created: + +1. QuickShop generates the shop sign. +2. The sign text is written. +3. The sign is automatically waxed (if enabled). + +If a shop is updated: + +- The sign will be safely updated by QuickShop. +- The wax state is maintained. + +Players cannot manually edit shop signs while waxing is enabled. + +--- + +## Configuration + +To enable or disable sign waxing, edit `config.yml`: + +```yaml +shop: + sign-wax: true +``` + +### true + +- Shop signs are automatically waxed. +- Players cannot edit the sign manually. + +### false + +- Shop signs behave like normal Minecraft signs. +- Players may edit them if permitted by the game. + +--- + +## Recommended Setting + +For most servers: + +```yaml +shop: + sign-wax: true +``` + +This ensures shop data stays accurate and secure. + +--- + +## Common Questions + +### Can admins still modify shop signs? + +QuickShop controls shop sign formatting. +Manual edits are not recommended. + +Admins should use: + +- Control panel +- Shop commands +- Direct configuration changes + +### Does waxing affect shop functionality? + +No. +Waxing only prevents manual text edits. +The shop continues to function normally. + +### Can players un-wax shop signs? + +No. +QuickShop manages the sign state automatically. + +--- + +## Best Practices + +- Keep sign-wax enabled on survival servers. +- Combine sign-wax with proper permissions. +- Avoid manually editing shop signs through other plugins. + +--- + +## Summary + +Sign Waxing: + +- Prevents tampering +- Requires no additional setup + +Enable it once and QuickShop handles the rest. \ No newline at end of file diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/modules/shops/taxes.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/modules/shops/taxes.md new file mode 100644 index 0000000000..1a273fd978 --- /dev/null +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/modules/shops/taxes.md @@ -0,0 +1,92 @@ +# Taxation System + +QuickShop includes a taxation system designed to give server owners more flexibility and control over shop-based income. + +This system was revamped as of 6.2.0.11+ + +The new system allows you to: + +- Apply tax to shop owners +- Apply tax to buyers +- Apply tax to both +- Use progressive tax brackets +- Customize tax behavior in configuration + +This system replaces the legacy tax configuration. + +--- + +## How It Works + +During a transaction: + +1. The shop price is calculated. +2. Tax is calculated based on your configuration. +3. Tax is deducted from the configured target(s). +4. Remaining funds are distributed normally. + +You can configure: + +- Flat percentage tax +- Progressive tax based on player balance +- Tax accounts +- Distribution rules + +--- + +## Progressive Tax + +The new system allows you to tax based on balance brackets. + +Example concept: + +- 0 – 10,000 balance → 1% tax +- 10,000 – 100,000 → 2% tax +- 100,000+ → 3% tax + +This helps prevent extremely wealthy players from dominating the economy. + +--- + +## Who Pays the Tax? + +You can configure whether tax applies to: + +- The shop owner +- The buyer +- Both + +This gives you flexibility depending on your economy design. + +--- + +## Configuration + +All tax-related settings are located under the `shop-tax` section in `config.yml`. + +After updating to 6.2.0.11+, review your tax configuration carefully, as the old tax system has been replaced. + +--- + +## Why Use Tax? + +The taxation system can help: + +- Remove currency from circulation +- Fund server banks or towns +- Create sink mechanics +- Balance inflation +- Reward active players + +--- + +## Summary + +The new taxation system is: + +- Flexible +- Configurable +- Balance-aware +- Designed for modern economy servers + +Make sure to review your configuration after upgrading. \ No newline at end of file diff --git a/i18n/zh-HK/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md b/i18n/zh-HK/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md new file mode 100644 index 0000000000..247c24712d --- /dev/null +++ b/i18n/zh-HK/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md @@ -0,0 +1,161 @@ +# WorldEdit & FAWE Support + +QuickShop includes built-in protection and integration for WorldEdit and FastAsyncWorldEdit (FAWE). + +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. + +You do not need to download or install any additional compatibility plugins. + +--- + +## What This Does + +WorldEdit and FAWE allow administrators and builders to: + +- Copy and paste regions +- Replace large areas of blocks +- Mass-delete regions +- Roll back areas +- Regenerate terrain + +Without protection, these operations could: + +- Create ghost shops +- Leave orphaned shop data in the database +- Duplicate shops unintentionally +- Delete containers without cleaning up shop data +- Cause inconsistencies between world and database + +QuickShop now automatically detects and safely processes WorldEdit and FAWE operations. + +--- + +## Built-In Behavior + +When WorldEdit or FAWE modifies blocks: + +- Shops removed via WorldEdit are properly deleted from the database. +- Shop data stays synchronized with world changes. +- Ghost shops are prevented. +- Mass block replacements will not leave broken shop entries behind. + +This applies to: + +- //set +- //replace +- //cut +- //paste +- //regen +- Region deletion +- Mass container removal + +No configuration is required. + +--- + +## FAWE Support + +FastAsyncWorldEdit (FAWE) is fully supported. + +Because FAWE processes edits asynchronously, QuickShop handles: + +- Region-thread safe processing +- Async block updates +- Safe shop deletion during batch edits + +You do not need to enable anything manually. + +--- + +## Removing Shops with WorldEdit + +If you delete containers (chests, barrels, etc.) using WorldEdit: + +QuickShop will automatically: + +- Detect the block removal +- Unregister the shop +- Clean the database entry +- Prevent ghost shops + +You do not need to run `/qs cleanghost` after WorldEdit usage in normal circumstances. + +--- + +## Copying and Pasting Shops + +If you copy and paste regions that contain shops: + +- Shop data will not duplicate incorrectly. +- Shop IDs remain consistent. +- Invalid pasted shops will not auto-register unless properly created. + +This prevents accidental duplication exploits. + +--- + +## Performance + +WorldEdit and FAWE operations can modify thousands of blocks at once. + +QuickShop processes these safely and efficiently: + +- Batch-aware cleanup +- Thread-safe region access (especially on Folia) +- Minimal performance impact during mass edits + +--- + +## Configuration + +There are no specific WorldEdit configuration options in QuickShop. + +Support is automatic and always enabled if WorldEdit or FAWE is detected. + +If WorldEdit is not installed, no extra code is executed. + +--- + +## Common Questions + +### Do I need the old WorldEdit compatibility jar? + +No. + +As of 6.2.0.11, WorldEdit support is built-in and the separate compatibility module has been removed. + +### Does this work with FAWE? + +Yes. FAWE is fully supported. + +### Will shops break if I use //set air? + +No. Shops will be safely removed and cleaned up. + +### Do I need to restart after installing WorldEdit? + +No. QuickShop detects WorldEdit automatically on startup. + +--- + +## Best Practices + +Even though QuickShop safely handles WorldEdit operations, it is recommended to: + +- Avoid copying shops intentionally unless required +- Use backups before large region edits +- Test large FAWE operations on staging servers when possible + +--- + +## Summary + +QuickShop’s built-in WorldEdit and FAWE integration ensures: + +- Safe mass edits +- No ghost shops +- Automatic database cleanup +- Thread-safe processing +- No extra modules required + +WorldEdit support is now a core feature of QuickShop. \ No newline at end of file diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/addon/limited.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/addon/limited.md index 70af27e240..fae55a8c95 100644 --- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/addon/limited.md +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/addon/limited.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -41,8 +35,8 @@ Limit players to purchase up to 16 items per month. /quickshop limit period MONTH ``` -The system is based on the QuickShop-Hikari calendar system.\ -The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year.\ +The system is based on the QuickShop-Hikari calendar system. +The timing is updated using the "value change" update system, which means that 2022-12-31 to 2023-01-01 is also considered a year. Same for days, months and hours. Available time units: diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/addon/list.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/addon/list.md index 93d182f083..f20b91fd7b 100644 --- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/addon/list.md +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/addon/list.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/addon/plan.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/addon/plan.md index 52a6e79cb4..c10ef4df42 100644 --- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/addon/plan.md +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/addon/plan.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -18,7 +18,7 @@ Recorded data can be displayed from Hikari v2.0.0.0 onwards, but only after vers - All shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 1000 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `5` in server scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `5` in server scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Player Scope @@ -27,7 +27,7 @@ And still is Plan limitations, the list sorting is disturbed, so the display ord - All owned shops (to a Shops list) - Recent Purchase History (include deleted or invalided shops), only in recent 365 days and 50 rows will be shown up. -Due the Plan limitations, We can't add more data into the list because the maxmium columns are hardcoded limited to `4` in player scope.\ +Due the Plan limitations, We can't add more data into the list because the maximum columns are hardcoded limited to `4` in player scope. And still is Plan limitations, the list sorting is disturbed, so the display order is not the actual order. ## Showcase diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/addon/reforges.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/addon/reforges.md index 2a14509eb7..25fff1752a 100644 --- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/addon/reforges.md +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/addon/reforges.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.0.0.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md index 304d39bc05..6f9f51d250 100644 --- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/addon/reremake-migrator.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This addon was added into QuickShop-Hikari at 5.1.1.0 +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -44,7 +38,7 @@ _This is not necessary if you are using an H2 database._ ### Prepare for convert -To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console.\ +To avoid data corruption, no players (including administrators) are allowed on the server while data conversion is being performed, and all operations will be performed on the console. If a player is in the server, the conversion cannot be started. Once the conversion has begun, the server will be locked during the conversion process and no players will be able to join the server during the conversion. diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/addon/shopitemonly.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/addon/shopitemonly.md index c45062f8c2..1ccfe977b3 100644 --- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/addon/shopitemonly.md +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/addon/shopitemonly.md @@ -2,17 +2,11 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -:::info - -This addon was added into QuickShop-Hikari at 4.1.0.0-SNAPSHOT - -::: - -This addon prevents players from putting non-store items into store containers.\ +This addon prevents players from putting non-store items into store containers. Does not apply to stores that use the item inventory redirection API (aka. InventoryWrapper API). This Addon will check for container (or transferring) items on events such as the player closing the container or hopper access. diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md new file mode 100644 index 0000000000..9c8b4f7407 --- /dev/null +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/changelogs/6.2.0.10.md @@ -0,0 +1,55 @@ +# 6.2.0.10 + +## Major Changes + +- Added support for 1.21.6 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.7 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Added support for 1.21.8 for paper(spigot has not been updated as we look to deprecate spigot support, nag the spigot developers about modernizing their API) +- Some internal updates for packetevents(2.9.0 is now required.) +- Updated Lands support + +## Addon Changes + +- Added MatcherPlus Addon + - Allows support for BreweryX and AdvancedItems stacks in shops with improved matching abilities +- Added FabledSkyblock Compat +- Added Dominion Compat +- Added HuskTowns Compat +- Added IridiumSkyblock Compat +- Added member-create for member creation in ARM compat +- Added admin-override and quickshop.arm.admin permission for admin overrides in ARM + +## Minor Changes + +- Added configurations for the coordinates of the display item. +- Added /qs toggledisplayall on/off server/owned + - Players need to have permission node quickshop.toggledisplayall.admin to toggle all on the server. +- Added ability to use abbreviations in /qs price and /qs create commands such as 2.5k for 2500 +- Added ability to set default display status using shop.default-display in config.yml + +## Fixes + +- Fixed issue with display item being sent to the moon on 1.21.5 +- Fixed issue where TRADE_UI interactions interfered with quick create. +- Fixed issue with displays on protocollib falling through the chest +- Fixed issue with signs on .9 and previous .10 snapshots on early versions +- Implemented some performance improvements for paper servers +- Fixed all outstanding issues with Folia usage.(thanks to RootB33R/SleazLee for contributions) + +## Possible 6.2.0.11 Features + +Here's an outline for some features that may arrive in 6.2.0.11: + +- Additional compats/addons that have been piling up. + - see: https://github.com/QuickShop-Community/QuickShop-Hikari/issues/1756 +- gradle?(interested to see compilation time uplifts) +- Update documentation +- Update configuration comments +- Update configuration system? + - auto updating? + - Allows removal of the update code +- Remove waste spigot modules? + - Any versions of 1.20 that can be discarded due to low use? +- Bug fixing, of course +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... \ No newline at end of file diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md new file mode 100644 index 0000000000..b41c88662a --- /dev/null +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/changelogs/6.2.0.11.md @@ -0,0 +1,173 @@ +## Outline + +- Update documentation +- Update configuration comments +- Sign parser implementation? + - probably have to re-evaluate since it's been awhile since it has been looked at... + +# 6.2.0.11 + +## Major Changes + +- Removed Spigot Platform Modules, and stopped loading QS if Spigot is detected. This will mean that unless the protocol changes that we use for display items, QS won't need updated for each version. +- Revamped Economy Code Completely + - New classes for all economy-related systems + - Any economy-related or benefits-related events are incompatible with previous versions. +- Added sign layout customizations per-type allowing you to change how lines are configured, an empty string('') will leave an empty line for that line of the sign. + +``` + #The layout of signs for shops. + layout: + + #The layout of BUYING shops. + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of FROZEN shops. + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + #The layout of SELLING shops. + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +- Add wildcard support for item blacklist patterns(thanks to bennycallanan) + - Added support for wildcard patterns in the item blacklist configuration, allowing users to block entire categories of items with simple patterns. + + - Features + - Wildcard patterns like \*_AXE and \*_SPAWN_EGG now work in blacklist configuration + - Supports \* for any characters and ? for single character matching + - Case-insensitive pattern matching +- Overhauled GUI system(thanks to Yusakidev) + - Implemented gui.yml configuration file for customizing the GUI. + - Implemented better filtering for qs browse + - Implement GUI system to be more stable, and less error prone. + - Added gui.yml for fully configurable GUI layouts and text + - Browse menu: search, sort (price/name/stock), and filter (all/buying/selling/in-stock) + - Staff menu: search functionality for player/staff selection + - Grouped item pages for better shop browsing + - Refactored all menu pages to use configurable display/lore +- Added worldedit compat to QS internally as it's widely used. +- Revamped the taxation system to be more flexible and easier to configure. + - introduced a new progressive tax system that allows you to tax based on the balance of players.(suggested by YuanYuanOwO) + - introduced the ability to tax the player interacting with the shop, the owner, or both + - all tax-related configurations have been moved under the shop-tax section of the config. this may require reconfiguration of your tax settings. + - added a new ShopEnhancedTaxEvent, deprecated the old ShopTaxEvent. + - Added a new TaxManager, and TaxProvider interfaces, this allows for custom tax providers to be added by addons/third-party developers. + +## Addons/Compats Changes + +- Added UltimateClaims compat +- Added SimpleClaimSystem compat +- Added Quests by Pika addon +- Added BetonQuest addon +- Added Pl3xMap addon +- MatcherPlus Compat Improvements + - Added support for CrazyCrates + - Added support for ExcellentCrates + - Added support for SilkSpawners. +- WorldGuard Compat Improvements(Thanks to golovin12) + - Added clear permission handling: + - Region owners and members automatically have permission to create and trade in their own regions. + - Other players must have the appropriate WorldGuard flags enabled (quickshophikari-create, quickshophikari-trade) to interact with shops. + - If a shop is located outside any region, default QuickShop behavior applies (no extra restrictions) +- Added colored markers based on shop state for bluemap(thanks to YusakiDev) +- Updated dynmap/towny addons to use the new ShopTypeEnhancedEvent instead of ShopTypeEvent. +- Removed worldedit compat, it's now included in the main plugin. +- Added support for global flags to the worldguard compat. + +## Internals/Developer APIs + +- Removed several deprecated methods and classes. +- Revamped the interaction manager. It is now more flexible and allows external additions + - This involves two classes InteractionBehavior and InteractionType. + - InteractionType details the type of interaction such as: STANDING_LEFT_CLICK_SIGN, STANDING_LEFT_CLICK_SHOP + - InteractionBehavior outlines a behavior for an InteractionType such as CONTROL_PANEL and TRADE_UI +- Added UserLimitCalculationEvent, which allows for custom limits to be applied to users. + - This is useful for limiting the number of shops a user can have, or adding on to the existing limits provided by the ranks system without needing to implement a new RankLimiter. +- Added a new ShopLayoutProvider interface, and default implementation. + - This allows for custom layouts to be used for shops, allowing for more customization. + - This also allows for developers to override the default layout provider and create their own implementation. +- How to make your own? + - Implement the classes you would like to then register with the InteractionManager: + - ```java + InteractionManager manager = QuickShop.getInstance().getInteractionManager(); + + manager.interaction(new MyTradeInteraction()); + manager.behavior(new MyTradeBehavior()); + ``` +- Replaced some Apache Commons calls that could be easily replaced with built-in java methods, reduces some calls by ~ 1100ms/method call +- Deprecated the ShopType enum, and the ShopTypeEvent. These are replaced with the new IShopType interface and implementing classes. + - The new event is ShopTypeEnhancedEvent. + - This allows for third-party addons to add their own shop types, and simplifies code checks for translations. +- Updated config system to use Boosted-yaml + - this allows for auto-updating of config files without complex update scripts + - this also allows for the config system to not be minecraft-dependent. +- Replaced logical PaperLib calls with native PaperAPI calls. + +## Minor Changes + +- Bump Java version up to 21 +- Added shop.display-allow-enchants to enable/disable enchantments for display items on shops. +- Added workaround for packetevents not supporting custom enchants on itemstacks for virtual display items. +- Using locale translations for shop-type in mode toggle icon(thanks to ExyiN) +- Bumped Residence version for the compat(thanks to YuanYuanOwO) +- add world whitelist support(thanks to wling-art) +- added /qs database save command, which saves all currently dirty-marked shops to the database. +- Split up interactions _SHOPBLOCK into _SHOPBLOCK and _CONTAINER. + - _SHOPBLOCK relates to shops, where _CONTAINER relates to shop-valid containers that are not currently shops. +- Added inventory as an option for command panel, this is useful for adding a secondary option for players to open a shop's inventory. +- Moved crowdin arguments from system properties to config.yml + - crowdin-host + - use-crowdin-ota + +## Fixes + +- Fixes issue with item price restrictions(thanks to maxcom1) +- Fixes issue with 1.20.x protocol lib displays(thanks to YuanYuanOwO) +- Fixes issue when no item is in hand for itemdebug(thanks to YuanYuanOwO) +- Fixes issue with dominion addon(thanks to YuanYuanOwO) +- Add a simple check to avoid this. If it is not own shop, reject limit request directly.(Thanks to YuanYuanOwO) +- Fix NPE by not setting tax for price in TransactionBuilder(thanks to maxcom1) +- Fixes /quickshop suggestprice to differentiate between buy/sell shops. (Thanks to MidSpike) +- PacketEvents ClassNotFoundException with ProtocolLib(thanks to wling-art) +- Reallocate block state access to region thread for shop creation(thanks to r00tbeerman) +- resolve SLF4J StaticLoggerBinder loading error(thanks to wling-art) +- sign hijacking issue by validating sign facing direction(thanks to wling-art) +- Performance improvements for QuickShop disabling to prevent potential freezes. +- Fixed issue with 1.20.4 packetevents virtual displays not staying put. +- Fixes critical issue in GriefPrevention compatibility plugin. +- Fixes issue with shop owner not getting money when benefits active. +- Fixes for lands addon on folia, Use regionThread for Folia compatibility(thanks to YusakiDev) +- Fixes for TRADE_DIRECT on stacking shops +- Fixes issue for protocollib 5.4.0 with undocumented packet changes. +- Fixes issue where item stacks could be used on creation above the max stack size. +- Fixes issue with BukkitAudiences-related crashes on 1.21.11. +- Fix issue with shop deletion when getting too impatient. +- Fix the permission check issue when a shop owned by a non-owner is transferred to someone else. (thanks to YuanYuanOwO) +- Fix ui with supertool (thanks to YuanYuanOwO) +- Fix issue with logs generating outside debug mode. +- Fix issue with /qs find. +- Fix configuration loading timing. +- Fix configuration loading/creation warning message language. +- Fix command description language key mismatch(thanks to wling-art) +- Fix qs clean command on folia(thanks to wling-art) +- Fix per-player-shop-sign on folia(thanks to wling-art) +- Fix potential recursive deadlock in virtual display packet sending(thanks to wling-art) +- Fix configuration loading/creation warning message language. +- Fix issue with /qs browse and ShopItemOnly addon not behaving properly together on folia. +- Fix issue with PLAN using outdated APIs. +- Fix issue with /qs clean on folia.(thanks to wling-art) +- Fix issue with /qs cleanghost on folia(thanks to wling-art) +- More thread safety fixes for shops on folia.(thanks to wling-art) +- Fix owner payment calculations with benefits(thanks to wling-art) \ No newline at end of file diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md index 8172f9b410..dcc3edc67d 100644 --- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/changelogs/6.2.0.9.md @@ -20,20 +20,20 @@ the ControlComponent object with a custom one that will replace the original dur ### Introduction of the Revamped Packet System 1. **About**: - - A modular and scalable system for managing packets related to virtual display items in Minecraft. - - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. + - A modular and scalable system for managing packets related to virtual display items in Minecraft. + - Supports both ProtocolLib and PacketEvents libraries for greater flexibility. 2. **Custom Packet Factories**: - - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. - - Packet types: - - **Spawn Packet**: Spawns a virtual item entity at a specific location. - - **Metadata Packet**: Updates the visual properties of virtual items. - - **Velocity Packet**: Adds motion/velocity to entities (currently optional). - - **Destroy Packet**: Removes the entity from the client view. + - Modular implementation of `PacketFactory` for game versions 1.20.x and 1.21.x. + - Packet types: + - **Spawn Packet**: Spawns a virtual item entity at a specific location. + - **Metadata Packet**: Updates the visual properties of virtual items. + - **Velocity Packet**: Adds motion/velocity to entities (currently optional). + - **Destroy Packet**: Removes the entity from the client view. 3. **Error Handling and Logging**: - - Enhanced debug logs to trace packet-related issues. - - Detailed error messages for missing factories or unregistered listeners. + - Enhanced debug logs to trace packet-related issues. + - Detailed error messages for missing factories or unregistered listeners. #### Improvements: diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md index 7775308722..c6e0948d19 100644 --- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/advancedregionmarket.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md index f420997a9c..38587e3784 100644 --- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/bentobox.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md index 5ed8182c9a..259c55f342 100644 --- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/bungeecord-geyser.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md index 924a37ac49..7fd4596a6a 100644 --- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/bungeecord.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,6 +10,6 @@ This is a BungeeCord plugin, you need install it within your BungeeCord's plugin ## How does it work? -BungeeCord Bridge plugins will register a `quickshop:bungee` channel for fowarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. +BungeeCord Bridge plugins will register a `quickshop:bungee` channel for forwarding the player commands and chats to a sub-server when the sub-server is waiting for the player's input. All forwarding is indicated by QuickShop-Hikari on the Spigot server and ends when it is not needed. diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md index 27d68956a8..20fbaf7a0c 100644 --- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/chestprotect.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -10,5 +10,5 @@ This compatibility module added [Chest Protect](https://www.spigotmc.org/resourc ## How does it work? -This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident.\ +This compatibility module will prevent fake protection check events from passing to Chest Protect's listeners, so the protections won't be deleted by accident. It also prevents players from creating shops on ChestProtect protected containers. diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md index 220e26d8bb..e1757e7be9 100644 --- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/clearlag.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/dominion.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/dominion.md new file mode 100644 index 0000000000..e1195278a8 --- /dev/null +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/dominion.md @@ -0,0 +1,138 @@ +# Dominion + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and Dominion. + +It ensures that shop creation and trading respect Dominion’s land and territory protection system. + +--- + +## What Does It Do? + +Dominion allows players or groups to claim land and define territory-based permissions. + +Without compatibility: + +- Players could create shops inside territories they do not control. +- Visitors might trade inside protected dominions. +- Dominion permission rules might not apply to shop interactions. + +The Dominion compat module ensures that: + +- Shop creation respects territory ownership. +- Shop trading follows Dominion permission settings. +- Protected land remains secure from unauthorized shop usage. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a Dominion-controlled area. +- Whether the player has permission within that territory. +- Whether Dominion rules allow shop interaction. + +If the action is not permitted by Dominion settings, QuickShop blocks it. + +If the location is outside any Dominion territory, default QuickShop behavior applies. + +--- + +## Territory Owner Control + +With this module enabled: + +- Territory owners can create and manage shops inside their dominion. +- Trusted members follow territory-based permissions. +- Outsiders are restricted unless explicitly allowed. +- Shop actions respect Dominion’s land rules automatically. + +This prevents unauthorized shop placement inside protected territories. + +--- + +## Installation + +1. Install Dominion. +2. Install the QuickShop Dominion compat module. +3. Restart your server. + +The module activates automatically if Dominion is detected. + +No manual configuration linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside dominions +whitelist-mode: false + +# Allow territory owners to override shop permissions +allow-owner-override: true +``` + +If Dominion is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For servers using Dominion: + +- Restrict shop creation to territory owners or trusted members. +- Prevent shop creation in wilderness if desired. +- Allow dominion owners to manage shop permissions. +- Review Dominion permission settings to align with shop behavior. + +This ensures protected territories remain secure and organized. + +--- + +## Common Questions + +### Can players create shops in someone else's dominion? + +Only if Dominion permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You may allow or restrict shops outside dominions. + +### What happens if Dominion is removed? + +QuickShop returns to normal behavior and stops checking Dominion territories. + +--- + +## Summary + +The Dominion compat module: + +- Enforces territory-based permissions +- Prevents unauthorized shop creation +- Protects claimed land from misuse +- Integrates seamlessly with Dominion + +It is recommended for servers running Dominion. \ No newline at end of file diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md index 743d3ae666..2ac9b10488 100644 --- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/elitemobs.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md new file mode 100644 index 0000000000..07ba4ada66 --- /dev/null +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/fabledskyblock.md @@ -0,0 +1,133 @@ +# FabledSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and FabledSkyblock. + +It ensures that shop creation and trading properly respect island boundaries and island permissions. + +--- + +## What Does It Do? + +On Skyblock servers, players build and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Players might trade in areas they should not. +- Island protection rules might not apply to shops. + +The FabledSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members behave correctly with shops. +- Island visitors are restricted appropriately. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a FabledSkyblock island. +- Whether the player has permission on that island. +- Whether island settings allow the action. + +If the action is not permitted by island rules, QuickShop will deny it. + +--- + +## Island Ownership Rules + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow island permission settings. +- Visitors can only trade if island permissions allow it. +- Outside of islands, default QuickShop behavior applies. + +--- + +## Installation + +1. Install FabledSkyblock. +2. Install the QuickShop FabledSkyblock compat module. +3. Restart your server. + +The module activates automatically if FabledSkyblock is detected. + +No manual linking is required. + +--- + +## Configuration + +If the module provides configuration options, they will appear in its `config.yml`. + +Typical options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If FabledSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most Skyblock servers: + +- Allow shop creation only inside islands. +- Prevent trading in the void or wilderness. +- Let island owners control shop permissions. +- Use island rank systems to manage shop access. + +This helps maintain economic balance between islands. + +--- + +## Common Questions + +### Can players create shops in the void? + +Only if your configuration allows it. +Most servers disable shop creation outside islands. + +### Does this affect island war or PvP modes? + +No. +The module only checks island ownership and permissions for shop interactions. + +### What happens if FabledSkyblock is removed? + +QuickShop returns to normal behavior. + +--- + +## Summary + +The FabledSkyblock compat module: + +- Protects island economies +- Enforces island permission rules +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is strongly recommended for any server running FabledSkyblock. \ No newline at end of file diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md index 81b13d2c6b..32614d3019 100644 --- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/griefprevention.md @@ -2,17 +2,17 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -GreifPrevention compatibility module added compaitibility with GF. +GreifPrevention compatibility module added compatibility with GF. ## How does it work This module allow QuickShop-Hikari check if player have permission to create or use QuickShop in specific region. -And delete shops when claim removed, untrusted, unclimed, expired, resized or subclaim created. +And delete shops when claim removed, untrusted, unclaimed, expired, resized or subclaim created. ## Configuration diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md new file mode 100644 index 0000000000..e71b34d462 --- /dev/null +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/husktowns.md @@ -0,0 +1,139 @@ +# HuskTowns + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and HuskTowns. + +It ensures that shop creation and trading respect town and claim permissions defined by HuskTowns. + +--- + +## What Does It Do? + +HuskTowns allows players to create towns and claim land. + +Without compatibility: + +- Players could create shops inside towns they do not belong to. +- Visitors might trade inside protected towns. +- Town permission rules might not apply to shop interactions. + +The HuskTowns compat module ensures that: + +- Shop creation respects town ownership. +- Trading follows town permission settings. +- Town members and visitors are handled correctly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a HuskTowns claim. +- Whether the player is a town member, trusted player, or outsider. +- Whether the town's permission settings allow the action. + +If the action is not permitted by town rules, QuickShop blocks it. + +Outside of town claims, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Town Owner Control + +With this module enabled: + +- Town owners can create and manage shops inside their town. +- Town members follow town-based permission settings. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect town claim protection. + +This prevents unauthorized shop placement and trading inside protected towns. + +--- + +## Installation + +1. Install HuskTowns. +2. Install the QuickShop HuskTowns compat module. +3. Restart your server. + +The module activates automatically if HuskTowns is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside towns +whitelist-mode: false + +# Allow town owners to override shop permissions +allow-owner-override: true +``` + +If HuskTowns is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For town-based survival servers: + +- Restrict shop creation to town members. +- Allow trading only where town permissions permit. +- Prevent shop creation in wilderness if desired. +- Enable owner override for better administrative control. + +This helps maintain town-based economic balance. + +--- + +## Common Questions + +### Can players create shops in another town? + +Only if that town's permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this affect wilderness shops? + +That depends on your configuration. + +You can allow or restrict shops outside towns. + +### What happens if HuskTowns is removed? + +QuickShop returns to normal behavior and stops checking town permissions. + +--- + +## Summary + +The HuskTowns compat module: + +- Enforces town-based land permissions +- Protects towns from unauthorized shop usage +- Integrates smoothly with HuskTowns +- Requires minimal setup + +It is recommended for any server running HuskTowns. \ No newline at end of file diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md new file mode 100644 index 0000000000..3fa2995eb0 --- /dev/null +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/iridiumskyblock.md @@ -0,0 +1,139 @@ +# IridiumSkyblock + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and IridiumSkyblock. + +It ensures that shop creation and trading respect island boundaries and island permission settings defined by IridiumSkyblock. + +--- + +## What Does It Do? + +IridiumSkyblock allows players to create and manage their own islands. + +Without compatibility: + +- Players might create shops outside their island. +- Visitors might trade inside protected islands. +- Island protection rules might not apply correctly to shops. + +The IridiumSkyblock compat module ensures that: + +- Shop creation respects island ownership. +- Trading follows island permission rules. +- Island members and visitors are handled properly. +- Wilderness behavior remains configurable. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside an IridiumSkyblock island. +- Whether the player is the island owner, member, or visitor. +- Whether island permissions allow shop interaction. + +If the action is not permitted, QuickShop blocks it. + +Outside of islands, default QuickShop behavior applies unless restricted by configuration. + +--- + +## Island Owner Permissions + +With this module enabled: + +- Island owners can create and manage shops on their island. +- Island members follow the island's permission configuration. +- Visitors are restricted unless explicitly allowed. +- Shop interactions respect island protection rules. + +This prevents unauthorized shop usage inside protected islands. + +--- + +## Installation + +1. Install IridiumSkyblock. +2. Install the QuickShop IridiumSkyblock compat module. +3. Restart your server. + +The module activates automatically if IridiumSkyblock is detected. + +No additional setup is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside islands +whitelist-mode: false + +# Allow island owners to override shop permissions +allow-owner-override: true +``` + +If IridiumSkyblock is not installed, this module remains inactive. + +--- + +## Recommended Setup for Skyblock Servers + +For most IridiumSkyblock servers: + +- Restrict shop creation to island owners. +- Allow island members to trade if trusted. +- Prevent shop creation in the void or wilderness. +- Enable owner override for better management. + +This helps maintain balanced island economies. + +--- + +## Common Questions + +### Can players create shops outside their island? + +Only if your configuration allows it. + +Most Skyblock servers restrict shops to island areas. + +### Do island ranks affect shop permissions? + +Yes, if your island permissions are configured to control interaction rights. + +QuickShop follows island rules. + +### What happens if IridiumSkyblock is removed? + +QuickShop returns to normal behavior and stops checking island permissions. + +--- + +## Summary + +The IridiumSkyblock compat module: + +- Protects island economies +- Enforces island-based permissions +- Prevents unauthorized shop placement +- Integrates seamlessly with Skyblock gameplay + +It is recommended for any server running IridiumSkyblock. diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md new file mode 100644 index 0000000000..3b4726cb9d --- /dev/null +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/itemmatcherplus.md @@ -0,0 +1,151 @@ +# ItemMatcherPlus + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +The ItemMatcherPlus module improves how QuickShop matches custom and plugin-modified items. + +It allows QuickShop to properly recognize and stack items created by other plugins that normally would not match using standard Bukkit item comparisons. + +This module is especially useful for servers that use: + +- Custom items +- Modified metadata +- NBT-based systems +- Advanced crate rewards +- Custom brewing systems +- Custom fishing rewards + +--- + +## What Does It Do? + +By default, Minecraft item matching checks: + +- Material type +- Basic metadata + +However, many plugins modify items with: + +- Custom NBT data +- Hidden tags +- Custom lore formats +- Unique identifiers + +Without enhanced matching: + +- Items may not stack +- Shops may refuse valid items +- Transactions may fail +- Buying/selling may not behave correctly + +ItemMatcherPlus improves compatibility and matching accuracy. + +--- + +## Supported Plugins + +ItemMatcherPlus includes built-in support for: + +- AdvancedItems +- BreweryX +- CrazyCrates +- ExcellentCrates +- PyroFishing +- SilkSpawners + +If any of these plugins are installed, QuickShop will automatically use enhanced matching logic. + +No additional configuration is required. + +--- + +## How It Works + +When a player trades with a shop: + +1. QuickShop checks the item. +2. If ItemMatcherPlus is enabled, it performs advanced matching. +3. Plugin-specific metadata is validated. +4. The item is confirmed as a match (or rejected safely). + +This allows: + +- Proper stacking of custom items +- Correct shop transactions +- Accurate buy/sell detection +- Reduced false mismatches + +--- + +## Installation + +1. Download the ItemMatcherPlus module. +2. Place the JAR into your `plugins` folder. +3. Restart your server. + +If supported plugins are detected, compatibility activates automatically. + +--- + +## Configuration + +ItemMatcherPlus does not require configuration. + +It activates automatically when: + +- The module is installed +- A supported plugin is detected + +If a supported plugin is not installed, no extra logic runs. + +--- + +## Why You Should Use It + +You should install ItemMatcherPlus if your server uses: + +- Custom fishing plugins +- Custom brewing systems +- Crate plugins with modified items +- Custom spawners +- Any plugin that modifies NBT data + +Without it, shops may not properly recognize custom items. + +--- + +## Common Questions + +### Do I need this if I don't use custom item plugins? + +No. +If you only use vanilla items, this module is not necessary. + +### Does this affect performance? + +The module only activates enhanced matching when needed. + +Normal item matching remains fast and efficient. + +### Will it break existing shops? + +No. +It improves compatibility and matching accuracy without modifying existing shop data. + +--- + +## Summary + +ItemMatcherPlus: + +- Improves item matching accuracy +- Adds support for major custom item plugins +- Prevents stacking and trade issues +- Requires no configuration +- Activates automatically + +If you run a heavily customized economy server, this module is highly recommended. \ No newline at end of file diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md index ba87606698..d4ae7d129a 100644 --- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/itemsadder.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/lands.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/lands.md index 06296f5779..7671fcdfe0 100644 --- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/lands.md +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/lands.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/openinv.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/openinv.md index c51f628615..4807d57873 100644 --- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/openinv.md +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/openinv.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md new file mode 100644 index 0000000000..c2136320b0 --- /dev/null +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/simpleclaimsystem.md @@ -0,0 +1,138 @@ +# SimpleClaimSystem + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and SimpleClaimSystem. + +It ensures that shop creation and trading respect land ownership and claim permissions defined by SimpleClaimSystem. + +--- + +## What Does It Do? + +SimpleClaimSystem allows players to claim land and protect it from unauthorized interaction. + +Without compatibility: + +- Players could create shops inside claims they do not own. +- Visitors might trade inside protected areas. +- Claim protection might not apply correctly to shops. + +The SimpleClaimSystem compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops within their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a SimpleClaimSystem claim. +- Whether the player has permission within that claim. +- Whether claim rules allow shop interaction. + +If the action is not permitted by the claim, QuickShop blocks it. + +If the location is outside any claim, default QuickShop behavior applies. + +--- + +## Claim Owner Control + +With this module enabled: + +- Claim owners can create and manage shops inside their claim. +- Trusted players follow claim-based permissions. +- Visitors are restricted unless explicitly allowed. +- Claim protection rules apply automatically to shop interactions. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install SimpleClaimSystem. +2. Install the QuickShop SimpleClaimSystem compat module. +3. Restart your server. + +The module activates automatically if SimpleClaimSystem is detected. + +No manual linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Example options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If SimpleClaimSystem is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Enable owner override for easier management. + +This ensures players maintain control over their protected land. + +--- + +## Common Questions + +### Can players create shops in someone else's claim? + +Only if claim permissions allow it. + +Otherwise, QuickShop blocks the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can allow shops outside claims or restrict them. + +### What happens if SimpleClaimSystem is removed? + +QuickShop will revert to default behavior and stop checking claim permissions. + +--- + +## Summary + +The SimpleClaimSystem compat module: + +- Enforces claim-based permissions +- Prevents unauthorized shop creation +- Protects land from unwanted trading +- Requires minimal setup + +It is recommended for servers running SimpleClaimSystem. \ No newline at end of file diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md index a84dbf057b..4dfa8ae97c 100644 --- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/slimefun.md @@ -2,13 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). - -::: - -:::info - -This compatibility module added in 6.0.0.0. +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/towny.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/towny.md index 52ab4818f4..b26c19d335 100644 --- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/towny.md +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/towny.md @@ -2,7 +2,7 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: @@ -26,7 +26,7 @@ Town sub-command allow you switch a quickshop between regular shop and town shop For a nation shop, the shop owner will changed to nation fake player created by Towny, and use Nation's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from nation Towny account.\ +All purchases will deposit or withdraw money from nation Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Nation Shop. @@ -35,7 +35,7 @@ If Plot type restriction is enabled, only a specific Plot type can create a Nati For a town shop, the shop owner will changed to town fake player created by Towny, and use Town's Tax account for receiving the shop taxes. -All purchases will deposit or withdraw money from town Towny account.\ +All purchases will deposit or withdraw money from town Towny account. At the same time, if the bank mode is enabled, the price will be forced to adjust automatically according to the price of the item in the profile. If Plot type restriction is enabled, only a specific Plot type can create a Town Shop. @@ -88,7 +88,7 @@ bank-mode: ## Permission Override -By adjust configuration, you're allow mayor or king automaticlly grant administrator permission on all shops in their management range. +By adjust configuration, you're allow mayor or king automatically grant administrator permission on all shops in their management range. ```yaml #Should allow Mayor grant the shop administrator permission on they town. @@ -168,7 +168,7 @@ This causes Towny and QuickShop Hikari to use accounts with the same name but di You can adjust the option in configuration to enable workaround. -NOTE: It will force turned on if detected EssentialsX installed on your server.\ +NOTE: It will force turned on if detected EssentialsX installed on your server. At present, we do not provide a method for disable it. ```yaml diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md new file mode 100644 index 0000000000..0189958495 --- /dev/null +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/ultimateclaims.md @@ -0,0 +1,138 @@ +# UltimateClaims + +:::info + +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). + +::: + +This module adds compatibility between QuickShop and UltimateClaims. + +It ensures that shop creation and trading respect land claim permissions managed by UltimateClaims. + +--- + +## What Does It Do? + +On servers using land-claim plugins, players protect areas of the world from unauthorized interaction. + +Without compatibility: + +- Players may create shops inside claims they do not own. +- Visitors might trade in areas where they should not. +- Claim protection rules might not apply correctly to shops. + +The UltimateClaims compat module ensures that: + +- Shop creation respects claim ownership. +- Shop trading follows claim permission rules. +- Claim owners retain control over shops inside their land. + +--- + +## How It Works + +When a player attempts to: + +- Create a shop +- Interact with a shop +- Trade with a shop + +QuickShop checks: + +- Whether the location is inside a claim. +- Whether the player has permission in that claim. +- Whether claim rules allow shop interaction. + +If the action violates claim settings, QuickShop blocks it. + +Outside of claims, normal QuickShop behavior applies. + +--- + +## Claim Owner Permissions + +With this module enabled: + +- Claim owners can create and manage shops within their claim. +- Trusted players follow claim permission settings. +- Visitors are restricted based on claim configuration. +- Shop actions outside of claims behave normally. + +This prevents unauthorized shop placement inside protected areas. + +--- + +## Installation + +1. Install UltimateClaims. +2. Install the QuickShop UltimateClaims compat module. +3. Restart your server. + +If UltimateClaims is detected on startup, compatibility activates automatically. + +No additional linking is required. + +--- + +## Configuration + +If configuration options are available, they will appear in the module’s `config.yml`. + +Common options may include: + +```yaml +# Prevent shop creation outside claims +whitelist-mode: false + +# Allow claim owners to override shop permissions +allow-owner-override: true +``` + +If UltimateClaims is not installed, this module remains inactive. + +--- + +## Recommended Setup + +For survival servers using land claims: + +- Restrict shop creation to claim owners. +- Allow claim members to trade if trusted. +- Prevent shop creation in wilderness if desired. +- Keep owner override enabled for better control. + +This ensures players maintain full control over their protected land. + +--- + +## Common Questions + +### Can players create shops inside someone else's claim? + +Only if the claim permissions allow it. + +Otherwise, QuickShop will block the action. + +### Does this prevent wilderness shops? + +That depends on your configuration. + +You can choose to restrict shops to claimed land only. + +### What happens if UltimateClaims is removed? + +QuickShop returns to normal behavior without claim checks. + +--- + +## Summary + +The UltimateClaims compat module: + +- Protects claimed land from unauthorized shop usage +- Enforces claim-based permissions +- Integrates smoothly with land-claim servers +- Requires minimal setup + +It is recommended for any server running UltimateClaims. \ No newline at end of file diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md index 87a71a205c..6437754503 100644 --- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/compat-modules/worldedit.md @@ -2,8 +2,10 @@ :::info -Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at.md). +Can't find where to download the JAR? [Click here](../faq/where-addons-compacts-at). ::: -Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. Find out more [here](../modules/shops/worldedit.md). + +Simple module designed to delete shops in your worldedit region to prevent the creation of ghost shops. \ No newline at end of file diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/development/01-getting-start.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/development/01-getting-start.md index 92b773451e..0e78e52367 100644 --- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/development/01-getting-start.md +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/development/01-getting-start.md @@ -6,8 +6,8 @@ This series of articles will help you build extensions for QuickShop-Hikari or i ## License -QuickShop-Hikari is open source using the [GPLv3](https://www.gnu.org/licenses/quick-guide-gplv3.en.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari).\ -You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the GPLv3 agreement. +QuickShop-Hikari is open source using the [AGPLv3](https://www.gnu.org/licenses/agpl-3.0.html) license and you can always find our source code on [Github](https://github.com/QuickShop-Community/QuickShop-Hikari). +You are free to modify and use any part of QuickShop-Hikari's source code as long as you adhere to the AGPLv3 agreement. ## 🚧Don't trust Javadoc too much @@ -48,7 +48,7 @@ QuickShop-Hikari divides operation sources into three types: - Server Main Thread - Async Thread (any other threads but not server main thread) -- Hybird +- Hybrid If you access the API through the wrong thread, QuickShop-Hikari will force a runtime error to be thrown. @@ -58,4 +58,4 @@ For APIs that may trigger network IO or long-time disk IO, you are required not You can see [Util.ensureThread()](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/3d1d271e1106ea1c83cc6068f8232ab7c7860918/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/util/Util.java#L351) and find out the requirements of the different APIs by looking up their use. APIs that do not use Util.ensureThread() are allowed to be called from any thread by default. -You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. +You should never bypass this restriction, we only add this check if necessary, it is the most basic guarantee of plugin performance and server stability, if you trigger a thread check, please use the scheduler to complete your task. \ No newline at end of file diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md index aa2404c594..7828d414ad 100644 --- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/development/03-work-with-shop-manager.md @@ -10,7 +10,7 @@ ShopManager manager = api.getShopManager(); ## Getting a shop -Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates.\ +Since Minecraft has a special "Large Chest", we can't simply get the store map directly from the coordinates. QuickShop-Hikari's store is only bound to one half of "Large Chest", so to get the store, you need to query both the cube itself and its associated cube. The good thing is that there is an API in the plugin that allows you to handle this situation very easily. @@ -71,7 +71,7 @@ manager.deleteShop(shop) // Permanently delete this store, both memory and datab ## Identify a store -Please note that store locations are technically variable and you should not use coordinates to identify a store.\ +Please note that store locations are technically variable and you should not use coordinates to identify a store. Also RuntimeRandomUniqueId should not be used to identify the store, as the name suggests, the value changes every time the server restarts, it should only be used to handle scenarios where the player interacts with the server. ```java diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md index 543f1851da..4f839ed652 100644 --- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/development/05-per-shop-permission-management.md @@ -1,6 +1,6 @@ # 0x05 Per shop permission -QuickShop-Hikari has a per shop permission management system.\ +QuickShop-Hikari has a per shop permission management system. Therefore, for a normal permission node check is not enough, you need to attach an additional check. ## Check with shop diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/development/06-protocol-system.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/development/06-protocol-system.md index 5d37a15536..0380b789f9 100644 --- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/development/06-protocol-system.md +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/development/06-protocol-system.md @@ -15,30 +15,30 @@ This documentation will guide developers through the components, implementation - **Purpose**: Manages packet handling and initialization logic. - **Interface**: `PacketHandler` - **Key Methods**: - - `Map> factories()` - - Retrieves a map of supported `PacketFactory` instances keyed by game versions. - - `void initialize()` - - Initializes the packet handler. - - `Optional> factory(String version)` - - Retrieves a `PacketFactory` for a specific game version. + - `Map> factories()` + - Retrieves a map of supported `PacketFactory` instances keyed by game versions. + - `void initialize()` + - Initializes the packet handler. + - `Optional> factory(String version)` + - Retrieves a `PacketFactory` for a specific game version. ### 2. **PacketFactory** - **Purpose**: Creates and sends specific packet types. - **Interface**: `PacketFactory` - **Supported Packets**: - - **Spawn Packet**: - - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. - - Example Use: Representing shop items visually. - - **Metadata Packet**: - - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. - - Example Use: Updating item display name or properties. - - **Velocity Packet**: - - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. - - Example Use: Custom animations for virtual items. - - **Destroy Packet**: - - Removes the entity from the client view. Created using `createDestroyPacket()`. - - Example Use: Unloading or removing a virtual display item. + - **Spawn Packet**: + - Spawns a virtual item at a specified location. Typically created using `createSpawnPacket()`. + - Example Use: Representing shop items visually. + - **Metadata Packet**: + - Updates an entity's metadata, such as appearance or name. Created using `createMetaDataPacket()`. + - Example Use: Updating item display name or properties. + - **Velocity Packet**: + - Assigns motion or velocity to an entity. Created using `createVelocityPacket()`. + - Example Use: Custom animations for virtual items. + - **Destroy Packet**: + - Removes the entity from the client view. Created using `createDestroyPacket()`. + - Example Use: Unloading or removing a virtual display item. Developers implementing custom `PacketFactory` should ensure these packets are correctly handled and optimized for performance. @@ -46,24 +46,24 @@ Developers implementing custom `PacketFactory` should ensure these packets are c - **Purpose**: Oversees the lifecycle of virtual display items and integrates with packet handlers. - **Key Features**: - - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). - - Manages virtual display items mapped to chunks. - - Provides thread-safe operations for adding and removing display items. + - Registers and initializes `PacketHandler` instances (e.g., `ProtocolLibHandler` and `PacketEventsHandler`). + - Manages virtual display items mapped to chunks. + - Provides thread-safe operations for adding and removing display items. ### 4. **VirtualDisplayItem** - **Purpose**: Represents a virtual item displayed to players. - **Key Features**: - - Generates and caches packets for spawning, metadata, velocity, and destruction. - - Manages packet senders for each player. - - Handles spawn and removal operations dynamically. + - Generates and caches packets for spawning, metadata, velocity, and destruction. + - Manages packet senders for each player. + - Handles spawn and removal operations dynamically. ### 5. **ProtocolLibHandler and PacketEventsHandler** - **Purpose**: Provide implementations of `PacketHandler` using ProtocolLib and PacketEvents, respectively. - **Differences**: - - `ProtocolLibHandler` leverages ProtocolLib API. - - `PacketEventsHandler` uses the PacketEvents library. + - `ProtocolLibHandler` leverages ProtocolLib API. + - `PacketEventsHandler` uses the PacketEvents library. --- @@ -140,11 +140,11 @@ public class CustomPacketFactory implements PacketFactory { Packet factories are provided for specific game versions through two primary implementations: - **ProtocolLib**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` - **PacketEvents**: - - Versions: 1.20.1 - 1.21.4 - - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` + - Versions: 1.20.1 - 1.21.4 + - Factories: `PacketFactoryv1_20`, `PacketFactoryv1_21` --- diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md new file mode 100644 index 0000000000..aebc035f87 --- /dev/null +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/development/07-interaction-manager.md @@ -0,0 +1,297 @@ +# Interaction System (Developer Guide) + +The Interaction System allows developers to fully customize how players interact with shops. + +As of 6.2.0.11, the system has been redesigned to be: + +- Modular +- Extensible +- Thread-safe +- Fully customizable by third-party addons + +This guide will walk you through: + +1. What the Interaction System is +2. Getting the `InteractionManager` +3. Understanding `InteractionType` +4. Understanding `InteractionBehavior` +5. Registering custom interactions +6. Best practices + +--- + +# Overview + +The Interaction System is composed of three main components: + +| Component | Purpose | +| --------------------- | ------------------------------------------------------------------------------------------------------------------------------------ | +| `InteractionType` | Describes **what kind of click happened** (standing, sneaking, left-click, sign, shopblock, etc.) | +| `InteractionBehavior` | Describes **what action should happen** when that type is triggered | +| `InteractionManager` | Central registry that manages interactions and behaviors | + +This separation allows developers to: + +- Add new click types +- Add new behaviors +- Override existing ones +- Extend QuickShop without modifying core code + +--- + +# Getting the InteractionManager + +To begin registering custom interactions, you must retrieve the `InteractionManager` instance. + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +If you are working directly with the plugin instance: + +```java +InteractionManager manager = QuickShop.getInstance().getInteractionManager(); +``` + +Once obtained, you can: + +- Register new interaction types +- Register new behaviors +- Override existing behaviors + +--- + +# Understanding InteractionType + +`InteractionType` represents **how** a player interacted with a shop. + +Examples include: + +- `STANDING_LEFT_CLICK_SIGN` +- `STANDING_RIGHT_CLICK_SHOPBLOCK` +- `SNEAKING_LEFT_CLICK_CONTAINER` +- etc. + +Each `InteractionType` defines: + +- Player stance (standing/sneaking) +- Click type (left/right) +- Target (sign/shopblock/container) + +InteractionTypes do NOT define behavior — they only define the trigger. + +--- + +# Understanding InteractionBehavior + +`InteractionBehavior` defines **what happens** when an interaction is triggered. + +Examples of built-in behaviors: + +- `TRADE_INTERACTION` +- `TRADE_UI` +- `CONTROL_PANEL` +- `CONTROL_PANEL_UI` +- `NONE` + +A behavior: + +- Executes logic +- May open GUIs +- May send chat panels +- May directly trade items +- Can cancel or modify flow + +This separation makes it easy to reuse behaviors across multiple interaction types. + +--- + +# Registering Custom Interactions + +There are two things you can register: + +- A custom `InteractionType` +- A custom `InteractionBehavior` + +--- + +## Creating a Custom InteractionBehavior + +Create a class implementing `InteractionBehavior`. + +Example: + +```java +public class MyTradeBehavior implements InteractionBehavior { + + @Override + public String getKey() { + return "MY_CUSTOM_TRADE"; + } + + @Override + public void execute(InteractionClick click) { + Player player = click.getPlayer(); + Shop shop = click.getShop(); + + player.sendMessage("You triggered my custom interaction!"); + + // Add your custom logic here + } +} +``` + +Then register it: + +```java +InteractionManager manager = api.getInteractionManager(); +manager.behavior(new MyTradeBehavior()); +``` + +Now your behavior is available for use. + +--- + +## Creating a Custom InteractionType + +You may also register custom interaction types if you want to introduce new trigger definitions. + +Example: + +```java +public class MyCustomInteraction implements InteractionType { + + @Override + public String getKey() { + return "STANDING_DOUBLE_CLICK_SIGN"; + } + + @Override + public boolean matches(InteractionClick click) { + // Define custom logic to detect this interaction + return click.isStanding() + && click.isSign() + && click.isDoubleClick(); + } +} +``` + +Register it: + +```java +manager.interaction(new MyCustomInteraction()); +``` + +--- + +# Binding Types to Behaviors + +The InteractionManager internally maps interaction types to behaviors based on configuration and registration order. + +Once your behavior is registered: + +- It can be referenced in `interaction.yml` +- Or attached programmatically + +Example interaction.yml usage: + +```yaml +STANDING_LEFT_CLICK_SIGN: MY_CUSTOM_TRADE +``` + +--- + +# The InteractionClick Object + +When your behavior executes, you receive an `InteractionClick` object. + +It provides: + +- `getPlayer()` +- `getShop()` +- `getLocation()` +- `isSneaking()` +- `isSign()` +- `isShopBlock()` +- etc. + +This gives full context for safe execution. + +--- + +# Advanced: Overriding Built-in Behavior + +If you register a behavior using the same key as an existing one, your behavior can override the default. + +⚠️ Be careful when doing this — you are replacing core functionality. + +--- + +# Best Practices + +### Always Use Unique Keys + +Avoid naming collisions: + +``` +MYPLUGIN_CUSTOM_BEHAVIOR +``` + +### Keep Behavior Lightweight + +Do not block the main thread with: + +- Heavy database calls +- File IO +- Network calls + +Use async tasks if needed. + +### Respect Permissions + +Always validate: + +```java +if (!player.hasPermission("myplugin.use")) { + return; +} +``` + +### Avoid Hard Overrides Unless Necessary + +Instead of replacing built-in behaviors, consider extending them. + +--- + +# Example: Full Minimal Implementation + +```java +public class ExampleAddon { + + public void register(QuickShopAPI api) { + + InteractionManager manager = api.getInteractionManager(); + + manager.behavior(new MyTradeBehavior()); + manager.interaction(new MyCustomInteraction()); + } +} +``` + +--- + +# Conclusion + +The Interaction System is designed to allow: + +- Full extensibility +- Clean separation of triggers and actions +- Easy integration for third-party developers + +By retrieving the `InteractionManager`: + +```java +InteractionManager manager = api.getInteractionManager(); +``` + +You gain full control over how shops respond to player actions. \ No newline at end of file diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/development/08-tax-manager.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/development/08-tax-manager.md new file mode 100644 index 0000000000..72a56f9e88 --- /dev/null +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/development/08-tax-manager.md @@ -0,0 +1,266 @@ +# Tax System (Developer Guide) + +The QuickShop tax system allows server owners and developers to define how transaction taxes are calculated, distributed, and extended. + +As of 6.2.0.11, the tax system has been fully rewritten to provide: + +- A flexible TaxManager +- Pluggable TaxProvider support +- Progressive taxation +- Tax targeting (shop owner, interacting player, or both) +- Custom extension capability for third-party addons + +This guide explains how to work with the tax system programmatically. + +--- + +# Overview + +The tax system is composed of three core components: + +TaxManager +Responsible for coordinating tax calculation and execution. + +TaxProvider +Defines how tax values are calculated. + +TaxRates +Represents calculated tax results for a transaction. + +The system is designed to allow custom providers to be registered and used without modifying core logic. + +--- + +# Getting the TaxManager + +To work with the tax system, retrieve the TaxManager from the ShopManager. + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +Once obtained, you can: + +- Access current tax configuration +- Register custom tax providers +- Calculate tax values +- Hook into tax events + +--- + +# How the Tax System Works + +During a shop transaction: + +1. A base price is determined. +2. The TaxManager selects the active TaxProvider. +3. The TaxProvider calculates applicable tax. +4. A TaxRates object is produced. +5. The system applies the tax to: + + - Shop owner + - Interacting player + - Or both (depending on configuration) + +This architecture allows tax behavior to be modified without altering transaction logic. + +--- + +# TaxProvider + +A TaxProvider defines how tax values are calculated. + +You may create your own provider to implement: + +- Progressive tax brackets +- Flat percentage tax +- Conditional tax rules +- Region-based tax +- Rank-based tax +- Time-based tax + +Example minimal provider: + +```java +public class MyCustomTaxProvider implements TaxProvider { + + @Override + public TaxRates calculateTax(TaxContext context) { + + double basePrice = context.getPrice(); + + double taxAmount = basePrice * 0.05; // 5% flat tax + + return new TaxRates() + .ownerTax(taxAmount) + .buyerTax(0.0); + } +} +``` + +Then register it: + +```java +taxManager.provider(new MyCustomTaxProvider()); +``` + +Once registered, your provider will be used for tax calculations. + +--- + +# TaxRates + +TaxRates represents the result of a tax calculation. + +It typically contains: + +- Owner tax amount +- Buyer tax amount +- Total tax impact +- Metadata (if applicable) + +The transaction system will read from TaxRates and apply deductions accordingly. + +--- + +# Progressive Taxation + +The built-in system supports progressive tax structures. + +This allows server administrators to tax based on: + +- Player balance +- Shop owner balance +- Configured tax brackets + +Example configuration concept: + +- 0–10,000 balance → 1% tax +- 10,000–100,000 → 2% tax +- 100,000+ → 3% tax + +Developers can extend or override this logic inside a custom TaxProvider. + +--- + +# Targeting Tax + +The new tax system allows taxes to be applied to: + +- Shop owner +- Interacting player +- Both + +This is controlled via configuration, but custom providers can override distribution logic by adjusting TaxRates output. + +Example: + +```java +return new TaxRates() + .ownerTax(basePrice * 0.02) + .buyerTax(basePrice * 0.01); +``` + +--- + +# Registering a Custom TaxProvider + +To replace or extend tax logic: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); + +taxManager.provider(new MyCustomTaxProvider()); +``` + +You may register only one primary provider at a time. If multiple providers are needed, implement internal delegation within your custom provider. + +--- + +# Tax Events + +The tax system integrates with the event system. + +The modern event used is: + +ShopEnhancedTaxEvent + +This replaces legacy tax events and provides improved context, including: + +- Transaction builder reference +- TaxRates object +- Modification capability before final execution + +You can listen for the event and modify tax behavior dynamically: + +```java +@EventHandler +public void onTax(ShopEnhancedTaxEvent event) { + + TaxRates rates = event.getTaxRates(); + + // Example: Give VIP players reduced owner tax + if (event.getOwner().hasPermission("vip.tax.discount")) { + rates.ownerTax(rates.getOwnerTax() * 0.5); + } +} +``` + +--- + +# Best Practices + +Always keep tax calculations lightweight. + +Avoid: + +- Heavy database queries inside calculateTax +- Blocking network calls +- Long-running computations + +If complex logic is required, pre-cache required data outside the tax execution path. + +Ensure negative tax values are not returned unless intentional. + +Always validate final amounts before applying modifications. + +Respect configuration hierarchy unless intentionally overriding it. + +--- + +# Example Full Implementation + +```java +public class ExampleTaxAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + TaxManager taxManager = manager.taxManager(); + + taxManager.provider(new MyCustomTaxProvider()); + } +} +``` + +--- + +# Conclusion + +The new tax system is designed for: + +- Flexibility +- Extensibility +- Clean separation of concerns +- Future expansion + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +TaxManager taxManager = manager.taxManager(); +``` + +You gain full control over how QuickShop calculates and applies tax during transactions. \ No newline at end of file diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/development/09-layout-provider.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/development/09-layout-provider.md new file mode 100644 index 0000000000..55e3cd3e91 --- /dev/null +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/development/09-layout-provider.md @@ -0,0 +1,275 @@ +# Shop Layout Provider (Developer Guide) + +The Shop Layout Provider system allows developers to customize how shop signs are structured and rendered. + +As of 6.2.0.11, shop layouts are no longer hardcoded. Instead, they are controlled through the `IShopLayoutProvider` interface, which allows: + +- Custom sign line ordering +- Per-shop-type layouts (BUYING, SELLING, FROZEN, or custom types) +- Dynamic layout resolution +- Complete replacement of the default layout system + +This guide explains how to access, override, and implement a custom layout provider. + +--- + +# Overview + +The layout provider controls how shop sign lines are arranged. + +Instead of hardcoding: + +Line 1 → Header +Line 2 → Trading info +Line 3 → Item +Line 4 → Price + +The system now allows full customization through: + +- Config-based layout definitions +- Custom `IShopLayoutProvider` implementations +- Runtime overrides + +The default implementation is `SimpleShopLayoutProvider`. + +--- + +# Accessing the Layout Provider + +To retrieve the current layout provider: + +```java +ShopManager manager = api.getShopManager(); +IShopLayoutProvider provider = manager.shopLayoutProvider(); +``` + +To replace the layout provider with a custom one: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Once replaced, your implementation will control how shop layouts are generated. + +--- + +# Understanding IShopLayoutProvider + +`IShopLayoutProvider` defines how layout data is retrieved and resolved. + +It is responsible for: + +- Providing layout configuration per shop type +- Determining which layout to use +- Supplying formatted line keys +- Allowing future extensibility + +The default implementation reads layout definitions from configuration and applies them based on shop type. + +--- + +# Default Layout Example + +The default configuration-based layout looks like this: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +Each line maps to a layout component key. + +An empty string (`""`) leaves that line blank. + +The layout provider resolves these keys into actual sign content. + +--- + +# Creating a Custom Layout Provider + +To override the default behavior, implement `IShopLayoutProvider`. + +Example minimal implementation: + +```java +public class MyCustomLayoutProvider implements IShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + + ShopLayout layout = new ShopLayout(); + + layout.setLine(1, "Custom Header"); + layout.setLine(2, "Owner: " + shop.getOwnerName()); + layout.setLine(3, shop.getItem().getType().name()); + layout.setLine(4, "$" + shop.getPrice()); + + return layout; + } +} +``` + +Then register it: + +```java +ShopManager manager = api.getShopManager(); +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Your layout will now control all shop sign formatting. + +--- + +# Per-Type Layout Control + +Because the system no longer depends on the legacy ShopType enum, layouts can support: + +- Built-in types (BUYING, SELLING, FROZEN) +- Custom shop types +- Addon-defined shop types + +Your provider can determine layout logic dynamically: + +```java +@Override +public ShopLayout provideLayout(Shop shop) { + + if (shop.getShopType().key().equals("FROZEN")) { + return frozenLayout(shop); + } + + return defaultLayout(shop); +} +``` + +This allows conditional formatting, localization adjustments, or special event styling. + +--- + +# Advanced Customization + +A custom layout provider can: + +- Pull data from external plugins +- Inject dynamic placeholders +- Modify layout per player +- Apply formatting logic +- Override color schemes +- Apply region-based formatting +- Implement animated sign systems + +Because the layout provider is resolved at runtime, you can compute layouts dynamically instead of reading static config. + +--- + +# Replacing vs Extending the Default Provider + +You have two options: + +Replace entirely: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +Or extend the default implementation: + +```java +public class ExtendedLayoutProvider extends SimpleShopLayoutProvider { + + @Override + public ShopLayout provideLayout(Shop shop) { + ShopLayout base = super.provideLayout(shop); + + base.setLine(1, "[Extended] " + base.getLine(1)); + + return base; + } +} +``` + +Extending is safer if you only want to modify small portions. + +--- + +# Best Practices + +Keep layout generation lightweight. + +Avoid: + +- Heavy database queries +- Blocking IO +- Complex network calls + +Layout generation runs during shop updates and sign refresh events. + +Always handle null values safely. + +Ensure layout line count does not exceed sign limits. + +Avoid hardcoding shop type names unless necessary. + +If your layout supports custom shop types, validate their keys properly. + +--- + +# Example Full Registration + +```java +public class LayoutAddon { + + public void register(QuickShopAPI api) { + + ShopManager manager = api.getShopManager(); + + manager.shopLayoutProvider(new MyCustomLayoutProvider()); + } +} +``` + +--- + +# Conclusion + +The Shop Layout Provider system allows complete control over shop sign structure. + +By accessing: + +```java +ShopManager manager = api.getShopManager(); +``` + +And setting: + +```java +manager.shopLayoutProvider(new MyCustomLayoutProvider()); +``` + +You can redefine how every shop is displayed on the server. + +This system was designed to support: + +- Extensibility +- Custom shop types +- Localization +- Dynamic formatting +- Future expansion \ No newline at end of file diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/faq/compare-reremake.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/faq/compare-reremake.md index aaa1a9e507..6b39f02520 100644 --- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/faq/compare-reremake.md +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/faq/compare-reremake.md @@ -64,7 +64,7 @@ If you are a Reremake user, you may be confused about the differences between Hi ## Which one should I use? Well, it depends on what your needs are.\ -If you have an old server (<1.20) instance, Reremake is your only choice.\ +If you have an old server ({'<'}1.20) instance, Reremake is your only choice.\ ~~If you are in China which has GFW interfere, you also should consider Reremake because it doesn't need to load libraries from Global Internet.~~ Solved in 6.0.0.0. If none of these applies, give Hikari a try! diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md index 551f579e7c..172be3a69b 100644 --- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/faq/where-addons-compacts-at.md @@ -1,8 +1,8 @@ # Where Addons/Compacts is -Addons and Compatilibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. +Addons and Compatibility Modules are released along with the QuickShop-Hikari, You can find them on the versions page. -- Open Modrinth versions page, locate the version your're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) +- Open Modrinth versions page, locate the version you're using. Or use [latest version](https://modrinth.com/plugin/quickshop-hikari/version/latest) - Frantically slide your mouse wheel down until the lowest end of the page. - You get it! diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/internal/database-schema.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/internal/database-schema.md index fea685e4fc..45e04adb56 100644 --- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/internal/database-schema.md +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/internal/database-schema.md @@ -4,17 +4,17 @@ This chapter will explain the implementation details of QuickShop Hikari's datab ## Tables -This section explains the database tables created by QuickShop-Hikari.\ -Unless otherwise specified, the initial `qs_` in table name is the table prefix.\ +This section explains the database tables created by QuickShop-Hikari. +Unless otherwise specified, the initial `qs_` in table name is the table prefix. For the latest code definition for each table, see: [DataTables.java](https://github.com/QuickShop-Community/QuickShop-Hikari/blob/hikari/quickshop-bukkit/src/main/java/com/ghostchu/quickshop/database/DataTables.java) ### `data` -This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information.\ -No matter what, a data record should not be modified after it is created, until it got deleted.\ +This data table stores all the existing store data on this server or the store data that has been deleted but is still referenced in a specific form, and does not contain coordinate information. +No matter what, a data record should not be modified after it is created, until it got deleted. Any new changes to the shop should create a new copy, apply the changes to the copy, and insert it as a new record. -Basiclly, Copy-on-write. +Basically, Copy-on-write. A data record only be deleted from the database when no any table references their `data_id`. @@ -29,7 +29,7 @@ A data record only be deleted from the database when no any table references the | unlimited | BIT NOT NULL | 0 | Indicates whether this store is an unlimited store, 0=Limited, 1=Unlimited | | hologram | BIT NOT NULL | 0 | Indicates the suspension status of this store's display item, 0=Follow global settings, 1=Disabled | | tax_account | VARCHAR(36) | NULL | The uuid for tax account, If it is not NULL, tax will be paid to the specified account | -| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serilized to JSON string | +| permissions | MEDIUMTEXT | Empty Json | Indicates the override status of the store player permission group, serialized to JSON string | | extra | LONGTEXT | Empty Yaml | Used to store experimental settings of QuickShop Hikari or persistent data of other plugins | | inv_wrapper | VARCHAR(255) NOT NULL | N/A | Unique identifier for InventoryWrapper for this shop data entry | | inv_symbol_link | TEXT NOT NULL | N/A | Unique Inventory symbol used to pass to InventoryWrapper, for locating inventory | @@ -38,7 +38,7 @@ A data record only be deleted from the database when no any table references the ### `shops` -This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes.\ +This table is used to store shop to shop data mapping, so that shop ID will not change when shop data changes. Multiple `shop_id` can correspond to the same `data_id`. | Column Name | DataType | Default | Description | diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/modules/cmd-alias.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/modules/cmd-alias.md index 53f1577685..e6ed381c0d 100644 --- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/modules/cmd-alias.md +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/modules/cmd-alias.md @@ -23,7 +23,7 @@ custom-commands: - cshop ``` -Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect.\ +Simple add or remove prefix from `custom-commands` list, then you might need to restart your server to make it take effect. The effect should be like this: ![command-alias](./img/command-alias.png) diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/modules/datasource.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/modules/datasource.md index 6fc1bd8931..3fd3a8bdee 100644 --- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/modules/datasource.md +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/modules/datasource.md @@ -48,7 +48,7 @@ Execute the `/quickshop export` command in console, quickshop will export a zip ![exported data](img/database-export.png) -Stop your database, switch the datasource, and start the server.\ +Stop your database, switch the datasource, and start the server. You may noticed all shops are gone, because new datasources had no data inside, we will restore them from export. Rename that exported ZIP file to `recovery.zip`, execute `/quickshop recovery` and restart your server, all shops should back. diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/modules/itemmatcher.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/modules/itemmatcher.md index 56be243019..922907be27 100644 --- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/modules/itemmatcher.md +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/modules/itemmatcher.md @@ -4,7 +4,7 @@ ItemMatcher is a utility used by QuickShop-Hikari to compare the items, it is th :::caution -If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse.\ +If this feature is misconfigured, it will cause the plugin to stop working, and it can even be used for dupes, glitches or even worse. **TL;DR: Keep default unless you know what you're doing.** ::: @@ -26,10 +26,10 @@ matcher: work-type: 1 ``` -By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility.\ +By default, QuickShop-Hikari will use Bukkit's matcher to provide the best cross-compatibility. But still, you can toggle to QuickShop Item Matcher if you need to customize the comparing or running QuickShop on the server jar which have bug affect the Bukkit comparing system. -## Customize the metadata compareing +## Customize the metadata comparing Customize only works under QuickShop Item Matcher. diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md index fc2af69d2b..d04e8f2783 100644 --- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/modules/itemstack-loader.md @@ -4,7 +4,7 @@ ItemStack Loader is a workaround for loading the Bukkit ItemStack. :::caution -Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossble. +Before use this function, you **MUST** create a server full backup. After enable this function, all changes will write into worlds and databases, and it is persistent, rollback without backup is impossible. ::: diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/modules/localization.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/modules/localization.md index e9121e1a36..d47589ab9a 100644 --- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/modules/localization.md +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/modules/localization.md @@ -10,7 +10,7 @@ To help translate QuickShop-Hikari, please visit our [Crowdin Homepage](https:// ## Crowdin OTA -QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will overrided when you reload QuickShop-Hikari or restart your server. +QuickShop-Hikari will auto update translations from Crowdin via Crowdin OTA, all directly local changes will override when you reload QuickShop-Hikari or restart your server. Your installation will keep translations up-to-date without any touch. @@ -110,6 +110,16 @@ To disable the CrowdinOTA, please add it in the startup flag: -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager.enableCrowdinOTA=false ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +use-crowdin-ota: false +``` + ### Self-Hosted OTA Server If you self-hosted our translation server by using [CrowdinCopyDeploy](https://github.com/Ghost-chu/CrowdinCopyDeploy) tool, you're able to change the OTA server to yourself server. @@ -118,4 +128,12 @@ If you self-hosted our translation server by using [CrowdinCopyDeploy](https://g -Dcom.ghostchu.quickshop.localization.text.SimpleTextManager= ``` +#### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml +Use + +```yaml +crowdin-host: +``` \ No newline at end of file diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/modules/shops/benefit.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/modules/shops/benefit.md index 4d7a9c8f42..c59d92e6d1 100644 --- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/modules/shops/benefit.md +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/modules/shops/benefit.md @@ -37,3 +37,13 @@ By default, for security, QuickShop-Hikari disallow add offline players into sho ```bash -Dcom.ghostchu.quickshop.command.subcommand.SubCommand_Benefit.allowOffline=true ``` + +### 🆕 Starting in 6.3.0.0 SNAPSHOT 2 + +Beginning with 6.3.0.0 SNAPSHOT 2 the JVM Startup Flag has been replaced with an entry in config.yml + +Use + +```yaml +shop.allow-offline-benefit: true +``` \ No newline at end of file diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/modules/shops/control-panel b/i18n/zh-TW/docusaurus-plugin-content-docs/current/modules/shops/control-panel new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/modules/shops/control-panel @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md new file mode 100644 index 0000000000..c44ccc753d --- /dev/null +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/modules/shops/control-panel.md @@ -0,0 +1,294 @@ +# Shop Control Panel + +The Shop Control Panel allows players to manage their shops quickly and safely. + +Through the control panel, shop owners can: + +- Change price +- Change amount +- Switch shop type +- Freeze shops +- Toggle unlimited mode +- View history +- Open inventory +- Transfer ownership +- Delete shops + +You can fully customize which options appear in the control panel using configuration. + +--- + +## How Players Open the Control Panel + +By default, players can open the control panel by: + +- Sneak + Right-clicking the shop +- Using configured interaction behavior +- Using GUI-based control panel (if enabled) + +The control panel can be: + +- Chat-based +- GUI-based (CONTROL_PANEL_UI) + +--- + +## Configuring the Control Panel + +Control panel options are configured inside `config.yml` under: + +```yaml +shop: + control-panel: +``` + +You can define which components appear and in what order. + +--- + +## Available Control Panel Components + +Below are all built-in control panel component types. + +Each entry represents a button or option shown in the panel. + +--- + +### DISPLAY + +Toggle the floating display item on or off. + +This controls whether the item above the shop is visible. + +--- + +### SET_PRICE + +Change the shop price. + +Players can update the buy/sell price directly. + +--- + +### SET_AMOUNT + +Change the stack size or shop quantity. + +Used primarily for stacking shops. + +--- + +### SHOP_MODE + +Switch between shop types: + +* SELLING +* BUYING +* FROZEN + +--- + +### 🆕 INVENTORY (6.2.0.11+) + +Open the shop’s linked container inventory. + +Useful for: + +* Restocking +* Reviewing items +* Managing stock + +--- + +### HISTORY + +View the shop’s transaction history. + +Shows recent purchases and sales (if history is enabled). + +--- + +### FREEZE + +Freeze or unfreeze the shop. + +When frozen: + +* Trading is disabled +* The shop remains intact +* Can be re-enabled later + +--- + +### UNLIMITED + +Toggle unlimited stock mode. + +When enabled: + +* The shop does not require physical items +* Often used for admin shops + +--- + +### OWNER + +Transfer ownership of the shop to another player. + +May require special permissions. + +--- + +### REFILL + +Refill the shop automatically (for supported setups). + +Useful in automated or admin environments. + +--- + +### REMOVE + +Delete the shop. + +This permanently removes: + +* The shop +* The database entry +* Associated metadata + +Use carefully. + +--- + +### EMPTY + +A placeholder component. + +Can be used to create spacing in certain panel layouts. + +--- + +## Example Configuration + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY + - FREEZE + - UNLIMITED + - OWNER + - REMOVE +``` + +You can: + +* Remove any entry to disable it +* Reorder entries to change layout order + +--- + +## Recommended Setups + +### Survival Server + +```yaml +shop: + control-panel: + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - INVENTORY + - HISTORY +``` + +### Economy-Heavy Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SET_AMOUNT + - SHOP_MODE + - HISTORY + - FREEZE +``` + +### Admin Shop Server + +```yaml +shop: + control-panel: + - DISPLAY + - SET_PRICE + - SHOP_MODE + - UNLIMITED + - OWNER + - REMOVE +``` + +--- + +## GUI-Based Control Panel + +If you are using GUI mode: + +* Layout and icons are configured in `gui.yml` +* Each component can have custom name and lore +* Icons can be changed +* Order can be adjusted + +The control panel configuration controls what appears. +The GUI file controls how it looks. + +--- + +## Permissions + +Some components may require permissions, depending on your setup. + +Examples include: + +* Ownership transfer +* Unlimited mode +* Freezing +* Shop removal + +Review your permissions configuration to ensure proper access control. + +--- + +## Notes + +* Removing a component disables it for all players. +* The REMOVE component permanently deletes shops. +* UNLIMITED is powerful and should be restricted to staff. +* FREEZE is useful for moderation. + +After upgrading to 6.2.0.10, review this section to ensure your control panel matches your server’s intended gameplay design. + +--- + +## Summary + +The Shop Control Panel is fully customizable. + +By editing: + +```yaml +shop: + control-panel: +``` + +You control: + +* What players can modify +* How powerful shops are +* How your economy behaves +* The overall user experience diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/modules/shops/history.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/modules/shops/history.md index fa891adeab..195b64a042 100644 --- a/i18n/zh-TW/docusaurus-plugin-content-docs/current/modules/shops/history.md +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/modules/shops/history.md @@ -24,7 +24,7 @@ The History GUI displays the details of each recorded transaction and other usef ### Transaction details -When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed.\ +When hovering over a detail item, information such as store name (or coordinates), purchaser, item, amount, tax, etc. will be displayed. If you are checking the history of more than one store, the player head will be replaced with an item from the corresponding store. ![history-gui](./img/history-gui.png) diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md new file mode 100644 index 0000000000..c5ed3b3fe4 --- /dev/null +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/modules/shops/shop-types.md @@ -0,0 +1,90 @@ +# Shop Types + +QuickShop supports multiple shop types, allowing shops to behave differently depending on their mode. + +The built-in shop types are: + +- Selling +- Buying +- Frozen + +Each type changes how the shop interacts with players. + +--- + +## Selling Shop + +A Selling shop allows players to: + +- Buy items from the shop owner +- Pay money to receive items + +This is the most common shop type. + +--- + +## Buying Shop + +A Buying shop allows players to: + +- Sell items to the shop owner +- Receive money in exchange + +This is commonly used for: + +- Resource collection +- Server buy-back shops +- Automated material sinks + +--- + +## Frozen Shop + +A Frozen shop temporarily disables trading. + +While frozen: + +- No buying is allowed +- No selling is allowed +- The shop remains intact +- Staff or admins can manage it + +This is useful for: + +- Temporary suspensions +- Investigation +- Event locking +- Maintenance + +--- + +## Switching Shop Types + +Shop types can be changed through: + +- Control panel +- GUI control panel +- Admin commands + +Frozen mode is also available via: + +/qs freeze + +--- + +## Custom Shop Types + +As of 6.2.x, the system supports extensible shop types internally. + +While server owners use the built-in types, the system now allows future expansion through addons. + +--- + +## Summary + +Shop types allow you to: + +- Control how money flows +- Enable buy-back mechanics +- Temporarily disable shops +- Build advanced economic systems \ No newline at end of file diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md new file mode 100644 index 0000000000..18e0a47407 --- /dev/null +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/modules/shops/sign-layout.md @@ -0,0 +1,217 @@ +# Sign Layout + +QuickShop allows you to fully customize how shop signs are structured. + +You can change: + +- What appears on each line +- The order of information +- Layout per shop type +- Whether certain lines are blank + +This gives you complete control over how shops look on your server. + +--- + +## How Sign Layout Works + +Shop signs have four lines. + +Instead of being hardcoded, QuickShop uses a configurable layout system. + +Each shop type can have its own layout: + +- SELLING +- BUYING +- FROZEN + +You define what each line displays using layout keys. + +--- + +## Configuration Location + +Sign layout is configured in `config.yml` under: + +```yaml +layout: +``` + +Example default configuration: + +```yaml +layout: + + BUYING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" + + FROZEN: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## Available Layout Keys + +Each line value refers to a built-in layout component. + +Common layout keys include: + +- `header` – The shop header line +- `trading` – Buy/Sell direction information +- `item` – Item name +- `price` – Shop price + +These keys are automatically formatted using your language file and formatting settings. + +--- + +## Leaving a Line Blank + +To leave a line empty, use: + +```yaml +line2: "" +``` + +This is useful if you want: + +- Minimalist signs +- Cleaner layouts +- Custom spacing +- Decorative formatting + +--- + +## Customizing Per Shop Type + +Each shop type can have a different layout. + +For example: + +```yaml +layout: + + SELLING: + line1: "header" + line2: "item" + line3: "price" + line4: "" + + BUYING: + line1: "header" + line2: "price" + line3: "item" + line4: "" + + FROZEN: + line1: "header" + line2: "" + line3: "item" + line4: "Frozen" +``` + +This allows you to visually differentiate: + +- Selling shops +- Buying shops +- Frozen shops + +--- + +## Practical Examples + +### Minimal Style + +```yaml +layout: + SELLING: + line1: "item" + line2: "price" + line3: "" + line4: "" +``` + +### Compact Economy Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "price" + line3: "item" + line4: "" +``` + +### Large Clear Style + +```yaml +layout: + SELLING: + line1: "header" + line2: "trading" + line3: "item" + line4: "price" +``` + +--- + +## How Updates Affect Layout + +When you change the layout: + +- Existing shop signs will update automatically when refreshed. +- New shops will use the updated format immediately. + +If needed, you can reload QuickShop to apply changes. + +--- + +## Best Practices + +- Keep important information visible (price and item). +- Avoid overly complex formatting. +- Test layout changes before deploying on large servers. +- Use different layouts for BUYING and SELLING to reduce confusion. + +--- + +## Common Questions + +### Can I add more than four lines? + +No. +Minecraft signs are limited to four lines. + +### Can I add colors? + +Colors are controlled by your language file and formatting settings. + +### Can I change layout without restarting? + +Yes, but reloading or refreshing shops is recommended to ensure full update. + +--- + +## Summary + +The Sign Layout system allows you to: + +- Fully customize shop sign appearance +- Create per-type layouts +- Simplify or expand shop information +- Improve clarity for players + +All layout customization is handled inside `config.yml`. diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md new file mode 100644 index 0000000000..980bad10f2 --- /dev/null +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/modules/shops/sign-wax.md @@ -0,0 +1,130 @@ +# Shop Sign Waxing + +QuickShop can automatically wax shop signs to prevent players from editing them manually. + +Waxing protects the integrity of your shop signs and helps prevent tampering, spoofing, and accidental modification. + +As of modern Minecraft versions, waxed signs cannot be edited unless they are unwaxed first. + +--- + +## What Is Sign Waxing? + +In Minecraft, waxing a sign locks it so that: + +- Players cannot edit the text +- Players cannot modify lines +- Accidental changes are prevented +- Malicious edits are blocked + +When enabled in QuickShop, shop signs are automatically waxed when created. + +--- + +## Why Use It? + +Sign waxing protects against: + +- Players editing price lines +- Changing item names on signs +- Spoofing shop information +- Accidental formatting issues +- Sign hijacking attempts + +On public servers, this feature is strongly recommended. + +--- + +## How It Works + +When a shop is created: + +1. QuickShop generates the shop sign. +2. The sign text is written. +3. The sign is automatically waxed (if enabled). + +If a shop is updated: + +- The sign will be safely updated by QuickShop. +- The wax state is maintained. + +Players cannot manually edit shop signs while waxing is enabled. + +--- + +## Configuration + +To enable or disable sign waxing, edit `config.yml`: + +```yaml +shop: + sign-wax: true +``` + +### true + +- Shop signs are automatically waxed. +- Players cannot edit the sign manually. + +### false + +- Shop signs behave like normal Minecraft signs. +- Players may edit them if permitted by the game. + +--- + +## Recommended Setting + +For most servers: + +```yaml +shop: + sign-wax: true +``` + +This ensures shop data stays accurate and secure. + +--- + +## Common Questions + +### Can admins still modify shop signs? + +QuickShop controls shop sign formatting. +Manual edits are not recommended. + +Admins should use: + +- Control panel +- Shop commands +- Direct configuration changes + +### Does waxing affect shop functionality? + +No. +Waxing only prevents manual text edits. +The shop continues to function normally. + +### Can players un-wax shop signs? + +No. +QuickShop manages the sign state automatically. + +--- + +## Best Practices + +- Keep sign-wax enabled on survival servers. +- Combine sign-wax with proper permissions. +- Avoid manually editing shop signs through other plugins. + +--- + +## Summary + +Sign Waxing: + +- Prevents tampering +- Requires no additional setup + +Enable it once and QuickShop handles the rest. \ No newline at end of file diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/modules/shops/taxes.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/modules/shops/taxes.md new file mode 100644 index 0000000000..1a273fd978 --- /dev/null +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/modules/shops/taxes.md @@ -0,0 +1,92 @@ +# Taxation System + +QuickShop includes a taxation system designed to give server owners more flexibility and control over shop-based income. + +This system was revamped as of 6.2.0.11+ + +The new system allows you to: + +- Apply tax to shop owners +- Apply tax to buyers +- Apply tax to both +- Use progressive tax brackets +- Customize tax behavior in configuration + +This system replaces the legacy tax configuration. + +--- + +## How It Works + +During a transaction: + +1. The shop price is calculated. +2. Tax is calculated based on your configuration. +3. Tax is deducted from the configured target(s). +4. Remaining funds are distributed normally. + +You can configure: + +- Flat percentage tax +- Progressive tax based on player balance +- Tax accounts +- Distribution rules + +--- + +## Progressive Tax + +The new system allows you to tax based on balance brackets. + +Example concept: + +- 0 – 10,000 balance → 1% tax +- 10,000 – 100,000 → 2% tax +- 100,000+ → 3% tax + +This helps prevent extremely wealthy players from dominating the economy. + +--- + +## Who Pays the Tax? + +You can configure whether tax applies to: + +- The shop owner +- The buyer +- Both + +This gives you flexibility depending on your economy design. + +--- + +## Configuration + +All tax-related settings are located under the `shop-tax` section in `config.yml`. + +After updating to 6.2.0.11+, review your tax configuration carefully, as the old tax system has been replaced. + +--- + +## Why Use Tax? + +The taxation system can help: + +- Remove currency from circulation +- Fund server banks or towns +- Create sink mechanics +- Balance inflation +- Reward active players + +--- + +## Summary + +The new taxation system is: + +- Flexible +- Configurable +- Balance-aware +- Designed for modern economy servers + +Make sure to review your configuration after upgrading. \ No newline at end of file diff --git a/i18n/zh-TW/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md b/i18n/zh-TW/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md new file mode 100644 index 0000000000..247c24712d --- /dev/null +++ b/i18n/zh-TW/docusaurus-plugin-content-docs/current/modules/shops/worldedit.md @@ -0,0 +1,161 @@ +# WorldEdit & FAWE Support + +QuickShop includes built-in protection and integration for WorldEdit and FastAsyncWorldEdit (FAWE). + +As of 6.2.0.11, this is no longer a separate compatibility module — it is now built directly into QuickShop. + +You do not need to download or install any additional compatibility plugins. + +--- + +## What This Does + +WorldEdit and FAWE allow administrators and builders to: + +- Copy and paste regions +- Replace large areas of blocks +- Mass-delete regions +- Roll back areas +- Regenerate terrain + +Without protection, these operations could: + +- Create ghost shops +- Leave orphaned shop data in the database +- Duplicate shops unintentionally +- Delete containers without cleaning up shop data +- Cause inconsistencies between world and database + +QuickShop now automatically detects and safely processes WorldEdit and FAWE operations. + +--- + +## Built-In Behavior + +When WorldEdit or FAWE modifies blocks: + +- Shops removed via WorldEdit are properly deleted from the database. +- Shop data stays synchronized with world changes. +- Ghost shops are prevented. +- Mass block replacements will not leave broken shop entries behind. + +This applies to: + +- //set +- //replace +- //cut +- //paste +- //regen +- Region deletion +- Mass container removal + +No configuration is required. + +--- + +## FAWE Support + +FastAsyncWorldEdit (FAWE) is fully supported. + +Because FAWE processes edits asynchronously, QuickShop handles: + +- Region-thread safe processing +- Async block updates +- Safe shop deletion during batch edits + +You do not need to enable anything manually. + +--- + +## Removing Shops with WorldEdit + +If you delete containers (chests, barrels, etc.) using WorldEdit: + +QuickShop will automatically: + +- Detect the block removal +- Unregister the shop +- Clean the database entry +- Prevent ghost shops + +You do not need to run `/qs cleanghost` after WorldEdit usage in normal circumstances. + +--- + +## Copying and Pasting Shops + +If you copy and paste regions that contain shops: + +- Shop data will not duplicate incorrectly. +- Shop IDs remain consistent. +- Invalid pasted shops will not auto-register unless properly created. + +This prevents accidental duplication exploits. + +--- + +## Performance + +WorldEdit and FAWE operations can modify thousands of blocks at once. + +QuickShop processes these safely and efficiently: + +- Batch-aware cleanup +- Thread-safe region access (especially on Folia) +- Minimal performance impact during mass edits + +--- + +## Configuration + +There are no specific WorldEdit configuration options in QuickShop. + +Support is automatic and always enabled if WorldEdit or FAWE is detected. + +If WorldEdit is not installed, no extra code is executed. + +--- + +## Common Questions + +### Do I need the old WorldEdit compatibility jar? + +No. + +As of 6.2.0.11, WorldEdit support is built-in and the separate compatibility module has been removed. + +### Does this work with FAWE? + +Yes. FAWE is fully supported. + +### Will shops break if I use //set air? + +No. Shops will be safely removed and cleaned up. + +### Do I need to restart after installing WorldEdit? + +No. QuickShop detects WorldEdit automatically on startup. + +--- + +## Best Practices + +Even though QuickShop safely handles WorldEdit operations, it is recommended to: + +- Avoid copying shops intentionally unless required +- Use backups before large region edits +- Test large FAWE operations on staging servers when possible + +--- + +## Summary + +QuickShop’s built-in WorldEdit and FAWE integration ensures: + +- Safe mass edits +- No ghost shops +- Automatic database cleanup +- Thread-safe processing +- No extra modules required + +WorldEdit support is now a core feature of QuickShop. \ No newline at end of file