Welcome to the Hangar Open Beta. Please report any issue you encounter on GitHub!
Avatar for Shadow48402

Advanced shop plugin with all your server shop needs - Free to use

Report EzShops?

⛃ EzShops – The Ultimate Shop Plugin for Skyblock & Survival!

⛃ EzShops

Skyblock-ready shop menus with smart pricing, sign trading, and API integrations

  • Paper/Purpur 1.21.4+
  • Vault economy required
  • ShopPriceService API
  • Dynamic pricing engine

Requires Vault and a compatible economy plugin to process currency.

Join our Discord server

⚠ Integrates with EzAuction


★ What makes EzShops different?

  • Guided storefront menus: Category icons, quantity pickers, bulk buttons, and lore templates keep every purchase clear for players and staff.
  • Smart price automation: Dynamic buy/sell multipliers nudge values after each transaction and persist to shop-dynamic.yml so your market keeps evolving between restarts.
  • Rotating daily specials: Schedule weighted or sequential rotations from shop/rotations/ and highlight limited-time offers without rewriting your categories.
  • Sign shop mirroring: Sync right-click signs with any menu entry, customize headers and line formats, and let towns trade without opening the GUI.
  • Specialty entries out of the box: Sell spawners with correctly tagged block states, issue minion or vote crate keys, and keep cosmetic minion heads restricted to crates.
  • Player-run marketplaces: [shop] signs convert into owner-branded listings that pull stock from linked chests while enforcing permissions and chest access rules.
  • Category commands: Instantly run a server command when a category icon is clicked, instead of opening a shop. Use this for warps, info, or custom features (see config example below).
  • Live config reload: Use /shop reload (permission ezshops.reload) to instantly reload all shop configuration files and update menus without restarting your server.

Category Menu Item Overview


⚡ Player-facing commands

  • /shop: Open the menu or browse a flat paginated list when categories are disabled.
  • /shop buy & /shop sell: Trade directly from chat with material names and optional amounts.
  • /sellhand & /sellinventory: Cash out specific stacks or an entire inventory in one click, with summary receipts.
  • /price: Let players and staff quote live buy/sell totals using tab-complete across every configured material.
  • /shop reload: Instantly reload all shop configuration files and update menus (permission ezshops.reload).

⛃ Stock Market Features

  • Live Stock Market Pricing: Certain shop items use a real-time stock market price that changes based on player trading activity and random market events.
  • Configurable controls: Admins can block or override specific items from the stock market via config, and all trading commands are permission-based with optional per-player cooldowns.
  • Persistent state: Frozen prices and admin overrides are saved and persist across server restarts.
  • How It Works:

New price = max(1.0, current price × (1 + (demand × 0.02) + random volatility))

Where:

  • demand is positive for player purchases, negative for sales
  • random volatility is a value between -10% and +10% per update
  • Prices never fall below 1.0 coins

Buying increases the price, selling decreases it, and random market swings keep things interesting!


⛃ Stock Market Commands

  • /stock buy <item> <amount>: Buy shares in a stock market item at the current price.
  • /stock sell <item> <amount>: Sell your shares for the current market price.
  • /stock info <item>: View the current price, recent changes, and volatility for a specific item.
  • /stock list: See all stock market items and their current prices.

⛃ Admin Stock Market Controls

  • /stockadmin freeze <item>: Freeze or unfreeze the price of a stock market item (requires ezshops.stock.admin.freeze). Frozen state persists across restarts.
  • /stockadmin set <item> <price>: Set the price of a stock market item directly (requires ezshops.stock.admin.set).
  • /stockadmin list [page]: List all stock market items, their prices, and frozen status, with pagination and metadata showing who/when (requires ezshops.stock.admin.list).
  • /stockadmin info <item>: View detailed info, including who froze an item and when (requires ezshops.stock.admin.info).

⛃ Stock Market Permissions

  • ezshops.stock.buy: Allow buying stock market items.
  • ezshops.stock.sell: Allow selling stock market items.
  • ezshops.stock.info: Allow viewing stock info.
  • ezshops.stock.list: Allow listing all stock market items.
  • ezshops.stock.admin.freeze: Allow freezing/unfreezing items.
  • ezshops.stock.admin.set: Allow setting prices directly.
  • ezshops.stock.admin.list: Allow listing all items with admin details.
  • ezshops.stock.admin.info: Allow viewing admin info for items.

🛠️ Configuration toolkit

  • Instant defaults: First launch seeds shop.yml, menu layouts, and category presets so you can adjust icons, lore, and prices immediately.
  • Flexible layouts: Pick per-category sizes, filler items, back buttons, and slot placements or fall back to a flat /shop list.
  • Category commands: Add a command: field to any category config (e.g. shop/categories/warp.yml). When clicked, the command runs for the player (supports {player} placeholder). Example:
