Voxel Shop beta is live. Expect occasional bugs. Learn more
The #1 RPG experience for Minecraft!
NOTES:
-- Read this first if you already updated to a newer Paper 26.1.2+ build --
mcMMO stores block data as '.mcm' files in each world's 'mcmmo_regions' folder.
Paper's world migration copies world_nether and world_the_end into new directories, but did not copy over mcMMO region files for those worlds, which results in data loss.
The main risk is for 'world_nether' and 'world_the_end', because Paper migration can remove old non-overworld roots before plugins load.
The Overworld (your main 'world') is safe because Paper keeps that folder and all mcMMO data in-tact (but no longer in the "right" spot), so mcMMO can still migrate existing overworld '.mcm' data and will do so when you run this update if it finds any.
Given you are reading this if you already updated Paper and got the new world migration BEFORE updating mcMMO, then you have this option which is not perfect to recover lost mcmmo_region data.
Recovery steps:
1) Stop the server fully.
2) Find mcmmo_regions data in any manual backups you make of your server/worlds
3) Copy recovered '.mcm' files for Nether/End only into these live folders (create folders if missing):
Nether: 'world/dimensions/minecraft/the_nether/mcmmo_regions/'
The End: 'world/dimensions/minecraft/the_end/mcmmo_regions/'
Do NOT manually copy old overworld '.mcm' files into 'world/mcmmo_regions/' in this scenario, only do this for nether and the end.
For your main world, mcMMO safely merges surviving overworld data on startup, and manual overworld copy/overwrite can lose some data.
4) Start the server.
This is an imperfect solution depending on how long your server has been running post updating Paper 26.1.2 before updating mcMMO, as the data will have drifted to some degree (mostly impacts data for the end and nether as stated before).
-- Read this if you have NOT updated Paper yet, or if you use Spigot instead --
Update mcMMO first, then run the server at least once with this mcMMO build before updating server software.
On a normal shutdown, mcMMO will make backups of its region files.
After that, you are safe to update to the newest Paper builds.
-- Read this if you don't know whether you already updated to the new Paper world format --
Identify the format by checking your world folders:
Old/legacy layout looks like this:
'world/'
'world_nether/'
'world_the_end/'
New Paper 26.1+ layout looks like this:
'world/'
'world/dimensions/minecraft/the_nether/'
'world/dimensions/minecraft/the_end/'
Quick check: if you see 'world/dimensions/minecraft/the_nether/' and 'world/dimensions/minecraft/the_end/', you are already on the new Paper format.
If you already have the new layout and only updated mcMMO now, mcMMO will safely migrate any surviving overworld '.mcm' data from 'world/mcmmo_regions/'.
This operation is safe and merges with any new data mcMMO finds.
In this scenario, only restore '.mcm' files manually for Nether/End.
Do NOT manually copy old overworld '.mcm' files into 'world/mcmmo_regions/' because that can overwrite merged data and lose some entries.
In that same scenario, old nether/end '.mcm' data is already gone, so copy those '.mcm' files from any manual backups you have and place them in:
'world/dimensions/minecraft/the_nether/mcmmo_regions/'
'world/dimensions/minecraft/the_end/mcmmo_regions/'
If you are already on the new format, follow the first section above for full recovery steps.
If you still have the old layout, follow the section above for Spigot/old Paper: update mcMMO first, run once, then update Paper.
-- Read this if you use Spigot and never plan to use Paper in the future --
You can disable the shutdown migration backup behavior with 'General.RegionDataMigrationBackups' in config.yml
Default is 'true'. Set it to 'false' if you are sure you will stay on Spigot and do not need mcMMO to make backups of its region files.
In simple terms: this setting controls whether mcMMO makes extra '.mcm' safety copies during shutdown for future Paper world-layout migration.
Turning it off reduces extra backup work on shutdown, but removes that Paper-migration safety net.
OTHER NOTES:
- Fixed Mooshroom Shake drops not loading due to wrong entity ID in fishing_treasures.yml (see notes)
- Fixed Minecraft version detection failing on Spigot servers, causing Tricky Trials potions to be skipped
- Fixed Woodcutting bonus drops (Harvest Lumber, Clean Cuts) and Excavation treasure drops bypassing BlockDropItemEvent, making them invisible to Telekinesis-style enchant plugins (See notes)
- Skill info tooltip colors are now fully customizable via locale strings — all colors in JSON hover components are driven by locale keys and support & codes, hex colors (&#RRGGBB), and [[COLOR_NAME]] tokens
- Fixed incorrect effect durations for splash and lingering variants of Infestation, Weaving, Wind Charging, and Oozing potions in potions.yml (Thanks Warriorrrr) — existing servers are auto-migrated on first startup
- Fixed an exploit where arrows from multishot crossbows could be recovered in regions protected by WorldGuard
- Fixed an exploit where renamed seeds could trigger Green Thumb crop replanting without being consumed
- Fixed an exploit where renamed mushrooms could trigger Shroom Thumb without being consumed
- Fixed bug where Powered Shot (Crossbows) was reading MaxDamage from the Archery config section instead of its own
- Fixed bug where Smelting Vanilla XP multiplier was not using Skills.Smelting.VanillaXPMultiplier values from advanced.yml
- Fixed Fishing skill only working with main-hand fishing rod when fishing
- Fixed bug where Block Cracker (Unarmed/Berserk) had no effect on deepslate_bricks, deepslate_tiles, polished_blackstone_bricks, and nether_bricks
- Fixed Verdant Bounty (Herbalism) never triggering triple drops — the subskill was defined and displayed but was never checked during block break processing
- Fixed bug where mob custom names could be permanently corrupted after healthbar display (see notes)
- Fixed bug where vanilla mobs (null custom name) had their name incorrectly restored as an empty string instead of null after healthbar display
- Fixed bug where hitting a mob multiple times during the healthbar display window caused the name to restore too early (see notes)
- Changed mcMMO behavior around immature crop drops, no longer blocking drops from immature crops (See notes)
- Removed Patreon and language translation links from the skill command URL bar
- Added missing default value for 'Skills.Acrobatics.GracefulRoll.DamageThreshold' to advanced.yml
- Added 'Skills.Crossbows.PoweredShot.RankDamageMultiplier' to advanced.yml
- Added 'Skills.Crossbows.PoweredShot.MaxDamage' to advanced.yml
- Added 'Skills.Maces.Crush.Base_Damage' to advanced.yml
- Added 'Skills.Maces.Crush.Rank_Damage_Multiplier' to advanced.yml
- Added 'Skills.Tridents.Impale.Base_Damage' to advanced.yml
- Added 'Skills.Tridents.Impale.Rank_Damage_Multiplier' to advanced.yml
- Added 'Skills.Repair.ArcaneForging.MaxEnchantLevel' to advanced.yml (See notes)
- Added 'Skills.Salvage.ArcaneSalvage.MaxEnchantLevel' to advanced.yml (See notes)
- Updated Simplified Chinese (zh_CN) locale with new Spears and Maces translations, color-code spacing fixes, improved fishing messages, and corrected ability wear-off message formatting (Thanks GhostDC)
- Added & color codes to JSON hover tooltip keys and new JSON.URL.*.Detail, JSON.URL.Header, for consistency with locale_en_US.properties
- (Codebase) Updated deprecated durability API usage to ItemMeta Damageable API (see notes)
- (Codebase) Removed obsolete multishot arrow metadata marker system, modernized to native Spigot/Paper APIs
- (Codebase) Simplified crossbow arrow handling by eliminating unnecessary custom metadata tracking
- (Codebase) Replaced three separate healthbar metadata keys with a single HealthbarSnapshot record, eliminating duplicate restore logic spread across MobHealthDisplayUpdaterTask, CombatUtils, and TransientMetadataTools
- (Codebase) Rewrote MobHealthDisplayUpdaterTask as a self-managing repeating polling task using lastHitMs timestamps to extend the display window on re-hits, replacing the single-shot runAtEntityLater approach
- (Codebase) Removed unused Roll.printInfo(), Roll.getMechanics(), and Roll.getStats() overrides; deprecated SubSkill interface methods getStats() and getMechanics() for removal
- (Codebase) LocaleLoader.formatComponent() now supports [[NAME]] color tokens (e.g. [[RED]], [[DARK_AQUA]], [[BOLD]]) by translating them to & codes before Adventure serialization, so all three mcMMO color formats (&X, &#RRGGBB, [[NAME]]) work in JSON hover components
- (Codebase) Rewrote TextComponentFactory to use LocaleLoader.getTextComponent() throughout, eliminating all hard-coded NamedTextColor constants from JSON hover component construction — all colors and text are now fully configurable via locale strings
- (Codebase) Added locale keys JSON.Type.Passive, JSON.Type.Active, JSON.Type.SuperAbility, JSON.Locked, JSON.LevelRequirement, JSON.DescriptionHeader, JSON.URL.*.Detail, JSON.URL.Header, JSON.URL.Label.* with appropriate & color codes in locale_en_US.properties
- (Codebase) Modernized McMMOWebLinks enum with getDescriptionComponent(), getDetailComponent(), getLabelComponent() methods returning proper Adventure TextComponents
- (Codebase) Removed dead TextUtils.addChildWebComponent() method
- (Codebase) Bumped api-version in plugin.yml from 1.13 to 1.20.5, eliminating legacy bytecode field-rename shims applied by the server at load time
NOTES:- The Mooshroom Shake fix is auto-migrated at startup (Shake.MUSHROOM_COW → Shake.MOOSHROOM in fishing_treasures.yml).
- Regarding the telekenisis plugin compatibility fix, Tree Feller is not yet fixed, I will try to address it in the near future.
- In this update I've added two new advanced.yml settings for more granular control of the enchant level cap for both Repair and Salvage, this is an alternative to flipping on ExploitFix.UnsafeEnchantments in experience.yml which simply uncaps both skills.
- If ExploitFix.UnsafeEnchantments happens to be enabled in experience.yml, it will override both of these new settings and therefor allow basically uncapped enchant levels for Arcane Forging and Arcane Salvage.
- Allowing the old setting to override is mostly for backwards compatibility so we don't disrupt any existing server behavior.
- If you have this setting on, but you want to use the new more granular settings, simply turn off ExploitFix.UnsafeEnchantments and configure the new settings to your liking.
- Regarding immature crops, mcMMO used to block them from dropping and just replanted them instead, now they will drop and only replant if you have the relevant seed in inventory, which matches vanilla behavior better.
- The fishing hand-context changes in this update may fix reports where off-hand fishing seemed quicker than main-hand fishing.
- Durability handling now uses ItemMeta Damageable APIs instead of deprecated ItemStack durability methods.
- This may address some custom armor durability issues, but if you can still reproduce custom armor repairing when struck by axes, please report the bug with exact reproduction steps and custom-item/plugin details.
- The mob custom name corruption bug: if a mob was hit again before the healthbar display timer expired, the healthbar string was being saved as the "original" name, so the mob would permanently show healthbar text after the timer fired.
Fixed bug which caused trickshot-bounced arrows to have much longer potion durations than intended (Thanks flyncodes)
Fixed bug where using a stacked Chimaera Wing with warmup enabled would delete the entire stack instead of consuming only the use cost (Thanks UDPSendToFailed)
Fixed Daze (Archery) teleport causing players to snap back to their death/teleport location when hit simultaneously with a kill or world change
Default value for Glow_Lichen is now 1 instead of 5 (update experience.yml to get this change, or delete file and regenerate it)
NOTES:
There weren't any changes needed in mcMMO for the Tiny Takeover Minecraft update, so no issues there.
From 2.2.050 onwards, mcMMO will require Minecraft versions 1.20.5 or newer.
Every now and then I raise the minimum supported Minecraft version to reduce maintenance burden of supporting older versions.
mcMMO no longer monitors PlayerAnimationEvent, it turns out Spigot has a DamageType just for Spear damage, avoiding the need to track player arm swings.
I changed how mcMMO detects the game version slightly, now if it fails to determine the game version it will make the assumption you are on the minimum supported version and print an error, this is just a failsafe in case the version detection mechanism ever fails.
This hotfix fixes some errors that happen when running versions of Minecraft prior to Mounts of Mayhem (1.21.11) with mcMMO
Fixed copper armor and tools not working with Repair or Salvage
Notes:
The new sounds.yml config file allows you to override the sounds played by mcMMO.
Simply define the ID of the sound you want to play for each sound.
For example, add an entry for Sounds.TOOL_READY.CustomSoundId into sounds.yml to override the sound played when a tool is "readied".
If you are on older versions (1.18, 1.19, etc), instead of registering an ID, you specify the Sound enum.
Those who are on newer versions, can define the ID of any sound registered with Paper/Spigot, this allows you to even play custom sounds so long as they are loaded on the server.
Vanilla Minecraft sounds have IDs in this format "minecraft:ui.toast.challenge_complete", you can google what these keys are.
Fixed hover component and action bar messages not working for 1.21.6 and 1.21.7
Fixed bug where entries of mctop could be duplicated when using FlatFile
Fixed bug where a party leader could leave a party and the party would be left without a party leader
Fixed a bug where EcoEnchants and similar plugins could cause an infinite loop within mcMMO during TreeFeller and other abilities
Added 'Happy_Ghast' to experience.yml for combat XP
Added 'Ghastling' to experience.yml for combat XP
Updated Japanese (ja_JP) translation (Thanks ryota-abe)
Updated Simplified Chinese (zh_CN) locale (Thanks GhostDC)
Added StackOverflow safeguards for abilities dealing damage in mcMMO
Improved compatibility with MythicMobs/ModelEngine
Improved compatibility with AdvancedEnchantments
Fix potion match failing for non-english locales
FoliaLib Performance improvements (thanks SirSalad)
Fixed situations where Rupture could never end which affected server performance
Fixed bug where Alchemy was not matching potions correctly and producing incorrect results (Thanks TheBentoBox)
Fixed a bug where Chimaera Wing could cause an exception when used
Fixed bug where Mob Spawners could drop in Blast Mining (thanks TomBock)
Fixed Spectral Arrows not granting XP for Archery or Crossbows (thanks broccolai)
Fixed bug where Trickshot arrows would lose their potion or custom effects
Added locale strings for /mcmmo help command (thanks Griffeng)