Rotations
The shopβs contents change on a timer. Each rotation picks a fresh random set of items from the pool and resets the per-rotation state.
How it works
Section titled βHow it worksβEvery rotation-interval seconds (default 3600 = 1 hour), the plugin:
- Picks up to
items-per-rotationitems at random from the pool (max 7 β the GUIβs item slots). - Resets every playerβs purchase counts for the new rotation.
- Resets each shown itemβs global stock to its configured starting value.
- Saves the new state to
data.yml. - Broadcasts the
rotation-broadcastmessage. - Closes any open buy menus and refreshes every open shop GUI to the new items.
- Opens the market for this rotation (see Opening Hours).
The timing lives in config.yml:
shop: rotation-interval: 3600 # seconds between rotations items-per-rotation: 7 # items per rotation (max 7)The countdown
Section titled βThe countdownβThe clock in the footer shows the time left until the next rotation (e.g. 1h 5m 3s) and updates once a second. The same value is available to PlaceholderAPI as %drotatingshop_next_rotation%.
Forcing a rotation
Section titled βForcing a rotationβ/dshop rotateRotates immediately and reschedules the next one a full interval out. Handy after adding items, to refresh the shop on demand, or to open the market right now if you use opening hours.
Restart-safe
Section titled βRestart-safeβRotation state is persisted to data.yml. When the server restarts mid-rotation, dRotatingShop resumes the same rotation with the time it had left β stock, per-player purchases and the open window included. Only when that remaining time has already elapsed does it roll straight into a new rotation.
Small pools
Section titled βSmall poolsβIf the pool has fewer items than items-per-rotation, the rotation simply shows all of them β no error, no empty duplicates.