Skip to content

SnDisplayShops v2.0.0

Choose a tag to compare

@ValentinTarnovsky ValentinTarnovsky released this 12 Aug 14:43
· 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 ItemDisplay spinning above a text line, with
    DecentHolograms driving the text where it is installed and a native TextDisplay where 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-size ships at 1 on 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-stacks has 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.