Pixelmon 9.2.8

  • 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 Health Mochi.
  • Added Muscle Mochi.
  • Added Resist Mochi.
  • Added Genius Mochi.
  • Added Swift Mochi.
  • Added Fresh-Start Mochi.
  • Added Red Nectar.
  • Added Yellow Nectar.
  • Added Purple Nectar.
  • Added Pink Nectar.
  • Added Metal Alloy.

Pokémon:
  • Added Pikachu Libre.
  • Added Tarountula.
  • Added Spidops.
  • Added Finizen.
  • Added Palafin.
  • Added Palafin 'Hero'.
  • Added Roaring Moon.
  • Added Wo-Chien.
  • Added Ting-Lu.
  • Added Miraidon.
  • Added Koraidon.

Cosmetic Palettes:
  • Added Spring palettes: Sprigatito, Floragato and Meowscarada.
  • Added Summer palettes: Sprigatito, Floragato and Meowscarada.
  • Added Autumn palettes: Sprigatito, Floragato and Meowscarada.
  • Added Winter palettes: Sprigatito, Floragato and Meowscarada.

Moves, Battle Items and Abilities:
  • Added Fairy Feather.
  • Added Ancient Power tests.
  • Added Make it Rain tests.
  • Added Fairy Feather tests.
  • Added Burning Bulwark tests for Z/Max moves, Unseen Fist and Feint.
  • Added Baneful Bunker tests.
  • Added Crafty Shield tests.
  • Added Endure tests.
  • Added King's Shield tests.
  • Added Mat Block tests.
  • Added Max Guard tests.
  • Added Obstruct tests.
  • Added Quick Guard tests.
  • Added Silk Trap tests.
  • Added Spiky Shield tests.
  • Added Wide Guard tests.
  • Added Toxic Debris tests.

Spawning:
  • Added Sprigatito, Floragato and Meowscarada 'Spring' to Flowery biomes.
  • Added Sprigatito, Floragato and Meowscarada 'Summer' to Forest biomes.
  • Added Sprigatito, Floragato and Meowscarada 'Autumn' to Taiga biomes.
  • Added Sprigatito, Floragato and Meowscarada 'Winter' to Freezing Forest biomes.
  • 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 Koraidon to Small End Islands during the Day on Land.
  • Added Miraidon to Small End Islands during the Day on Land.
  • 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 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 new biomes to the Raid spawning parameters.
  • Added recently added Pokémon as valid Raid spawns.

Datapack:
  • Added the "pixelmon:swimming" model predicate.
  • Added the "flying_or_swimming" property to the RidingModelPredicate to dictate a riding model that only displays when the Pokemon is either flying or swimming but also being ridden.
  • Updated the flying model predicate checks.
  • Added "partial" spawn-replacement.
  • Added Finizen and Palafin as spawn replacements to dolphins.
  • Added "bypass" and "field" move flags.

Changes:

  • Reworked the PC display:
    • Removed the "release bin":
      • To release Pokemon from your PC you now right-click it and press the "release" button.
    • Added a "hot key" tool bar, and removed the sprites on the bottom right of the screen:
      • The toolbar is now click-able rather than being just hot keys.
      • The toolbar will also tell you the hot key when you hover over it.
    • Added multi-box view mode:
      • You can now view, and modify, 18 boxes at once.
      • Right-clicking a box picks it up, allowing for quick swapping of boxes.
      • Press TAB to enter this screen, or use the button in the tool bar.
      • Press TAB a second time to exit, or use the button in the tool bar again.
      • If you're holding a Pokemon and press TAB then you will still be holding that Pokemon (or multiple Pokemon) in the multi-select mode, allowing you to quickly move them from one box to another one.
      • If you use the arrow keys you can move around the boxes on the screen.
      • If you hold control and use the arrow keys you can move along 18 boxes.
    • Added multi-select mode:
      • This mode allows you to pick up multiple Pokemon at a time by selecting an area in the box.
      • You can enter this by pressing the Q key, or using the button on the hot bar.
      • Pressing the Q key a second time will put you in held item mode.
      • Finally, pressing the Q key a third time will return you to standard interaction mode in the PC.
      • If you click and then drag you will select all the Pokemon in the area you create.
      • If you hold control and then click Pokemon it will select the individual pokemon you select.
      • Pressing control + a will select the whole box
    • Added held item mode:
      • This mode allows you to quickly and easily move held items between Pokemon.
      • You can enter this by pressing the Q key twice, or using the button on the hotbar.
      • You exit this mode by pressing the Q key again.
      • Shift clicking a Pokemon wit a held item adds the item to inventory, if possible.
    • Added an "Advanced Search" menu:
      • You can access this screen by pressing the S key, or using the search button on the hot bar, and then pressing the search button to the right of the search box.
      • This mode gives you some verbose filter options
    • Added a "sort box" option:
      • This is not bound to a key by default but is accessible via the hotbar.
      • This allows you to sort the current box you're looking at by two types (expandable via sidemod) .
        • Dex
        • Shiny
    • Added the ability to undo operations in the PC:
      • You do this using the key bind: control + z.
    • Added the ability to re-do operations in the PC:
      • You do this using the key bind: control + y.
    • Added two panels displaying information about the Pokemon you're currently holding your mouse over:
      • The left display shows:
        • Species
        • PokéBall
        • Sprite
        • Form
        • Palette
        • Moves
        • Type Icon(s)
        • Held Item Sprite
      • The right display shows:
        • A stat hexagon with the EVs
        • A stat hexagon with the IVs
        • The IV numbers
        • Ability
        • Nature
        • Growth
        • Ribbons
    • Added key bind: a to go to the previous page.
    • Added key bind: d to go to the next page.
    • Added key bind: control + tab to alternate between boxes.
    • Added pc_sorting_logic_type registry for adding custom sorting type logic.
    • Allows you to open other player's PCs using /pc.
    • Allows offline PC access via /pc.
    • Updated the PC command to allow opening other player's PCs.
    • Updated the PC command to allow opening offline player's PCs.
  • Added first person POV in battles:
    • Pressing "F1" during battle will toggle the visibility of the battle UI.
      • The toggleBattleUserInterface key cycles between 50% transparency of the background, 100% transparency of the background, showing only the HP of the Pokemon, and completely hiding the battle UI.
    • Pressing "F5" during battle will toggle the battle perspective.
      • The toggleBattlePerspective key cycles between the 3rd person Battle Camera POV, 1st person Player Model's POV, and the 1st person POV of the Player's Pokemon.
        • The POV state is remembered after battles, so you can stay in 1st Person mode without having to keep re-enabling it.
    • Pressing "R" allows the player to move freely outside of the battle while the Pokemon stay in the battle.
      • Attempting to retrieve the Pokemon that is in the battle will re-enter the player into the battle.
      • The player can send out other Pokemon, but they can't start another battle.
      • If the player gets beyond a maximum distance from the battle, the battle will end. The player and any teammates will be designated as having forfeited.
        • The default value is 30 blocks and can be set in the config with the max-distance-players-can-move-away-from-battles value.
        • 10 blocks before the player reaches that point, a message will pop up on the hotbar warning the player and a vignette will appear that fades the player's screen deeper into orange.
          • This setting can be edited in the config via the min-distance-before-warning-vignette value.
    • Battles now have a Battle Rule that can deny allowing players to move about freely during a battle.
      • An On/Off button has been added to the Battle Rules menu to adjust this.
    • There are also 4 config options in the Battle Config to allow/deny players this:
      • players-can-move-during-pv-p-battles for battles with at least 1 player on each team (defaults to true)
      • players-can-move-during-wild-battles for battle with at least 1 Wild Pokemon on a team (defaults to true)
      • players-can-move-during-trainer-battles for battle with at least 1 NPC Trainer on a team (defaults to true)
      • players-can-move-during-raid-battles for Max Raid Den battles (defaults to false)
    • The buttons to activate the above features have been added as key binds to Minecraft's Controls->Key Binds menu so that the default key bind can be changed.
  • Safeguards against new POV battle mode:
    • Using the Poke Editor or a PC will forfeit the battle while in 1st person POV battle mode.
    • Using a PC is disabled while in 1st person POV battle mode.
    • Using a Healer or Nurse Joy is disabled while in 1st person POV battle mode.
    • Trying to learn moves from a NPC Relearner or Move Tutor is disabled.
    • Trying to trade with an NPC Trader or interact with a Trade Machine is disabled while in 1st person POV battle mode.
    • Raid Dens are disabled from interaction while in 1st person POV battle mode.
    • Poke Displays, Day Cares, Cloning Machines, retrieving the Pokemon from a Fossil Machine, Zygarde Reassembly Units, and TCG Arenas are disabled while in 1st person POV battle mode.
    • Changing a Rotom's form through furniture is disabled while in 1st person POV battle mode.
    • Using items on Pokemon is disabled to prevent evolving, form changing, leveling up, or increasing the strength of your other Pokemon while in 1st person POV battle mode.
    • The Explode move skill is disabled while in 1st person POV battle mode.
    • The Heal move skill is disabled while in 1st person POV battle mode.
    • Trainers can no longer be edited by NPC Editors while in 1st person POV battle mode.
    • The /pc command is disabled while in 1st person POV battle mode.

  • Added validation to the EV & IV text editor widgets so that you are no longer guessing as to what values you can and cannot put in there:
    • This prevents any value that is not an integer in the EV/IV text boxes.
    • This prevents any value not in the range 0 < x < 31 for the IV text boxes (sets text to red).
    • This prevents any value not in the range 0 < x < 252 in the EV text boxes (sets text to red).
    • It validates the EV value and if you've reached the max IV count (510) then it prevents input (sets text to red).
  • Changed the Camera item to no longer require Film to take pictures while in creative mode.
  • Updated battle logs to include the AI's top decisions on what action it'll take per turn recorded.
  • Removed the max party level check from the player's spawning to allow higher level parties to have Pokémon spawns in the world.

