promotional bannermobile promotional banner

ShopShelves

New advanced way of admin shops and playershops. ShopShelves and PlayerShelves

ShopShelves - Admin Shops & Player-Owned Shops

Using Bukkit, Spigot, Paper, or Purpur?
To get the most accurate list of features and general information for server plugins, please visit the Spigot site:
πŸ‘‰ View the Plugin version on the SpigotMC page


Recommended Client-Side Companion

Looking to enhance the shopping visual experience?
πŸ‘‰ WIITS - Client-side Shopping Mod

WIITS Banner


ShopShelves transforms the Shelf Block into flexible, server-friendly shops! This powerful server-side Fabric mod allows administrators to create permanent, fixed-price shops and gives players the ability to set up their own chest-linked "Player Shelves" with custom prices, all powered by a configurable in-game economy.


πŸ“· Pictures Explained

The following pictures depict the in-game shelf blocks in order:

  • Buy Shop | Sell Shop | Buy & Sell Shop | Custom Label | Player Shop
  • Statistics Book β†’ Shows total money earned / lost per slot item.
  • Custom Price GUI β†’ Shift right-click a shelf to set custom prices per slot.
  • Customer-Friendly Viewer GUI β†’ Inspect full item details (potions, enchantments, NBT data, etc.).

Buy Shop Sell Shop Dual Shop Custom Label Player Shop Stats Book Price GUI Viewer GUI Display Overview


πŸ“¦ Required Dependencies

EcoBal
Required Mod: EcoBal Economy API


✨ Features

Robust Shop Types

  • Admin Shops (Buy / Sell / Dual): Admins can create persistent shops using the Shelf Block for buying, selling, or dual trade. Admin shops are immune to world allowlists and cannot be broken through the front-facing item slots.
  • Player Shops (PlayerShelves): Players can create their own shops by Sneaking + Placing a Shelf Block against a chest, barrel, or copper chest.
    • Automatically links to the container (including double chests) for stock management.
    • Supports custom prices set per slot via the in-game Price GUI (shift right-click the shelf).
    • Configurable single-type mode: lock a player shop to one item across all three slots with a shared price, or allow each slot to hold different items.
    • Configurable creation limits via permission nodes.
    • Breaking the linked container automatically safely resets the shelf back to a plain vanilla shelf without leftover floating displays.

