#### Additions
- Added new raw resource items for 1.21 consistency: raw platinum, raw silver, raw bauxite, and raw silicon.
- A new config option has been added to battle.yml to disable storing the last battle log (default: off).
## Battle Tests
- Added tests for the King’s Rock held item, including interactions with multistrike moves, Serene Grace, Pledge effects, and Sheer Force.
- Added tests for each type of Gem held item.
- Added tests for the Rusted Sword and Rusted Shield held items.
- Added tests for the Razor Fang held item, which will handle interactions with Serene Grace, multistrike moves, and Sheer Force.
- Added tests for the Exp. Share to verify experience gain for non-participating Pokémon.
- Added tests for Z-Crystals, including type-based and species-specific Z-Move behavior, transformation compatibility, and upgrade conditions.
- Added tests for the Incense held items, including effects on speed priority and prize money.
- Added a test to ensure Loaded Dice does not affect Surging Strikes.
- Added tests for the Zen Mode ability.
- Added 6 tests for the Razor Wind move, covering charge behavior, Power Herb interaction, interruptions, and critical-hit ratio.
- Added tests for the Pain Split move.
#### Changes
- Player data has been moved to a new `saves/WORLDNAME/playerdata/pokemon` directory for improved organization and consistency. Legacy data is automatically migrated to the new location on first run.
- All references to Aluminium have been adjusted to the correct spelling for en_US, there is a fallback in place and should not affect worlds. Datapacks interacting with Aluminum will need to be looked over however.
- The Item Finder now correctly displays its sprite, showing red when no hidden items are nearby, and produces lava particles and extinguish sounds to indicate nothing was found.
- Adjusted single player spawning to prevent spawns too close to the player, and lowered the total number around you. (You can adjust this yourself in your wild spawning config.)
- Added a confirmation message when money is awarded via interactions.
- Updated Shiftry to have the Wind Rider ability and the Piplup line to have Competitive, matching Scarlet and Violet changes.
#### Fixes
- Added movement AI to NPCs, including random_stroll, look_at_nearby, and stroll_through_village goals, allowing for configurable NPC wandering and behavior.
- Fixed being unable to type colons (:) in the NPC preset field, enabling the use of full preset identifiers like pixelmon:trainers/aquaboss.
- [22596](https://pixelmonmod.com/tracker.php?p=2&t=22569) Fixed an issue where certain NPC presets could not be placed using the NPC editor.
- [22565](https://pixelmonmod.com/tracker.php?p=2&t=22565) NPCs using Pokémon models now render correctly and no longer appear upside down or backwards.
- NPC nameplates now display properly above NPCs.
- Improved the NPC preset menu to stay within screen boundaries and added suggestions to the search box.
- Fixed the NPC clipboard menu going off-screen during editing.
- The Move Relearner NPC preset now correctly opens the move relearner interface when interacted with.
- Interacting with Move Relearner NPCs no longer causes client disconnects when no cost is defined.
- Pokémon now display correctly on the Move Relearner selection screen.
- Relearner NPCs now require a valid cost to function, preventing invalid configurations.
- Client network state now resets properly after leaving a Pixelmon server, improving connection stability and behavior.
- [22416](https://pixelmonmod.com/tracker.php?p=2&t=22416) [22321](https://pixelmonmod.com/tracker.php?p=2&t=22321) External moves like Forage now work correctly in multiplayer, with effects and cooldowns triggering as expected.
- [22571](https://pixelmonmod.com/tracker.php?p=2&t=22571) Poké Ball lids now craft correctly based on the apricorns used.
- Moltres’ flying animation and model have been updated to fix wing stretching issues and improve visual quality.
- Turtwig’s model position has been corrected so it no longer sinks into the ground.
- Egg photos now display the correct egg sprite in-game.
- Egg photos now render correctly, and photos worn on the player’s head appear properly lit in the inventory.
- A Mega Discovery research now unlocks properly after defeating an Epic, Legendary, or Ultimate Boss.
- The research task to defeat 10 Mega Boss Pokémon in A Mega Discovery now tracks progress correctly.
- Restored usability of the research inventory tab by fixing scroll wheel and scrollbar functionality.
- The Pokémon Editor now properly updates a Pokémon’s stats when its species is changed.
- Fixed a crash in the Pokémon Editor when using auto-complete for certain species names like Tyranitar, Pupitar, or Jynx.
- Fixed a rare crash that could occur during wild Pokémon spawns due to an invalid level tweak.
- Fixed a rare server shutdown error that could occur when saving research data.
- The Max Raid Den Spawner now correctly places the den at the block you click, rather than at the player’s position.
- Raid bosses no longer escape the den and wander the world after a raid ends.
- NPC titles now display correctly in all languages using translatable text.
- [22597](https://pixelmonmod.com/tracker.php?p=2&t=22597) [22596](https://pixelmonmod.com/tracker.php?p=2&t=22596) [22570](https://pixelmonmod.com/tracker.php?p=2&t=22570) Fixed a server crash caused by invalid items loading in infusers during world generation or preloading.
- The “Find a Wishing Piece” task in The Dynamax Phenomenon research now completes correctly when picking up a Wishing Piece.
- [22691](https://pixelmonmod.com/tracker.php?p=2&t=22591) Pokémon nicknames now support multiple color codes correctly without cutting off text.
- Fixed Evolution Stone armor using a fallback texture when worn or placed on armor stands. Armor textures now display correctly in all cases.
- Updated the movesets of Tornadus, Thundurus, Landorus, and Enamorus to reflect their Generation 9 learnsets.
- Iron Valiant’s staff now animates correctly and remains connected to its hand during walking animations.
- Kakuna’s model is no longer rotated onto its back and now appears upright.
- Pidgeotto’s model has been updated to reduce blockiness.
- Shiny Alolan Ninetales now displays its correct purple-toned coloring.
- Voltorb’s model has been smoothed and no longer appears overly blocky.
- Exeggcute’s model and animations have been fixed; it no longer lies sideways or animates incorrectly.
- Grovyle’s model is now correctly positioned and no longer sinks into the ground.
- All seasonal Sawsbuck forms now stand correctly on the ground.
- Smoliv’s model no longer stretches due to incorrect weight mapping.
- Litleo has received an updated model and smoother walking animation.
- Pyroar (both male and female) now use updated models and animations, and Shiny Female Pyroar displays correct coloring.
## Battle Fixes
- [22603](https://pixelmonmod.com/tracker.php?p=2&t=22603) Fixed battle UI not displaying correct item stack sizes, such as Poké Balls, by ensuring inventory data is properly synchronized with the client.
- Battle screen transparency now applies correctly to the Bag and Pokémon selection menus when using the F1 key.
- Added support for the `money_multiplier` context key.
- All money-increasing items (such as Luck Incense) now correctly double prize money from NPC battles.
- Fixed battle logs showing raw component values like literal{Rattata} instead of proper names.
- The raid lobby screen now correctly updates the selected Pokémon for all players, and properly reflects the host’s choice.
- Gems now correctly boost the power of moves instead of directly modifying damage dealt.
- Gems are no longer consumed if an attack misses or fails.
- Improved handling of held items during charging moves, though Gems are not consumed during the charge turn of multi-turn moves.
- Zen Mode now activates correctly when the user is at exactly 50% HP.
- [16340](https://pixelmonmod.com/tracker.php?p=2&t=16340) Behemoth Blade and Behemoth Bash now retain PP Up and PP Max effects from Iron Head when transformed by Zacian or Zamazenta.
- [21895](https://pixelmonmod.com/tracker.php?p=2&t=21895) Surging Strikes now correctly hits three times, even when the user is holding a Loaded Dice.
- Players can no longer spectate their own battles by targeting another participant in the same battle.
- Fixed Incense items that boost move power from incorrectly increasing final damage instead of move power.
- Full Incense now correctly causes the holder to move last in its priority bracket.
- Pure Incense now properly reduces wild Pokémon encounter rates.
- Pressing Esc to run during Pokémon selection after a faint no longer causes the battle to get stuck on “Waiting...”.
- Razor Wind now correctly has an increased critical-hit ratio.
- Razor Wind is now properly interrupted by conditions like flinching, sleep, or confusion, and will no longer continue incorrectly.
- Players can now successfully run from battle using the cursor after their first Pokémon faints.
- Players in battle free roam can no longer spectate other battles, preventing issues with rejoining their own battle.
- Using /battlelog no longer causes disconnects in multiplayer, even outside of battle or in solo raid scenarios.
- The /battlelog command now functions correctly in all battle types, including wild battles, raids, NPC battles, and PvP.
- [22579](https://pixelmonmod.com/tracker.php?p=2&t=22579) Ditto using Imposter no longer causes a disconnect when transforming into Ogerpon or other Pokémon with missing form data.
- The Run button now appears and functions correctly after a Pokémon faints in battle.
- [22588](https://pixelmonmod.com/tracker.php?p=2&t=22588) Using a Blank TR in battle no longer causes the battle to end with an error when attempting to assign a move.
- Battle Bag items now display correctly within the UI and can be selected as intended.
- Chat messages no longer obstruct battle UI elements when selecting Pokémon or items.
- [22599](https://pixelmonmod.com/tracker.php?p=2&t=22599) EVs now update correctly after battles.
## Language
- Added Arabic, Czech, Finnish and Swedish languages.
- Updated Danish, French, German, Israeli, Italian, Japanese, Norwegian, Dutch, Portuguese, Russian, Spanish, Thai, Turkish, Ukrainian languages with new translation keys, removed some unused keys.
#### Developer
- Added utility methods to `AttackRegistry` for retrieving random damaging moves with or without Z-Move compatibility.
- Updated `Attack#isAttack()` to account for overridden attack types such as Z-Moves and G-Max Moves.
- Added `ImmutableAttack#getZMove(PixelmonWrapper, boolean)` to support Z-Move logic on transformed Pokémon.
- The `ApplyBonusStatsEvent` no longer fires for Pokémon without bonus stats, reducing unnecessary log spam.
- Moved a battle log entry to only appear when not in simulation mode.
- Refactored the `InteractionContext` system, renaming it to `StoredContext` and moving it outside the NPC package for broader use.
- Introduced `ContextKey#mutable` and `ContextKey#immutable`, with validation for immutability constraints.
- Context keys are now registered server-side via the `RegisterEvent`.
- `StoredContext` is now a sealed class and supports `ResourceLocation-based` access for dynamic pipelines like NPCs and Research.
- Added `StrictStoredContext` for enforcing immutability in systems like the battle engine, throwing exceptions on mutable access.
- Use `StoredContext#strict` to create a guaranteed immutable context instance for safe copying and isolation.
Developer information
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle.
maven { name = "Modrinth"; url = "https://api.modrinth.com/maven" }