[1.7 - 26.1.*] ⚠️ EzShops ⚠️ Faction Shops ; API options ; Player Shops ; Server Shop icon

[1.7 - 26.1.*] ⚠️ EzShops ⚠️ Faction Shops ; API options ; Player Shops ; Server Shop -----

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




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)
----------, May 22, 2026

Fixed
  • on-sell commands not executing for item-type: COMMAND items — sell() 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-as — ShopPricingManager 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.
----------, May 18, 2026

Fixed
  • Quick Sell GUI "Nothing to sell" after shift-click - handleConfirm 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-click - handleConfirm 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 sellable - sellDirect 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 names - loadLegacyEntries 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.
----------, May 15, 2026

Fixed
  • TeamTreasury transaction safety - deposit 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 guard - removeTeamStock now returns false immediately when amount <= 0, preventing invalid stock mutations.
----------, May 13, 2026

Fixed
  • TeamsAPI optional integration - NoClassDefFoundError 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.
----------, May 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.
----------, May 12, 2026

This version we focussed on adding Team Shops, a full team-based economy layer built on top of TeamsAPI. Teams get their own market, shared treasury, stock pool, and role-based pricing, all accessible through a new /teamshop command.



Added
  • TeamsAPI integration: EzShops now integrates with TeamsAPI as a soft dependency; all features degrade gracefully when TeamsAPI is absent.
  • Role-based sell multipliers: MEMBER, ADMIN and OWNER each receive a configurable sell price bonus when selling to the shop (teams-integration.sell-multiplier in config.yml).
  • Role-based buy discounts: MEMBER, ADMIN and OWNER each receive a configurable buy price reduction when purchasing from the shop (teams-integration.buy-discount in config.yml).
  • Team treasury: a shared balance funded automatically by a configurable percentage of every sell transaction (teams-integration.treasury-split). Members can deposit and withdraw funds through the treasury GUI.
  • Shared team stock: stock quantities are pooled per team; all members draw from and contribute to the same pool (teams-integration.shared-stock).
  • /teamshop command: opens the team shop dashboard showing team info, current multipliers and quick links.
    • /teamshop treasury: opens the team treasury GUI (deposit / withdraw; requires ezshops.teamshop.treasury.withdraw).
    • /teamshop stocks — browse all items your team currently has in stock.
  • Permissions:
    • ezshops.teamshop (default: true): access the team shop dashboard.
    • ezshops.teamshop.treasury.withdraw (default: true): withdraw from the team treasury.
    • ezshops.teamshop.admin (default: op): administrative team stock commands.
  • Automatic data cleanup: team stock and treasury data are deleted automatically when a team is disbanded via the TeamDeleteEvent.
----------, May 11, 2026


  • Fixed issue: Bukkit's getMinecraftVersion() >= 14 failed because of new 26.1 version format
----------, May 4, 2026

[​IMG]

Full Changelog: https://github.com/ez-plugins/EzShops/compare/2.3.1...2.4.0
----------, May 3, 2026


