## Features
* **Fully GUI-Based:** All player interactions with the shop are done through easy-to-use graphical interfaces.
* **Vault Economy Support:** Integrates with your server's existing economy plugin via Vault for all transactions.
* **Categorized Shops:** Organize your items into custom categories for easy browsing.
* **Pagination:** Supports large shops and categories with intuitive page navigation.
* **Interactive Buying GUI:** Players can select quantities to buy with +/- buttons and confirm or decline purchases.
* **Selling Interface:** Allows players to sell items from their inventory that are configured in the shop.
* **Item Search:** Players can search for specific items across all shop categories.
* **Price Information:** Players can quickly check the buy and sell prices of any item.
* **Custom Item Support:** Easily add items with custom names, lore, and NBT data to your shop.
* **Admin Management Commands:** A suite of commands for administrators to manage shop categories, items, and prices directly.
* **GUI Protection:** Prevents players from taking items directly from shop GUIs.
* **Wishlist System:** Add items to your personal wishlist with `/shop wishlist <item>` to track them.
* **Sell All Items:** Sell all sellable items at once with `/shop sellall`.
* **Dynamic Pricing:** Prices fluctuate based on demand with dynamic pricing system.
* **Category Permissions:** Restrict access to certain categories based on player permissions.
* **Discount System:** Apply percentage discounts to purchases based on player permissions.
* **Auction House:** Full auction house system accessible via `/auctionhouse` or `/ah`.
## Player Commands
* `/shop`
* **Description:** Opens the main shop GUI, displaying all available categories.
* **Aliases:** `/s`
* `/shop balance`
* **Description:** Displays your current balance in the server's economy.
* `/shop reload`
* **Description:** Reloads the plugin's configuration files and shop data. (Requires permission)
* `/shop price <item>`
* **Description:** Shows the buy and sell price information for a specified item.
* `/shop browse <category>`
* **Description:** Opens the shop GUI directly to a specific category.
* `/shop search <item>`
* **Description:** Opens a GUI displaying all items matching your search term across all categories.
* `/shop sell`
* **Description:** Opens an interface where you can sell items from your inventory that are configured in the shop.
* `/shop wishlist <item>`
* **Description:** Adds an item to your personal wishlist that notifies you when the price drops.
* `/shop sellall`
* **Description:** Sells all sellable items in your inventory at once with a confirmation prompt.
* `/auctionhouse` or `/ah`
* **Description:** Opens the auction house GUI where you can browse, buy, and sell items at auction.
## Admin Commands
* `/shopadmin`
* **Description:** Base command for all administrative shop functions.
* **Aliases:** `/sa`
* `/auctionhouse sell <price> <amount>`
* **Description:** Sell the item in your hand at the specified price and amount in the auction house.
* **Aliases:** `/ah sell <price> <amount>`
* `/shopadmin reload`
* **Description:** Reloads all shop configuration files (`shop.yml` and `custom_items.yml`).
* `/shopadmin add <category> <item_identifier> <buy_price> <sell_price>`
* **Description:** Adds a new item to a specified shop category. The `item_identifier` can be a standard Minecraft material name or the ID of a custom item you've registered.
* `/shopadmin remove <category> <item_identifier>`
* **Description:** Removes an item from a specified shop category.
* `/shopadmin setprice <category> <item_identifier> <new_buy_price> <new_sell_price>`
* **Description:** Changes the buy and sell prices for an existing item within a category.
* `/shopadmin createcategory <name> <icon_material> <slot_number>`
* **Description:** Creates a new shop category with a given name, icon, and its position in the main shop GUI.
* `/shopadmin deletecategory <name>`
* **Description:** Deletes an entire shop category and all items within it.
## Custom Item Commands
* `/customitem add <id>`
* **Description:** Registers the item you are currently holding in your main hand as a custom item with a unique identifier (`id`). This allows you to add items with custom names, lore, and NBT data to your shop.
## Permissions
* `economyshop999.admin`
* **Description:** Grants access to all `/shopadmin` and `/customitem` commands.
* **Default:** Operators (op)
* `economyshop999.reload`
* **Description:** Allows use of the `/shop reload` command.
* **Default:** Operators (op)
* `economyshop999.category.<category_name>`
* **Description:** Grants access to a specific shop category when category permissions are enabled.
* **Default:** None (all players can access all categories by default)
* `economyshop999.category.*`
* **Description:** Grants access to all shop categories when category permissions are enabled.
* **Default:** None
* `economyshop999.discount.vip`
* **Description:** Grants VIP discount percentage on purchases when discount system is enabled.
* **Default:** None
* `economyshop999.discount.member`
* **Description:** Grants member discount percentage on purchases when discount system is enabled.
* **Default:** None
## Configuration
Upon first run, a folder named `EconomyShop999` will be created in your server's `plugins` directory. Inside, you will find:
* `shop.yml`:
* This file is where you define your shop's categories and the items within them. It uses a clear YAML structure.
* Each category has a `name`, `icon` (Minecraft material name), `slot` (position in the main GUI), and a list of `items`.
* Items are defined using the format: `ITEM_IDENTIFIER BUY_PRICE SELL_PRICE`.
* `ITEM_IDENTIFIER` can be a standard Minecraft material name (e.g., `STONE`, `DIAMOND_SWORD`) or the `id` of a custom item registered via `/customitem add`.
* `BUY_PRICE` is the price players pay to buy the item. Set to `-1` to make an item unpurchasable.
* `SELL_PRICE` is the price players receive for selling the item. Set to `-1` to make an item unsellable.
* `custom_items.yml`:
* This file stores the serialized data of any custom items you register using the `/customitem add` command. You typically won't need to edit this file manually.
* `auction.yml`:
* This file stores all active auction data. It's automatically generated and managed by the plugin.
* `wishlist.yml`:
* This file stores player wishlist data. It's automatically generated and managed by the plugin.
### Advanced Configuration Options
Additional configuration options are available within the `shop.yml` file:
* `dynamic-pricing.enabled`: Enables dynamic pricing that fluctuates based on item demand.
* `dynamic-pricing.multiplier`: Maximum percentage adjustment for dynamic pricing (default: 0.05 for 5%).
* `dynamic-pricing.base-demand`: Base demand threshold for 0% price change (default: 100).
* `category-permissions.enabled`: Enables permission-based category access restrictions.
* `discounts.enabled`: Enables discount system for specific player groups.
* `discounts.vip`: Discount percentage for VIP players (default: 0.10 for 10%).
* `discounts.member`: Discount percentage for member players (default: 0.05 for 5%).
* `bank-interest.enabled`: Enables or disables the bank interest system.
* `bank-interest.percentage`: Percentage interest rate applied to bank accounts (default: 0.01 for 1%).
* `bank-interest.interval-hours`: Time interval between interest applications (default: 24 hours).