Config:
  • Split config.yml into multiple files in order to make changing config options easier:
    • afk_handler.json
    • debug.yml
    • drops.yml
    • healing.yml
    • ore_color.yml
    • outside_effects.yml
    • riding.yml
    • pokedollars.yml
    • pokerus.yml
    • server_discord.yml
    • tms.yml
  • Split the spawning.yml config into multiple files so that it is easier to navigate the spawning config options, moving sub-configs into /config/pixelmon/spawning:
    • boss.yml
    • general.yml
    • legendary.yml
    • level_distance.yml
    • meltan.yml
    • poke_loot.yml
    • pokestop.yml
    • ultra_space.yml
    • wild.yml

Fixes:
  • 21743 Fixed a client crash caused by using Mojang's random source.
  • 21740 Fixed the Arc Chalice not producing Arceus with plates.
  • Fixed the PokéDisplay's animations not working.
  • Fixed the Zygarde Cells not disappearing after a configurable amount of time.
  • 21689 Fixed server hang caused by bee replacement logic by using a method that does not generate new chunks.
  • Fixed dark background rendering over the trainer card.
  • 21704 Fixed a client crashed caused by client-side balances being null.
  • Fixed Pixelmon Spawners picking moves inappropriate to the spawn's level.
  • Fixed bosses from Pixelmon Spawners not having shader highlighting.
  • Fixed Pixelmon Spawners not persisting settings across launches.
  • Fixed Blank TMs to account for tag existence for 00 moves.
  • 21180 Fixed the fishing hook entity sending the wrong type of entity add packet to the client.
  • Fixed a crash caused by Pokéballs going through End and Nether portals.
  • Fixed the Pokémon sprite not rendering in the Reassembly Unit's menu.
  • Fixed the level and HP values not rendering in the Reassembly Unit's menu.
  • Fixed the Reassembly Unit's buttons rendering as bright white instead of matching the style of the rest of the menu.
  • Fixed camera's using up Film while in creative mode.
  • 21485 Fixed the override textures not working for statues.
  • 21610 Fixed animation type fly not being settable on statues.
  • Fixed permission checks not working.
  • 20210Fixed TMs/TRs failing to drop when rewarded from a Raid.
  • Fixed the description for the wiki command when getting evolution info on Primeape and Tandemaus.
  • Fixed the background of cards in the TCG Card Compendium not rendering when the mouse was not hovered over them.
  • Fixed the HP, name, weakness and resistance text, ability name, ability description, and other certain effect descriptions not rendering above the background of a hovered card while using the Card Compendium.
  • Fixed the Celebi quest failing to give a Gold Hourglass as a reward.
  • Fixed crafting PC quests failing to work with any PC, now defaulting to red PCs.
  • Fixed crafting Healer quests failing to work with any Healer, now defaulting to red Healers.
  • Fixed Pokémon cries failing to play properly.
  • Fixed the TCG Cards for the Full Heal, Potion, Super Potion, Revive, and Max Revive having their illustration missing.
  • Fixed Poké Display to stop sending previously stored Pokémon to the PC if party is full when swapping Pokémon.
  • Fixed the flying persistent goal still moving the entities up and down during battle causing the camera to glitch.
  • Fixed the z-level issues when rendering items in the PC screen.
  • Fixed the Pokédisplay packet erroring when modifying a display.
  • Fixed the animate button in the Pokédisplay not functioning.
  • Fixed the Pokédisplay update packet being abusable to edit any display anywhere.
  • Fixed Charmander's model sitting below the ground level.
  • Fixed the break particles on the Pokédisplay.
  • Fixed the break particles on the cloning machine, adding the SMD texture back.

  • 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 Health Mochi.
  • Added Muscle Mochi.
  • Added Resist Mochi.
  • Added Genius Mochi.
  • Added Swift Mochi.
  • Added Fresh-Start Mochi.
  • Added Red Nectar.
  • Added Yellow Nectar.
  • Added Purple Nectar.
  • Added Pink Nectar.
  • Added Metal Alloy.

Pokémon:
  • Added Pikachu Libre.
  • Added Tarountula.
  • Added Spidops.
  • Added Finizen.
  • Added Palafin.
  • Added Palafin 'Hero'.
  • Added Roaring Moon.
  • Added Wo-Chien.
  • Added Ting-Lu.
  • Added Miraidon.
  • Added Koraidon.

Cosmetic Palettes:
  • Added Spring palettes: Sprigatito, Floragato and Meowscarada.
  • Added Summer palettes: Sprigatito, Floragato and Meowscarada.
  • Added Autumn palettes: Sprigatito, Floragato and Meowscarada.
  • Added Winter palettes: Sprigatito, Floragato and Meowscarada.

Moves, Battle Items and Abilities:
  • Added Fairy Feather.
  • Added Ancient Power tests.
  • Added Make it Rain tests.
  • Added Fairy Feather tests.
  • Added Burning Bulwark tests for Z/Max moves, Unseen Fist and Feint.
  • Added Baneful Bunker tests.
  • Added Crafty Shield tests.
  • Added Endure tests.
  • Added King's Shield tests.
  • Added Mat Block tests.
  • Added Max Guard tests.
  • Added Obstruct tests.
  • Added Quick Guard tests.
  • Added Silk Trap tests.
  • Added Spiky Shield tests.
  • Added Wide Guard tests.
  • Added Toxic Debris tests.