What's Changed
New Contributors
Full Changelog: https://github.com/ez-plugins/EzShops/compare/2.2.3...2.3.0
----------, Mar 25, 2026

  • (#34) Added buy price discount boost for EzBoost integration (by matheusherman)
  • (#35) Added multi language not-in-rotation message
  • (#35) Added new check for each buy/sell feature and if item is not available, but sometimes is in rotation send this new message instead of actually still buy/selling.
----------, Mar 2, 2026

  • New NBT filter options for sell prevention ( by @matheusherman in #27 )
    • Added NBT data whitelist
    • Added NBT data blacklist
Default config.yml settings

Code (YAML):

sell
:
  # Ignore items with NBT (custom tags/metadata) during /sellhand and /sellinventory
  # When enabled, only plain items without NBT will be sold.
  # For example: if you have a "Supreme Bone" (with NBT) and normal bones,
  # only the normal bones will be sold when using /sellinventory.
  # Default: false
  ignore-items-with-nbt
: false

  # NBT tag filter for more granular control
  # Mode: 'off', 'whitelist', or 'blacklist'
  #   - 'off' (default): Ignore the filter, use ignore-items-with-nbt setting only
  #   - 'whitelist': Only allow items with NBT tags in the whitelist
  #   - 'blacklist': Block items with NBT tags in the blacklist
  nbt-filter
:
   mode
: "off"
   whitelist
: [ ]
   blacklist
: [ ]
 
----------, Feb 9, 2026

  • Added item-type option to make it easier to prevent normal shop execution
    • ITEM — Default. The player receives the configured ItemStack when they buy the item.
    • COMMAND — The player is charged and pricing/dynamic effects are applied, but no ItemStack is given. Any configured on-buy commands (or buy-commands) will be executed.
    • NONE — The player is charged and pricing/dynamic effects are applied, but no ItemStack is given and no commands are executed. Useful for non-physical purchases (tokens, permissions, etc.).
----------, Feb 8, 2026

  • Added toggle in configuration to disable player-shop protection
Code (YAML):

# When true, other players cannot open or break player shop chests/signs.
# Set to false to allow other players to open the chest and break the sign.
protection-enabled
: true
 
  • Added automated testing in Github project
  • Added CI to run feature and unit tests when pull request is created in Github project
  • Added CI to validate YML configuration files in Github project
----------, Jan 31, 2026

  • Fixed typing quantity in chat for creating new /playershop
  • Fixed typing price in chat for creating new /playershop
----------, Jan 29, 2026

  • Improved pagination logic
  • Added preserve-last-row option to preserve the row with actions for the actions only
  • Added pagination documentation
  • Added command autocomplete for configured price-ids to show when using /shop buy <material> and /shop sell <material>
----------, Jan 29, 2026


  • Added pagination in shop category detail GUI
  • Added custom {translation:TRANSLATION_KEY} placeholders to use translated values from the messages/ system.
Code (YAML):

{translate:hooks.player-lacking-permission-message }
 
  • Moved player shop class SignFormat in new class for reusability purposes
  • Updated all configuration files through AI to implement translation placeholders in the language files.
  • Added command execution on shop buy or selling
Code (YAML):

categories
:
  enchantments
:
   name
: "{translate:shop.categories.enchantments.name}"
    ...
   display-name
: "{translate:shop.common.menu.fill-display-name}"
   items
:
     sharpness_v
:
      ...
       on-buy
:
         execute-as
: console
         commands
:
        - "broadcast test 1 2 3"      
       enchantments
:
         sharpness
: 5
 
----------, Jan 28, 2026

  • Fixed custom inventory title check for stock overview GUIs
----------, Jan 25, 2026

----------, Jan 24, 2026


----------, Jan 21, 2026

  • Refactored storage features with StorageAdapter structure with repositories. This to easily support MySQL and other storage types later on.
  • Improved stock features
    • Added confirmation GUI for buying stocks
    • Added confirmation GUI for selling stocks
    • Added GUI of /stock overview
    • Added "All Stocks" GUI
    • Added link between "Player Stocks" GUI and "All Stocks" GUI
    • Made most of the options in the GUIs configurable through a new stock-gui.yml
    • Improved auto complete
    • Fixed bug stock overview only loading overridden stocks
  • Added support barrels for player shops
  • Added API for stock features
  • Added general API class to combine all API features
  • Added MiniMessage support through new MessageUtil for most configurable messages
  • Added CompatibilityUtil for easier compatibility management
----------, Jan 15, 2026

  • Solved issue in double triggering player shop sign buys.
  • Optimized cooldown cache storage to remove players that are not online. This saves temporary memory.
  • Solved issue in removing player shops when they are located in unloaded worlds
  • Solved issue in loading stock base price overrides
----------, Dec 26, 2025

  • Added Minecraft compatibility for 1.7 - 1.21.*
  • Added improved compatibility for Bukkit / Spigot
  • Added libraries to the .jar
  • Added SpigotMC.org integration for checking new updates
----------, Dec 23, 2025

  • Added stock market features
    • Added price type based on stock market value
    • Added admin control for freezing stock markets
    • Added /stock command
  • Improved configurable messaging
  • Improved configuration cache implementation
  • Improved default configuration files
  • Improved fail/error handling
----------, Dec 21, 2025

  • Added optional configurable categories.{category}.command option to the category configuration files. This to execute a command when clicked on a category.
  • Added /shop reload subcommand to reload the configuration files of EzShops.
  • Improved onEnable console logging on server startup for better plugin monitoring.
----------, Nov 29, 2025

  • Added GUI for /signshop to set up multiple sign shops at once
  • Added /signshop scan for replacing old sign shops to EzShops sign shops
  • Added category spawners to default shop
  • Added category enchanted books to default shop
----------, Oct 30, 2025

  • Added option to add rotating specials (items) to the shop
----------, Oct 29, 2025

  • Improved configuration messages
  • Fixed issue in API
  • Added more configuration options for player shops
----------, Oct 28, 2025

  • Added optional player shops
    • [playershop] on sign with chest behind it
    • /playershop shop configuration
----------, Oct 27, 2025

  • Added multiple new configuration options for dynamic pricing
  • Added new /price <material> command to easily find the price of a material
----------, Oct 27, 2025

Resource Information
Author:
----------
Total Downloads: 1,088
First Release: Oct 27, 2025
Last Update: May 22, 2026
Category: ---------------
All-Time Rating:
1 ratings
Find more info at ez-plugins.github.io...
Version -----
Released: --------------------
Downloads: ------
Version Rating:
----------------------
-- ratings