Unofficial site, not affiliated with modrinth.com.What is this?
Плагины/NormalShops
NormalShops

NormalShops

Item Based Trading / Shops. Best for item based economies!

34
3

NormalShops — Player & admin guide

In-world shop (storefront)

Outside view of a NormalShops storefront

Villager Menus used as trading

Outside view of a NormalShops storefront

Outside view of a NormalShops storefront

Custom display: item showcase, glass/base blocks, and optional sale-style floating text.

/shops — public shop browser

Minecraft GUI for the /shops command

Paginated list of in-stock shops; click entries to teleport (when enabled).

GUI overview (main menus)

Collage of NormalShops GUI menus

Create/change listing, owner panel, access chooser, buy flow, stock, settings, and more.

Admin / delete hub (shift + right-click)

NormalShops admin menu

Force edit, force change owner, delete, history, emulate sale — sensitive actions require op in addition to normalshops.delete.

Creating a shop (walkthrough)

Animated walkthrough: how to make a shop

GIF: interact with an empty chest/barrel with a sign, set price and products, and open for business. (Exact flow matches your server’s messages and GUI version.)

Metrics

bstats


Why NormalShops?

NormalShops turns chests and barrels into fully interactive player shops without forcing players through obscure commands. Owners get a polished editor, buyers get a clear purchase flow (classic GUI or villager-style trading), and staff get real tools — history, emulation, ownership transfer — backed by optional CoreProtect integration.

Whether you run a survival economy or a mini-game hub, NormalShops is built to feel native to Minecraft: signs, chests, sounds, and inventories players already understand.



Feature overview

Core shop experience

CapabilityDescription
Block-based shopsCreate shops on chests or barrels using a sign (any sign type). The container must be empty and not a double chest.
Price & productsSet a currency item (and amount) plus one or more products — including custom items, heads, and NBT-heavy goods when full-nbt-check is enabled.
Buy flowCustomers use either a Buy GUI or a villager merchant interface (configurable via villager-trading-menu).
StockpilesLink remote chest inventories so sold items pull from real storage — with per-shop limits and optional stockpile protection.
EarningsSales credit internal earnings; owners withdraw through a paged earnings chest (partial pickups, stacked bundles).
Custom displaysGlass and item-frame style shop displays, themes, colors, and optional sale text on glass.
Sounds & themesPer-shop buy sounds and menu color themes for personality.

Owner & team tools

CapabilityDescription
Trusted playersGrant trusted access so helpers can manage stock and settings without owning the shop.
Access choice menuOwners/trusted users pick Editor vs customer trade view so they can preview exactly what buyers see.
Unlimited internal stockInternal stock is not capped at 27 slots — use paged stock chest editing (45 slots per page + navigation).
Lifetime analyticsRevenue, sales count, products sold, impressions, stock added/removed, net change, utilization, conversion rate.
Buyer insightsUnique buyers and top buyers derived from real purchase history.
Market comparisonSee how other shops price overlapping products and open a paginated competitor list.
Shop info cardQuick stats lore in the editor (including total impressions).


Detailed feature guide

Creating & editing shops
  1. Hold any sign and right-click an empty chest or barrel (not sneaking, not a double chest) to open the creation GUI.
  2. Place your price (what buyers pay) and products (what they receive) in the designated areas.
  3. Click Create Shop to finalize.

Editor controls (create / change product menus):

  • Left-click with an item to place it in a slot.
  • Right-click with an empty hand to halve the amount in a slot.
  • Right-click with the same item as the slot to increase the amount by one.

After creation, right-click your shop block as the owner (or trusted player) to open the access menu: choose Open Editor for management or Open Trade for the buyer-facing experience.

Buying — GUI mode vs villager mode
  • villager-trading-menu: true (default): Buyers interact through a merchant window. Multi-product bundles appear as a highlighted chest recipe (contents stored in block state meta) with preview-only rows using a barrier as the fake “price” so the real product stays obvious.
  • false: Buyers use the classic BuyMenu chest GUI instead.

