Перейти к содержимому
Mineforgian

EzShops

Advanced shop menus with smart pricing, sign trading, and API integrations

Загрузки
6K
Подписчики
9
Обновлён
7 июля 2026 г.
Лицензия
MIT

Опубликован 22 декабря 2025 г.

EzShops – The Ultimate Minecraft Shop Plugin

EzShops is the all-in-one shop solution for Minecraft servers, offering advanced shop menus, dynamic pricing, sign trading, player marketplaces, and seamless API integrations. Designed for Paper, Purpur, Spigot, and Bukkit (1.7–26.1+), EzShops empowers server owners to deliver a polished, feature-rich economy experience with minimal setup.

Check our latest project: PvPIndex

Ez Shops Minecraft Plugin Header

ez shops plugin documentation button ez shops plugin support button

Minecraft Versions GitHub Stars License

  • Requires Vault & compatible economy plugin
  • Dynamic pricing engine & persistent market state
  • ShopPriceService API for plugin integration
  • Full documentation: EzShops Docs

Note: Vault and an economy plugin are required for currency transactions.

Join our Discord for support & community


⭐ Why this shop plugin?

  • Modern Shop Menus: Intuitive GUIs with category icons, quantity selectors, bulk buy/sell, and customizable lore.
  • Dynamic Pricing: Prices automatically adjust based on player activity, with persistent state across restarts.
  • Rotating Specials: Schedule daily or timed specials with weighted or random rotations, no manual recoding needed.
  • Sign Shop Integration: Create buy/sell signs that mirror menu prices and formats, perfect for towns and markets.
  • Player Shops: Let players run their own chest shops with secure, branded signs, automatic stock management, and smart item labels — sign names automatically show potion effects and enchantment details.
  • Stock Market System: Enable real-time, demand-driven pricing for select items, with admin controls and persistent overrides.
  • Instant Config Reload: Use /shop reload to update all configs and menus live, no server restart required.
  • Sell boosts: Option for sell boosts through integration with our EzBoost plugin - see the EzBoost integration docs.
  • API Ready: Integrate with other plugins or custom features using the robust ShopPriceService API.

Category Menu Item Overview


⚡ Key features of EzShops

  • Easy Setup: Auto-generates default configs, categories, and layouts on first run.
  • Flexible Customization: Edit categories, item prices, menu layouts, and sign formats to match your server’s branding.
  • Advanced Permissions: Fine-tune access for shop, stock market, sign creation, and player shop management.
  • Localization: Multi-language support, just set your preferred language in config.yml.
  • Performance Optimized: Designed for large servers with async operations and caching.

🛒 Powerful Shop & Stock Market Commands

  • /shop – Open the shop GUI or browse all items.
  • /shop buy <item> [amount] – Buy items directly from chat.
  • /shop sell <item> [amount] – Sell items directly from chat.
  • /sellhand, /sellinventory – Quick-sell items or entire inventories.
  • /price <material> – Check live buy/sell prices.
  • /shop reload – Reload all configs instantly.
  • /shopadmin reseed [mode] – Restore missing bundled category defaults (all modes or one mode) without overwriting existing files.
  • /stock buy <item> <amount> – Buy stock market items at the current price.
  • /stock sell <item> <amount> – Sell your stock market items.
  • /stock overview – View all stock market items and their current prices.
  • /stockadmin – Full admin controls for the stock market.

See the full command list and permissions.


🛠️ Configuration & Customization

  • Categories & Items: Organize your shop with unlimited categories and custom item settings.
  • Dynamic Pricing: Enable per-item or global dynamic pricing for a living, player-driven economy.
  • Rotations: Schedule daily specials or timed offers with easy YAML config.
  • Sign Shops: Mirror menu offers on signs, perfect for player towns and spawn markets.
  • Player Shops: Empower your community to create secure, automated chest shops.
  • Localization: Support for English, Spanish, Dutch, Chinese, and more.

Full setup and config details: Configuration Guide - including shop items, menu layout, and localization.


🪧 Sign Shops & Player Shops

Sign Shops Sign Setup GUI Player Shop Setup Player Shop Sign


📦 API & Plugin Integration

  • ShopPriceService API: Query prices, execute transactions, and integrate with other plugins.
  • Stock Market API: Real-time price updates, player holdings, and admin controls.
  • Ready for EzAuction & EzEconomy: Out-of-the-box integration with other EzPlugins.

See API Reference & Examples


🚀 Get Started in Minutes

  1. Install Vault and an economy plugin.
  2. Drop EzShops.jar into your plugins/ folder.
  3. Restart your server to auto-generate configs.
  4. Edit shop.yml and category files to customize your shop.
  5. Grant permissions to your staff and players as needed.