Spawning:
  • Added Sprigatito, Floragato and Meowscarada 'Spring' to Flowery biomes.
  • Added Sprigatito, Floragato and Meowscarada 'Summer' to Forest biomes.
  • Added Sprigatito, Floragato and Meowscarada 'Autumn' to Taiga biomes.
  • Added Sprigatito, Floragato and Meowscarada 'Winter' to Freezing Forest biomes.
  • 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 Koraidon to Small End Islands during the Day on Land.
  • Added Miraidon to Small End Islands during the Day on Land.
  • 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 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 new biomes to the Raid spawning parameters.
  • Added recently added Pokémon as valid Raid spawns.

Datapack:
  • Added the "pixelmon:swimming" model predicate.
  • Added the "flying_or_swimming" property to the RidingModelPredicate to dictate a riding model that only displays when the Pokemon is either flying or swimming but also being ridden.
  • Updated the flying model predicate checks.
  • Added "partial" spawn-replacement.
  • Added Finizen and Palafin as spawn replacements to dolphins.
  • Added "bypass" and "field" move flags.

Changes:

  • Reworked the PC display:
    • Removed the "release bin":
      • To release Pokemon from your PC you now right-click it and press the "release" button.
    • Added a "hot key" tool bar, and removed the sprites on the bottom right of the screen:
      • The toolbar is now click-able rather than being just hot keys.
      • The toolbar will also tell you the hot key when you hover over it.
    • Added multi-box view mode:
      • You can now view, and modify, 18 boxes at once.
      • Right-clicking a box picks it up, allowing for quick swapping of boxes.
      • Press TAB to enter this screen, or use the button in the tool bar.
      • Press TAB a second time to exit, or use the button in the tool bar again.
      • If you're holding a Pokemon and press TAB then you will still be holding that Pokemon (or multiple Pokemon) in the multi-select mode, allowing you to quickly move them from one box to another one.
      • If you use the arrow keys you can move around the boxes on the screen.
      • If you hold control and use the arrow keys you can move along 18 boxes.
    • Added multi-select mode:
      • This mode allows you to pick up multiple Pokemon at a time by selecting an area in the box.
      • You can enter this by pressing the Q key, or using the button on the hot bar.
      • Pressing the Q key a second time will put you in held item mode.
      • Finally, pressing the Q key a third time will return you to standard interaction mode in the PC.
      • If you click and then drag you will select all the Pokemon in the area you create.
      • If you hold control and then click Pokemon it will select the individual pokemon you select.
      • Pressing control + a will select the whole box
    • Added held item mode:
      • This mode allows you to quickly and easily move held items between Pokemon.
      • You can enter this by pressing the Q key twice, or using the button on the hotbar.
      • You exit this mode by pressing the Q key again.
      • Shift clicking a Pokemon wit a held item adds the item to inventory, if possible.
    • Added an "Advanced Search" menu:
      • You can access this screen by pressing the S key, or using the search button on the hot bar, and then pressing the search button to the right of the search box.
      • This mode gives you some verbose filter options
    • Added a "sort box" option:
      • This is not bound to a key by default but is accessible via the hotbar.
      • This allows you to sort the current box you're looking at by two types (expandable via sidemod) .
        • Dex
        • Shiny
    • Added the ability to undo operations in the PC:
      • You do this using the key bind: control + z.
    • Added the ability to re-do operations in the PC:
      • You do this using the key bind: control + y.
    • Added two panels displaying information about the Pokemon you're currently holding your mouse over:
      • The left display shows:
        • Species
        • PokéBall
        • Sprite
        • Form
        • Palette
        • Moves
        • Type Icon(s)
        • Held Item Sprite
      • The right display shows:
        • A stat hexagon with the EVs
        • A stat hexagon with the IVs
        • The IV numbers
        • Ability
        • Nature
        • Growth
        • Ribbons
    • Added key bind: a to go to the previous page.
    • Added key bind: d to go to the next page.
    • Added key bind: control + tab to alternate between boxes.
    • Added pc_sorting_logic_type registry for adding custom sorting type logic.
    • Allows you to open other player's PCs using /pc.
    • Allows offline PC access via /pc.
    • Updated the PC command to allow opening other player's PCs.
    • Updated the PC command to allow opening offline player's PCs.
  • Added first person POV in battles:
    • Pressing "F1" during battle will toggle the visibility of the battle UI.
      • The toggleBattleUserInterface key cycles between 50% transparency of the background, 100% transparency of the background, showing only the HP of the Pokemon, and completely hiding the battle UI.
    • Pressing "F5" during battle will toggle the battle perspective.
      • The toggleBattlePerspective key cycles between the 3rd person Battle Camera POV, 1st person Player Model's POV, and the 1st person POV of the Player's Pokemon.
        • The POV state is remembered after battles, so you can stay in 1st Person mode without having to keep re-enabling it.
    • Pressing "R" allows the player to move freely outside of the battle while the Pokemon stay in the battle.
      • Attempting to retrieve the Pokemon that is in the battle will re-enter the player into the battle.
      • The player can send out other Pokemon, but they can't start another battle.
      • If the player gets beyond a maximum distance from the battle, the battle will end. The player and any teammates will be designated as having forfeited.
        • The default value is 30 blocks and can be set in the config with the max-distance-players-can-move-away-from-battles value.
        • 10 blocks before the player reaches that point, a message will pop up on the hotbar warning the player and a vignette will appear that fades the player's screen deeper into orange.
          • This setting can be edited in the config via the min-distance-before-warning-vignette value.
    • Battles now have a Battle Rule that can deny allowing players to move about freely during a battle.
      • An On/Off button has been added to the Battle Rules menu to adjust this.
    • There are also 4 config options in the Battle Config to allow/deny players this:
      • players-can-move-during-pv-p-battles for battles with at least 1 player on each team (defaults to true)
      • players-can-move-during-wild-battles for battle with at least 1 Wild Pokemon on a team (defaults to true)
      • players-can-move-during-trainer-battles for battle with at least 1 NPC Trainer on a team (defaults to true)
      • players-can-move-during-raid-battles for Max Raid Den battles (defaults to false)
    • The buttons to activate the above features have been added as key binds to Minecraft's Controls->Key Binds menu so that the default key bind can be changed.
  • Safeguards against new POV battle mode:
    • Using the Poke Editor or a PC will forfeit the battle while in 1st person POV battle mode.
    • Using a PC is disabled while in 1st person POV battle mode.
    • Using a Healer or Nurse Joy is disabled while in 1st person POV battle mode.
    • Trying to learn moves from a NPC Relearner or Move Tutor is disabled.
    • Trying to trade with an NPC Trader or interact with a Trade Machine is disabled while in 1st person POV battle mode.
    • Raid Dens are disabled from interaction while in 1st person POV battle mode.
    • Poke Displays, Day Cares, Cloning Machines, retrieving the Pokemon from a Fossil Machine, Zygarde Reassembly Units, and TCG Arenas are disabled while in 1st person POV battle mode.
    • Changing a Rotom's form through furniture is disabled while in 1st person POV battle mode.
    • Using items on Pokemon is disabled to prevent evolving, form changing, leveling up, or increasing the strength of your other Pokemon while in 1st person POV battle mode.
    • The Explode move skill is disabled while in 1st person POV battle mode.
    • The Heal move skill is disabled while in 1st person POV battle mode.
    • Trainers can no longer be edited by NPC Editors while in 1st person POV battle mode.
    • The /pc command is disabled while in 1st person POV battle mode.

  • Added validation to the EV & IV text editor widgets so that you are no longer guessing as to what values you can and cannot put in there:
    • This prevents any value that is not an integer in the EV/IV text boxes.
    • This prevents any value not in the range 0 < x < 31 for the IV text boxes (sets text to red).
    • This prevents any value not in the range 0 < x < 252 in the EV text boxes (sets text to red).
    • It validates the EV value and if you've reached the max IV count (510) then it prevents input (sets text to red).
  • Changed the Camera item to no longer require Film to take pictures while in creative mode.
  • Updated battle logs to include the AI's top decisions on what action it'll take per turn recorded.
  • Removed the max party level check from the player's spawning to allow higher level parties to have Pokémon spawns in the world.