Custom Shop Labels

  • Set a custom floating label on any shelf via the Price GUI.
  • Supports legacy color codes (&c, &l, etc.), hex colors (&#RRGGBB), and newline markers (\n or &n).
  • Surrounding whitespace around newlines is stripped cleanly.
  • Length limit (label_max_length in config.yml, default 64) measures visible characters only.
  • Fully configurable bracket formatting in messages.yml (toggle per-line or full-block brackets).
  • Right-click the label icon in the Price GUI to clear the label instantly.

Dynamic Item Pricing

  • Global Pricing (pricing.yml): Set default buy/sell values for itemsβ€”including potions, enchanted books, goat horns, and player heads.
  • Custom Price Stamps: Use /shops price to stamp held items with custom pricing rules to configure shelves on the fly.
  • Flexible Quantity Ratios: Set prices by quantity (e.g., $10 for 64 blocks); unit values are calculated automatically.
  • In-GUI Price Editing: Shift right-click any shelf to edit pricing via increment buttons or exact chat input.
  • Instant Price Reset: Reset slot pricing to default values directly inside the GUI.

Statistics Book

  • Track cumulative profits and losses per slot for both Admin Shops and Player Shelves.
  • All profit/loss metrics persist across server reboots.

Display Aesthetics & Tech

  • Dynamic Floating Text: Rendered using vanilla Text Display Entities that sync live with stock and price updates.
  • Scale & Distance Tuning: Fully configurable render distances and text scaling multipliers (1–10).
  • Two Display Modes: TRIPLEPRICE (individual price per slot) and SINGLEPRICE (merged price display).
  • Localization: Supports standard Minecraft locale files (en_us, de_de, fr_fr, etc.) fetched on boot.

Server Protection & Management

  • Break Protection: Shelf item slots (8Γ—16 px hitboxes) ignore normal hit interactions; breaking requires targeting the border bands.
  • Container Security: Linked storage cannot be opened or broken by unauthorized players.
  • Explosion Proofing: Shelves and linked inventories resist TNT, creeper, and wither damage.
  • Auto-Migration: Automatically updates configuration files with newly introduced keys without overwriting existing settings.
  • Live Reloading: Refresh configurations on the fly via /shops reload.

πŸ’» Commands

Command Permission Description
/shops or /shopshelves shopshelves.command Displays help menu with interactive commands
/shops admin shopshelves.admin Toggles Admin Mode to bypass restrictions
/shops reload shopshelves.reload Reloads all configuration and pricing files
/shops update shopshelves.update Forces a global re-render of text displays
/shops mode [mode] shopshelves.mode Sets message target (CHAT/ACTIONBAR) or price style
/shops itemprice shopshelves.itemprice Inspects global price settings for held item
/shops itemprice <price> <type> <amount> shopshelves.itemprice Sets global price for held item
/shops price <price> <type> <amount> shopshelves.price Creates a temporary custom price stamp on held item

πŸ”‘ Permissions

  • shopshelves.command β€” Access to /shops help command (Default: Everyone)
  • shopshelves.admin β€” Access to /shops admin mode (OP Level 2)
  • shopshelves.reload β€” Access to /shops reload (OP Level 2)
  • shopshelves.update β€” Access to /shops update (OP Level 4)
  • shopshelves.mode β€” Access to /shops mode (OP Level 4)
  • shopshelves.itemprice β€” Manage global item pricing (OP Level 2)
  • shopshelves.price β€” Create custom item price stamps (OP Level 2)
  • shopshelves.playershelf β€” Permission to create PlayerShelves (Default: Everyone)
  • shopshelves.playershelves.unlimited β€” Unlimited PlayerShelf creation (OP Level 4)
  • shopshelves.playershelves.<number> β€” Sets custom shelf limit (e.g. shopshelves.playershelves.10)
  • shopshelves.setlabel β€” Set custom floating shop labels (OP Level 2)
  • shopshelves.setlabel.color β€” Use color/hex formatting in labels (OP Level 4)

πŸ› οΈ Developer API

For mod developers, ShopShelves exposes internal shop shelf methods via the ShopshelvesApi class:

package me.andy.shopshelves.api;

import me.andy.shopshelves.logic.ShopHelper;
import me.andy.shopshelves.util.ShopShelf;
import net.minecraft.block.entity.BlockEntity;
import net.minecraft.block.entity.ShelfBlockEntity;
import org.jetbrains.annotations.Nullable;

import java.util.Optional;
import java.util.UUID;

public final class ShopshelvesApi {

    private static final ShopshelvesApi INSTANCE = new ShopshelvesApi();

    private ShopshelvesApi() {}

    public static ShopshelvesApi getInstance() {
        return INSTANCE;
    }

    // Checks if a given BlockEntity is an active ShopShelf.
    public boolean isShopShelf(@Nullable BlockEntity blockEntity) {
        if (!(blockEntity instanceof ShelfBlockEntity) || !(blockEntity instanceof ShopShelf shopShelf)) {
            return false;
        }
        return shopShelf.getShopMode() != ShopHelper.ShopMode.NONE;
    }

    // Gets the current shop mode for a BlockEntity.
    public Optional<ShopHelper.ShopMode> getShopMode(@Nullable BlockEntity blockEntity) {
        if (blockEntity instanceof ShopShelf shopShelf && isShopShelf(blockEntity)) {
            return Optional.of(shopShelf.getShopMode());
        }
        return Optional.empty();
    }

    // Gets the UUID of the shop owner.
    public Optional<UUID> getShopOwner(@Nullable BlockEntity blockEntity) {
        if (blockEntity instanceof ShopShelf shopShelf && isShopShelf(blockEntity)) {
            return shopShelf.getOwner();
        }
        return Optional.empty();
    }
}

πŸ’¬ Support & Contact Policy

Primary Support (Discord)

All questions, bug reports, and suggestions should go through our Official Discord Server so other community members can find existing solutions.

Urgent PM Policy

Direct private messages are reserved for critical production emergencies:

  • Allowed Reason: Severe server crashes or critical item exploits directly caused by the mod.
  • Requirement: Must be the server owner/administrator.
  • Hours: 10:00 AM – 10:00 PM CET (Brussels Time).

πŸ“œ Modpack Policy

  • βœ… You are welcome to include ShopShelves in public or private modpacks.
  • ❌ Direct redistribution or re-hosting behind a paywall is prohibited.

ShopShelves Team

profile avatar
  • 1
    Followers
  • 10
    Projects
  • 8.6K
    Downloads

More from officialandyView all

  • GolemBarrel project image

    GolemBarrel

    The copper golem will now put overflow into a barrel nearby after checking all chests.

    • 27
    • October 24, 2026
  • Shulker & Bundle project image

    Shulker & Bundle

    Shulker & Bundle GUI on shift right click, Shulker in offhand collects item when picked up by player bundles have to pre defined inventory slot to do this (multiple bundles work)

    • 3.8K
    • October 24, 2026
  • ChatMod project image

    ChatMod

    MOTD Ingame, Full custom info command setup, Timed Broadcasts, Broadcasts for events with the world clock for events and countdowns :)

    • 266
    • October 11, 2026
  • Mob Ignore Me project image

    Mob Ignore Me

    Make specific mobs ignore you like phantoms.

    • 772
    • October 11, 2026
  • GolemBarrel project image

    GolemBarrel

    The copper golem will now put overflow into a barrel nearby after checking all chests.

    • 27
    • October 24, 2026
  • Shulker & Bundle project image

    Shulker & Bundle

    Shulker & Bundle GUI on shift right click, Shulker in offhand collects item when picked up by player bundles have to pre defined inventory slot to do this (multiple bundles work)

    • 3.8K
    • October 24, 2026
  • ChatMod project image

    ChatMod

    MOTD Ingame, Full custom info command setup, Timed Broadcasts, Broadcasts for events with the world clock for events and countdowns :)

    • 266
    • October 11, 2026
  • Mob Ignore Me project image

    Mob Ignore Me

    Make specific mobs ignore you like phantoms.

    • 772
    • October 11, 2026