Out of stock: Buyers can still open the trade view for transparency. The title reflects stock state (e.g. in stock vs out of stock). For non-admin shops, fulfilling trades is blocked when there is nothing to deliver — no ghost purchases.

Impressions: Opening buy/trade flows can increment lifetime impressions for conversion analytics.

Stock management (paged stock chest)
  • Internal stock is stored as a logical list with pagination (45 item slots per page + prev/next/info/back to editor).
  • One player at a time may view a shop’s stock GUI to reduce exploit surface.
  • Opening stock is blocked while another player has an active villager trade session on that shop (and vice versa).
  • Revision counters detect external changes (e.g. a sale while editing) and refresh or invalidate stale views.
  • Stockpile-backed removal still integrates with Transaction logic.
Earnings (paged earnings chest)
  • Collect opens a dedicated earnings inventory instead of dumping everything into the player’s inventory at once.
  • Owners take partial withdrawals; bundles can stack in the GUI for readability.
  • The top (earnings) inventory is withdraw-only — players cannot deposit or shift-click into earnings slots; their own inventory remains freely movable.
  • Same single-viewer and revision philosophy as stock.
Stockpiles & earnings piles
  • Stockpiles: Connect additional chests to supply sold items. Optional protect-stockpiles keeps foreign players from opening linked chests (bypass: normalshops.bypass-stockpile).
  • Earnings piles: Central ender chest “banks” that aggregate payouts from multiple shops (subject to limits in config.yml).
  • Tethers: Optional particle / rope visualization while linking (visualize-tethers).
  • Double chests: Pile locations are canonicalized so left/right halves resolve to one logical pile.
Customization & polish
  • Menu colors, custom shop names (length-limited), sale text on displays.
  • Frame & glass displays with lights, layering, and “move to top” style controls.
  • Per-shop notifications and low-stock warnings in settings.
  • Unlimited stock mode exists for special cases (gated behind normalshops.unlimited-stock — intentionally dangerous on economy servers).
Administration & audit trail

Shift + right-click a shop with normalshops.delete to open the admin / delete hub — including on your own shops.

Important: Force edit, force change owner, deleting someone else’s shop, history, and emulate sale require normalshops.delete and server operator (isOp()). Without op, those actions are denied and logged.

Admin controlWhat it does
Delete shopRemove the listing (with optional operator earnings collection via operator-delete-shop-collect).
Force editOpen the full owner editor as staff to adjust price, stock, display, etc.
Force change ownerPrompts for a username in chat; transfers ownership safely via ShopManager.
Shop historyPaginated persistent per-shop log (buys, edits, connects, emulated sales, villager buys, …). Falls back to CoreProtect block lookup when needed.
Emulate saleRuns a synthetic transaction (stock + earnings + stats + logging) for testing or moderation — tagged distinctly in logs (NormalShops-EmulatedSale).

CoreProtect (optional): If CoreProtect is present and its API is enabled, NormalShops records interaction-style logs for creates, deletes, buys (GUI & villager), stockpile changes, earnings collection, connects/disconnects, and more — while also appending structured lines to in-plugin history for the GUI.

Safety & anti-dupe design
  • Editor session lock: Only one management session “owns” deep edits at a time; submenus respect the same lock messaging.
  • Management access checks on open and click: if a trusted player is removed while online, GUIs stop accepting actions and can close safely.
  • Stock / earnings revisions + exclusive viewers reduce race windows between GUIs, merchants, and async saves.
  • Fulfillment checks on villager trades ensure stock is actually removed before counting revenue or sales.

Installation

  1. Server: Paper or Spigot 1.20.x (API 1.20 as declared in plugin.yml).
  2. Java: 17.
  3. Drop NormalShops-*.jar into plugins/.
  4. Optional: Install CoreProtect for external block history and richer audit trails.
  5. Restart once, then tune plugins/NormalShops/config.yml, gui.yml, and language files under plugins/NormalShops/messages/.