Config:
  • Split config.yml into multiple files in order to make changing config options easier:
    • afk_handler.json
    • debug.yml
    • drops.yml
    • healing.yml
    • ore_color.yml
    • outside_effects.yml
    • riding.yml
    • pokedollars.yml
    • pokerus.yml
    • server_discord.yml
    • tms.yml
  • Split the spawning.yml config into multiple files so that it is easier to navigate the spawning config options, moving sub-configs into /config/pixelmon/spawning:
    • boss.yml
    • general.yml
    • legendary.yml
    • level_distance.yml
    • meltan.yml
    • poke_loot.yml
    • pokestop.yml
    • ultra_space.yml
    • wild.yml

Fixes:
  • 21743 Fixed a client crash caused by using Mojang's random source.
  • 21740 Fixed the Arc Chalice not producing Arceus with plates.
  • Fixed the PokéDisplay's animations not working.
  • Fixed the Zygarde Cells not disappearing after a configurable amount of time.
  • 21689 Fixed server hang caused by bee replacement logic by using a method that does not generate new chunks.
  • Fixed dark background rendering over the trainer card.
  • 21704 Fixed a client crashed caused by client-side balances being null.
  • Fixed Pixelmon Spawners picking moves inappropriate to the spawn's level.
  • Fixed bosses from Pixelmon Spawners not having shader highlighting.
  • Fixed Pixelmon Spawners not persisting settings across launches.
  • Fixed Blank TMs to account for tag existence for 00 moves.
  • 21180 Fixed the fishing hook entity sending the wrong type of entity add packet to the client.
  • Fixed a crash caused by Pokéballs going through End and Nether portals.
  • Fixed the Pokémon sprite not rendering in the Reassembly Unit's menu.
  • Fixed the level and HP values not rendering in the Reassembly Unit's menu.
  • Fixed the Reassembly Unit's buttons rendering as bright white instead of matching the style of the rest of the menu.
  • Fixed camera's using up Film while in creative mode.
  • 21485 Fixed the override textures not working for statues.
  • 21610 Fixed animation type fly not being settable on statues.
  • Fixed permission checks not working.
  • 20210Fixed TMs/TRs failing to drop when rewarded from a Raid.
  • Fixed the description for the wiki command when getting evolution info on Primeape and Tandemaus.
  • Fixed the background of cards in the TCG Card Compendium not rendering when the mouse was not hovered over them.
  • Fixed the HP, name, weakness and resistance text, ability name, ability description, and other certain effect descriptions not rendering above the background of a hovered card while using the Card Compendium.
  • Fixed the Celebi quest failing to give a Gold Hourglass as a reward.
  • Fixed crafting PC quests failing to work with any PC, now defaulting to red PCs.
  • Fixed crafting Healer quests failing to work with any Healer, now defaulting to red Healers.
  • Fixed Pokémon cries failing to play properly.
  • Fixed the TCG Cards for the Full Heal, Potion, Super Potion, Revive, and Max Revive having their illustration missing.
  • Fixed Poké Display to stop sending previously stored Pokémon to the PC if party is full when swapping Pokémon.
  • Fixed the flying persistent goal still moving the entities up and down during battle causing the camera to glitch.
  • Fixed the z-level issues when rendering items in the PC screen.
  • Fixed the Pokédisplay packet erroring when modifying a display.
  • Fixed the animate button in the Pokédisplay not functioning.
  • Fixed the Pokédisplay update packet being abusable to edit any display anywhere.
  • Fixed Charmander's model sitting below the ground level.
  • Fixed the break particles on the Pokédisplay.
  • Fixed the break particles on the cloning machine, adding the SMD texture back.
READ MORE
  • 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.

Rework:
  • Combined all Pixelmon NPCs into a single entity, `pixelmon:npc`.
  • This combined entity now has all capabilities of the former NPCs.
  • The popular sidemod "tedit"'s functionality is now incliuded in all unified NPC entities.
  • NPCs can now be made to be immovable.
    • Immovable NPCs cannot ride other entities such as boats, minecarts, etc.
    • Fishing rods will not affect immovable NPCs.
    • Minecraft's teleport command will not affect immovable NPCs.
  • NPCs can now be children models.
  • NPCs can have custom sized hitboxes.
  • NPCs can have their nameplate visibility toggled.
  • Right-clicking a bed while crouching will result in the NPC (whether player model or Pixelmon model) to be placed laying down on the bed.
  • The NPC Editor has been reworked to work with the new NPC system.
    • Old NPCs are no longer be created using the NPC Editor wand.
  • The NPC Editor now has additional functionality:
    • You can quickly delete NPCs by shifting whilst right-clicking the NPC with the NPC Edidor wand.
    • You can now left-click blocks to open the 'Admin NPC Editor'.
  • Added a new NPC editor mode, the 'Admin NPC Editor' mode.
    • Only NPCs created by the admin wand will show in the new NPC tracking UI.
    • Added API functionality to extend this tracking to sidemods.
  • Added different NPC "display types":
    • Pokémon
    • Player
    • The names "Rasgnarok" and "Isi" will result in the NPC being rendered upside down.
  • Added URL capability for displaying textures on NPCs:
    • URL
    • Player URL
    • Resource Location (with fallback)
  • Added NPC "interaction pipeline":
    • (1) Interaction Event
    • (2) Interaction Condition
    • (3) Interaction Result

Additions:
  • A Recipe Book has been added to the Infuser, allowing players to look up what can be crafted in it.
  • Added dancing sprites to the server list title.

Pokémon:
  • Added Cetoddle.
  • Added Cetitan.
  • Added Fidough.
  • Added Dachsbun.
  • Added Flamigo.

Cosmetic Palettes:
  • Added 'Rainbow' Flamigo.

Sounds:
  • Added new Pokémon cries:[/b] Cetoddle, Dachsbun, Fidough, Chien-Pao, Houndstone, Veluza, Charcadet, Flamigo, Drakloak, Flutter Mane, Scream Tail, Tinkatink, Tinkaton, Tinkatuff, Ting-Lu and Roaring Moon.
  • Updated Machamp cry.

Structures:
  • Updated all structure Pokéloot to use the config claim settings.
  • Added the Electric Gym Town to the Savanna Plateau and Shattered Savanna biomes.
    • Added Electric Gym structure.
    • Added Electric Town structures: Berry Farm A and B, Blacksmith, Church, Clutter A-F, Day Care, Farm A and B, House A-E, Poke Center, Poke Mart, Road A-D, Town Center A and B and TCG Shop.
    • Added Electric Gym Trainers to Electric Gym structure:[/b] Elite A-F, Grunt A-I and Gym Leader A-F.
  • Added the Dragon Gym Town to all Spruce biomes.
    • Added Dragon Gym structure.
    • Added Dragon Town structures: Berry Farm A and B, Blacksmith, Church, Clutter A-F, Day Care, Farm A and B, House A-E, Poke Center, Poke Mart, Road A-D, Town Center A and B and TCG Shop.
    • Added Dragon Gym Trainers to Dragon Gym structure:[/b] Elite A-F, Grunt A-I and Gym Leader A-F.
  • Updated Battle Arena structure layout to improve loot balance.
  • Moved the Water Gym Town from all Oceans to only Deep Ocean.
  • Moved the Steel Gym Town from all Savannas to only Savanna.

