SignMarket
The premium sign-shop plugin with floating item displays, multi-currency, Discord webhooks, and zero lag.
Better Discription soon
And more videos and images
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
The premium sign-shop plugin with floating item displays, multi-currency, Discord webhooks, and zero lag.
Better Discription soon
And more videos and images
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✦ What is SignMarket?
SignMarket turns any sign + chest combo into a fully automated player shop complete with 3D floating item displays, real-time stock tracking, Discord notifications, and an SQLite-backed transaction history. No complicated GUIs, no lag, no drama. Just place a sign, link your chest, and you're selling.
Built from scratch on Paper 1.21 with a focus on performance and reliability. Every design decision was made with large servers in mind.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✦ Feature Highlights
- Items float above every shop sign fully 3D, rotating, visible from configurable range
- Powered by PacketEvents zero real entities, zero entity count impact on the server
- Per-player rendering each player sees only what's in their view distance
- Staggered chunk loading so displays spawn smoothly without stuttering on server start
- Automatically switches to vanilla entity backend if PacketEvents is not installed
- All transaction history stored in a local SQLite database survives restarts, never corrupts
- Full transaction log: buyer, owner, item, quantity, price, world coordinates, timestamp
- Write-Ahead Log (WAL) crash recovery if the server crashes mid-purchase, money is automatically refunded on next start using the correct currency
- Per-player purchase limit tracking per shop (table ready, configurable)
- Async writes database never blocks the main thread
- Vault works with any Vault-compatible economy (EssentialsX, CMI, etc.)
- PlayerPoints zero-dependency detection via reflection; just install PlayerPoints and it works
- Each shop independently selects its currency at creation time
- Per-currency configurable symbols shown on signs, messages, and /sm info
- Whole-number enforcement for point-based currencies
- Crash recovery refunds in the original purchase currency
- Shop owners can grant trusted status to other players
- Trusted players can restock the chest and view the shop, but cannot buy from it
- Add/remove with /sm trust and /sm untrust takes effect immediately, no restart needed
- Trusted list saved to disk and persists across restarts
- Rich embeds for: large transactions, new shop created, shop stocked, shop removed, suspicious price alerts
- Configurable per-event toggle enable only what you want
- Configurable transaction threshold for "large purchase" alerts
- Debug logging mode for testing webhook delivery
- Suspicious price alerts notify admins in-game when a shop is created at an unusual price
- Per-item price limits set min/max price per Minecraft material
- Item blacklist prevent specific items from being sold (Bedrock, Command Block, etc.)
- Global min/max price boundaries
- Max shops per player (bypass permission available)
- Max shops per chunk prevents display lag in dense market areas
- /sm list browse all shops on the server, paginated
- /sm inspect click any sign to see full shop details, owner, stock, currency
- /sm teleport <id> teleport directly to any shop by ID
- /sm stats server-wide economy statistics
- /sm disable <player> block/unblock a player from creating shops
- /sm reload hot-reload config without restarting
- Bedrock players (via Floodgate) can create shops using a book-based input form
- Full parity with Java edition shop creation flow
- In-memory stock cache sign reads never touch the chest inventory
- Cache refreshed on chest close, chunk load, purchase, and startup
- Single-threaded executor for all database writes no lock contention
- Staggered display spawning no lag spike on startup or chunk load
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✦ Commands & Permissions
| Command | Permission | Description |
| /sm setup <price> [qty] [currency] | signmarket.use | Create a shop (look at sign above chest) |
| /sm remove | signmarket.use | Remove your shop (look at sign) |
| /sm info | signmarket.use | View shop info, stats, trusted list |
| /sm trust <player> | signmarket.use | Add trusted player to your shop |
| /sm untrust <player> | signmarket.use | Remove trusted player |
| /sm trusted | signmarket.use | List trusted players for shop |
| /sm list [page] | signmarket.list | Browse all server shops |
| /sm inspect | signmarket.inspect | Click a sign to inspect it as admin |
| /sm teleport <id> | signmarket.teleport | Teleport to a shop |
| /sm stats | signmarket.stats | View economy statistics |
| /sm disable <player> | signmarket.disable | Block player from creating shops |
| /sm reload | signmarket.reload | Reload config.yml |
| /sm license <key> | signmarket.admin | Activate your license key |
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✦ Installation
- Drop SignMarket.jar into your /plugins/ folder
- Install Vault + a compatible economy plugin (EssentialsX, CMI, etc.) required
- Optionally install PacketEvents for virtual floating displays (highly recommended)
- Optionally install PlayerPoints for point-currency shops
- Optionally install Floodgate for Bedrock player support
- Start the server config generates automatically
- Run /sm license <your-key> in-game or console to activate
- Done! Players can now create shops
Creating a Shop
- Place a chest
- Place a sign directly above or on the side of the chest
- Look at the sign and type /sm setup <price>
- Optional: /sm setup <price> <quantity> or /sm setup <price> <quantity> playerpoints
- Stock your chest the sign updates automatically!
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✦ FAQ
No PacketEvents is optional. Without it, SignMarket falls back to vanilla display entities. However, PacketEvents is strongly recommended for large servers as it eliminates entity count overhead entirely.
Yes install Floodgate alongside the plugin. Bedrock players get a book-based input form since they cannot type on signs the same way as Java players.
SignMarket uses a Write-Ahead Log (WAL). If the server crashes after money is taken but before items are given, the pending transaction is detected on next startup and the buyer is automatically refunded in the correct currency.
Yes — per shop. Just install PlayerPoints and use /sm setup <price> 1 playerpoints. Vault shops and PlayerPoints shops can coexist on the same server.
Configurable. Set max-shops-per-player in config.yml. Players with signmarket.bypasslimit permission bypass this. Set to 0 for unlimited.
Configurable. Set max-shops-per-player in config.yml. Players with signmarket.bypasslimit permission bypass this. Set to 0 for unlimited.
Coming in a future update. The transaction history and stats system is already in place to power it.
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✦ Support
- Discord: Join our Discord — fastest response
- Issues: Use the Discussion tab here on BuiltByBit
- Email: [email protected]
SignMarket is a premium plugin by GalaxyModz Development. Unauthorized redistribution is prohibited.