menu-title: '&bWarp Menu'
icon:
  material: ENDER_PEARL
  display-name: '&bWarps'
slot: 0
command: 'warp main {player}'
  • Rotations and specials: Build timed lineups in shop/rotations/, assign them via rotation-group, and let the plugin cycle icons, menu titles, and items automatically.
  • Dynamic pricing defaults: Tune global multipliers in config.yml and override them per entry to automate supply-and-demand swings.
  • Sign formatting: Adjust accepted headers and line colors to match your branding without breaking existing signage.
  • Player shop tuning: Toggle the entire system with player-shops.enabled, enforce quantity or price limits, and rewrite owner/item/stock lines through the dedicated sign-format placeholders.
  • /playershop setup flow: Give creators a menu-driven way to prefill quantity and pricing, complete with +/- buttons that honor your configured minimums and caps before they ever place a sign.
  • Localized messaging: Point language in config.yml to files like messages/messages_fr.yml. Bundle new locales inside your jar (and add them to EzShopsPlugin.DEFAULT_SHOP_RESOURCES) so they copy to plugins/EzShops/messages/ on first launch.

💲 Configuring item pricing

  1. Open the entry file: Each category lives under plugins/EzShops/shop/categories/; edit the item section (for example farming.ymlwheat_seeds).
  2. Set your base totals: Update the buy and sell values to control the price for the configured amount; EzShops scales shift-click totals for you, and bulk-amount changes the alternative stack size.
  3. Enable dynamic swings: Add an optional dynamic-pricing block with enabled, starting-multiplier, min-multiplier, max-multiplier, buy-change, and sell-change to let prices respond automatically to trades.
  4. Apply changes: Save the file and reload EzShops (or restart the server) to push the updated numbers live to menus, signs, and API consumers.
wheat_seeds:
  material: WHEAT_SEEDS
  slot: 10
  amount: 16
  bulk-amount: 64
  buy: 15.0
  sell: 3.8
  dynamic-pricing:
    enabled: true
    starting-multiplier: 1.0
    min-multiplier: 0.7
    max-multiplier: 2.1
    buy-change: 0.018
    sell-change: 0.012

🎲 Configuring rotating specials

  1. Define the schedule: Edit plugins/EzShops/shop/rotations/daily-specials.yml (or create a new file under shop/rotations/). Set interval to an ISO-8601 duration like PT6H or compact shorthand such as 6h, choose a mode of sequential or random, and pick a default-option for fresh installs.
  2. Wire the category: Point rotation-group inside the matching category file (the bundle ships shop/categories/daily_specials.yml). The optional rotation-defaults block supplies the shared icon, menu title, and baseline item data that every option inherits.
  3. Override per option: Inside each option’s items block, override only the fields you need (material, prices, amounts, lore, or icons). Add weight values when using random mode to bias how often each option appears.
  4. Reload and monitor: Reload EzShops or restart the server. The plugin copies active selections to shop-rotations.yml so admins can track timers or pin a specific option between rotations.
rotations:
  daily-specials:
    interval: 12h
    mode: random
    default-option: farming-frenzy
    options:
      farming-frenzy:
        menu-title: '&aDaily Special: Farming Frenzy'
      monster-madness:
        weight: 2
        items:
          harvest_bundle:
            material: ROTTEN_FLESH
            buy: 24.0
            sell: 9.5

🪧 Sign shops

  • Mirror menu offers: Tie a sign to any priced Material; EzShops pulls the same buy/sell data used by your GUI entries.
  • Quick setup: Place [shop] on line one, buy or sell on line two, the item (for example DIAMOND_BLOCK) on line three, and the stack amount on line four.
  • Example layout: [shop] / buy / DIAMOND_BLOCK / 1 instantly rewrites to your themed header, action text, item name, and formatted price.
  • Granular permissions: Lock creation behind ezshops.shop.sign.create while letting standard shop permissions govern who can buy or sell through the sign.
  • Player feedback: Players receive chat confirmations while the sign updates its colored price line after each trade.
  • Batch generator GUI: Run /signshop (permission ezshops.shop.sign.setup) to open a planner GUI that pulls items from your inventory, flips between buy/sell modes, sets a shared backing block, tweaks spacing and rows, and chains together as many synchronized signs as you need before confirmation.

Sign Shops Sign Setup GUI

  • One-click placement: Look at the block you want behind the first sign and hit confirm; EzShops lays down the backing line and wall signs in front of you using your configured formatting, stack sizes, and stored metadata so they trade immediately.