Moves, Items and Abilities:
  • Added rarities to all Pixelmon items.
  • Added the tide smithing template to underwater ruins to replace its loot from Elder Guardians, which get spawn replaced by Overqwil.
  • 21322 Added missing Z-Moves and status Z-Effects for 42 moves.
  • 19366 Added smelting recipes so that Iron Hammers and Gold Hammers can be smelted into Iron Nuggets and Gold Nuggets, respectively.
  • Added Alluring Voice move.
  • Added Blood Moon move.
  • Added Burning Bulwark move.
  • Added Dragon Cheer move.
  • Added Electro Shot move.
  • Added Fickle Beam move.
  • Added Hard Press move.
  • Added Malignant Chain move.
  • Added Matcha Gotcha move.
  • Added Mighty Cleave move.
  • Added Psychic Noise move.
  • Added Supercell Slam move.
  • Added Syrup Bomb move.
  • Added Tachyon Cutter move.
  • Added Temper Flare move.
  • Added Thunderclap move.
  • Added Upper Hand move.
  • Added tests for Struggle move.

Spawning:
  • Added Fidough to the Plains category during the Morning.
  • Added Dachsbun to the Plains category during the Morning.
  • Added Cetoddle to Frozen Ocean, Snowy Beach, Shattered Glacier (BYG), Snowy Black Beach (BYG), Snowy Rocky Black Beach (BYG) during Day.
  • Added Cetitan to Frozen Ocean, Snowy Beach, Shattered Glacier (BYG), Snowy Black Beach (BYG), Snowy Rocky Black Beach (BYG) during Day. Added chance to spawn with group of Cetoddle.
  • Added Flamigo to Swamps during the Day on Land and in the Air. Added chance to spawn with a group of other Flamigo.

Datapack:
  • Added '_moves_' '_attack_' and '_attacks_' as aliases to the move requirement of a Poke Spec.
  • Boss specs can now be used in the spawning files.
  • Added the 'pokebag_blacklist' tag located at 'data/pixelmon/tags/items/pokebag_blacklist.json'.
  • Added URL support to palette textures.
Code: Select all```json
            {
              "name": "none",
              "sprite": "pixelmon:pokemon/001_bulbasaur/all/base/none/sprite.png",
              "models": [
                {
                  "model_predicate":[/b] {
                    "type":[/b] "pixelmon:[/b]always"
                  },
                  "models":[/b] [
                    {
                      "model": "pixelmon:[/b]pokemon/001_bulbasaur/all/base/none/model.pqc",
                      "texture": {
                        "type": "pixelmon:url",
                        "url": "YOUR URL HERE",
                        "target_location":[/b] "pixelmon:[/b]pokemon_models/001_bulbasaur/all/base/none/texture.png"
                      }
                    }
                  ]
                }
              ],
              "sounds": []
            }
```


Changes:
  • Added a short beacon-style beam coming out of all dropped items, the color of it being based on the item's rarity.
  • Added a Pokéball shadow underneath dropped items, the Pokéball icon being based on the item's rarity.
  • 21249 The PokéBag will now be able to hold any item that is not defined in the _pokebag_blacklist_ tag, which is located at 'data/pixelmon/tags/items/pokebag_blacklist.json'.
  • Reduced the speed at which Pokémon ascend and descend while riding them underwater by a third.
  • 21370 Changed what Pokémon can be used in Sky Battles to a tag-based system.
    • Any Pokémon with the "eligible_for_sky_battles", in their species json file can join a Sky Battle.
    • Any Pokémon with the "eligible_for_sky_battles_with_levitate", in their species json file can join a Sky Battle if they have the Levitate ability.
    • Made certain Gen 7, 8, and 9 Pokémon capable of participating in Sky Battles.
  • Changed the move requirement to always look for the exact word.
  • Change the type requirement to only fit if a word starts with 'type' and doesn't have it inside the word.
  • 21084 Changed special animations to play at the end of an idle sequence, and no longer require them to be a part of the idle sequence.
  • Reduced the movement speed of aggressive Pokemon to 125% of their base movement speed.
  • 19971 Lowered the height of Hisuian Typhlosion's hitbox.
  • Changed the id for aluminum_base to aluminium_base to match our other items.
  • Removed old anvil textures for Poké Balls.
  • Charms are no longer visible if the player has the Invisibility potion effect.
  • Poke Balls will now determine if they will catch a Pokemon before the Poke Ball lands.
  • Make the camera only follow the Poke Ball if its not in the void and not doing its rolling animation on an air block.
  • Replaced the Fiery Dance attack with Torch Song in the Revenant ability's pool of Fire type moves.
  • 20269 Set the render distance of PokeStops to the render distance of the game.
  • Changed all Pokéloot to match config settings by default, including structure-generated Pokéloot.
  • Changed Pokéloot to now spawn break particles.
  • Changed Pokéstops to use the render distance of the game.
  • Removed the ugly, and often erroneous Forge ping information from the server list.
  • Reduced Transistor ability to Generation 9's strength.
  • BREAKING CHANGE: Changed the 'isboss' and 'areyouaboss' spec to only check if the Pokemon is specifically a boss Pokémon.
  • 16777 Prevented Hoppers dumping too many items into the Cooking Pot.
  • Changed the `/wiki` command to specify that the biome for Pokémon that spawn everywhere, underground, is underground.
  • Changed the Poké Display to include all battle forms of Pokémon it stores.
  • Changed recipe book registration to be later on startup so that Pixelmon items can be registered.

Optimization:
  • Improved SMD rendering:
    • Reduced the casting of the VertexConsumer interface (a very heavy operation) to once per model rather than three times per face (or once per vertex).
    • Removed isEmpty check for a cached boolean.
  • Improved game memory profile:
    • Reduced some duplicate Strings caused by repeatedly creating a default value for every entity rather than using a constant.
    • Reduced amount of garbage created (and so GC calls) by caching the hashCode for the ModelData class.
    • Reduced the overhead of a lot of the SMD classes (although not by much) by changing places where List was used rather than a direct array.

Config:
  • Added a config option 'droppped-item-beams-enabled' to disable the dropped item beam in `graphics.yml`.

