- The Java requirement for 1.20.2 is Java 17. This will come shipped with most launchers. For manual installation, you may need to install a later JRE.
- The minimum Forge version for this update is 48.1.0 and is required for a Pixelmon client to run.
- Worlds from 1.16.5 may not work with newer versions of Minecraft. Consider backups before updating.
- If using datapacks, consider refreshing every update for default datapack fixes from Pixelmon.
Additions:
- Added new Research and Assignment feature.
- Added Research triggers.
- Added Research toasts on progress and completion.
- Added new screen for Research, as an inventory tab.
- Added internal GUI API.
- Added FXAA GUI shader.
- Added continuous bell curve for Pokémon sizes (growths).
- Added naturally spawning, rare, large or small Pokémon.
- Added the size Pokémon spec.
- Added healthbar below sprite in PC when a Pokémon is not a full HP.
- Added grey overlay when a fainted Pokémon is in PC.
- Added Professor Wisteria to Research, who will accompany players as they progress in their tasks.
Pokémon:
- Added Bombirdier.
- Added Gimmighoul.
- Added Gholdengo.
- Added Wattrel.
- Added Kilowattrel.
- Added Rabsca.
- Added Rellor.
- Added Squakabilly.
- Added Klawf.
- Added Great Tusk.
- Added Iron Hands.
- Added Iron Treads.
- Added Iron Bundle.
- Added Sandy Shocks.
Cosmetic Palettes:
- Added spirit Iron Valiant.
Moves, Battle Items and Abilities:
- Added Ability Shield item.
- Added TM171-TM223 for all existing moves.
Items:
- Added Ultra Elm Chest Boat, Ultra Ginkgo Chest Boat, Ultra Jungle Chest Boat, Blue Berry Wood Chest Boat, Green Berry Wood Chest Boat, Pink Berry Wood Chest Boat, Purple Berry Wood Chest Boat, Red Berry Wood Chest Boat and Yellow Berry Wood Chest Boat.
- Added Gimmighoul Coin.
Sounds:
- Added new voices: Alomomola, Bunnelby, Cacnea, Cacturne, Castform, Cherubi, Comfey, Dedenne, Diancie, Flabebe, Floette, Florges, Furfrou, Gothita, Gothorita, Gothitelle, Inkay, Luvdisc, Mandibuzz, Maushold, Mawile, Morpeko, Ogerpon, Pyukumuku, Roselia, Salandit, Salazzle, Sandy Shocks, Shieldon, Shuckle, Sinistcha, Sinistea, Slurpuff, Smeargle, Snorunt, Swirlix, Swoobat, Tandemaus, Togedemaru, Vanillish, Vanillite, Vanilluxe, Vullaby, Wishiwashi, Woobat, Zigzagoon, Fezandipti, Boltund, Eldegoss, Enamorus, Greavard, Mr. Rime, Natu, Okidogi, Pincurchin, Rabsca, Rellor, Spidops, Tarountula and Xatu.
- Updated voices: Guzzlord, Kyogre, Deerling, Flamigo, Gardevoir, Hoppip, Kirlia, Shinx, Shroomish, Shaymin, Sunflora, Sunkern, Zigzagoon, Zorua, Cetoddle, Charcadet, Tinkatink, Bonsly and Tinkatuff.
Structure:
- Added meteorite.
Datapack:
- Added Growths as a datapack registry.
- Each Pokémon JSON now has a "mean" and a "standard deviation" defining the distribution of their size.
- Added datapack abilities for additional Size categories (growth).
- Updated all species to include growth_data in forms.
- Added recipes for Pixelmon Chest Boats.
- Added Recipe Book advancement for Pixelmon Chest Boats.
- Renamed crafted_gingko_blocks to crafted_ginkgo_blocks tag.
- Added the chest_boats tag.
- Added new interaction events: pixelmon:npc_engage, pixelmon:on_cooldown, pixelmon:set_cooldown, pixelmon:context_player, pixelmon:win_battle, pixelmon:lose_battle, pixelmon:draw_battle, pixelmon:can_battle and pixelmon:defeat_trainer.
- Added new interaction results: pixelmon:unlock_dynamax, pixelmon:close_screen, pixelmon:open_professor_dialogue, pixelmon:unlock_mega_evolution and pixelmon:delay_result.
- Added several blocks and block tags to the mineable/axe tag so they can be mined faster with axes.
- Added new block tags for Pixelmon furniture and Berry Wood blocks.
- Added 100-500 Gimmighoul Coins as a guaranteed drop to Gholdengo.
- Updated evolution conditions for Magneton, Qwilfish, Nosepass, Charjabug and Crawbrawler.
Research:
- Added collection-style UI widget with ability to set sprites for a resource and offset item position.
- Added sprite colouring in Research tasks.
- Added Professor Wisteria to research updates.
- Added Mega Evolution research.
- Added Dynamax research.
- Added capture Pokémon type research.
- Added craft type research.
- Added defeat boss type research.
- Added enter dimension type research.
- Added evolve type research.
- Added harvest type research.
- Added hatch type research.
- Added active item type research.
- Added level up type research.
- Added mine type research.
- Added spin Pokéstop type research.
- Added defeat Raid type research.
- Added find structure type research.
- Added seasonal research: Christmas, Pixelmon's Birthday, New Year and Valentine's Day.
Spawning:
- Updated Luvdisc fishing and spawn loot to remove unused items.
- Added Bombirdier to River, Lakes, and Beaches during the Day on Land and Air with an anticondition of Freezing biomes and Mountainous biomes rarely.
- Added Gimmighoul Chest form to Jungle Pyramids, Desert Pyramids, Haunted Towers, Graveyards, and Ruined Portals on Land, Indoors, and Underground at All Times.
- Added Gholdengo to Ultra Desert at All Times.
- Added Great Tusk to Small End Islands at All Times.
- Added Kilowattrel to Beaches with an anticondition of Freezing during the Day in the Air. Added chance to spawn with a group of Wattrel.
- Added Klawf to Stone Beach and Mesas on Land during the Day.
- Added Rabsca to Arid, Mesas, and Savannas on Land at All Times.
- Added Rellor to Arid, Mesas, and Savannas on Land at All Times.
- Added Sandy Shocks to Small End Islands at All Times.
- Added Squawkabilly to Jungles during the Day in the Air and on Tree Top. Added chance to spawn with a group of Squawkabilly. Some colors are rarer than others.
- Added Wattrel to Beaches with an anticondition of Freezing during the Day in the Air, Land, and Tree Top. Added chance to spawn with a group of Wattrel.
- Added Spirit palette Iron Valiant to Graveyards at Night on Land or Manmade.
- Added Iron Hands to Small End Islands on Land at All Times.
- Added Iron Treads to Small End Islands on Land at All Times.
- Updated old spawning NPCs to the new NPC system, including Chatting, Fisherman, Nurse Joy, Relearner, Shopkeeper, Trader, Trainer and Tutor.
- Added Rellor, Rabsca, Wattrel, Kilowattrel, Spidops, Tarountula, Bombirdier, Gimmighoul (chest), Great Tusk, Iron Treads, Sandy Shocks, Iron Hands, Brute Bonnet, Iron Jugulis, Iron Valiant, Iron Bundle, Roaring Moon, Squawkabilly, Finizen, Palafin, Maschiff, Mabosstiff, Farigiraf, Flamigo, Ting-Lu and Gholdengo to tiered, biome-specific raids.
- Added support for Alex' Caves spawning.
- Added support Biospherical Expansion spawning.
- Added support for Mystic's Biomes spawning.
Battle Tests:
- Added tests for Black Sludge item.
- Added tests for Incinerate move.
- Added tests for Stuff Cheeks move.
- Added tests for Corrosive Gas move.
- Added tests for Magic Room move.
- Added tests for Thief move.
- Added tests for G-Max Replenish move.
Changes:
- Removed old Quest system.
- Removed old Quest screens.
- Removed functionality of the old Quest Editor wand.
- Added summary TM section for Generation 9 moves.
- Added move description scrollbar for moves with long descriptions.
- Updated Heavy Ball catch mechanics to modern calculations.
- Updated Friend Balls to their Generation 8+ friendship boost.
- Updated the Poke Checker (summary screen) to display size and the growth sprite.
- Updated the PC screen to display size and the growth sprite.
- Updated the capture method to use Generation 8 mechanics.
- Updated pre-Growth rework Pokémon stored data to include a randomly assigned Size.
- Updated summary UI in PC by swapping a Pokémon's species name for its level.
- Removed megaring mechanic being unlocked via defeating a Mega Boss, replaced by Mega Evolution Research.
- Updated Pixelmon Rug colors to match wool textures.
- Updated Revenant to block Destiny Bond if it has at least one life left.
Fixes:
- Fixed a crash caused by the client attempting to update server details.
- Fixed the scrollbar on TM lists rendering strangely.
- Fixed Blank TMs failing to work with Klutz Pokémon.
- Fixed nature syncing curries not working properly.
- Fixed an instance where Black Sludge could deal damage for less than it should have.
- Fixed Poké Balls failing to receive catch penalties when capturing Ultra Beasts.
- Fixed Nest Balls catch formula.
- Fixed Lure Balls failing to boost properly Pokémon caught via Fishing Rod.
- Fixed Fishing Rod not applying the chance for a Fishing mark on catch.
- Fixed Fishing Rod-spawned Pokémon having Fishing-exclusive bonuses lost on flee and subsequent rebattle.
- Fixed the drop shadow of the nickname text in the PC being set to a dark gray color.
- 21384 Fixed Pokémon displaying move skills they should not have by improving code quality.
- 18939 Fixed Poke Displays breaking consistency of a stored Pokémon's form and palette.
- Fixed the Pixelmon Camera failing to take pictures.
- Fixed rendering of Mega Items.
- Fixed rendering of Sableye Hat, Frosslass robe and Yukata.
- 21311 Fixed an issue where using the Griseous Core to change Giratina's form to Origin would cause the form to be restored to Altered by other non-Griseous Orb held items.
- Fixed using a Porygon item while in creative consuming said item.
- Fixed using a Porygon item spawning on top of the player instead of on the position clicked.
- 22145 21985 Fixed Paldean Blank TMs disappearing upon completion.
- Fixed Bikes eating as if they are horses.
- Fixed the PC failing to open in rare cases upon first login or world creation.
- Fixed hover and pop-up information not clearing on release in PC.
- Fixed a rare crash caused by right-clicking on an empty Pokémon slot in inventory.
- Fixed a rare client crash caused by refreshing the multiplayer menu.
- Fixed Pokébags being allowed to leave a player's inventory if the container is open.
- Fixed shiny Hero Palafin sprite.
- Fixed shiny Revavroom sprite.
- 21238 Fixed Dudunsparce model and textures.
- Fixed Ultra Necrozma model.
- 19409 Fixed Solrock animation.
- 18571 Fixed Rocket Helmet's stray pixel in layer texture.
- Fixed shiny Iron Jugulis sprite.
- Fixed cosmetic textures not loading properly for the Witch hat, Articuno Wings and Valentine's Wings.
Battles:
- Fixed Incinerate not being in the list of moves that can remove berries.
- Fixed Stuff Cheeks disabling improperly if the Pokémon that new Stuff Cheeks was not holding a berry.
- Fixed a bug where Pokémon afflicted by Corrosive Gas could use their items once again after they had switched out.
- Fixed a bug where it was possible to give a Pokémon a Rusted Sword or Shield via a move when Zacian or Zamazenta was on the field.
- Fixed Pokémon that stole a Life Orb with Thief not taking damage from the Life Orb at the end of the turn.
- Fixed G-Max Replenish incorrectly calculating the recovery of berries in allied battle.
- 21986 Fixed waiting bug when using Flee moves against a trainer's final Pokémon.
Language:
- Updated Traditional Chinese translation.
Developer:
- Added ShrineOrbFillEvent.Pre/Post.
- Added LureActivateEvent.Pre/Post.
- Added BerryEvent.Pick.
- Added ResearchStartEvent.Pre/Post.
- Added ResearchStageCompleteEvent.
- Added ResearchDiscardEvent.Pre/Post.
- Added ResearchCompleteEvent.
- Added ProgressResearchStageEvent.Pre/Post.
- Added ProgressResearchObjectiveEvent.Pre/Post.
- Added ClaimResearchStageEvent.Pre/Post.
- Added ClaimResearchObjectiveEvent.Pre/Post.
- Added RegisterScreenStylesEvent.
- Added PlayerCakeEatEvent.
- Added PlayerCraftItemsEvent.
- Removed AbandonQuestEvent.
- Removed FinishQuestEvent.
- Removed NPCInserterEvent.
- Removed QuestActionEvent.
- Removed QuestObjectiveEvent.
- Removed QuestStageEvent.
- Added HeldItem.ignoresKlutz method to allow custom held items to be used by Klutz Pokémon.
- Added PixelmonGrowths registry class.
- Added PokemonBuilder#size.
- Removed PokemonBuilder#growth.
- Added Pokemon#getSize.
- Added Pokemon#setSize.
- Updated the functionality of Pokemon#setGrowth to pick a random number in the range of that growth's defined range.
- Removed CorrosiveGas status usage.
- Removed PlayerParticipant#getTeamPokemonList in favor of BattleParticipant#getTeamPokemon.
- Added placeholders to ContextKeys.
- Added PlaceholerCollectEvent, extending support for FPAPI and PAPI.
- Implemented placeholder support in certain InteractionConditions.
- The minimum Forge version for this update is 36.2.34 and is required for a Pixelmon client to run.
- If using datapacks, consider refreshing every update for default datapack fixes from Pixelmon.
- Added Iron Treads.
- Added Iron Hands.
- Added Great Tusk.
- Added Wattrel.
- Added Kilowattrel.
- Added Rellor.
- Added Rabsca.
- Added Squawkabilly.
- Added Gimmighoul.
- Added Gholdengo.
- Added Sandy Shocks.
- Added Bombirdier.
- Added Klawf.
- Added 'spirit' Iron Valiant.
- Added TM171-TM223 for all existing moves.
- Added new voices: Alomomola, Bunnelby, Cacnea, Cacturne, Castform, Cherubi, Comfey, Dedenne, Diancie, Flabebe, Floette, Florges, Furfrou, Gothita, Gothorita, Gothitelle, Inkay, Luvdisc, Mandibuzz, Maushold, Mawile, Morpeko, Ogerpon, Pyukumuku, Roselia, Salandit, Salazzle, Sandy Shocks, Shieldon, Shuckle, Sinistcha, Sinistea, Slurpuff, Smeargle, Snorunt, Swirlix, Swoobat, Tandemaus, Togedemaru, Vanillish, Vanillite, Vanilluxe, Vullaby, Wishiwashi, Woobat, Zigzagoon, Fezandipti, Boltund, Eldegoss, Enamorus, Greavard, Mr. Rime, Natu, Okidogi, Pincurchin, Rabsca, Rellor, Spidops, Tarountula and Xatu.
- Updated voices: Guzzlord, Kyogre, Deerling, Flamigo, Gardevoir, Hoppip, Kirlia, Shinx, Shroomish, Shaymin, Sunflora, Sunkern, Zigzagoon, Zorua, Cetoddle, Charcadet, Tinkatink, Bonsly and Tinkatuff.
- Updated all specie movesets to Generation 9.
- Updated all TMs to include Generation9 and DLC TMs.
- Added Gimmighoul evolution method by Linking Cord while holding an Amulet Coin.
- Added Paldean Generation 9 Blank TM to Master Poké Chest drops.
- Added Paldean TMs Chilling Water, Pounce, Trailblaze and Tera Blast to dungeon loot pools.
- Updated Luvdisc fishing and spawn loot to remove unused items.
- Added Bombirdier to River, Lakes, and Beaches during the Day on Land and Air with an anticondition of Freezing biomes and Mountainous biomes rarely.
- Added Gimmighoul Chest form to Jungle Pyramids, Desert Pyramids, Haunted Towers, Graveyards, and Ruined Portals on Land, Indoors, and Underground at All Times.
- Added Gholdengo to Ultra Desert at All Times.
- Added Great Tusk to Small End Islands at All Times.
- Added Kilowattrel to Beaches with an anticondition of Freezing during the Day in the Air. Added chance to spawn with a group of Wattrel.
- Added Klawf to Stone Beach and Mesas on Land during the Day.
- Added Rabsca to Arid, Mesas, and Savannas on Land at All Times.
- Added Rellor to Arid, Mesas, and Savannas on Land at All Times.
- Added Sandy Shocks to Small End Islands at All Times.
- Added Squawkabilly to Jungles during the Day in the Air and on Tree Top. Added chance to spawn with a group of Squawkabilly. Some colors are rarer than others.
- Added Wattrel to Beaches with an anticondition of Freezing during the Day in the Air, Land, and Tree Top. Added chance to spawn with a group of Wattrel.
- Added Spirit palette Iron Valiant to Graveyards at Night on Land or Manmade.
- Added Iron Hands to Small End Islands on Land at All Times.
- Added Iron Treads to Small End Islands on Land at All Times.
- Updated Dondozo from Rivers and Lakes spawning to Oceanic biomes.
- Updated Abandoned Mine Shaft, Hoglin Stables Bastion, Boat, Crate Geyser, Plant Monolith, Village Butcher and Village Cartographer loot chests, removing unused items.
- Improved Rainbow Sash color cycle.
- 21862 Removed chunk habitation time limit on Zygarde Cells and Core spawning.
- Updated Revenant's Pressure to be twice as strong as regular Pressure.
- Updated raid drops, removing unused items.
- Updated poke drops, removing unused items.
- Updated rug colors to match the wool colors more accurately.
- Updated shiny Revavroom sprite.
- Updated 'hero' form shiny Palafin sprite.
- Added evolving method for Charjabug and Magneton by leveling them in a Mountain/Windswept Hills biome.
- Added Thunder Stone evolution for Nosepass.
- Added Ice Stone evolution for Crawbrawler.
- Removed Water Stone evolution for Hisuian Qwilfish.
- Updated the icon in taskbar and window of application to standard (non-spooky) Pixelmon icon.
- 21932 21941 Fixed wild caught Pokémon changing abilities when evolving.
- Fixed vibrancy for Colored Sash and Rainbow Sash accessories.
- 21951 Fixed Colored Sash color-setting.
- Fixed storage gets not being thread safe, fixing issues of MissingNo replacing Pokémon randomly.
- Fixed error in Pokemon Builder.
- 18939 Fixed Poké Display not properly defaulting to original form and palette fields.
- Fixed Gastly particles overwhelming its model, now spawning behind the orb and away from its facing direction.
- 21384 Fixed Pokémon having move skills they cannot use and should not have.
- Fixed the Pokédex set value setting the wrong Pokédex.
- 19409 Fixed visual issue with Solrock's idle animation.
- 18571 Fixed visual issue of a stray pixel in the Rocket Armor texture.
- 21475 Fixed erroneous entry for a missing texture on 'ashen' Mega-Houndoom, pointing it back to its base texture.
- 13324 Fixed Stufful's ability description being too long for the summary UI.
- 19971 Fixed Hisuian Typhlosion's hitbox height.
- Fixed Beedrill's floating parameters so it's no longer on the ground's surface.
- 21475 22114 Fixed temporary palette reversion when a Pokémon mega-evolves, dynamaxes, or otherwise temporarily updates it's battle form.
- Fixed an error on TCG fallback card loading.
- Fixed Blaziken's texture UV.
- 21238 Fixed Dudunsparce texture.
- Fixed Revenant not blocking Destiny Bond from being applied to a Pokémon if it has at least one life left.
- Fixed Destiny Bond no longer sending a message twice when not applied.
- [url==https://pixelmonmod.com/tracker.php?p=2&t=21970]21970[/url] Fixed Mirror Armor causing a crash in singleplayer when self-applied.
- Fixed max HP value not being recalculated after temporary level is set, fixing issues where battle rules change the Pokémon's level without updating its HP.
- 22134 Fixed a rare crash caused by Ditto failing to Transform properly into non-default capable species.
- Added [code single]PokemonStorage#forEach[/code] method, and implementations for each kind of storage.
- Updated ServerSwapPacket to send update packets for the whole storage when it ends up in its error state.
- Added Ability interface method allowsStatusOpponent.
- The Java requirement for 1.20.2 is Java 17. This will come shipped with most launchers. For manual installation, you may need to install a later JRE.
- The minimum Forge version for this update is 48.1.0 and is required for a Pixelmon client to run.
- Worlds from 1.16.5 may not work with newer versions of Minecraft. Consider backups before updating.
- If using datapacks, consider refreshing every update for default datapack fixes from Pixelmon.
Additions:
- Added the Gimmighoul Coin.
- Added new recipe types: pixelmon:crafting_shaped_tag, pixelmon:shapeless_tag and pixelmon:crafting_poke_ball.
- Added Slippery Ice Block.
- Added Slippery Ice Block recipe.
Rework:
- Completely reworked all tabs in the Pokémon Editor screen.
- Using the Pokémon Editor opens up the Pokémon Team tab.
- Added a new PokéPaste tab to the Pokémon Editor screen:
- Allows editing a multi-line editor displaying all the Pokémon's values in the https://pokepast.es/ format.
- Added several new buttons.
- Should be identical to the previous Import/Export tab next to the Pokémon Team tab, but will only affect the Pokémon currently being edited.
- NEW: Hovering the cursor over the PokéPaste url edit box will render a tooltip giving a description of what that edit box is for.
- Allows editing a multi-line editor displaying all the Pokémon's values in the https://pokepast.es/ format.
Pokémon:
- Added Maschiff.
- Added Mabosstiff.
- Added Brute Bonnet.
- Added Iron Jugulis.
- Added Iron Treads.
- Added Iron Hands.
- Added Iron Valiant.
- Added Farigiraf.
Moves, Battle Items and Abilities:
- Added new move, item and ability tests.
Spawning:
- Wild Pokémon encounters after cooking curry now function as in the mainline games:
- Several new spawning conditions have been added so that different flavors can have distinct spawns.
- Most Pokémon species can now be found via curry in their normal spawn biomes, though rarities have been adjusted from standard spawning values.
- Costumed Pikachu now have a proper method of obtainment, with each form associated with a different curry flavor: Rockstar (Spicy Curry), Belle (Dry Curry), Popstar (Sweet Curry), Ph D. (Bitter Curry), and Libre (Sour Curry).
- Several new spawning conditions have been added so that different flavors can have distinct spawns.
- Several new config options related to curry spawning have been added.
Datapack:
- Added PreventRedirection move effect to allow datapack moves to ignore redirection effects.
- Added additional checks to prevent datapacks overlapping between servers and worlds.
- Added CheckedStrikes effect to replace PopulationBomb, TripleAxel, and TripleKick.
- Added individual move flags, "AdjacentAll", "OtherSide", "YourSide", "BothSides", "All" and "1 Random".
- Updated Magic Coat and Magic Bounce to use datapackable move flags "reflectable".
- Updated moving riding offsets so they can now be used for land-based movement.
- Added the `pixelmon:open_trade` interaction result, which interaction opens the trade UI with the two specs specified.
- Added the `pixelmon:relearn_move` interaction result.
- Added a confirmation button to the party select screen when the desired amount of pokemon are selected.
- Added a right-click interaction to the party select screen to allow the user to open the poke checker screen when deciding which Pokemon to select.
- Removed the old trade list configuration as it's now in the interaction result config.
- Added the `GimmighoulCoinCondition` Evolution Condition.
Changes:
- Modifier PokéGifts to provide a copy of the Pokémon, preventing linking issues.
- Added Dynamax Level, Hyper Training, Egg Steps, Temp Ability, extra Stats, bonus Stats, persistent Data and Ribbons to PokemonBuilder.
- Temporary forms no longer linger on NPCs if the battle is aborted mid-evolution.
- Removed the Picket Fence.
- Updated Raid Dens to give conduit effects, allowing water-breathing.
- Added a party selector to NPC Presets.
- Updaed NPCs where left-clicking an NPC now allows you to edit the party of said NPC.
- Updated the order of presets on the NPC preset screen to be ordered alphabetically.
- Updated the searching of NPC presets to use contain checks rather than startsWith.
- Improved async loading and saving so concurrency issues don't cause data overwriting.
- Updated the opening **NPC Creator Presets*
- screen of the NPC Editor fit larger preset file names and be centered to the screen even at full screen window sizes.
- Updated the `pixelmon:right_click` event the default (instead of left-click) for the event of an NPC's Interaction.
- Updated the `pixelmon:true` condition the default condition for the condition of an NPC's Interaction.
- Changed the chat message that notifies a player that their NPC preset was saved to be formatted identical to the screenshot chat message.
- Fixed it so that the result of an NPC's Interaction will not execute when the Pokémon Editor is held in the hand the player used to interact with the NPC.
- The title data and author data of the PokéPaste that is automatically made for an NPC Preset were switched and that has been fixed.
- Fixed the missing empty line between different Pokemon when creating the PokéPaste.
- Updated Illuminate ability to Generation 9 effect.
Keybinds:
- Added a new Pixelmon section for keybinds, splitting all mod keybinds into Pixelmon, Pixelmon Battles, and Pixelmon PC.
- Added a visual indicator as to whether the player's cursor is hovering over an item in the keybind menu.
- Added several keybinds to make it possible to navigate a battle screen without requiring a mouse:
Config:
- In the Graphics Config there is now a pokemonEditorExtraColorModeEnabled value which is by default set to true. Turning this off will remove the extra colors added to some of the widgets. Alternatively, you can press F1 to disable it temporarily.
- What Extra Color Mode affects:
- The text of the Current HP slider changes between green, yellow, and red, depending on the Pokémon's current HP relative to it's max HP.
- The Dynamax slider follows the same color scheme as seen in a Pokémon's Summary page. The text is white at a Dynamax level of 0, and changes between cyan at a Dynamax level of 1 up to hot pink at a Dynamax level of 10.
- The text for all of the Pokémon's moves are change to the same color as the type they are (i.e. Fire Blast becomes orange, Water Pulse becomes blue, etc.)
- The text in the Multi-Line Edit Box on the Import/Export tabs will become colored, similar to on the https://pokepast.es/ website.
- The stats that the Pokémon's nature affects are colored blue for the increased stat and red for the decreased stat.
- The text of the species of the Pokémon is set to the color of the Pokémon's primary type.
- The text of the Current HP slider changes between green, yellow, and red, depending on the Pokémon's current HP relative to it's max HP.
Fixes:
- Fixed spawning threads locking up sometimes (randomly) from getChunk calls being made from a non-server thread.
- Fixed checkspawns block requirement for Headbutt from "anything but wool Recipe Book " to "logs".
- Fixed the screen changing too quickly, causing NPE in the findConnection methods.
- 21556 Fixed PokéGifts' contents and settings not persisting across launches.
- 17132 Fixed persistent data compound tag being lost whenever the Pokémon Editor is used.
- Fixed the NPC Trainer spawns failing for high-level Trainers.
- Fixed the Recipe Book button rendering outside the inventory menu if the player opened the Recipe Book, clicked the Day Care tab, and then clicked the Survival inventory tab.
- Fixed an issue where exported battle rules text is missing line breaks.
- 21659 21761 Fixed invalid import method. Before the fix, the import function would fail if the number of Pokémon was greater than 1.
- Fixed Max Raid Dens not spawning Raids for the lowest star level possible in each biome.
- Fixed an error where every biome used the default weights of each star level, even if that biome did not have a Raid possible for a certain star level.
- 20580 20666 20666 Fixed colored nicknames not saving/loading properly on Pokémon.
- Fixed a rendering crash happening randomly.
- 18700 Fixed legendary requirement not overriding the ability and ability slot, resulting erroneous abilities.
- 21128 Fixed Zorua, Zoroark, and any transformed Pokémon making the sound of its own species instead of the sounds of the Pokémon it's transformed into.
- 19804 Fixed the EXP, Mark, and Catching Charms disappearing upon death.
- 19814 Fixed Lures that were placed in the lure slot mistakenly rendering in the middle of the inventory if a player opened their inventory with the Recipe Book already active and then closed the Recipe Book.
- 20226 Fixed soft-locking caused by dying while a raid count down.
- Fixed the ribbon spec not working with the spectest command by changing the RibbonRequirement to only check the ribbon's type.
- 18095 Fixed all of Pixelmon's keybinds failing to work if bound to mouse keys.
- Fixed the screen of the Pixelmon Spawner being rendered with the default darkened background.
- Fixed the Quirky Mint being missed from the creative menu.
- Fixed an error caused by FlyingParameters not existing.
- Fixed shaders not applying to emissive parts of Pokémon.
- 21194 Fixed all Poké Ball recipes yileding the same Poké Ball type.
- 21194 Fixed all Poké Ball Lid recipes yileding the same Poké Ball Lid type.
- 21719 Fixed spawning errors caused by sky heightmap, halting spawning altogether.
- Fixed rare server crash caused by an error in AirSaver if the player does not exist.
- Fixed imported Pokémon with Hidden Power requiring Bottle Caps.
- Fixed exported Pokémon not including hypertrained stats.
- Fixed invalid imported Hidden Power types not throwing the right error.
- Fixed Gastly particles spawning ontop of the orb.
- 21941 Fixed ability changing on evolution for naturall
- 21951 Coloured Sash and Rainbow Sash colours are now vibrant again.
- 21951 Rainbow Sash now uses a REALLY rainbow colour set.
- 21951 Coloured Sash no longer uses a triadic of the colour chosen instead of the colour chosen.
- Fixed Relearner move lists not storing TM and Egg moves.
- Fixed console error in `/resetpokestats`.
- Fixed an error in Day Care requirements causing client disconnects.
- Fixed the 'fire on redstone' option for the Pixelmon Spqawner still spawning Pokémon even without a redstone signal.
- Fixed the list of TMs that a Pokémon can learn being displayed incorrectly on their summary screen.
- Fixed a rare crash caused by rendering too large groups of high detail entities.
- 22003 Fixed the PC Search visually duplicating Pokémon when the full species name of a Pokémon is typed.
- 19570 Fixed all instances of the word 'gingko' mispelled as 'ginkgo'.
- Fixed a rare error in Pokemon Builder.
- Fixed catching a Pokémon in a Hisui Ball not properly changing its movelist on catch.
- Fixed the move learning screens of the Move Tutor, Transfer Tutor, and the Move Relearner having Minecraft's darkened background applied to them.
- Fixed input text boxes for NPC interactions cutting off text early.
- Fixed an instance of the game crashing upon trying to add a ribbon to a Pokémon when the Ribbon's MutableRibbonData was null.
- Fixed a client disconnect occurring when the UpdateSinglePokemonPacket tried to fill the -1 slot of a Pokémon team with a Pokémon.
- Fixed ArrayIndexOutOfBoundsExceptions occurring in the UpdatedEditedPokemonPacket.
- Fixed the ColouredTextFieldWidget and the EnhancedTextFieldWidget rendering at a pixel too big on their left and right side.
- Fixed the ScrollableListWidget sending an incorrect value for the y coordinate of the mouse.
- Fixed the yellow-colored highlight for a Pokémon's displayed ribbon not scaling with the size of the ribbon's sprite.
- Fixed the client crashing upon trying to render a Ribbon Button when the resource of the MutableRibbonData was set to null.
- Fixed the client crashing upon being sent the CloseEditedPlayerPacket.
- Fixed the PokemonBuilder setting the new Pokémon's nature to the copied Pokémon's mint nature.
- Fixed the Export Text from the Showdown Converter displaying the name of the Pokémon's nature as Capitalized instead of in ALL CAPS.
- 21960 Fixed a visual issue with newly crafted Bird Orbs appearing full.
- 21163 Fixed a visual issue with crafted orbs rendering other sprites beneath them.
- Fixed the durability bar of Bird Orbs appearing underneath them.
- 21984 Fixed visual duplications caused by attempting to swap Pokémon around in your party from your inventory screen.
- 21944 Fixed missing idle animations in the Pokédex display screen.
- Fixed the storage cache invalidating the cached storage of online players causing parties to be loaded and then Pokémon that are sent out being temporarily irretrievable.
- 21090 Fixed Spectrier's emissive texture.
- Fixed Ice Rider and Shadow Rider shiny textures.
TCG:
- Fixed text not rendering in the text box when hovering the cursor over an action on the TCG Action Log.
- Fixed text not rendering in the text box when hovering the cursor over an attack of a TCG Card being inspected during a TCG Battle.
- Fixed the positioning and missing background of the TCG Battle Guide, which displays at the start of a TCG Battle to let players know how to start.
- Fixed F3 not toggling debug mode for Dev Environments in the TCG Screen.
- Fixed the hitboxes of cards during a TCG Battle shifting based on the player's FOV, they will now always be in the same place.
- Fixed the damage number not appearing when a player inspects a card during a TCG Battle.
- Fixed selecting a Prize Card during a TCG Battle disconnecting the player.
- Fixed the Price Cards always having a red-colored hitbox rendered behind them.
- Fixed the representation of the hitbox of Prize Cards rendering for non-developer clients.
- Fixed the positioning of inspected Pokémon Cards so that the selection of the buttons for abilities, attacks, and retreating lines up with the text on the card.
- Fixed the z-level rendering of the outline of the ability, attack, and retreat buttons so that it appears in front of inspected cards.
- Fixed the z-level rendering of warning text when abilities, attacks, or retreating can't be used so that it appears in front of the inspected cards.
- Fixed disconnect on end of game from render system calls on network thread.
- Fixed TCG registries loading before Pixelmon ones, causing them to be cleared before the sync can happen.
- Fixed TCG win broadcast being on the action bar.
- Fixed players being unable to chat during TCG battles.
- Fixed the grey filter covering the whole screen while in a TCG Battle.
Battles:
- Fixed Rollout getting stuck at 60 power if used Defense Curl instead of continuing to double.
- 21259 Fixed Population Bomb not taking accuracy changes into account.
- Fixed Multi-hit moves continuing to attack after being put to sleep mid-move.
- Fixed Dragon Darts not hitting itself and a targeted AllySwitched ally once each.
- Fixed Dragon Darts not hitting itself twice if a targeted AllySwitched ally is immune.
- Fixed Dragon Darts printing multiple failure messages when missing both targets.
- Fixed Substitute not being removed by dynamaxing.
- Fixed Substitute not removing binding effects.
- Fixed Substitute not blocking entry hazard effects.
- Fixed Substitute blocking effects from moves that bypass Substitute.
- Fixed Substitute blocking Intimidate/Imposter after being broken by a switch move.
- Fixed False Swipe reducing damage when hitting a Substitute of a low-health Pokémon.
- Fixed Trick and Fling failing when the user is behind a Substitute.
- Fixed Incinerate not destroying Type Gems.
- Fixed Reflect/Light Screen stacking damage reduction with Aurora Veil.
- Fixed Reflect/Light Screen reducing damage by half in non-singles fights.
- Fixed Poison Pokémon with Steel secondary typing not removing Toxic Spikes.
- Fixed Poison Pokémon with Heavy Duty Boots not removing Toxic Spikes.
- Fixed EntryHazard removal not removing Gmax Steel Surge's Sharp Steel.
- Fixed Prankster not blocking spread status moves, such as Growl, against Dark Pokémon.
- Fixed Prankster not blocking moves called via boosted moves against Dark Pokémon.
- Fixed Pursuit doing 4x damage to switching target.
- Fixed Pursuit being redirectable when targeting a switching target.
- Fixed Max Darkness and Black Hole Eclipse based on Pursuit interrupting switches.
- Fixed virtual battles causing errors and crashing mid-battle when Trainers send out Pokémon.
- Fixed errors in Synchronize causing battle crashes in virtual battles.
- Fixed hard switch timing to be based on the previous Pokémon's speed.
- Fixed Substitute blocking Static or Flame Body when the opponent uses a non-status move.
- Fixed Defog not removing terrains.
- Fixed Defog clearing hazards when target is semi-invulnerable but has a Substitute.
- Fixed G-Max Wind Rage not triggering Defog after breaking through Protect and hitting a Substitute.
- Fixed G-Max Wind Rage removing toxic spikes after triggering Toxic Debris.
- Fixed all terrains affecting Pokémon in Sky Drop's semi-invulnerable turn.
- Fixed Grassy Terrain reducing Earthquake power for all targets, not just those affected by the terrain.
- Fixed Grassy Terrain healing Pokémon during semi-invulnerable turn of attacks.
- Fixed Misty Terrain reducing dragon attacks based on the user being affected by terrain instead of the target.
- Fixed Misty Terrain boosting Misty Explosion when the user is not grounded.
- Fixed Misty Terrain protecting Pokémon from Yawn and Confusion.
- Fixed Red Cards activating from the holder taking indirect damage.
- Fixed Teatime resetting the value for the item a Pokémon had consumed.
- Fixed an issue where Bug Bite and Pluck were setting the original holder of the berry that was eaten as the consumer instead of the Bug Bite or Pluck user.
- Fixed Take Heart curing the non-volatile status conditions of allies.
- Fixed Outrage not confusing the user when the final turn is disrupted.
- Fixed force-eaten LeppaBerry refilling their current attack's pp instead of their first attack missing pp.
- Fixed the Metronome item keeping track of the original move a Pokémon used, if that move called another move to use (e.g. Copycat).
- Fixed the Metronome item directly modifying the damage done by a move, instead of the power of that move.
- Fixed the Pickpocket ability not stealing Protective Pads off an attacking Pokémon that makes contact.
- Fixed the Punching Glove permanently making punching moves not make contact, even if the Punching Glove was stolen from the Pokémon.
- Fixed the Eject Pack switching out the holder if the holder was attacked with Parting Shot.
- Fixed an issue where if multiple Eject Packs activated, every Pokémon that could switch out would, instead of only the fastest Pokémon switching out.
- Fixed an issue where Pokémon holding an Eject Pack were immediately switched out if an end-of-turn effect lowered their stats, instead of waiting for all end-of-turn effects to finish.
- Fixed an issue where it was possible for a Pokémon to fail to switch targets from a Pokémon that had switched out (due to its Eject Pack activating) to the Pokémon that had switched in.
- Fixed an issue where if two Pokémon were both holding items and both had their stats lowered. If one of the Pokémon was holding a White Herb, it was possible for the other Pokémon to have their item removed.
- Fixed Knock Off failing to remove Mail from a Pokémon.
- Fixed Revenant not blocking Destiny Bond from being applied in its presence.
- Fixed Revenant not applying extra Pressure.
- Fixed a severe exploit with Revival Blessing
- Fixed a bug where Flying-type Pokémon holding an Iron Ball (and not under the affects of Gravity)
- would not receive 1x damage from Ground-type attacks when their secondary typing was weak or resistant to ground types.
- Fixed the Kee Berry and the Maranga Berry not reducing the damage from the hits after the first hit of multi-hit moves.
- Fixed Ripen affecting the Lansat Berry.
- Fixed Rock Head not blocking Chloroblast's recoil.
- Fixed Clear Smog's stat reset bypassing Substitute.
- Fixed Air Balloon popping from non-direct damage.
- Fixed Focus Sash protecting against Future Sight and Doom Desire.
- Fixed Knock Off being unable to remove items it cannot be given.
- Fixed Mega Evolution abilities not triggering on switching in.
- Fixed Mega-evolved Bosses not having their ability.
- Fixed Z-Parting Shot healing the user.
- Fixed Z-Parding Shot not healing the switched Pokémon after a failed Parting Shot.
- Fixed Parting Shot not failing against Hyper Cutter and -6 Special Attack.
- Fixed Mirror Armor only reflecting stat drops from Status moves.
- Fixed Prankster-boosted moves failing against allied Dark-type Pokémon.
- Fixed Prankster not boosting ExtremeEvoBoost.
- 21773 Fixed abilities activated on entry still triggering when fainted by entry hazards.
- Fixed switch moves causing a waiting bug when the user faints.
- Fixed damaging effects occuring before Drain.
- 21750 Fixed Scale Shot triggering off non-attack damage.
- Fixed Weakness Policy triggering off weather if using an attack super-effective against the user.
- Fixed Weakness Policy triggering if already at max stages.
- Fixed Weakness Policy not triggering another Pokémon's switch.
- 21803 21917 Fixed Life Orb triggering on non-successful attacks.
- Fixed an issue that Salt Cure would show trigger messages if it is used towards Substitute.
- 21918 Fixed crash when hard-switching a Levitate Pokémon onto spikes.
- Fixed Intimidate activating an Adrenaline Orb if the item holder had a Substitute out.
- Fixed Adrenaline Orb activating if the item holder's Attack was already minimized.
- Fixed Adrenaline Orb being passed through Symbiosis before being consumed by Intimidate.
- Fixed Intimidate reducing attack of non-adjacent opponent.
- Fixed accuracy of modifying ability Hustle from -20 to *0.8.
- Fixed Pokémon transformed into mega-forms eing able to use Z-moves.
- Fixed Dynamax being usable once per participant instead of per team.
- Fixed NPC trainers using Dynamax in Max Raids.
- Fixed raid Pokémon not having perfect IVs based on star level.
- Fixed raid Pokémon always being level 50.
- Fixed a caught raid Pokémon's moveset not matching the raid boss' moveset.
- Fixed cheer effects in raids.
- Fixed Pokémon not reviving againt Max Raid bosses.
- Fixed a battle crash rarely caused by EntryHazard.
- Fixed a battle crash occuring when a Pokémon in a virtual battle has Illusion.
- Fixed an error caused by the Legend Plate.
- Fixed a battle crash from the battle controller being null at the end of a raid battle.
- Fixed an error in clear status.
- Fixed the names of players and NPCs not appearing by resetting the z-level to 0.
- 21912 Fixed client switch menu hiding Pokémon that were forced out on the same turn they were switched in.
- 21999 Fixed Ash-Greninja, in its Battle Bond form, not transforming in Horde or Raid battles.
- Fixed max HP value not being recalculated after temp-level is set, fixing the issue where battle rules changing a Pokémon's level did not cause the HP to update.
- Fixed spread move damage order to hit allies before enemies.
- Fixed Critical Hit effect calculation.
- Fixed non-forced criticalHit count for Galar Farfetch'd evolution.
- Fixed Anticipation triggering against Status moves.
- Fixed Anticipation not triggering against Hidden Power.
- Fixed Baton Pass copying Gmax Chi-Strike boosts.
- Fixed Burn Up not thawing user when it has a fire type.
- Fixed Color Change changing type if Pokémon already had that type.
- Fixed Corrosion ignoring Poison/Steel resistance for GmaxMalodor’s damage.
- Fixes Costar not copying crit boosts if no stat stages boosted.
- Fixed Dire Hit’s effect being stackable.
- Fixed Gravity not disabling flight moves.
- Fixed Gravity not boosting move accuracy.
- Fixed Judgment changing type based on user’s type instead of plate type.
- Fixed Judgment with Legend plate finding type least resisting the target’s types.
- Fixed Laser Focus persisting turns if an item is used.
- Fixed Mimicry losing added types when activating.
- Fixed Moldbreaker not ignoring Unaware’s ignored accuracy changes.
- Fixed Purifying Salt removing statuses gained before ability.
- 21949 Fixed Ring Target not working when there is a global status on the field.
- Fixed Receiver not immediately triggering abilities from fainting allies.
- Fixed Roost not suppressing Flying type gained after the move.
- Fixed Roost restoring lost types.
- Fixed Transform not copying Flying type of Roosting Pokémon.
- Fixed Transform not copying Rage Fist hit count.
- Fixed Transform not copying opponent weight.
- Fixed Transform copying Gmax forms.
- Fixed Transform allowing PP restoring items to boost moves above 5PP.
- Fixed an issue where Bug Bite or Pluck were seting the original holder of the berry that was eaten as the consumer instead of the Bug Bite or Pluck user.
- Fixed Teatime resetting the value for the item a Pokémon had consumed.
Developer:
- BREAKING CHANGE: removed Population Bomb move effect.
- BREAKING CHANGE: Triple Kick move effect.
- BREAKING CHANGE: Triple Axel move effect.
- In a developer environment, toggling the hitbox visual can now be used without needing a 2nd TCG player.
- Removed the deprecated methods for `getNickname` and `getDisplayName` that return a String.
- Updated `getFormattedNickname`, and `getFormattedDisplayName` to `getNickname` and `getDisplayName`.
- Updated all rendering to use components not Strings.
- Added the `GimmighoulCoinRequirement` for PokeSpecs.
- Added the `GimmighoulStats` to keep track of how many Gimmighoul Coins a Gimmighoul has amassed.
- Adds the `InteractionGimmighoulCoins` which is what allows a Pokemon using the `GimmighoulCoinCondition` to evolve to be given Gimmighoul Coins.
- Added a fullbright option to ShaderParameters.
- Added terrastralization shader.
- Added a `party` value to the NPC Builder.
- Added a `party` balue to the NPCPreset.Builder.
- Added a `uuid` option to the NPC Builder.
- Added null checks in the NPC Builder methods to result in friendlier errors for developers.
- Added the TeamSupplier interface and registry.
- This is necessary because the Mojang registries load before our old-style Pixelmon ones therefore, when the Presets were attempting to load teams for the NPCs they were unable to parse them and validate them as the species data did not yet exist.
- There are three types of TeamSupplier by default, `pixelmon:empty`
- an empty team provided, `pixelmon:poke_paste`
- takes a PokePaste URL and converts it into a team and `pixelmon:spec`
- takes a list of specs and converts them into a team.
- This is necessary because the Mojang registries load before our old-style Pixelmon ones therefore, when the Presets were attempting to load teams for the NPCs they were unable to parse them and validate them as the species data did not yet exist.
- Added `EntityBattleParticipant` with a builder.
- This means any entity (vanilla mobs included) can now be used to represent a trainer in battle
- The builder allows you to modify how the participant will operate (ai mode, boss tier, etc).
- This means any entity (vanilla mobs included) can now be used to represent a trainer in battle
- Added the `BattleViewer` interface for entities/players that are watching a battle.
- The spectator class now inherits the BattleViewer interface.
- Added `BattleController#broadcastPacket` which sends a packet to all BattleViwers.
- Added `BattleController#getBattleType`.
- Added `BattleController#getSpectators`.
- Added `BattleController#broadcastPacket`.
- Added `BattleController#canSpawnEntity`.
- Added `BattleController#postSpawnEntity`.
- The spectator class now inherits the BattleViewer interface.
- Changed the `spectator` field in the SpectateEvent (and sub-classes) to be private.
- You can now access the player spectating a battle via `SpectateEvent#getSpectator`.
- The `target` field in SpectateEvent.StartSpectate is now private.
- You can access, and modify, the spectator's target using `SpectateEvent.StartSpectate#getTarget` and `SpectateEvent.StartSpectate#setTarget`.
- You can now access the player spectating a battle via `SpectateEvent#getSpectator`.
- Removed `ParticipantType` enum.
- Replaced with the following methods:
- `BattleParticipant#isWild`
- `BattleParticipant#isPlayer`
- `BattleParticipant#isTrainer`
- `BattleParticipant#isRaid`
- `BattleParticipant#isWild`
- Simplified a lot of logic in the BattleParticipant classes.
- All battle participants now have an entity through the BattleParticipant class
- `BattleParticipant#entity` (protected variable).
- The wait boolean has been made protected, and should be accessed via `BattleParticipant#waiting` and `BattleParticipant#setWait`.
- Added a method to reduce duplicated code for clearing the movement properties of the BattleParticipant's entity.
- `BattleParticipant#clearMovement`
- Moved the `hasMovePokemonReserve` method implementation from the sub-classes to the BattleParticipant class (reducing code, and fixing some bugs where it was different in different implementations).
- Added `BattleParticipant#isOnField` for checking if a PixelmonWrapper is on the battle field
- Changed the method `startBattle` to `preBattleChecks` as this was causing some issues with trainer participants.
- `startBattle` is now only overridden in the PlayerParticipant for sending the battle to the client to start it.
- Added `BattleParticipant#releasePokemon` to spawn the pokemon for a PixelmonWrapper.
- This should be how all Pokemon are spawned in battle as this has the checks for if the entity can spawn.
- Moved the `switchPokemon` logic from the sub classes into BattleParticipant, again fixing some bugs and reducing duplicate code.
- Changed `BattleParticipant#sendMessage` to `BattleParticipant#sendPacket` to make it clearer what that method is doing.
- All battle participants now have an entity through the BattleParticipant class
- The AirSaver class has been changed to a single static registry and is no longer something you have to implement yourself where you want to use it.
- To add an air saver to a player you now use `AirSaver#lock`.
- To remove an air saver from a palyer you use `AirSaver#unlock`.
- To add an air saver to a player you now use `AirSaver#lock`.
- You can now start battles with players via the PlayerPartyStorage.
- The following methods were added:
- `PlayerPartyStorage#battle(ServerPlayer)`
- `PlayerPartyStorage#battle(ServerPlayer, BattleType)`
- `PlayerPartyStorage#battle(ServerPlayer, BattleRules)`
- `PlayerPartyStorage#battle(ServerPlayer)`
- All of the above will start a battle between the owner of the storage and the player specified.
- The following methods were added:
- Added the `BooleanBattleProperty` class for easily creating simple battle boolean based battle properties.
- Added the `spawn_entities` battle property.
- This accepts true or false, and when set to false will prevent entities spawning for that battle.
- The default is true.
- This accepts true or false, and when set to false will prevent entities spawning for that battle.
- Simplified the battle starting & spectating packets to be a single packet each.
- Added `BattleController#spectate`.
- Added `BattleController#removeSpectator`.
- Fixed Pokédex method updating the value in the wrong Pokédex.
- Added a `PartyStorage#getAll` that takes a Predicate.
- Added checks to PartySelectionScreen API to make constructing it easier.
- Added `RelearnerFactory#builder` for creating a relearner interaction.
- Added `TutorFactory#builder` for creating a Move Tutor (or Transfer Tutor) interaction.
- Adds `ShopFactory` and `ShopBuilder` API.
- Refactored the `ShopkeeperEvent` to `ShopEvent` and now fires with the vending machine.
- `ShopEvent` now has both `getBlockPos` and `getEntity` referring to either the block position of the vending machine, or the entity (most commonly NPC), the shop was opened from.
- Added Precondition checks to the Dialogue Builder API to make for friendlier errors when forgetting specific calls.
- Added `EmptyInteractionEvent` for creating interaction events that don't need to subscribe to any events but instead need to be called externally.
- Changed the constant `EntityProperties#DEFAULT` to a function `EntityProperties#defaultProperties()` and added a child version `EntityProperties#defaultChildProperties()`.
- Added `NPCPreset.Builder#noParty`.
- Added overloads for `TextureProvider#resource` to make it less verbose to use.
- Renamed getEffectiveTypes to modifyEffectiveTypes.
- Added `Ability.ignoreStatusTypeImmunity`.
- Added Ability flags to support various effects.
- Added move flag ‘gravity’ for moves disabled by the Gravity global status.
- Added `Pokemon#setToOppositeGender`.
- Added `DropDownWidget#setMaxVisibleOptions`.
- Added `Pokerus#setCured` and `Pokerus#setInfected`.
- Added `Pokerus#getNameOfStrainWithInfected` that returns a component with the infected/cured status plus the strain of the Pokérus.
- Pressing the F3 key with the Pokémon Editor open while in a Dev environment will render a cyan background where the GridLayout can place the widgets added to it along with a pink background to display the space taken up by the widget.
- `UpdatePlayerPokemonPacket` now gets the Pokémon's slot via its UUID, instead of via the Pokémon object.
- RibbonButtons will now use the widget's alpha, instead of always being fully visible.
- Added `IVStore#isEveryStatHyperTrained`.
- Added static functions `ResourceLocationHelper#getItemStackTextureLocation` and `ResourceLocationHelper#getItemTextureLocation`.
- Added `Attack#getPP` and `Attack#setPP`.
- Added `Attack#getPPLevel` and `Attack#setPPLevel`.
- Created the `SliderWidget`, which extends ForgeSlider.
- Added `ExtraStats#getValue` and `ExtraStats#setValue`.
- Added `ExtraStats#getValueName`, which returns a component with a better name for the value of the Extra Stat.
- Created the `PixelmonRendereringHelper` class for rendering the models of Pokémon.
- Probably should include changes made to packets so that they work with the new screens too.
- Added a static method `StatusType#getColor` that takes a StatusType as a parameter and returns the color of the Pokémon type (`Element#getColor`) most related to that status type.
- Changed `PixelmonClientData#getHealthColor` to be static and take the current health and max health as parameters.
- Changed `Pokemon#setMintNature` to not call `Pokemon#setNature`.
- Added `BattleStatsType#getClosestChatFormattingColorForPokePasteStat`.
- Added `ScrollableListWidget#getWidgets`.
- Added `RibbonButton#getRibbon`.
- Changed the static constant class variable `DYNAMAX_LEVELS`, set in PokeCheckerScreen, which holds the values for the colors of the Dynamax Levels, public.
- Changed `PokemonBuilder#getNature` to `PokemonBuilder#getBaseNature`.
- Added `Pokemon#getPokerus`.
- Added `BattleStatsType#getAbbreviatedTranslationName`.
- Added `Gender#getTranslatedName` and `Gender#getTranslatedNameCapitalized`.
- Added `RibbonRegistry#sort`, to sort RibbonTypes alphabetically.
- Added `Pokemon#isNearlyIdenticalTo`.
- Added `ScrollableListWidget#scrollWidgetUponMouseClicked`, `ScrollableListWidget#getMouseYTranslatedToWidgetY`, and `ScrollableListWidget#getElementY`.
- Added `TabCompleteTranslateableTextField#getShowDropDown`, `TabCompleteTranslateableTextField#setShowDropDown`, `TabCompleteTranslateableTextField#getDropDownOptionAmount`, `TabCompleteTranslateableTextField#setDropDownOptionAmount`, `TabCompleteTranslateableTextField#getHeightPerDropDownOption`, `TabCompleteTranslateableTextField#setHeightPerDropDownOption`, `TabCompleteTranslateableTextField#getDropDownOptions`, `TabCompleteTranslateableTextField#setFocused`, and more stuff for just internal rendering.
- Added `Moves#getGenerationsTMTRTheImmutableAttackIsIn` to return a Component describing what generations a TM or TR exists in.
- Added `StringHelper#buildStringForConsecutiveNumbers` that returns a sequence of numbers as a string in format "1-4, 6-7, 9-11, 13".
- Added `IVStore#setIVsToRandomValues` to set the current IVStore object's IVs to new random values
- Added `Pokerus#getNameOfStrainWithInfectedToString`.
- Added `PixelmonRenderingHelper#getAllAnimations`.
- Added `AbstractClientEntity#toStringComponent`.
- Added `Pokemon#makeEggAndKeepCurrentLevel`.
- Added `StringHelper#capitalizeAllWords`.
- Added `ScrollableListWidget#getInnerHeightOfLayoutElementWidget`.
- Added `AbstractClientEntity#setOffGroundTime(int)`.
- Added `GenderProperties#getRandomPalette`.
- Replaced with the following methods:
- The minimum Forge version for this update is 36.2.34 and is required for a Pixelmon client to run.
- If using datapacks, consider refreshing every update for default datapack fixes from Pixelmon.
Additions:
- Added Pikachu-Libre.
- Added Tera Blast.
Pokémon:
- Added Tarountula.
- Added Spidops.
- Added Maschiff.
- Added Mabosstiff.
- Added Farigiraf.
- Added Finizen.
- Added Palafin.
- Added Brute Bonnet.
- Added Iron Jugulis.
- Added Iron Valiant.
- Added Wo-Chien.
- Added Ting-Lu.
- Added Roaring Moon.
- Added Koraidon.
- Added Miraidon.
- Added Iron Bundle.
Palettes:
- Added Spring Sprigatito line.
- Added Summer Sprigatito line.
- Added Autumn Sprigatito line.
- Added Winter Sprigatito line.
Spawning:
- Added Finizen to Ocean, Deep Ocean, Warm Ocean, Lukewarm Ocean, Deep Lukewarm Ocean during the Day. Added chance to spawn with a group of Finizen.
- Added Palafin to Ocean, Deep Ocean, Warm Ocean, Lukewarm Ocean, Deep Lukewarm Ocean during the Day. Added guaranteed chance to spawn with a group of Finizen.
- Added Tarountula to All Forests on Land and in Tree Top during Day.
- Added Spidops to All Forests on Land and in Tree Top during Day.
- Added Roaring Moon to Small End Islands on Land.
- Added Ting-Lu to Taigas at Night on Land.
- Added Wo-Chien to Swamps at Night on Land.
- Added Iron Bundle to Small End Islands at all times.
- Added Koraidon to Small End Islands during the Day on Land.
- Added Miraidon to Small End Islands during the Night on Land.
- Added Spring variant Sprigatito-line to Flowery with reduced rarity.
- Added Summer variant Sprigatito-line to Forests with reduced rarity.
- Added Autumn variant Sprigatito-line to Taigas with reduced rarity.
- Added Winter variant Sprigatito-line to Freezing Forests with reduced rarity.
- Added Brute Bonnet to Small End Islands on Land at All Times.
- Added Iron Jugulis to Small End Islands on Land at All Times.
- Added Iron Valiant to Small End Islands on Land at All Times.
- Added Mabosstiff to Plains on Land during Night.
- Added Maschiff to Plains on Land during Night.
- Added Farigiraf to Savannas on land at Night. Added guaranteed chance to spawn with a group of Girafarig.
Changes:
- Moving riding offsets are now utilized more aggressively.
- Changed the NPCs in the Tower of Waters to be only challenge-able once per player.
- Changed the NPCs in the Tower of Darkness to be challenge-able once per player.
- Changed the Steel TM sprite so that it is no longer identical to the Normal TM sprite.
- Changed Fairy TM sprite so that it is no longer identical to the Psychic TM sprite.
- Updated Gardevoir model.
- Updated Mewtwo-Mega Y model.
- Removed the Witch Hat from the PokéStop model.
- Replaced Fiery Dance with Torch Song in Revenant's pool of Fire-type moves.
Optimizations:
- Significantly reduced allocations coming from the spawner thread, and slightly improves spawner thread speed as a result, due to getTeam creating a new list every time it's called vs getAll returning the array directly and thus not allocating a new list, and then filling it.
Fixes:
- 20450 Fixed the quest to use a Healer not advancing upon using a Red Healer.
- 20450 Fixed the quest to craft a Healer not advancing upon crafting a Red Healer.
- 19027 Fixed the Celebi quest failing to give Isi's Gold Hourglass.
- Fixed Poké Balls that fall into the void always failing capture.
- 20226 Fixed the client getting stuck in the raid screen if you drown during the starting countdown.
- Fixed Legendary and Rare PokéStops break particle colours being incorrect.
- 20269 Fixed PokéStops disappearing whilst still in the player's render distance.
- 20210 Fixed TRs not dropping in raids.
- Fixed `/tiershow` not working and displaying a large error in the console.
- Fixed /tiershow` to be case insensitive.
- Fixed `/compsee` executing for the sender when specifying an offline player.
- Fixed `/pokesee` executing for the sender when specifying an offline player.
- 20493 Fixed the stored Pokémon from a PokeDisplay going to the player's PC rather than swapping with the Pokémon being stored.
- 20262 Fixed players being unable to give their Battle Bond form Greninja the Zombie palette.
- Fixed Max Raid Dens not spawning Raids for the lowest star level possible in each biome.
- An error message is now sent to the log if a Max Raid Den attempts to spawn a raid for a biome that doesn't have any raids.
- An error message is now sent to the log that specifies which Max Raid Den has failed to spawn a raid, along with the star level of the raid it's trying to spawn.
- An error message is now sent to the log if a Max Raid Den attempts to spawn a raid for a biome that doesn't have any raids.
- 21503 Fixed players receiving photos of a Pokémon and losing Film if another player took a photo while they were also looking at a Pokémon through the Camera.
- Fixed accidentally mounting a fully evolved Pokémon when using an item on it.
- Fixed the player not receiving experience from smelting items into curry ingredients.
- 19907 Fixed all the Unown blocks missing their recipes.
- Fixed cross-dimension spawning causing invalid spawns.
- 21556 Changes PokéGifts to provide a copy of the Pokémon to prevent linking issues.
- 21556 Fixed PokéGifts not persisting contents and settings across launches.
- 20761 Fixed the Winter Cloak and Froslass Yukata having the player arm clipping into them badly for certain models.
- 17132 Fixed fusion Pokémon, and other persistent data, being lost after the Pokemon was edited using the Editor Wand.
- Fixed an server crash caused by a null player in Air Saver.
- Fixed an error caused by Daycare requirement packets, causing disconnects.
- Fixed Mount Lanakila not spawning.
- Fixed Client Reset Packet's mixins not being applied.
- Fixed client-only methods being accessed by `/resetpokestats`.
- 20262 Fixed being able to convert Zombie-palette-capable Pokémon to Zombie form during the day.
Battles:
- Fixed the EnforcedRevivePacket exploit.
- 21073 Fixed Rising Voltage boosting damage dealt more than it should.
- Fixed Raid Pokémon not doing damage when repeating Max Moves.
- 21211 Fixed Legend Plate causing a battle error with Arceus when Dynamaxed and using Judgement.
- Fixed the PixelmonWrapper#getMaxHealth method to not increase Shedinja's max when Dynamaxed.
- Fixed missing health recalculateMaxHealth to Power Construct allowing increase in health for Zygarde-Complete.
- Fixed forms marked as temporary remaining after battle if the battle is aborted early.
- Fixed Perish Body to now use the correct messages where one side is unaffected due to their ability.
- Fixed Revenant preventing the Perish status during its final stage.
- Fixed virtual battles causing an error and crashing mid-battle when trainers send out their Pokémon.
- Fixed an error caused by Synchronize causing battle crashes in virtual battles.
- Fixed an error causing a server crash from the battle controller being null at the end of the a raid battle.
- Fixed an error caused by Clear status being null.
- Fixed an error caused by the Legend Plate.
- Fixed a battle crash occurring when a Pokémon has Illusion in a virtual battle.
- Fixed a rare battle crash occurring when an Entry Hazard is used.
Developer:
- Added Glaive Rush, Mortal Spin, and Raging Bull to AttackRegistry.
- Renamed ancient variants of moves in AttackRegistry fields.
- Added Dynamax Level, Hyper Training, egg steps, temporary ability, extra stats, bonus stats, persistent data, and ribbons to PokemonBuilder.
- Added a check for null attacks in PokemonBuilder.
- Changed return type for all reminder move-related API from a List to a Set.