Skip to content

Shiny Boost System

Tarot’s shiny boost system allows you to increase shiny encounter rates for events, rewards, or special occasions.

Shiny boosts:

  • Multiply base shiny rate
  • Can be time-limited
  • Support global or per-player
  • Stack with each other
  • Persist across restarts

Players can view active boosts:

/shinyboost

Opens GUI showing:

  • Active boost names
  • Multiplier values
  • Time remaining
  • Affected players (if limited)

Edit config/tarot/config.json:

{
"shinyBoosts": [
{
"uuid": "weekend_event_001",
"name": "Weekend Boost",
"multiplier": 2.0,
"startTime": 1709280000000,
"endTime": 1709366400000,
"global": true,
"playerUUIDs": []
}
]
}

Use commands to create boosts (admin only):

/shiny boost create <name> <multiplier> <duration> [global|player:uuid]

Global 3-hour boost:

/shiny boost create "Flash Event" 5.0 3h global

Player-specific boost:

/shiny boost create "Donor Reward" 2.5 30d player:069a79f4-44e9-4726-a5be-fca90e38aaf5

Weekend event:

/shiny boost create "Community Weekend" 10.0 48h global

Unique identifier for the boost:

{
"uuid": "halloween_2025"
}

Must be unique across all boosts.

Display name shown to players:

{
"name": "Halloween Event"
}

How much to multiply shiny rate:

{
"multiplier": 3.0
}
  • 1.0 = normal rate (no boost)
  • 2.0 = double rate (2x)
  • 5.0 = quintuple rate (5x)
  • 10.0 = 10x rate

Unix timestamps in milliseconds:

{
"startTime": 1709280000000,
"endTime": 1709366400000
}

Get timestamps:

Applies to all players:

{
"global": true,
"playerUUIDs": []
}

Applies to specific players:

{
"global": false,
"playerUUIDs": [
"069a79f4-44e9-4726-a5be-fca90e38aaf5",
"f84c6a79-0a4e-45e0-879b-cd49ebd4c4e2"
]
}

Cobblemon default: 1 in 4096 (0.0244%)

Final Rate = Base Rate × Multiplier

Example with 5x boost:

1/4096 × 5 = 5/4096 = 1/819 (0.122%)

Multiple active boosts multiply:

Final Rate = Base × Boost1 × Boost2 × Boost3

Example:

  • Event Boost: 2x
  • Donor Boost: 1.5x
  • Time Boost: 2x
1/4096 × 2 × 1.5 × 2 = 6/4096 = 1/683 (0.146%)
/shiny boost list

Shows:

  • All configured boosts
  • Active status
  • Remaining time
  • Player count (if limited)
/shiny boost remove <uuid>

Example:

/shiny boost remove weekend_event_001
/shiny boost modify <uuid> <property> <value>

Examples:

/shiny boost modify weekend_event_001 multiplier 3.0
/shiny boost modify weekend_event_001 endTime 1709380000000
/shiny boost extend <uuid> <duration>

Example:

/shiny boost extend weekend_event_001 24h
{
"uuid": "community_day_nov",
"name": "Community Day",
"multiplier": 10.0,
"startTime": 1730548800000,
"endTime": 1730577600000,
"global": true,
"playerUUIDs": []
}

Duration: 8 hours Rate: 10x (1/410)

{
"uuid": "weekend_shiny",
"name": "Shiny Weekend",
"multiplier": 3.0,
"startTime": 1730419200000,
"endTime": 1730678400000,
"global": true,
"playerUUIDs": []
}

Duration: 72 hours (Friday-Sunday) Rate: 3x (1/1365)

{
"uuid": "christmas_2025",
"name": "Holiday Celebration",
"multiplier": 5.0,
"startTime": 1735084800000,
"endTime": 1735689600000,
"global": true,
"playerUUIDs": []
}

Duration: 7 days Rate: 5x (1/819)

{
"uuid": "donor_permanent",
"name": "Donor Benefit",
"multiplier": 1.5,
"startTime": 1704067200000,
"endTime": 2051222400000,
"global": false,
"playerUUIDs": [
"uuid1",
"uuid2"
]
}

Permanent 1.5x boost for donors.

{
"uuid": "tournament_winner",
"name": "Champion's Luck",
"multiplier": 3.0,
"startTime": 1730419200000,
"endTime": 1733011200000,
"global": false,
"playerUUIDs": [
"winner_uuid"
]
}

30-day 3x boost for tournament winner.

{
"uuid": "vote_streak_boost",
"name": "Vote Streak Bonus",
"multiplier": 2.0,
"startTime": 1730419200000,
"endTime": 1730505600000,
"global": false,
"playerUUIDs": [
"voter_uuid"
]
}

24-hour 2x boost for voting.

The shiny boost GUI can be customized:

Location: config/tarot/shinyboost_gui.json

{
"title": "Active Shiny Boosts",
"rows": 6,
"boostItem": {
"material": "minecraft:nether_star",
"name": "<boost_name>",
"lore": [
"§7Multiplier: §e<multiplier>x",
"§7Ends: §a<time_remaining>",
"§7Type: §b<scope>"
]
},
"noBoostsItem": {
"material": "minecraft:barrier",
"name": "§cNo Active Boosts",
"lore": [
"§7Check back later for events!"
]
}
}

Award boosts as shop purchases:

/shiny boost create "Purchased Boost" 2.0 7d player:%player_uuid%

Grant boosts for quest completion:

/shiny boost create "Quest Reward" 3.0 24h player:%player_uuid%

Automatic boost on vote:

# In vote listener
/shiny boost create "Vote Reward" 1.5 24h player:%voter_uuid%

For plugin developers:

// Check if player has boost
val hasBoost = TarotDataObject.getBoosts(player).isNotEmpty()
// Get active multiplier
val multiplier = TarotDataObject.getTotalMultiplier(player)
// Create programmatic boost
val boost = ShinyModifier(
uuid = UUID.randomUUID().toString(),
name = "Custom Boost",
multiplier = 2.0,
startTime = System.currentTimeMillis(),
endTime = System.currentTimeMillis() + 86400000,
global = false,
playerUUIDs = listOf(player.uuid)
)
  1. Announce in advance: Give players notice
  2. Reasonable duration: 4-24 hours for events
  3. Appropriate multipliers: 2x-10x typical
  4. Monitor engagement: Track participation
  • 2x-3x: Standard events, regular boosts
  • 5x: Special events, monthly occasions
  • 10x+: Rare celebrations, major events
  • Announce boost starts
  • Show remaining time
  • Notify before expiration
  • Post schedules
  • Limit concurrent boosts
  • Clean up expired entries
  • Regular config cleanup
  • Monitor player counts

Symptoms: Players not getting boosted rate

Solutions:

  • Check start/end times
  • Verify player UUID in list
  • Ensure global is correct
  • Reload configuration

Symptoms: Unexpected shiny rates

Solutions:

  • Check stacking boosts
  • Verify multiplier value
  • Check for expired boosts
  • Review player-specific boosts

Symptoms: Empty boost GUI

Solutions:

  • Verify boost is active (time range)
  • Check permissions
  • Reload config
  • Verify JSON syntax