Fixes:
  • 21215 Fixed Pokémon with the `'walksonwater'` property immediately dismounting the player if the player attempted to ride them on water.
  • Fixed the player being dismounted if they tried to take a Pokemon capable of surfing and ride it underwater.
  • 21276 Fixed diamonds, enchanted golden apples, and netherite upgrade smithing templates being missing from the bastion treasure loot table.
  • 21357 Fixed a species of Pokémon not appearing in the Pokédex due to one form of a species being labeled as 'undexable'.
  • Fixed the PP Up and PP Max missing from the PokéMart's potential sell items for certain languages.
  • Fixed Smelt not auto-smelting a certain number of items based on the move Smelt is known from.
  • Fixed Foraging ignoring an item's biome conditions.
  • 21236 the /pokebattle command not providing tab completion for nearby NPC Trainers.
  • Fixed PP Ups and PP Maxs not increasing the PP past 160% of its base PP when a move is set to have a higher max PP than default.
  • Fix Staryu, Shellder, Vaporeon, Marill, and Azumarill occasionally not being able to spawn due to their file using '_baseBlocks_' instead of '_baseBlock_'.
  • 21062 Fix Pokémon with their spawning location type set to 'Air' spawning underground instead of in the air.
  • Fixed the trim smithing templates being missing from our loot tables.
  • Fix Pokémon being able to access Galarian forms in the Poké Display if the form sent into the Poké Display was not a Galarian form.
  • 16064 Fixed the Therian forms not using their flying animation as their walk animation.
  • 16113 Fixed the previous and next arrow buttons not appearing in the summary page for Pokémon when the Pokémon was stored in the PC.
  • Fixed the Clauses list and the Selected Clauses list not showing any battle clauses on the Battle Rules screen.
  • Fixed the Infuser not displaying progress towards the next crafted item.
  • 18778 Fixed Poké Balls failing to catch Pokémon if they fell into the void.
  • 21507 Fixed an error in console that occurred when the move requirement of a Poke Spec failed.
  • Fixed Pokemon not transforming via Illusion, Transform, or Imposter.
  • Fixed a server crash that could occur if a player being targeted by a Pokemon switched from survival to creative.
  • 21551 Fixed Pokemon moving really slowly.
  • 17660 Fixed Pixelmon Paintings being rendered black if a block was placed above its left half.
  • Fixed Mirror Herb not being obtainable in forest biomes.
  • Fixed Max Mushrooms not spawning in the Mushroom Fields biome.
  • Fixed the external move Rock Smash not being able to break any blocks that fit in the Forge category of stone, cobblestone, sandstone, ore, or end stone.
  • Fixed the external move Rock Smash considering all blocks as underground.
  • 20002 Fixed the external move Rock Smash never dropping the destroyed block.
  • Fixed placing Clocks facing the player instead of attaching to the surface of the clicked block.
  • 20262 Fixed players being unable to give their Battle Bond form Greninja the Zombie palette.
  • Fixed the interaction changing a Pokemon to the Zombie palette working during the day.
  • 19959 Fixed commands that accept a player as an argument to return 'Player Not Found' when a player doesn't exist, instead of returning with the argument changed to the user of the command.
  • Fixed a big error appearing in the console/logs when using "/tiershow \[tier\]".
  • Fixed "/tiershow" not ignoring the letter case of the given tier.
  • Fixed a server crash occurring when a player's leading Pokemon in their party held a Cleanse Tag and prevented the server from spawning a Pokemon.
  • Fixed PokeStops not spawning break particles.
  • Fixed PokeStop break particles being only grey colored instead of the PokeStop's color.
  • Fixed the recoil evolution condition requiring more than the required HP damage, and not the exact amount, affecting Basculin and Basculegion.
  • Fixed Sinistea and Polteageist having their forms named incorrectly in Pixelmon forms.
  • Fixed the Pokémon class not being able to be used for evolving, no longer requiring the entity, fixing issues where entities disappear mid-evolution.
  • Fixed `canSeeSky` ignoring `seesSkyException` blocks.
  • 21129 Fixed custom evolution trees not working properly by fixing datapack load order and spec validation.
  • Fixed non-base Pokéballs causing a crash when failing a raid catch.
  • Fixed EV-boosting items and Pokérus not boosting EV gain.
  • Fixed crashes caused by loading models without animations by adding a blank transformation per bone.
  • Fixed error messages displaying for animation-less models not describing what model is causing the issue.
  • Fixed 'RequestCloseEditingPlayerPacket' accessing the logical client from the server.
  • Fixed /pokestats accessing the logical client from the server.
  • Fixed the default server's list 1.20 URL.
  • 21565 Fixed a crash caused by `/pokebomb`.
  • 20502 Fixed client crashes caused by models or textures no longer being present after a resource reload (from switching resourcepacks) and a host of 'missing textures' being displayed incorrectly.
  • 21577 Fixed abilities remaining unchanged after evolution until Pokémon refreshed.
  • 21237 Fixed an error caused by a Move Spec move requirement failing.
  • Fixed the recipe book erroneously calling client classes from server setup.
  • 21511 Fixed wrong entries appearing in the server listing after a direct connection entry.
  • 21438 Fixed servers not being addable to the server list.
  • Fixed servers not being editable in the server list.
  • 21421 Fixed a server crash caused by wrongful imports.
  • Fixed Pokémon that are being ridden in flight to stop flying when mega-evolving in battle despite the mega-evolution being capable of flight.
  • Fixed Politoed's base texture having the wrong colour of antennae.
  • Fixed the hotbar not appearing on a player's screen after taking a photo of a Pokémon.

Battles:
  • Fixed G-Max Gold Rush and Pay Day displaying 'literal{}' for the player receiving the money at the end of a battle.
  • Fixed Pokémon flying in the air during a battle from falling out of the sky when they tried to Mega Evolve.
  • Fix moves requiring a Z-Crystal of a type different than the type of a move.
  • Removed the ability to turn Struggle into a Z-Move.
  • Fixed erratic battle camera movement by preventing the camera from updating its position if it has been set to be removed.
  • Fixed Pokémon not transforming via Illusion, Transform, or Imposter.
  • Fixed transformed Pokémon not displaying species-unique particles.
  • Pokémon Transforming can now transform into the correct gender, instead of always being male.
  • 18778 Fixed an occurrence of the waiting glitch if a Poké Ball fell into the void during a battle.
  • Fixed the MissingNo sprite being displayed for Alter palette Mega Rayquaza instead of the default Mega Rayquaza sprite.
  • Fixed zooming in and out with the battle camera not working.
  • Fixed the mouse scroll wheel not zooming in and out of battle.
  • Fixed Ice Face not repairing in Snow.
  • Fixed Ice Face repairing when sent out at the same time weather is removed.
  • Fixed Wandering Spirit being able to trigger off of non-max moves from raid Pokémon.
  • Fixed Truant to block move if gained via a Mega-Pokémon's ability the turn it mega-evolves.
  • Fixed Ruination not doing minimum 1 damage.
  • Fixed Power Construct getting the wrong HP if below the normal maximum HP.
  • Fixed Hydro Steam ignoring Desolate Land.
  • Fixed Booster Energy restoring higher leveled stats in a LevelCap battle.
  • 21361 Fixed Trick deleting held items when known by higher level AI trainers.
  • Fixed Defiant triggering from allies' moves.
  • Fixed Solar Beam power getting halved in strong wind.
  • Fixed missing battle messages when a Terrain Seed is consumed.
  • Fixed Room Service not activating when the holder didn't use Trick Room.
  • Fixed Life Orb doing recoil damage for each damaged Pokémon in a spread move.
  • 21193 Fixed battle music not playing at all when you enter a battle.
  • 18237 Fixed battle music overlapping if you quickly enter and leave battles.

Translation:
  • Updated Traditional Chinese translation.

Developer:
  • The Transform packet now uses entity UUIDs. It also no longer includes data for particles and instead includes data for gender.
  • Added new tests to make sure the spec requirements for ability, ball, cancrowned, generation, growth, nature, nickname, pokerus, and status all work.
  • Split a variable that handled cancelling the evolution and closing the Evolve Screen into two separate variables so that they can be done independently.
  • To align with moving to use the Pokemon class this deprecates:[/b]
    • `Evolution#doEvolution(PixelmonEntity, String)` in favor of `Evolution#doEvolution(Pokemon, String)`
    • `Evolution#finishedEvolving(PixelmonEntity)` in favor of `Evolution#finishedEvolving(Pokemon)`
    • `EvolutionQuery(PixelmonEntity, Evolution, String)` in favor of `EvolutionQuery(Pokemon, Evolution, String)`
    • `EvolutionQuery(PixelmonEntity, Stats)` in favor of `EvolutionQuery(Pokemon, Stats)`
    • `EvoCondition#passes(PixelmonEntity)` in favor of `EvoCondition#passes#(Pokemon)`
  • Delay the spec validation until after the datapack files are loaded via Pixelmon.
    • This means the spec error will likely appear when you attempt to evolve the custom Pokemon, or run commands such as the wiki command.
    • This is likely the only way to do this as we cannot guarantee load order and with the new spec validation system the Pokemon has to exist for the species requirement, therefore we must delay the "get" call.
  • Added the ability to set and get the random seed used by battles.
    • Added BattleRandomSource, an implementation of RandomSource which is supplied with another RandomSource implementation to use for battles.
    • Allows setting of seed used in a given battle, and retrieval of the seed used by a battle, including if randomly determined.
    • Added and changed a number of the random methods to be named better.
  • BREAKING CHANGE: Battles no longer use RandomHelper, except in cases where the BattleController isn't available yet, or cases of client-side only use.
  • BREAKING CHANGE: `TickHandlerBase#onTick` now returns a boolean value for whether the tick handler should be removed or not, changing from returning void.
  • Added improved BattleEndCause API.
    • This allows for more specific/precise reasoning for when a battle is ended. Therefore, letting sidemod developers have a deeper level of control over what to do for different scenarios.
    • Added registry `PixelmonRegistry#battleEndCause`.
