ShopShelves
Spigot_Paper_Purpur_Folia_1.0.19New advanced way of admin shops and playershops. ShopShelves and PlayerShelves
Spigot_Paper_Purpur_Folia_1.0.19latestShopShelves 1.0.19yesterday New: Folia support
ShopShelves now runs on Folia as well as Spigot, Paper, Purpur and Bukkit, from 1.21.9 to 26.3.New: TextureShelves support
Players running the TextureShelves client mod now see a custom model on shop shelves. - Player shops use model key999999and admin shops use999998, the same keys as the Fabric version of ShopShelves. - It needs no extra plugin: the model key is sent straight to nearby players. - Players without TextureShelves see a normal shelf, and nothing changes for them. - New config option:textureshelves_models: true. Set it tofalseto turn this off.New: Custom model data rules
- Shelves that carry another plugin's or mod'scustom_model_data(for example GenShelves or BonsaiShelves) can no longer become shops. They place and behave like normal shelves, and their own model is kept. - Plain shelves, and shelves with ShopShelves' own keys (999999/999998), work exactly as before. - Shelves placed before this update are treated as plain shelves.Spigot_Paper_Purpur_1.0.18ShopShelves 1.0.18last week ShopShelves 1.0.18 — TradeShelves Compatibility Update ==================================================== ShopShelves and TradeShelves (item-for-item trading on shelves) now work together on the same server: https://modrinth.com/plugin/tradeshelves Install both and they detect each other on startup. ShopShelves always takes priority. NEW — TradeShelves compatibility -------------------------------- - Automatic detection: ShopShelves finds TradeShelves on startup and logs that compatibility mode is active and which hand each plugin uses for player shops. - One shelf, two hands: with both plugins installed, the hand you place the shelf with decides which kind of player shop you make. By default: - main hand = ShopShelves shop - off-hand = TradeShelves trade shelf Set TradeShelves_offhand: false to swap the hands. Admin shops are not affected and keep using each plugin's own admin mode. - Money and trades on one chest: the same owner can put a ShopShelves shop AND a trade shelf on the same chest, barrel, copper chest or double chest. A chest already linked to another player's shop (from either plugin) can't be used. - One reload for both: /shops reload reloads ShopShelves first, then TradeShelves. /trades reload reloads ShopShelves first as well. - Trade shelves are left alone completely: ShopShelves never interacts with, protects, breaks or re-chains a TradeShelves shelf. NEW — Compatible settings (config.yml) -------------------------------------- New settings, added to your config automatically. They only do something while TradeShelves is installed: # ─── Compatible settings (only used when TradeShelves is installed) ─── # true: ShopShelves player shops use the main hand, TradeShelves player shops use the off-hand. # false: the other way around. TradeShelves_offhand: true # true: TradeShelves uses the ShopShelves permission nodes (tradeshelves.X = shopshelves.X). TradeShelves_permissions: false # true: TradeShelves uses the default player shop limit from this config. TradeShelves_ownlimit: false - TradeShelves_permissions: true lets one set of shopshelves.* permissions control both plugins (tradeshelves.arrow is checked as shopshelves.mode). - TradeShelves_ownlimit: true makes TradeShelves use this config's default_player_shelf_limit. FIXED — Off-hand player shops ----------------------------- - Sneak-placing a shelf against a container with the off-hand now creates a player shop. Before, it did nothing. - Without TradeShelves installed, both hands work. NEW — Shelf compatibility for other plugins (developers) -------------------------------------------------------- - ShopShelves now ignores any shelf that another plugin has claimed. A shelf is foreign when its PersistentDataContainer holds, in any namespace other than shopshelves: <namespace>:shelf_claim any value <namespace>:shop_mode any value except NONE drawershelf:type any value except NONE (DrawerShelves) - TradeShelves and DrawerShelves follow the same rule, so one claim key makes a shelf invisible to all three plugins. See the Developer API section on the plugin page. - DrawerShelves drawers are recognised through the same check. Before, they had a separate check. IMPROVED -------- - Sneak-placing a shelf against a container now always tells you why no shop was made: container already linked, no permission, or player shop limit reached. Before, some of these failed silently.Spigot_Paper_Purpur_1.0.17ShopShelves 1.0.172 weeks ago WorldGuard allow-shop flag fix.Spigot_Paper_Purpur_1.0.16ShopShelves 1.0.162 weeks ago Spigot_Paper_Purpur_1.0.15ShopShelves 1.0.15Oct 1, 2026 New config setting: "container_protection" True: Protects connected containers of a player shop from explosives pistons hoppers etc. False: Still protects against non owners from opening and breaking.Paper_Spigot_Purpur_1.0.14ShopShelves 1.0.14Sep 6, 2026 Shop Textdisplays are gone when plugin is removed from server. TextDisplay updates canceled by is equall to existing data. Moderniced AsyncPlayerChatEvent.Paper_Spigot_Purpur_1.0.13ShopShelves 1.0.13Apr 27, 2026 Downgraded to java 21 (for 1.21.9+ to work again) Fixed Bug: OutOfMemoryError1.0.12ShopShelves 1.0.12Apr 22, 2026 ShopShelves Spigot — Changelog =============================== Version 1.0.12 -------------- New Feature: Sale & Tax System • Added /shops sale and /shops tax commands for applying server-wide or per-player price modifiers to admin shops. • Global deals replace each other (only one global sale and one global tax active at a time). • Player deals stack — multiple timed deals can coexist without losing earlier ones when a newer one expires. • Resolution logic: highest sale wins, highest tax wins, they cancel each other out. A 25% sale and 20% tax results in a net 5% sale. • Global deals take priority over personal deals when the global percentage is higher on that side. • Added /shops deals command to view active global and personal deal percentages at a glance. • Text displays on admin shops automatically update to reflect the active global deal price when a sale or tax is set or cleared. • Player-owned shelf shops (PLAYERSHELF mode) are completely immune to deals — sales and taxes are an admin tool and do not affect player shops. • Added player_deals_online config option: when enabled, personal deal timers only count down while the player is connected to the server. Global deals always use wall-clock time. • Timed deals accept duration tokens: 30m (minutes), 6h (hours), 7d (days). New Permission Nodes • shopshelves.sale — allows using /shops sale. • shopshelves.sale.<N> — allows applying a sale up to N% (e.g. shopshelves.sale.20). • shopshelves.sale.# — allows applying a sale of any percentage. • shopshelves.tax — allows using /shops tax. • shopshelves.tax.<N> — allows applying a tax up to N%. • shopshelves.tax.# — allows applying a tax of any percentage. • shopshelves.deals — allows viewing active deals via /shops deals. Defaults to true (all players). New: Deal Placeholders The following placeholders are now available in messages.yml and display format strings: • %sale% — net effective sale % after global+personal cancellation (0 if none). • %tax% — net effective tax % after global+personal cancellation (0 if none). • %sale_format% — always renders as "Sale X%" even when 0. • %tax_format% — always renders as "Tax X%" even when 0. • %if_sale% — renders "Sale X%" only when a sale is active, otherwise empty. • %if_tax% — renders "Tax X%" only when a tax is active, otherwise empty. • %global_deal% — shows the winning side for global deals only ("Sale X%" or "Tax X%" after they offset each other, or empty if equal/zero). • %player_deal% — shows the winning side for the combined player result (global + personal). Whichever side is larger after cancellation wins. Developer API • Added price modifier API to ShopshelvesApi. Third-party plugins can now apply and remove per-player price multipliers for admin shops programmatically. • ShopshelvesApi.setPlayerPriceModifier(uuid, multiplier) — applies a permanent modifier. 0.80 = 20% discount, 1.20 = 20% surcharge. • ShopshelvesApi.setPlayerPriceModifier(uuid, multiplier, durationMs) — timed version. • ShopshelvesApi.removePlayerPriceModifier(uuid) — removes any modifier set by the calling plugin. • ShopshelvesApi.getEffectivePriceMultiplier(uuid) — returns the combined effective multiplier for a player (all sources: API + command + global). • ShopshelvesApi.hasActiveModifier(uuid) — returns true if any deal is currently active for a player. • API modifiers feed into the same stacking system as command-set deals and respect all existing PLAYERSHELF immunity rules. • Added DealEntry.Source.API to distinguish API-set modifiers from command-set ones internally. Persistence • All deals (global and player) are persisted in the existing shopshelves.db SQLite file across server restarts. A new deals table is created automatically on first run — no migration steps required.Paper_Spigot_Purpur_1.0.11ShopShelves 1.0.11Mar 11, 2026 Changes: + Missing messages in the configs will now apply to existing configs on update. + Player shops now better "remove" when container is broken. + /Shops admin <playername> is now a thing + The main config now supports a language setting for the %item% placeholder.Paper_Spigot_Purpur_1.0.9ShopShelves 1.0.9Mar 10, 2026 Big Changelog: + World Guard support allow-shop flag for convenience using same flag as other shop plugins for easy migration. + World list in config now accepts a list of worlds that allow the shops to work in when list is empty all worlds allow shops. + Shop Labels the custom price gui now allows changing your shops name! + Players can now see the actuall shelf block contents by shift right clicking the name of the shop to open a GUI. + Custom price chat input now accepts an item amount. + New permissions: shopshelves.setlabel, shopshelves.setlabel.color, shopshelves.playershelf.worlds, shopshelves.playershelf.<worldName>Paper_Spigot_Purpur_1.0.8ShopShelves 1.0.8Mar 5, 2026 Custom Price GUI: New Shop Shelf Statistics Book: Shows the slot number item name and amount in lore + the profit and loss made on this shop More Compatible with DrawerShelves: No longer turns Drawers into shops: + Now also removes drawers from being turned into player shops. + Now allows admins and shop owners to break the container to remove the playershop. + Now adds copper chests to playershop containers (to match the fabric version)Paper_Spigot_Purpur_1.0.7ShopShelves 1.0.7Mar 5, 2026 Custom Price GUI: New Shop Shelf Statistics Book: Shows the slot number item name and amount in lore + the profit and loss made on this shopPaper_Spigot_Purpur1.0.6ShopShelves 1.0.6Mar 1, 2026 Quick fix: Textdisplays will no longer be visible thru blocks, walls, buildings. Cons: They are a little less brightSpigot_Paper_Purpur_1.0.6ShopShelves 1.0.6Mar 1, 2026 Update Changelog
Custom Price GUI:* A dedicated interface for setting and managing item prices. Explosion Immunity:* Shelf blocks are now 100% immune to all mob-based explosions (e.g., Creepers, Ghasts), keeping your shop safe.New Features
Refined Interaction Zones: Price Config: Right-click or Shift + Right-click the top 4 or bottom 4 horizontal pixels of the front face to open the custom price GUI. Shop Mode: The "Switch Shop Mode" function now only triggers when interacting with the 8x16 pixel front slots*. Left/Right Click Logic:* General updates to interaction handling for a smoother user experience.Interaction & Logic Updates
Slot Hardening:* The 8x16 pixel front face slots no longer allow breaking, preventing accidental destruction of the display area. Hopper Lockdown:* Hoppers are now completely disabled for Shop Shelves. They can no longer pull items out or push items in, ensuring manual-only transactions.Security & Protection
Spigot_Paper_Purpur_1.0.5ShopShelves 1.0.5Feb 15, 2026 ShopShelves Spigot - Version 1.0.5
Smart Inventory Check (Purchase Protection) We’ve fixed an issue where players were sometimes charged for items even if their inventory was full. If you don't have enough room to fit the entire purchase, the transaction will safely cancel, and you won't lose a single cent!
Stable Shop Displays Fixed a rare visual bug where the "Price" and "Amount" text labels on a shelf could sometimes swap places or flicker. Labels are now "locked" to their specific lines, ensuring your shop looks professional and consistent at all times.
BreweryX Integration Full support for BreweryX custom brews! Shops now recognize specific Brewery recipes and their quality levels. You can now set custom prices for different types of aged drinks and specialized brews just like any other item.
Spigot_Paper_1.0.4ShopShelvesJan 16, 2026 Fixing TextDisplays vanishing / being removedSpigot_1.0.3ShopShelvesJan 6, 2026 Spigot and Paper plugin Bug fix north and south mixing up slotsSpigot_PaperShopShelvesNov 28, 2025 Fixed a playershelf shop issue with the multiple item feature not recognizing proper slot.Spigot_1.0.1ShopShelves Spigot/PaperNov 22, 2025 Bug Fix: Fixed a bug with player ShopShelves acting up on setting up items. New Feature: Player ShopShelves now have a new setting (limit_playershelf_to_single_type) in the config by default on true if set to false it will allow players to use 3 different item types in 1 player ShopShelf.Spigot_1.0ShopShelves Spigot/PaperNov 20, 2025 Paper compatibility! My excuses for the wrong version!
Similar projects
Plugin →VeinMiner
Mine the whole vein on mining a single ore/block. Make the tedious mining experience to something satisfying and fun! FTB Ultimine alternative
99.3MSueta
Let Me Despawn
Improves performance by tweaking mob despawn rules. Say bye to pesky unintentional persistent mobs.
26.2MSueta
Chunky
Pre-generates chunks, quickly and efficiently
20.8MSueta
VeinMiner Enchantment
Veinminer Addon - Adds vineminer enchantment to enchanting tables. Only tools with the enchantment can veinmine
18MSueta
WorldEdit
A Minecraft Map Editor... that runs in-game! With selections, schematics, copy and paste, brushes, and scripting. Use it in creative, or use it temporarily in survival.
11.6MSueta
LuckPerms
A permissions plugin/mod for Minecraft servers.
2.8MSueta