Compatibility
Minecraft: Java Edition
1.21.1
1.20.1–1.20.2
1.16.5
Platforms
Supported environments
75% of ad revenue goes to creators
Support creators and Modrinth ad-free with Modrinth+Creators
Details
Licensed ARR
Published 2 years ago
Updated 2 days ago
Changelog
- The Java requirement for 1.21.1 is Java 21. This will come shipped with most launchers. For manual installation, you may need to install a later JRE.
- The minimum Neoforge version for this update is 21.1.162 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.
Version Update:
- Updated Pixelmon to version 1.21.1.
- Updated Pixelmon to Neoforge 21.1.162 for Minecraft 1.21.1.
Additions:
- Added research searching.
- Added Daycare keybind, using [M] by default.
- Added Research keybind, using [N] by default.
Moves, Battle Items and Abilities:
- Added Poison Puppeteer ability.
- Added the Utility Umbrella held item.
Datapack:
- Moved Card Conditions, Rarity, Attack Effects, Card Attacks, Card Powers, Card Types, Damage Effect, Damage Bonus Effect, Energy, Card Backs, Coins, Card Conditions, Card Sets, Theme Decks, Trainer Effects, and Cards to Minecraft Registries / tags where applicable.
- Datapackable objects include Card Rarity, Card Set, Cards, Theme Decks, Coins, Card Backs. See
data/tcg/tcg/card/
for examples. - Added tags to encapsulate what cards are in sets, allowing for the ability to modify / add custom own cards without replacing every JSON.
- Added new Pokémon to Mount Boost move skill: Tauros, Mantine, Sharpedo, Latias, Bouffalant, Mudsdale, Wyrdeer and Basculegion.
- Added
pixelmon:raid_boss
context to the defeat raid boss interaction event. - Added two datapack registries for raids:
pixelmon/pixelmon/raid/ally
- controls the NPC allies that can appear with you in a raid.pixelmon/pixelmon/raid/spawn
- controls the spawning of raid Pokemon.- Updated raid drops to be now defined using the Minecraft loot table system.
Statistics:
- Added Pixelmon statistics to the [ESC] Minecraft statistic screen, including:
- Added "Eggs Hatched" statistic tracking.
- Added "Legendary Pokémon Caught" statistic tracking.
- Added "Mythical Pokémon Caught" statistic tracking.
- Added "[All] Pokémon Caught" statistic tracking, where all refers to all possible parameters, including palettes (Valencian, Ashen, etc), sizes (XXS, XS, etc), and more.
- Added "Pokémon Evolved" statistic tracking.
- Added "Shiny Pokémon Caught" statistic tracking.
- Added "Pokéball [Action]" for statistic tracking.
- Added battle actions for statistic tracking, including critical hits, KOs, and more.
- Added boss actions for statistic tracking, including defeated per tier and type, such as raids and wild bosses.
- Added breeding actions for statistic tracking, including hatching, breeding, Ditto and more.
Battle Tests:
- Held Items Eject Button, Lagging Tail, Loaded Dice, Mirror Herb, Smoke Ball, Mental Herb, Scope Lens, Razor Claw, Binding Band, Power Herb, Air Balloon, Oran Berry, Enigma Berry, Berry Juice, Bright Powder, Float Stone, Expert Belt, Focus Band, Deep Sea Scale, Deep Sea Tooth, Zoom Lens, Leek, Light Ball, Lucky Punch, Metal Powder, Quick Powder, Thick Club, Macho Brace, Power Items, Toxic Orb, Absorb Bulb, Cell Battery, Luminous Moss, Snowball, TypeEnhancingItems, Memory items, Weather Rocks, Wide Lens, Grip Claw, Light Clay, Sticky Barb, Terrain Extender, Big Root, Destiny Knot, Red Orb, Blue Orb, Wise Glasses, Muscle Band, Blunder Policy
- Abilities Oblivious, Adaptability, Aroma Veil, Compound Eyes, Competitive, Motor Drive, Merciless, Terrain Seed
Changes:
- Research UI updated for enhanced readability and improved visual clarity.
/pokeheal
and/poketest
now use Brigadier, enabling full player selector compatibility.- Players can no longer open the Pokédex while using a Spyglass.
- Particle effects now applied to Pokémon affected by the Mount Boost speed boost move skill.
- PokéEditor now displays an error when importing a Pokémon with an invalid held item.
- Pixelmon Oven block updated to act like a furnace
- 16708 Removed spawn level scaling by distance from spawn settings.
- Outside-of-battle capture setting replaced with a dimension-based whitelist configuration.
/setraid
command has been updated.raiddrops.json
datapack file removed.raids.json
datapack file removed.- Introduced CachedModelLoader interface to support multiple model loading types.
- All Pixelmon shaders updated to use the new style of rendering.
- Rendering math transitioned to GPU execution via shaders.
- Implemented custom VertexFormat to support direct OpenGL rendering.
- Model data now uploaded to GPU buffers upon initial load, reducing vertex calculation during rendering.
- Integrated Assimp to load models from GLTF format.
Fixes:
- Resolved an issue causing misalignment between Pokéstop hitboxes and their models.
- Zygarde Cells now spawn correctly in singleplayer worlds.
- Addressed a bug where Zygarde Cells would fail to spawn while in spectator mode.
- Fixed a case where Pokémon caught in Raids would gain incorrect abilities after evolving or changing forms.
- The Infuser block and its associated recipes have been corrected and now function as intended.
- The notification screen for Pokérus infection now displays properly.
- NPC Editor now correctly displays available presets for selection.
- Resolved a client crash triggered by resizing the NPC Editor window.
- The delete function in the NPC Editor has been restored.
- Fixed NPCs responding twice to right-clicks with an empty hand; default interaction now properly checks the used hand.
- Corrected numerical offsets in Paldean TMs; existing TMs remain unaffected.
- 21826 Cloning Machines no longer delete Mew upon being broken.
- 22174 The hotbar now returns correctly after zooming with the camera and changing items via scrolling.
- Spyglass use no longer overlaps with the Pixelmon team UI.
- Teleport and Fly now function correctly across dimensions after relaunching the server or game.
- Oval and Shiny Charms are now granted immediately upon meeting the required conditions.
- Mount Boost now properly applies a speed increase while mounted on a Pixelmon.
- Legendary Bird Orbs now update progress correctly when defeating Pokémon in horde battles.
- Raw Tumblestones are now visible in the Creative Mode inventory.
- Fixed a crash occurring during Cloning Machine activation.
- 22352 Prevented multiplayer server crashes caused by placing Lures in the Lure slot.
- 22353 Resolved a crash when searching for and selecting Pokémon stored outside Box 1 via the PC.
- Ribbon and Egg Moves UI panels now update properly when navigating between Pokémon.
- 22366 Pokémon hatched from Eggs now inherit correct size scaling from parents.
- Shiny odds are now properly respected for Tower Bells, Porygon crafting, Ditto transformations, vanilla mob replacements, and group spawns.
- Fusion data is now properly cleared from Pokémon NBT upon being unfused.
- 21815 Fixed a crash caused by interacting with the TCG Rulebook.
- Shiny Charm config now applies across all methods, not just breeding.
- 22325 22286 22354 22363 Evolution screen UI no longer freezes during an attempted evolution.
- Assignment rendering is now visually consistent with research rendering.
- 22297 EvoRockCondition now correctly considers rock types.
- 21625 Dusk Ball logic now checks for rain independently of other conditions.
- Starter Pokémon now come with the correct partner ribbon and level.
- Text alignment issues in the Research screen have been corrected.
- Scroll bar and layout issues when more than three Research rewards are present have been fixed.
- Reward text in the Research screen now uses distinct coloration for clarity.
- Resolved various resizing and layout inconsistencies in the Research tab.
- Click zones for rewards under the Research tab are now more responsive.
- Fixed a rare crash in PokéEditor when modifying a Pokémon’s moveset.
- Fixed a crash triggered upon successfully catching a Pokémon.
Battles:
- Resolved several issues with Eject Button behavior:
- No longer activates when damage is taken by a Substitute.
- Only one Eject Button can activate per attack.
- No longer activates if removed by Knock Off.
- No longer activates if stolen via Thief, Covet, or Magician.
- No longer consumed when the holder is forcibly switched by Dragon Tail or Circle Throw.
- Stall now correctly applies priority lower than Lagging Tail.
- Compound Eyes no longer boosts the accuracy of one-hit knockout moves.
- Max Raid Boss name now displays correctly post-raid.
- Eviolite no longer boosts Gigantamax Pikachu, Meowth, or Eevee.
- Electro Shot now consumes PP correctly during rain.
- Players can now successfully flee wild battles using Teleport.
- Fixed a crash when using Teleport without a valid entity.
- Mental Herb now correctly cures Heal Block and Torment.
- Air Balloons now burst correctly even when the holder has a Substitute active.
- Symbiosis now triggers correctly when an ally’s Air Balloon bursts.
- 22221 Resolved an issue where Dragon Darts would hang if all targets fainted after the first strike.
- Stench no longer causes Flinch when using status moves.
- Muscle Band and Wise Glasses now correctly modify move power, not the user's stats.
- Bright Powder no longer affects one-hit KO moves.
- Bright Powder's evasion effect now reduces accuracy by the correct 10%.
- BattleValidator no longer fails if a multi-turn move is used with exactly 1 PP.
- Blunder Policy fixes:
- No longer activates on moves that fail to affect the target.
- No longer activates on protected targets.
- No longer activates incorrectly on partially successful multi-strike moves.
- Float Stone no longer reduces weight below 0.1 kg.
- Heavy Slam now deals correct power when the defender weighs exactly 1/3 of the attacker.
- Autotomize weight adjustment now occurs before Float Stone halving.
- Autotomize now sets minimum weight to 0.1 kg.
- Expert Belt now properly boosts move power, not final damage.
- Multi-turn moves no longer error out under Torment or Disable status.
- 21904 22131 Torment no longer interrupts multi-turn moves mid-sequence.
- Thick Club now functions correctly on transformed Cubone and Marowak.
- Lucky Punch now functions on transformed Chansey.
- Type-enhancing items now boost base move power, not final damage output.
- Snatch now successfully steals Light Screen, Reflect, and Aurora Veil.
- Clamp now traps and deals residual damage as intended.
- Zoom Lens now checks correctly if the user moved after its target.
- Terrain Seeds now activate properly when damage is taken post-terrain change.
- Fixed consumable items (Absorb Bulb, Cell Battery, Luminous Moss, Snowball) triggering despite stats being capped or Contrary.
- Sticky Barb no longer transfers to Pokémon behind a Substitute.
- Unnerve no longer allows Berries to activate if removed during Magic Room.
- Protosynthesis no longer activates during Cloud Nine.
- Synthesis now heals properly under Mysterious Air Current.
- Flower Gift now correctly increases allies’ Special Defense by 50%.
Language:
- Translation keys for TCG items have been added to many previously hard-coded text values.
Developer:
- Adds a
PixelmonStatisticsRegistry
and aTCGStatisticsRegistry
that adds values/registry entries that keep track of action the player makes.- Most stats are awarded value within the
PixelmonStatisticsPixelmonListener
,PixelmonStatisticsMinecraftListener
,TCGStatisticsTCGListener
, andTCGStatisticsMinecraftListener.
- These are then handled by Minecraft and displayed in Minecraft's Statistics menu.
- Most stats are awarded value within the
- New Events!
AttackEvent.DamageDealt
- Includes info on the amount of damage dealt to a Pokemon.AttackEvent.Damage
is info on the potential damage that was calculated.PokedexOpenedEvent
- Called when the player opens their Pokedex- Added it to the
ServerPokedexPacket
.
- Added it to the
ShearInteractionEvent
:ShearInteractionEvent(AbstractBaseEntity pixelmon, Player player, InteractionHand hand, ItemStack itemStack)
- Cancelable
- Added to
ShearInteraction
WildPixelmonAttackEvent
- An event that happens when a Wild Pixelmon is the one to initiate a battle with a player:WildPixelmonAttackEvent(Player player, PlayerParticipant playerParticipant, Pokemon playersFirstPokemon, Mob wildPixelmonEntity, BattleParticipant wildPixelmonParticipant)
- Placed into
ExecuteActionGoal#attackPlayer
.
CaughtTransformedDittoEvent
- Used when a PixelmonEntity is caught and the game successfully rolls to decide that the Pokemon was actually a Ditto.CaughtTransformedDittoEvent(Player player, PixelmonEntity previousPixelmon, PixelmonEntity ditto, EmptyPokeBallEntity emptyPokeBallEntity, boolean transformToDitto, boolean isMeltan)
EggMovesetEvent
- An event that occurs after the moves for an egg have been chosen, but before they are actually assigned to the Pokémon's moveset.EggMovesetEvent(Player player, Pokemon motherPokemon, Pokemon fatherPokemon, List motherEggMoves, List fatherEggMoves, List fathersTMHMTutorMoves, List levelupMoves, List lvl1Moves, List masterAttackList)
MirrorHerbEggMoveEvent
- Used when a Pokemon learns an Egg move because their partner in the DayCare knew it.public MirrorHerbEggMoveEvent(Player player, Pokemon mirrorHerbPokemon, Pokemon partnerPokemon, int movesetIndex, Attack newAttack)
FriendshipChangedEvent
- Used right before a Pokemon's Friendship increases or decreases.FriendshipChangedEvent(Pokemon pokemon, int previousFriendshipAmount, int intendedFriendshipAmount)
RandomEggEvent
- An event that occurs when a random Pokemon is generated for an egg.RandomEggEvent(Pokemon parentOne, Pokemon parentTwo, Pokemon pokemonInEgg)
- tcg/api/events/
CardDrawnEvent
- Occurs when a player draws a card from their deck.CardDrawnEvent(GameServerState gameServerState, Player player, int numberOfCardsDrawn, List deck, List hand)
- tcg/api/events/
EnergyAttachedEvent
- Should fire whenever a player places an energy card on the active or a bench Pokemon during a TCG Battle.EnergyAttachedEvent(PlayerServerState player, PokemonCardState pokemonCardState, ImmutableCard card, CommonCardState cardState)
SynchronizeNatureEvent
- Occurs when a player's Pixelmon with the Synchronize ability makes a Wild Pixelmon's Nature get re-rolled.SynchronizeNatureEvent(PixelmonWrapper synchronizeUser, PixelmonWrapper synchronizeTarget, Nature nature)
WildPixelmonHeldItemRerolledEvent
- Fires when a Pixelmon Entity tries to re-roll a held item because a nearby player has a Pixelmon with Super Luck.WildPixelmonHeldItemRerolledEvent(ServerPlayer serverPlayer, PlayerPartyStorage party, ItemStack heldItem, SpawnAction spawnAction)
InfuserEvent
- An event meant to be used for the Infuser. Currently only theInfuserEvent.CreateItem Pre
andPost
events are used. They're fired before and after an Infuser will finish the creation of an item.HealTeamEvent
- Fires when the player's entire team would be healed, even if the player's team is already fully healed. Sleeping in a bed, using /pokeheal, and starting another battle with a player are 3 instances that aren't covered by the other event,HealerEvent
.HealTeamEvent(UUID playerUUID)
- Changes to Events!
- Added a new constructor to
ExperienceEvent
that allows including information on the Pokemon giving the experience.ExperienceGainEvent(@Nullable BattleController controller, Pokemon pokemon, Pokemon faintedPokemon, int experience, ExperienceGainType type)
- Added
ExperienceEvent#getFaintedPokemon
- Refactored the
ItemInteractionEvent
to have a Pre and Post event. PassivePoisonEvent
was refactored to be less redundant.EVsGainedEvent
:- Added a new constructor to the Item subclass
Item(Pokemon pokemon, EVStore evStore, EVYields evYields, ItemStack itemStack)
. - Added the event to
InteractionPerilousSoup
.
- Added a new constructor to the Item subclass
EVGainEvent
:- Added a new
faintedPokemon
class variable andEVGainEvent#getFaintedPokemon
. - New constructor
EVGainEvent(Pokemon pokemon, Pokemon faintedPokemon, EVYields originalEVYields, EVYields evYields)
to handle the new variable while deprecating the old one. - Updated the
DoubleYieldEvent
subclass and all the Pre and Post subclasses to match.
- Added a new
FishingEvent.Reel
- Added
isItem()
andgetItemStack()
- Added
CurryFInishedEvent
- Deprecated
public CurryFinishedEvent(@Nullable ServerPlayer player, EnumCurryRating rating, EnumCurryKey curryKey, EnumBerryFlavor cookingFlavor)
in favor ofpublic CurryFinishedEvent(@Nullable ServerPlayer player, int quality, EnumCurryRating rating, EnumCurryKey curryKey, EnumBerryFlavor cookingFlavor)
. Allows us to grab the quality (a.k.a score) of the curry for our stats.
- Deprecated
- Added a new constructor to
- Added
PokemonBase#isJumpPalette
,PokemonBase#isJumpPaletteForMagikarp
,PokemonBase#isJumpPaletteForSlugma
,PokemonBase#isJumpPaletteForSpheal
,PokemonBase#isJumpPaletteForShellos
,PokemonBase#isJumpPaletteForClobbopus
. - Added palettes missing from
PixelmonPalettes
:- APRICOT_SAUCY
- BLUE_STRIPES
- MOONS
- GOLDW
- GOLDE
- Created a private
BattleController#applyEndOfBattleEffectsAndRestoreItems
from code that was inBattleController#endBattle
.- Refactored
Experience
to create aExperience#hasExpAll
from code that was inExperience#awardExp
.
- Refactored
- Fixed a NPE in
PlayerControlledMovement#updatePosition
for when#getCameraTarget
returned null.- Added a
@Nullable
identifier togetCameraTarget()
.
- Added a
- In
BikeEntity
, overrodeEntity#move(MoverType, Vec3)
so that we could runBikeEntity#awardStatsForRiding(Entity, Vec3)
.- Nearly identical thing in
AbstractMovesEntity
withAbstractMovesEntity#awardStatsForRidingPixelmon
.
- Nearly identical thing in
- Refactored
InteractionTechnicalMove
andInteractionTM
to create theprivate boolean isUnableToLearn(PixelmonEntity, Player, ItemStack, ImmutableAttack)
from code from theprocessInteract(PixelmonEntity, Player, InteractionHand, ItemStack)
. - Added several new static tags in
PixelmonBlockTags
for the data tags that already exist:- DAY_CARES
- PCS
- TRADE_MACHINES
- TVS
- VENDING_MACHINES
- Refactored
PokerusSpreader
to create new functions to make things more legible and to hopefully make this class more clear on how it works.private static void spreadToParty(PlayerParticipant participant)
private static void forEachAttackVerifyIfAttackerCanReceivePokerus(BattleEndEvent event, List<UUID> winners)
private static void forEachSuccessfulAttackOnInfectedOpponentAttemptToSpreadPokerusToAttacker(AttackAction attackAction, Map<UUID, List<UUID>> analyzedMap, UUID receiverUUID)
private static void spread(PokerusStrain donorType, PixelmonWrapper wrapper, PlayerPartyStorage storage)
- Added
EVYields#getTotalCount
.- Fixed
IncreaseEVItem#adjustEVs(PixelmonEntity, ItemStack)
always passing in 1 EV to theEVsGainedEvent
, even if Vitamins were used.
- Fixed
- Deprecated
DecreaseEVBerryItem#berryEVs(PixelmonEntity)
in favor ofDecreaseEVBerryItem#berryEVs(PixelmonEntity, ItemStack)
. - Added
EVStore#getPerilousSoupEVYield
. - Added
EVStore#subtractEVsOfType(BattleStatsType, int, int)
and replaced the logic inEVStore#berryEVs(BattleStatsType)
with that. - Added
EVStore#gainEVYields(EVYields)
which returns an EVYields of the EVs that were actually applied to the Pokemon (in case of the Pokemon having or almost having the max amount of EVs overall or for one stat). This overloads the other gainEVYields function. The calculation of which EVs are actually applied is done by the newEVStore#calculateEVYieldsWithinMaximumLimits(EVYields)
.- Refactored code in
ExecuteActionGoal
: - Code in
ExecuteActionGoal#tick
now is mostly split intoExecuteActionGoal#moveSkill(LivingEntity)
,ExecuteActionGoal#attackPlayer(LivingEntity)
,ExecuteActionGoal#attackPixelmonEntity(LivingEntity)
.
- Refactored code in
- Fixed the Warp Plate block so that it no longer pushes Survival players off if they walk into it and then triggering the WarpPlateEvent on repeat, forcing players to have to jump to the block to have to teleport.
- Added
Pokemon#isParadox
andFormTags#isParadox
for the newPARADOX
tag inTags
.
- Added
- Moved most TCG Resources to use ResourceWithFallback.
- Removed unused CardWelcomeScreen.
- Added PokemonStorage#getAllNonNull, which returns an array of all Pokémon in the storage without any null elements. Added PokemonStorage#getAllNonNull, which returns an array of all Pokémon in the storage without any null elements.
- Changed PixelmonWrapper to extend Pokemon.
- Added
Lcom/pixelmonmod/pixelmon/api/pokemon/PokemonBuilder;build(Ljava/util/function/Supplier;)Lcom/pixelmonmod/pixelmon/api/pokemon/Pokemon;
- Changed PixelmonWrapper to make a copy of the Pokemon.
- Added
PixelmonWrapper#writeChangesToOriginalPokemon
that is called every move to record persistent changes to the original Pokemon's data. - Removed
PokemonLink
,DelegateLink
, andWrapperLink
. - Added
HeldItem#postProcessDamagingAttackSubstitute
. - Marked TripleAxel, TripleKick, and PopulationBomb as
deprecated
. - Updated raid capture events to extend the standard capture events.
- Updated the raid API to always have a Pokémon.
- Updated raid spawning API to use Pokémon specs.
- Added SpawnReplacement Mojang datapack registry.
- Added HeldItem#onStatusRemoved and HeldItem#onGlobalStatusRemoved.
- Added
HeldItem#preventsEffectsOfWeather
. - Added
HeldItem#onItemLost
. HeldItem#cantMiss
now takes a 2ndPixelmonWrapper
parameter.
Dependencies
Files
Metadata
Release channel
BetaVersion number
9.3.0Loaders
Game versions
1.21.1Downloads
4227Publication date
May 10, 2025 at 2:09 PMPublisher

Pixelmon
Owner