-
Notifications
You must be signed in to change notification settings - Fork 0
Achievements
RPGMood tracks 31 achievements across exploration, combat, survival, farming, and β if RPGLoot is installed β loot. Progress and unlocks are persisted per-player in plugins/RPGMood/achievements.yml and survive restarts.
Check your progress with /rpgmood achievements β see Commands. The command groups achievements by category and shows a per-category count.
| Icon | Name | Requirement |
|---|---|---|
| πΆ | First Steps | Enter your first zone |
| πΊοΈ | World Explorer | Discover 10 different zones |
| π | Seasoned Traveler | Discover 25 different zones |
| π | Void Walker | Survive the End |
| π§ | Cartographer | Discover every zone defined in zones.yml β not a count, literally all of them |
"Different zones" counts distinct zone keys ever entered (biome zones, WorldGuard regions, and dynamic zones each count separately) β revisiting the same zone doesn't add to the count. See Zones. Dynamic (procedurally-named) zones count toward World Explorer/Seasoned Traveler but not toward Cartographer, since that one specifically means the zones you hand-configured.
| Icon | Name | Requirement |
|---|---|---|
| βοΈ | Slayer Initiate | Kill 10 scaled mobs |
| π‘οΈ | Slayer Veteran | Kill 100 scaled mobs |
| π | Slayer Legend | Kill 500 scaled mobs |
| π₯ | Danger Seeker | Kill a level 30+ mob |
| π₯· | Untouchable | Kill a level 20+ mob that never damaged you (directly or via projectile) during the fight |
| π | Godslayer | Kill the Warden, Wither, Elder Guardian, and Ender Dragon (doesn't require RPGMood scaling β any kill of these four counts) |
| π― | Overkill | Kill a level 30+ mob that drops a Legendary RPGLoot item |
| Icon | Name | Requirement |
|---|---|---|
| β | Immortal | Survive 24 MC days without dying |
| π¦ | Night Owl | Survive 30 nights |
| πͺοΈ | Storm Chaser | Get struck by lightning and survive |
| π | Death Tourist | Die in 8 different biomes |
| Icon | Name | Requirement |
|---|---|---|
| πΎ | Farmer | Harvest 50 crops |
| π | Master Farmer | Harvest a Gold-quality crop |
| π³ | Chef | Cook 10 recipes |
| π¨βπ³ | Gourmet | Cook all recipes |
| πΈ | First of the Season | Witness a season change |
| π | Four Seasons | Witness all 4 seasons change |
| π | Noah's Ark | Own one of every animal type (cow/chicken/sheep/goat) |
| π | Beloved | Get any animal to max affection (5 hearts) |
| π΅οΈ | Green Thumb | Harvest a Gold-quality crop of every crop type defined in farming.yml
|
See Farming for crop quality, seasons, and animal mechanics.
| Icon | Name | Requirement |
|---|---|---|
| π | Legendary Hunter | Obtain your first Legendary-rarity item |
| ποΈ | Relic Bearer | Obtain your first Artifact (any of the 4) |
| π± | Godslayer's Arsenal | Obtain all 4 distinct Artifacts (ever found, not necessarily at once) β the hardest achievement in the plugin |
| π½ | Matching Set | Have a full 5-piece set active at once |
| π« | Head to Toe | Have a full 5-piece set active at Legendary rarity specifically |
| π‘οΈ | Dressed to Kill | Have Legendary-rarity gear in all 5 equipment slots (helmet/chest/legs/boots/weapon) at once, regardless of matching set |
Six achievements react to RPGLoot β no dependency between the two plugins, in either direction. RPGMood reads RPGLoot's public PersistentDataContainer tags directly (rpgloot:rarity, rpgloot:artifact_id, rpgloot:set_name, and rpgloot:active_set_rarity β the last one written on the player, not an item, while RPGLoot's SetTracker has a full 5-piece set active). This is the same soft-integration convention RPGLoot already uses to read RPGMood's rpgmood:level tag off scaled mobs β see Compatibility and Developer API.
If RPGLoot isn't installed, these tags simply never exist on any item or player β the 6 Loot achievements are just permanently locked, no errors, no behavior change anywhere else.
Checked on:
- Picking an item up off the ground (
EntityPickupItemEvent) - Any armor slot / hotbar / held-item change (mirrors how RPGLoot's own
SetTrackerdetects equipment changes)
Known gap: items obtained without ever being "picked up" in the vanilla sense β e.g. taken directly from a structure-loot chest into your inventory via a UI click, or given via /rpgloot admin give β are only caught the next time you change equipment (armor/hotbar), not the instant you receive them. In practice this only delays the achievement, it doesn't prevent it.
Each achievement hooks into the event that already exists for that feature β no extra scanning or polling, other than the light RPGLoot equipment re-check above:
| Trigger | Where |
|---|---|
| Zone entry (after the dwell timer) | Zone-change confirmation |
| Scaled mob kill / boss kill / damage-free kill | Mob death (checked at two priorities β see below) |
| Crop harvest | Crop harvest |
| Recipe discovery | Cooking/crafting |
| Season change (Four Seasons, First of the Season) | Fires once per season boundary, not every day |
| Day/night tick (Immortal, Night Owl) | Fires once per in-game day (every 24000 ticks, β20 real minutes) for every player online at that moment β offline players don't get that day's tick |
| Player death | Death message handling β records the death biome and resets the Immortal streak counter to 0 |
| Lightning strike survived | Damage event, cause LIGHTNING
|
| Animal purchase / affection change | Farming animal commands and interactions |
Overkill specifically is checked at MONITOR priority (after every other plugin's EntityDeathEvent listener has run, RPGLoot included) so it sees the mob's final drop list regardless of plugin load order.
Unlocking an achievement always sends to chat (not the action bar, regardless of your messages.delivery setting β see Configuration), since the two-line unlock message wouldn't fit in the action bar's single line:
β¨ Achievement Unlocked! π₯ Danger Seeker
Kill a level 30+ mob
It also adds an entry to your /diary β see Commands β /diary.
Shows your unlocked/locked achievements grouped by category, with a per-category and overall progress count. Unlocked entries show the icon, name, and description; locked entries show only the icon and name.
Permission: rpgmood.player.achievements (default true).