Deliver a next-level shop experience on your Minecraft server with EzShops!

🔗 Full Documentation · GitHub


Looking for more? Try EzAuction and EzEconomy for a complete economy suite!

Usage of the EzShops plugin

Try the other Minecraft plugins in the EzPlugins series

Ченджлог

2.5.9Релиз26.1.1, 26.1.2, 26.2 · 7 июля 2026 г.

Added

  • Manual category default reseed command — added /shopadmin reseed [mode] to restore missing bundled category defaults on demand without overwriting existing files. Omitting mode reseeds all bundled modes; providing a mode (e.g. prison, smp) reseeds only that mode.

Changed

  • Bootstrap architecture cleanup — startup and shutdown orchestration now lives in the bootstrap package (EzShopsBootstrap), while EzShopsPlugin is reduced to a thin lifecycle entry point (onEnable/onDisable delegation).
  • Runtime component access moved to registry — component/debug/reseed accessors are now provided by EzShopsRegistry, removing lifecycle/state getters from EzShopsPlugin.

Fixed

  • Default category file persistence across restarts — bundled category defaults are now seeded per mode directory (shop/{mode}/categories/*.yml) and are no longer recreated automatically for existing mode directories when server owners intentionally delete them.
  • Mode support for default seeding — bundled shop resource discovery now works across available packaged modes (including future bundled modes), rather than relying on prison-only default category handling.
2.5.8Релиз26.1.1, 26.1.2, 26.2 · 6 июля 2026 г.

Fixed

  • Config persistence after reloads/shop reload now reloads config.yml from disk before refreshing pricing/features, and setup GUI toggles now reload config before saving. This prevents stale in-memory values from being written back over server-owner edits.
  • Shop category parser resilience — category parsing now isolates failures per category so one malformed entry can no longer break loading of the category set.
  • Duplicate-material shop entries — when multiple items intentionally share the same material (for example splash potion variants), pricing keys are now resolved per-item to prevent collisions that could cause broken/empty category behavior.
  • List-style on-buy / on-sell hooks now execute — command hook parsing now accepts both list syntax (on-buy: - "cmd") and nested syntax (on-buy.commands) for compatibility with the documented format, preventing silent no-op purchases for item-type: COMMAND entries.
2.5.6Релиз26.1, 26.1.1, 26.1.2 · 22 мая 2026 г.

Through time we've made the stock market more stable, by doing this the documentation got outdated and configuration options that existed before got phased out. This version there was focus on updating the documentation and adding back options that got phased out in a more stable way.

Added

  • Configurable stock price-engine parameters - volatility-min, volatility-max, demand-multiplier, min-price, and update-interval are now real config.yml options under the stock: section. The plugin reads them on startup and applies them to the price engine. All defaults match the previously hardcoded values so existing behaviour is preserved.

Fixed

  • Incorrect stock-market configuration documented - docs/configuration/main-settings.md and docs/shops/pricing/stock-market.md previously documented a non-existent stock-market: config block. Both pages now document the real stock: section (enabled, cooldown-millis, blocked, overrides, categories). Price-engine parameters (volatility-min, volatility-max, demand-multiplier, min-price, update-interval) are now implemented as real config options (see Unreleased → Added).
  • /sell command missing from documentation - the Quick Sell GUI command (/sell) is now documented in the Commands reference with its behavior and permission node.
  • /shopadmin command missing from documentation - /shopadmin [browse|market] is now documented under Admin Commands including both the player-shops and team-market views.
  • /teamshop market subcommand missing from documentation - the team P2P market subcommand is now documented in Commands, the TeamsAPI integration page, and the tab-completion list for /teamshop.
  • Missing permission nodes in documentation - the following nodes were present in plugin.yml but absent from the Permissions reference; they are now documented:
    • ezshops.shop.admin (open /shopadmin GUI)
    • ezshops.teamshop.market (access team P2P market)
    • ezshops.pricing.admin.set, ezshops.pricing.admin.disable, ezshops.pricing.admin.list (granular pricing-admin nodes)
2.5.5Релиз26.1, 26.1.1, 26.1.2 · 18 мая 2026 г.

Fixed

  • on-sell commands not executing for item-type: COMMAND itemssell() no longer checks or removes physical items from the player's inventory when the item's delivery type is COMMAND. Previously the transaction exited early with "insufficient items" because the player had no material to hand over, preventing sell commands from running at all.
  • on-sell execute-as overridden by on-buy execute-asShopPricingManager now tracks execute-as independently for the on-buy and on-sell blocks. Previously a single shared flag meant that setting on-buy: execute-as: player would silently override on-sell: execute-as: console, causing sell commands to run as the player instead of the console.

Added

  • Code coverage reporting — JaCoCo is now configured in the Maven build (jacoco-maven-plugin 0.8.12). Coverage reports (jacoco.xml) are generated on every mvn test run and uploaded to Codecov by the CI workflow for both unit-test and feature-test jobs.
2.5.4Релиз26.1, 26.1.1, 26.1.2 · 15 мая 2026 г.

Fixed

  • Quick Sell GUI "Nothing to sell" after shift-clickhandleConfirm now calls a new ShopTransactionService.sellDirect() method that skips the player-inventory item count/removal steps. Previously, shift-clicking items into the GUI moved them out of the player's inventory, so the old sell() path found zero items and reported nothing to sell.
  • Quick Sell GUI shows "Nothing to sell" when sell fails after shift-clickhandleConfirm now distinguishes between a genuinely empty GUI and a GUI that has items but whose sellDirect call failed (e.g. economy down, dynamic price driven to $0.00 by a previous sale, rotation expired). The actual failure reason is shown to the player instead of the misleading "No items to sell." message. Items that failed to sell remain in the GUI so the player can retry.
  • Quick Sell GUI rejects rotation items even when directly sellablesellDirect and isSellable both applied a rotation-visibility check that belongs only in the main shop menu. The Quick Sell GUI is designed to accept any item with a configured sell price; rotation restrictions are now only enforced in sell(), which is the path used when a player types /sell or /sellhand.
  • Legacy shop.yml item keys not found when using lowercase material namesloadLegacyEntries now normalises every price key to Material.name() (e.g. BIRCH_LOG) before registering it in the price map. Previously, a config entry written as birch_log: was stored under the lowercase key, so getPrice(Material.BIRCH_LOG) could not find it, silently treating the item as unpriced.

Added

  • Stripped log variants in the wood category — all 9 stripped log types (STRIPPED_OAK_LOG, STRIPPED_SPRUCE_LOG, STRIPPED_BIRCH_LOG, STRIPPED_JUNGLE_LOG, STRIPPED_ACACIA_LOG, STRIPPED_DARK_OAK_LOG, STRIPPED_MANGROVE_LOG, STRIPPED_PALE_OAK_LOG, STRIPPED_CHERRY_LOG) are now included in the default wood.yml config so players can sell stripped logs with /sellhand and the Quick Sell GUI out of the box.
  • Wood (all-bark) block variants in the wood category — all 9 wood block types (OAK_WOOD, SPRUCE_WOOD, BIRCH_WOOD, JUNGLE_WOOD, ACACIA_WOOD, DARK_OAK_WOOD, MANGROVE_WOOD, PALE_OAK_WOOD, CHERRY_WOOD) are now included. Previously, attempting to /sellhand a "Birch Wood" block (as opposed to a "Birch Log") would return "That item is not configured in the shop."
  • Plank variants in the building category — all 9 plank types (OAK_PLANKS, SPRUCE_PLANKS, BIRCH_PLANKS, JUNGLE_PLANKS, ACACIA_PLANKS, DARK_OAK_PLANKS, MANGROVE_PLANKS, PALE_OAK_PLANKS, CHERRY_PLANKS) are now included in the default building.yml config.
2.5.3Релиз26.1, 26.1.1, 26.1.2 · 13 мая 2026 г.

Fixed

  • TeamTreasury transaction safetydeposit now refunds the player's Vault balance if the YAML save fails, preventing money from being lost on a failed write. withdraw debits the treasury before paying the player so a failed save aborts the operation without creating currency from nothing.
  • TeamStockManager negative-amount guardremoveTeamStock now returns false immediately when amount <= 0, preventing invalid stock mutations.
2.5.2Релиз26.1, 26.1.1, 26.1.2 · 12 мая 2026 г.

Fixed

  • TeamsAPI optional integrationNoClassDefFoundError no longer crashes plugin startup when TeamsAPI is absent from the classpath. The availability check is now wrapped in a NoClassDefFoundError catch block so the integration degrades gracefully whether the JAR is missing entirely or the plugin is simply not loaded.
2.5.1Релиз26.1, 26.1.1, 26.1.2 · 12 мая 2026 г.

Added

  • Folia support — EzShops now runs on Folia servers. All scheduler calls are routed through a new SchedulerAdapter that transparently delegates to GlobalRegionScheduler / AsyncScheduler on Folia and to BukkitScheduler on Paper/Spigot/Bukkit. The folia-supported: true flag has been added to plugin.yml.

Changed

  • EzBoost engine improvement — reflective access to EzBoost's price-multiplier API is now cached after the first lookup. Class.forName, getMethod, and getPlugin are no longer called on every transaction; instead, resolved Method references are reused for the lifetime of the server.

Комментарии

Загружаем…