Code: Select all```java

@Mod.EventBusSubscriber(modid = Pixelmon.MODID, bus = Mod.EventBusSubscriber.Bus.MOD)
public class NewBattleCauses {

   @SubscribeEvent
   public static void onRegister(RegisterEvent event) {
        event.register(PixelmonRegistry.BATTLE_END_CAUSE_REGISTRY, helper -> {
            helper.register(BattleEndCause.FORFEIT.id(), BattleEndCause.FORFEIT);
        });
   }
}
```

  • Added a builder for requirements to allow for much easier creation of simplistic requirements.
    • Obviously for more complicated requirements, such as the logical ones, it still requires a class.
Code: Select all```java
        PokemonSpecificationProxy.register(PokemonSpecificationProxy.requirementBuilder(Boolean.class)
                .aliases("isboss", "areyouaboss")
                .booleanParser()
                .dataMatcher((pokemon, aBoolean) -> false)
                .dataApplier((pokemon, aBoolean) -> {})
                .minecraftMatcher((pixelmonEntity, isBoss) -> pixelmonEntity.isBossPokemon())
                .minecraftApplier((pixelmonEntity, isBoss) -> pixelmonEntity.setBossTier(isBoss ? BossTierRegistry.getRandomBossTier() :[/b] BossTierRegistry.NOT_BOSS))
                .build());
```

  • Added method to BattleLog to search for and compare the ordering of two specific strings within battle messages.
  • Replaced method returns of type ArrayList with the generic List within BattleController and BattleParticipant.
  • Replaced various usages of Stream with enhanced-for within BattleController.
  • BREAKING CHANGE: Deprecated the old `Dialogue` API and the events.
  • BREAKING CHANGE: Refactored the "DialogueInputScreen" API to "DialogueFactory".
  • BREAKING CHANGE: Added a lot of options to the new Dialogue API:[/b]
    • You can now add infinite buttons.
    • Button interactions now have a response for seemless UI transitioning.
    • You can now chose to hide or show the Minecraft UI behind the Dialogue UI.
    • Buttons can now have a background color, and hover background color setting.
    • Buttons can now have "accepted inputs" to where the button press will only be accepted when all the requirements are met.
    • When the accepted input requirements are not met buttons now have errors displayed for a short period of time.
    • The input box can now have "accepted inputs" to change the characters the user can enter. For example, only allowing numbers entered.
    • The maximum text input length can now be modified.
    • You can use a Component for the default input text value (allowing for translation keys).
    • You can now specify the button, and close, handlers directly on the Builders.
  • Added the method `BattleBuilder#logResult` which will force the log to be printed at the end of the battle.
  • Changed some resource locations to just use the already-created static values from Resources.java.
  • Removed ResourceLocations from images that were no longer used, were missing, or were redundant.
  • Removed several image files for UIs that are no longer used.
  • Removed old ReceivedModListEvent.java, which was not implemented anywhere.
READ MORE
IntroductionIt has been almost 12 months since the last written update we did on the waiting glitch and what we were doing to combat it. Since then, we have seen reports of the waiting glitch drop down to almost none with only three known sources of the glitch remaining (all of them being caused by non-battle issues) most of which are actively being tackled. This first big push into combating the battle glitches in Pixelmon was a resounding success, and since then we have been trying to continue that work and as such improving the quality of battling as a whole in the Pixelmon experience.

So, what have we been doing to improve battles over the last year? At the end of the last post we identified that, the erroneously named, “unit testing” was the way forward. This was a mistake, as what we intended to identify was not specifically unit testing, but integration testing. The key difference here is that unit tests are designed to test things in isolation, whereas integration tests are for testing the interactions between many different components. Whilst our specific wording may have been incorrect, our intent was the correct one and since that post we have made hundreds of tests for various different parts of the battle engine, and a year after our first dev blog we have reached over 600 battle tests. These tests ensure that Pixelmon battles function as intended, such as checking abilities work, or moves do the correct amount of damage for the specific circumstance presented.

Here is a list of a few, of the many, battle bugs that we have found through writing our tests that were previously unidentified:
  • Imposter applying after Neutralising Gas leaves the field
  • Fixed ShieldsDown blocking all non-entry hazard statuses
  • Fixed owned Minior not changing to core form when out of battle
  • Fixed SlowStart not resetting count when NeutralizingGas disappears
And many, many, more.


Continuous Integration (CI)During this period we also released Pixelmon on the latest version of Minecraft for the first time in over five years. With this monumental achievement we also gained access to Mojang’s new Game Test suite. This system allows you to visualize tests in game, and also run a Minecraft server specifically with the task of running all the game tests. This is important as this allowed us to integrate the battle tests, and all of our other game tests, into our CI.

What is Continuous Integration (CI)? Continuous Integration is the practice of continually integrating code changes into a central place collaboratively. By integrating changes often, we can then test them together to ensure the end product functions as expected from the average player's perspective. To do this, we use a tool that we call pipelines, which trigger any time a developer uploads a change to the Pixelmon project.

This has been a big step forward for us in regards to battle stability. When a developer uploads their changes, we have our game tests run against it, ensuring the most fundamental parts of Pixelmon are working, even before we move to the manual testing phase. We also run each of our battle tests 1,000 times, which ensures we cover a lot of potentially unexpected behaviors, and randomness. For instance, these help cover situations that might change if you execute a critical hit, or if specific abilities have different, exceptional interactions together, which weren't previously observed before. Therefore, every time we make a change to the battle code, we simulate over 600,000 battles, and all in the span of less than 10 seconds.


Additional ImpactsWhilst this post is mainly focused on how we are improving battling for Pixelmon, and what we want to do going forward, it is important to acknowledge that the introduction of these game tests has also had impacts on other areas. For example, in the second half of 2023 we introduced a game test that attempts to load historic party and PC storage from every version of Pixelmon that we’ve released since August. This allows us to ensure that huge breaking issues, such as parties or PCs failing to load, are far less likely to happen in future releases we make. We've also implemented testing around simple things like catching Pixelmon to ensure we don't accidentally break commonly used functionality unexpectedly. This has been another huge step towards creating a much more stable, and reliable Pixelmon.


Next StepsOur first step going forward will be to continue expanding our extensive suite of tests moving forward. Whilst we are extremely proud that we have managed to write 600 battle tests and nearing 300 other game tests in just the last 5 months, our ambitions are much greater than that alone. We first want to make sure that we cover as much of the battle engine with testing as possible, to ensure that when we make large changes to the engine in the future we can be extremely confident that nothing has broken between versions.

Something that we feel is lacking, that doesn’t strictly impact the stability of the battles, is the user experience of battling in Pixelmon. Once battling is at a point of unparalleled stability an important goal is to make sure that our battle UI matches that stability, and improves the experience of battling as a whole. Whilst it is important for battles to function well, there’s no point in them functioning at all if they don’t look good or are not easy to use.

Following that, we are looking at making battles more extendable using the datapack systems that we’ve been utilizing so extensively for everything else. This starts with smaller things, such as introducing datapackable types, but then extends to much larger projects such as datapackable moves, abilities and held items.

