How It Works - Unariginal/MoreSparkles GitHub Wiki
A walkthrough of where boosts come from, how they combine, and what happens to them over time.
Every boost has a type (see Boost-Types) and a multiplier. A player can be boosted by four different sources at once:
| Source | Who It Affects | How It's Created |
|---|---|---|
| Player boost | One player |
/sparkles boost start <type> ... <players>. See Commands. |
| Global boost | Every player on the server |
/sparkles boost start <type> ... global. See Commands. |
| Boost area | Every player standing inside the area | Defined in Boost_Areas.json. |
| Charm | The player carrying the charm | Charm items, defined in Items.json. |
Each player can have one active player boost per type. For example, a player can have a Shiny boost and an EV boost running at the same time, but not two Shiny boosts. The same rule applies to global boosts: one active global boost per type.
When several sources apply to the same player and type, they combine. How they combine depends on the type.
Shiny: each source divides the shiny rate on its own, so the multipliers multiply together. A 2x player boost and a 3x global boost make shinies 6x as likely. The shiny rate can never go below 1 in 1.
Every other type: the multipliers from each source are added together. A 2x player boost and a 3x global boost give a 5x multiplier. If no source applies, the multiplier is 1x.
| Sources | Shiny | Other types |
|---|---|---|
| 2x player boost | 2x | 2x |
| 2x player + 2x global | 4x | 4x |
| 3x player + 3x global | 9x | 6x |
| 2x player + 2x global + 2x area | 8x | 6x |
Note
Charms: a player can carry several Shiny charms and all of them apply. For every other type, only the first matching charm in the player's inventory counts, so carrying two Exp Charms gives no extra benefit. Charms work from anywhere in the inventory; they don't need to be held.
Tip
Use /sparkles check-rate <type> to see a player's final, combined multiplier for any type. See Commands.
Boosts are started with /sparkles boost start. When the target already has an active boost of the same type:
- If
allow_queued_boostsistruein Config.json, the new boost is added to the queue for that type. - If it's
false, the new boost replaces the active one.
When a boost starts, a boss bar appears for the affected players (if one is set up for that type in Messages.json). Global boosts show their boss bar to everyone, including players who join later.
Queues are kept separately for every type, and separately for each player and for global boosts. When a boost ends, the next boost in the same type's queue starts automatically, with its full duration.
- View queues with
/sparkles check-queue. - Clear a type's queue with
/sparkles clear-queue <type>.
A paused boost keeps its remaining time but has no effect. Its boss bar stays visible and switches to the bar_text_paused text. Boosts pause in these situations:
| Situation | Setting in Config.json | Affects |
|---|---|---|
| A global boost of the same type is running | pause_player_boosts_during_global_boost |
Player boosts of that type. They resume when the global boost ends and no other global boost of that type is queued. |
| The player disconnects | pause_player_boosts_on_disconnect |
That player's boosts. They resume when the player rejoins. |
| The server shuts down | pause_player_boosts_on_shutdown |
Online players' boosts. They resume when the player joins again. |
| The server shuts down | pause_global_boosts_on_shutdown |
Global boosts. They resume when the server starts. |
If a pause setting is false, the boost's timer keeps running in real time, so a player who logs off with 10 minutes left and returns an hour later will find the boost expired.
A boost ends when its timer runs out or when it is stopped with /sparkles boost stop. When it ends:
- Its boss bar is removed.
- The next queued boost of that type starts, if there is one.
- For global boosts, the Discord webhook message is deleted (if
delete_when_boost_endsistrue).
Boosts survive restarts:
- Global boosts and their queues are saved in Global_Boosts.json.
- Player boosts and their queues are saved per player in
players/<uuid>.json.
If enabled in Config.json, each active global boost gets a message in your Discord channel. The message is edited every update_rate_seconds so its placeholders (like the time remaining) stay current. Player boosts and boost areas are never posted. The content of each message is set per type in Messages.json.
- Boost-Types: what each type's multiplier actually changes.
- Config.json: queue, pause and webhook settings.
- Commands: starting, stopping and checking boosts.