SnDisplayShops v2.0.0
·
5 commits
to main
since this release
Player-owned display shops: place a tagged item, set a price, and it trades on its own.
What it does
- Shops are placed, not commanded. A shop is any block placed from a tagged item, so its
material is whatever the operator configures. Identity lives in the item's PDC, never in the
block type. - A rotating hologram over every shop. A native
ItemDisplayspinning above a text line, with
DecentHolograms driving the text where it is installed and a nativeTextDisplaywhere it is not. - Two menus. Buyers get a compact offer with a one-click and a trade-all button; owners get a
full management screen for the item, the price, the currency, the direction, pausing, stock and
pickup. - Buy or sell. A shop faces either way: it sells its stock to players, or it buys from them and
pays out of its owner's balance. - Storage without slots. Stock is held per item variant as a 64-bit amount rather than as
inventory slots, so a shop can hold more of something than a chest could ever represent. - As many currencies as you configure. Each one is independently backed by an economy plugin's
commands or by EdTools, so a server can run coins, gems and tokens side by side. - SuperiorSkyblock aware. Shops on an island can be removed with it when it disbands or when
their owner loses membership, both behind operator toggles. - PlaceholderAPI:
%sndisplayshops_shops_count%,%sndisplayshops_shops_max%,
%sndisplayshops_shops_total%. - A public API for other plugins to read shops and their stock, and to draw stock down.
Requirements
- Paper 1.20.x or 1.21.x
- SnLib
- Optional: PlaceholderAPI, DecentHolograms, EdTools, SuperiorSkyblock
Configuration
Everything the plugin says and every number it uses lives in config.yml, lang/messages_en.yml,
guis/buyer.yml and owner-menu.yml. All four are managed: new keys are merged in on upgrade and
your edits are kept.
Two worth knowing before you tune them:
database.pool-sizeships at1on purpose. Two writers can land a shop's stock updates out of
order, and the losing write is the one that survives a restart. The plugin logs a SEVERE if it
finds MySQL configured above 1.limits.max-pickup-stackshas no "off" value. Picking up a shop hands its whole stock back in
one tick, so an unbounded value is a hang rather than a preference.