Finally, the ultimate goal is still to make a system that can be replayed, and work in a transactional fashion for the optimal debugging and reviewing experience. However, this is a much longer term goal and is on a much different scale in terms of difficulty.


ConclusionOverall, battles in Pixelmon have come a long way over the last year and it is exciting to think where they may be at the end of the next. We will still continue to improve the stability and experience, whilst expanding with the new features as they come out. If you think you could assist us in our goals as you have unique battling knowledge then please apply to our team here.
READ MORE


  • 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.

"Bark Bark Bark"

Additions:

Pokémon:
  • Added Flamigo.
  • Added Cetoddle.
  • Added Cetitan.
  • Added Fidough.
  • Added Dachsbun.

Sounds:
  • Added new Pokémon cries: Cetoddle, Dachsbun, Fidough, Chien-Pao, Houndstone, Veluza, Charcadet, Flamigo, Drakloak, Flutter Mane, Scream Tail, Tinkatink, Tinkaton, Tinkatuff, Ting-Lu and Roaring Moon.
  • Updated Machamp cry.

Structures:
  • Added the Electric Gym Town to the Savanna Plateau and Shattered Savanna biomes.
    • Added Electric Gym structure.
    • Added Electric Town structures: Berry Farm A and B, Blacksmith, Church, Clutter A-F, Day Care, Farm A and B, House A-E, Poke Center, Poke Mart, Road A-D, Town Center A and B and TCG Shop.
    • Added Electric Gym Trainers to Electric Gym structure: Elite A-F, Grunt A-I and Gym Leader A-F.
  • Added the Dragon Gym Town to all Spruce biomes.
    • Added Dragon Gym structure.
    • Added Dragon Town structures: Berry Farm A and B, Blacksmith, Church, Clutter A-F, Day Care, Farm A and B, House A-E, Poke Center, Poke Mart, Road A-D, Town Center A and B and TCG Shop.
    • Added Dragon Gym Trainers to Dragon Gym structure: Elite A-F, Grunt A-I and Gym Leader A-F.
  • Updated Battle Arena structure layout to improve loot balance.
  • Moved the Water Gym Town from all Oceans to only Deep Ocean.
  • Moved the Steel Gym Town from all Savannas to only Savanna.

Spawning:
  • Added Fidough to the Plains category during the Morning.
  • Added Dachsbun to the Plains category during the Morning.
  • Added Cetoddle to Frozen Ocean, Snowy Beach, Shattered Glacier (BYG), Snowy Black Beach (BYG), Snowy Rocky Black Beach (BYG) during Day.
  • Added Cetitan to Frozen Ocean, Snowy Beach, Shattered Glacier (BYG), Snowy Black Beach (BYG), Snowy Rocky Black Beach (BYG) during Day. Added chance to spawn with group of Cetoddle.
  • Added Flamigo to Swamps during the Day on Land and in the Air. Added chance to spawn with a group of other Flamigo.

Changes:
  • Changed the way attack animations are stored to be per battle:
    • This change should improve the speed of battle ticking on servers, as we no longer have to search through all current attack animations to find those related to the current battle.
    • This change should also improve the memory footprint of attack animations as they no longer need to store a backwards reference to the battle controller.
  • Changed battle ticking to be only done once per tick rather than once per level:
    • This will reduce the impact battles have on server performance.
    • This will reduce the likelihood of rare concurrency related issues.

Fixes:
  • 20502 Fixed client crashes caused by models or textures no longer being present after a resource reload from players switching servers, or resourcepacks, displaying 'missing texture' incorrectly.
  • 21296 Fixed Kingambit failing to drop Silver Ingots due to a typo.
  • Fixed Legendary spawn time randomization to modify the period by 40 percent instead of by frequency.
  • 21215 Fixed Pokémon that have the 'walksonwater' property dismounting their passenger when they touch water, such as Suicune.
  • 21565 Fixed crashes caused by parent species changing, such as a crashing after using `/pokebomb`.
  • Fixed wrong antennae color for regular Politoed.
  • 21325 Fixed Gym Signs failing to drop the item they had stored.
  • Fixed missing shiny palette for Mega-Gallade.
  • 21419 Fixed underground Pokémon spawning in the Nether, overtaking natural Nether spawns.
  • Fixed the Pokémon Editor wand failing to properly update ability slots when updating abilities of party Pokémon.
  • Fixed RequestCloseEditingPlayerPacket accessing the logical client from the server.
  • Fixed `/pokestats` accessing the logical client from the server.

Battles:
  • 21419 Fixed a waiting bug caused by Pokéballs from the Bag falling into the void, failing the catch.
  • Fixed a waiting bug caused by Pokéballs falling far, failing the catch.
  • 21383 Fixed a waiting bug caused by fainting immediately after a mega-evolution animation mid-battle, allowing the opponent to move twice.
  • 21213 Fixed switch moves not doing any damage when used.
  • 21349 Fixed Nuzzle, Bolt-Strike, Mortal Spin, Bide, Triple Kick, Gear Grind, Hold Back, Plasma Fists, False Surrender, Double Shock and Comeuppance not being considered as contact moves.
  • Fixed Pokémon immediately attacking after their switch.
  • 21166 Fixed Overdrive failing to trigger Throat Spray.
  • 21360 Fixed leap move animations used by flying Pokémon causing server crashes.
  • Fixed Foul Play causing a rare server crash.
  • Fixed Opportunist crashing against AI with StatsEffect moves.
  • Fixed Wandering Spirit swapping when dynamaxed.
  • Fixed Wind Rider activating on Sandstorm.
  • Fixed Wind Rider preventing Tailwind's effect in double battles.
  • Fixed Cursed Body not disabling behind a Substitute.
  • Fixed Berserk not triggering if the final hit of a move didn't cross half HP.
  • Fixed Instruct not advancing turn timers for sleep and Truant.
  • Fixed Instruct always working despite sleep status.
  • Fixed Truant not blocking sleep.
  • Fixed Truant not loafing if gained after a mega-evolution.
  • Fixed Symbiosis moving items to Pokémon switching out.
  • Fixed Unaware not ignoring accuracy stages.
  • Fixed Foresight removing target's negative evasion stages.
  • Fixed Thick Fat reducing overall damage instead of the attacking stat.
  • Fixed start of battle effects not triggering unless starting in battle.
  • Fixed Trace to treat all ComingSoon abilities as null abilities.
  • Fixed crash issue with virtual battles via NPCs.
  • Fixed some Z-moves requiring the incorrectly typed Z-crystal, such as Captivate.
  • 21432 Fixed berries and healing items failing to work on Drowsy and Frostbite.
  • Fixed erratic battle camera movement by preventing the camera from updating its position if it has been set to be removed.
  • Fixed Water Spout ignoring Desolate Land's prevention of water attacks.
  • Fixed Eruption ignoring Primordial Sea's prevention of fire attacks.
  • Fixed Hydro Steam ignoring Desolate Land's prevention of water attacks.
  • Fixed Protosynthesis activating in Desolate Land's sun.
  • Fixed Life Orb applying recoil for each target damaged by a spread move.
  • 21376 Fixed Booster Energy activation restoring pre-level-cap stat points.
  • 21361 Fixed Trick-based moves remove the held items without being used.

Developer:
  • Added an unbreedable check for Day Care parents server-side, preventing client-side exploits.
  • PlayerParticipant and TrainerParticipant now correctly post `SpawnPixelmonEntityForBattleEvent.Pre` and `SpawnPixelmonEntityForBattleEvent.Post` when switching Pokémon in battle.
  • TickHandlerBase#onTick now returns a boolean value for whether the tick handler should be removed or not, changing from returning void.
READ MORE
JOIN THE TEAM