Quick start

StepAction
1Get a sign and right-click an empty chest or barrel (not sneaking).
2Set price and products in the GUI, then Create Shop.
3Right-click the shop block to manage or preview the buyer view.
4Use Stock chest in the editor to add paged internal stock.
5Use Collect to open the earnings chest and withdraw profits.
6Link stockpiles / earnings piles from the editor when you outgrow a single block.


Permissions

All nodes are prefixed with normalshops..

PermissionDefaultPurpose
normalshops.createtrueCreate new shops
normalshops.buytruePurchase from shops
normalshops.customizetrueOpen customization flows
normalshops.displaytrueBuild advanced displays (needs customize)
normalshops.sale-texttrueEdit floating sale text (needs customize)
normalshops.stockpiletrueConnect stockpiles
normalshops.earnings-piletrueConnect earnings piles
normalshops.deleteopShift-sneak admin hub; dangerous actions also need op
normalshops.bypass-stockpileopOpen protected foreign stockpiles
normalshops.unlimited-stockopToggle dangerous unlimited stock
normalshops.reloadop/normalshops reload
normalshops.versiontrue/normalshops version (Modrinth compare)
normalshops.viewshopstrue/viewshops, /normalshops view
normalshops.shopstrue/shops browser + teleports
normalshops.regionop/normalshops region …, /setpoint
normalshops.restoreop/normalshops restore
normalshops.stats-hologramsop/normalshops stats-holograms …
normalshops.update-notifyopChat when a newer release is on Modrinth
normalshops.coreprotect-testopDeveloper API self-test
normalshops.coreprotect-debugopVerbose CoreProtect diagnostics


Commands

CommandDescription
/normalshops / /nshopsRoot: view, reload, version, delete, restore, stats-holograms, region
/normalshops reloadReload config.yml, gui.yml, and messages
/normalshops versionJar version + Modrinth update status
/normalshops deleteLook at a shop (≤12 blocks); removes it (permission + staff workflow)
/normalshops restoreRestore from shop-backups.yml onto targeted chest/barrel
/normalshops stats-hologramslist | cleanup private stats displays
/normalshops regionmake | cancel — pairs with /setpoint for /shops regions
/viewshopsList your shops + trusted shops; remote open
/shopsPublic in-stock browser; optional item filter

For full syntax and defaults, see plugin.yml in the jar or the README command table.



Configuration

Key files live in plugins/NormalShops/ (or plugins/ClickShop/ if that legacy folder already exists — data migrates there automatically).

FileRole
config.ymlLanguage, limits, stockpile protection, piston rules, recovery mode, villager GUI toggle, NBT strictness, distances, display range, /shops regions, backups, …
gui.ymlMenu layouts and icon materials
messages/*.ymlLocalizable strings (bundled en_US, de_DE, tr_TR; other codes seed from English)
data.yml + shops/*.ymlSerialized ShopManager, per-player managers, and per-shop files

Highlighted options:

KeyWhat it controls
languageMessage bundle (en_US, de_DE, …).
check-updateModrinth version check on startup (join notify for ops / update-notify).
protect-stockpilesLock foreign access to linked supply chests.
villager-trading-menuUse merchant UI vs classic buy GUI for customers.
full-nbt-checkStricter matching for advanced items (economy servers).
max-connection-distanceHow far connectors can reach.
shop-limit-per-player / pile limitsHard caps to protect performance.
recover-shop-filesEmergency resync — auto-disables after one run.


Support & contributing

  • PRs: Keep changes focused; match existing code style and avoid unrelated refactors.
  • Downloads: NormalShops on Modrinth

Совместимость

Minecraft: Java Edition

26.1.x1.21.x1.20.x

Платформы

Поддерживаемые окружения

Сервер

Создатели

Детали

Лицензия:LicenseRef-All-Rights-Reserved
Опубликован:1 неделю назад
Обновлён:2 дня назад
Главная