# ShopShelves Spigot: The Modern Display Shop Solution The ultimate plugin for creating **interactive, visually striking display shops** using the Chiseled Bookshelf block introduced in Minecraft 1.20+. Transform your server's economy with elegant, lag-friendly holograms (Text Displays) that show prices, stock, and shop status in real-time! --- ## ✨ Features & Highlights * **1.20+ Native Shops:** Utilize the **Chiseled Bookshelf** as the dedicated shop block for a clean, immersive look. * **Lag-Friendly Text Displays:** Prices and status are displayed using **Minecraft's modern Text Display Entities**. These are far more performant and persistent than traditional hologram plugins. * **Configurable Scaling:** Adjust the size of the main, amount, and price displays (from 0.5x to 2.0x base size). * **Dynamic View Range:** Set different render distances for the main shop text and the detailed price tags to optimize performance. * **Dual Shop Modes:** Supports **Admin Shops** (standard BUY, SELL, or DUAL shops) and **Player Shops (PlayerShelf)** linked to containers. * **Vault Economy Integration:** Full support for buying and selling items using Vault-compatible economy plugins. * **Flexible Pricing System:** * **Global Prices:** Set default prices for any item material/variation via the `pricing.yml` file. * **Custom Shop Prices (Price Stamps):** Use the `/shops price <price> <type> [amount]` command to create a **one-time-use price stamp item** to apply unique prices to specific shop slots or Player Shelves. * **Container Protection:** Automatically prevents unlinked players from accessing linked chest/barrel containers. * **Anti-Grief:** Prevents explosions (TNT/Creeper) from destroying active shops or their linked containers. * **Permission-Based Limits:** Set creation limits for Player Shops using the `shopshelves.playershelves.<limit>` permission nodes. --- ## ️ Setup & Usage ### 1. Admin Shop Setup 1. Place a **Chiseled Bookshelf** block. 2. Hold the item you want to sell/buy and use the `/shops admin` command to enter Admin Mode. 3. **To Set Shop Type (Sneak + Right-Click Shelf):** * **Sneak + Right-Click** the shelf to cycle through modes: **NONE -> BUY -> SELL -> DUAL**. * *Note: This clears any owner/link data.* 4. **To Set Item/Price (Right-Click Shelf Slot):** * **Set Global Price:** Right-click a slot while holding an item. If that item has a price set in `pricing.yml`, it becomes the item sold/bought in that slot. * **Set Custom Price:** First, use `/shops price <price> <type> [amount]` while holding the item to create a **Price Stamp**. Then, **Right-Click** the desired slot with the stamp. The stamp's price will apply to that slot, and the stamp is consumed. ### 2. Player Shop Setup (PlayerShelf) 1. Place a **Chest or Barrel** (the container). 2. **Sneak + Right-Click** the container while holding a **Chiseled Bookshelf** item. This places the shelf and **automatically links** it as a **PlayerShelf** to the container. 3. The shelf's owner is set to the player who placed it, and the shop mode is set to **PLAYERSHELF**. 4. **To Set Price (Right-Click Shelf with Stamp):** * Player Shops use a single price for all slots. Create a **Price Stamp** using `/shops price`. * **Right-Click** the placed PlayerShelf with the stamp to **apply/merge** the buy/sell prices. ### 3. Player Interaction * **Left-Click Slot:** Attempts to **Sell** the item corresponding to the slot to the shop. * **Right-Click Slot:** Attempts to **Buy** the item corresponding to the slot from the shop. * **Sneak + Left/Right Click:** Attempts to sell/buy a **full stack** (or maximum stack size for Admin Shops). --- ## Commands & Permissions | Command | Permission | Description | | :--- | :--- | :--- | | `/shops` | `shopshelves.command` | Opens the help menu. | | `/shops admin` | `shopshelves.admin` | Toggles Admin Setup Mode for setting shop modes. | | `/shops reload` | `shopshelves.reload` | Reloads all configs (`config.yml`, `messages.yml`, `pricing.yml`). | | `/shops update` | `shopshelves.update` | Forces a full refresh/respawn of all shop displays. | | `/shops mode <mode>` | `shopshelves.mode` | Sets message delivery mode (CHAT/ACTIONBAR/BOTH) or Price Display Mode (SINGLEPRICE/TRIPLEPRICE). | | `/shops itemprice <price> <type> [amount]` | `shopshelves.itemprice` | Sets the **Global Price** for the held item in `pricing.yml`. | | `/shops price <price> <type> [amount]` | `shopshelves.price` | Creates a **one-time-use Price Stamp** from the held item. | | **Player Shop Limits** | `shopshelves.playershelves.<limit>` | Grants a maximum of `<limit>` Player Shelves. | | **Player Shop Unlimited** | `shopshelves.playershelves.unlimited` | Grants unlimited Player Shelves. | | **Player Shop Base** | `shopshelves.playershelf` | Grants the default limit (2) if no specific limit is set. |