🪧 How to use the sign shop generator

  1. Open the planner: Run /signshop (permission ezshops.shop.sign.setup) to open the generator GUI and pull eligible materials from your inventory.
  2. Select your template item: Click an item in your inventory pane to add it to the plan. EzShops copies its material, display name, lore, and buy/sell prices straight from the linked menu entry.
  3. Choose buy or sell mode: Use the toggle buttons to decide whether every generated sign handles purchases or sales, and set the stack amount if you need something other than the default.
  4. Configure the layout: Pick the backing block, adjust spacing and row count, and preview the final sign text so you know exactly how the strip will look in-game.
  5. Confirm placement: Stand where you want the line to begin, look at the supporting block, and press the confirm item; EzShops places the backing and every formatted sign using the plan you just saved.
  6. Reuse saved plans: The generator keeps your last configuration so you can rerun /signshop, tweak a detail, and redeploy another set of synchronized buy or sell signs in seconds.

🪧 Scanning sign shops

  • /signshop scan: Sweep the nearby area for EzShops-formatted signs and highlight any that no longer match their linked GUI entry or have invalid headers.
  • Permission gated: Limit the audit tool to trusted staff with ezshops.shop.sign.scan so regular players can’t spam alerts.
  • Instant feedback: Scans summarize the number of corrected signs, orphaned headers, or skipped locations right in chat so you know where to investigate.
  • One-click fixes: Choose the optional autofix prompt to rewrite outdated lines, reapply pricing, and restore proper formatting without touching each sign manually.
  • Perfect for expansions: Run a scan after big layout changes or world edits to ensure every strip still points at a valid backing block before opening your new district.

🛒 Player shops

Player Shop Setup Player Shop Sign

  • Let the community sell: Players place [playershop] on a sign attached to their chest, add the quantity and price (or reuse saved defaults), and EzShops validates the stock before activating the listing.
  • Automatic formatting: Successful shops rewrite their signs with color-coded headers, owner names, item summaries, and price lines that reflect stock status.
  • Offline earnings: Purchases withdraw money from buyers, deposit it into the owner's account, and send notifications when the seller is online.
  • Secure storage: Only owners (or admins with ezshops.playershop.admin) can break signs or open connected chests, preventing grief and theft.
  • Permission tiers: Grant ezshops.playershop.create to trusted builders, ezshops.playershop.buy to the wider community, and reserve ezshops.playershop.admin for staff oversight.
  • Configurable rules: Require stocked chests, clamp quantity or pricing ranges, or disable the feature entirely using the player-shops block inside config.yml.
  • Double-chest ready: Listings automatically bind to both sides of a double chest and refresh their signs whenever stock changes so the status is always accurate.

🛒 How to open a player shop

  1. Preset your values (optional): Run /playershop to open the setup menu. Use the +/- buttons to lock in a quantity and price that respect your configured limits; the plugin saves these until you change them again.
  2. Stock a chest: Place the item you want to sell inside the chest (or both sides of a double chest) so EzShops can detect the template stack.
  3. Add the sign: Attach a sign to the chest and write [playershop] (or another allowed header) on the first line.
  4. Enter quantity and price: Fill in the second line with the amount to sell per purchase (e.g. x16) and the third line with the total cost (numbers only). Leave either line blank to reuse the values you saved with /playershop.
  5. Let EzShops verify: When you place the sign, the plugin checks ownership, chest stock, and any price or quantity guards before rewriting the sign with your themed formatting.
  6. Maintain stock: Keep the chest supplied; EzShops instantly flags the sign as out of stock and flips it back when you restock or close the chest inventory.
  7. Collect earnings: Every sale deposits money into your account, notifies you if you are online, and keeps the sign synced with the remaining stock.

📦 ShopPriceService API examples

  • Lookup the service
RegisteredServiceProvider<ShopPriceService> provider = Bukkit.getServicesManager().getRegistration(ShopPriceService.class);
ShopPriceService prices = provider != null ? provider.getProvider() : null;
  • Query buy and sell totals
ItemStack stack = new ItemStack(Material.DIAMOND, 16);
prices.findBuyPrice(stack).ifPresent(total -> player.sendMessage("Buy price: " + total));
prices.findSellPrice(stack).ifPresent(total -> player.sendMessage("Sell price: " + total));
  • Cache your reference: Grab the provider during plugin enable and reuse it for commands, GUIs, and scheduled tasks.

🚀 Quick start

  1. Install Vault and an economy provider, then drop EzShops.jar into plugins/.
  2. Restart the server to generate default shop categories, sign formats, and dynamic pricing storage.
  3. Edit plugins/EzShops/shop.yml (or the files under plugins/EzShops/shop/) to tailor categories, prices, and display copy.
  4. Grant ezshops.shop.sign.create to trusted builders so they can post buy/sell signs around your spawn.

Deliver a polished ingame shop with EzShops today!


Information

CategoryEconomy
Published onDecember 24, 2025
LicenseUnspecified
Downloads16
Stars0
Watchers0

Pinned Versions

Members