-
Notifications
You must be signed in to change notification settings - Fork 2
Mega_Evolutions.json
The master list of every Mega Evolution GenesisForms knows about — which species/aspects/moves qualify, which Feature gets applied to actually turn the Pokémon into its Mega form, and (for stone-based Megas) the Mega Stone item that unlocks it. Located at GenesisForms/mega_evolutions.json.
Note
This file is a map of <mega_id> → Mega Evolution definition. Every stock Mega from the games ships here out of the box (Abomasnow through Zygarde, including the alternate X/Y/Z variants) — the file is over 1600 lines long, so only a representative slice is shown below. Every other entry follows the exact same shape.
📄 Full default file (representative excerpt — every other entry follows the same shape)
{
"mega_abomasnow": {
"required": {
"species": "abomasnow",
"aspects": [],
"moves": []
},
"feature_name": "mega_evolution",
"feature_value": "mega",
"has_item": true,
"item_information": {
"showdown_id": "abomasite",
"item_id": "abomasite",
"lore": [
"<gray>One of a variety of mysterious Mega Stones.",
"<gray>Have Abomasnow hold it, and this stone will enable it to Mega Evolve during battle."
]
}
},
"mega_absol": {
"required": {
"species": "absol",
"aspects": [],
"moves": []
},
"feature_name": "mega_evolution",
"feature_value": "mega",
"has_item": true,
"item_information": {
"showdown_id": "absolite",
"item_id": "absolite",
"lore": [
"<gray>One of a variety of mysterious Mega Stones.",
"<gray>Have Absol hold it, and this stone will enable it to Mega Evolve during battle."
]
}
},
"mega_absol_z": {
"required": {
"species": "absol",
"aspects": [],
"moves": []
},
"feature_name": "mega_evolution",
"feature_value": "mega_z",
"has_item": true,
"item_information": {
"showdown_id": "absolitez",
"item_id": "absolite-z",
"lore": [
"<gray>One of a variety of mysterious Mega Stones.",
"<gray>Have Absol hold it, and this stone will enable it to Mega Evolve during battle."
]
}
},
"mega_charizard_x": {
"required": {
"species": "charizard",
"aspects": [],
"moves": []
},
"feature_name": "mega_evolution",
"feature_value": "mega_x",
"has_item": true,
"item_information": {
"showdown_id": "charizarditex",
"item_id": "charizardite-x",
"lore": [
"<gray>One of a variety of mysterious Mega Stones.",
"<gray>Have Charizard hold it, and this stone will enable it to Mega Evolve during battle."
]
}
},
"mega_charizard_y": {
"required": {
"species": "charizard",
"aspects": [],
"moves": []
},
"feature_name": "mega_evolution",
"feature_value": "mega_y",
"has_item": true,
"item_information": {
"showdown_id": "charizarditey",
"item_id": "charizardite-y",
"lore": [
"<gray>One of a variety of mysterious Mega Stones.",
"<gray>Have Charizard hold it, and this stone will enable it to Mega Evolve during battle."
]
}
},
"mega_eternal_floette": {
"required": {
"species": "floette",
"aspects": ["flower-eternal"],
"moves": []
},
"feature_name": "mega_evolution",
"feature_value": "mega",
"has_item": true,
"item_information": {
"showdown_id": "floettite",
"item_id": "floettite",
"lore": [
"<gray>One of a variety of mysterious Mega Stones.",
"<gray>A special Floette holding this stone will be able to Mega Evolve during battle."
]
}
},
"mega_rayquaza": {
"required": {
"species": "rayquaza",
"aspects": [],
"moves": ["dragonascent"]
},
"feature_name": "mega_evolution",
"feature_value": "mega",
"has_item": false,
"item_information": {}
},
"mega_zygarde": {
"required": {
"species": "zygarde",
"aspects": ["complete-percent"],
"moves": []
},
"feature_name": "mega_evolution",
"feature_value": "mega",
"has_item": true,
"item_information": {
"showdown_id": "zygardite",
"item_id": "zygardite",
"lore": [
"<gray>One of a variety of mysterious Mega Stones.",
"<gray>When in Complete Forme and holding this stone, Zygarde will be able to Mega Evolve during battle."
]
}
}
}| Field | Type | Description |
|---|---|---|
<mega_id> |
object | A single Mega Evolution definition, keyed by its own unique ID (e.g. mega_abomasnow, mega_charizard_x). The ID itself isn't shown to players — it's only used internally (item registration, event IDs, itemless_megas bookkeeping) — but it must be unique across the file. |
| Field | Type | Description |
|---|---|---|
required |
object | The conditions a Pokémon must meet to be eligible for this specific Mega. See below. If omitted/null, every Pokémon is considered eligible (not recommended). |
feature_name |
string | The Cobblemon species feature that gets set on the Pokémon when it Mega Evolves — this is what actually drives the form/model/stat changes on Cobblemon's side. Almost every entry uses "mega_evolution". |
feature_value |
string | The value written to feature_name on Mega Evolution, e.g. "mega", "mega_x", "mega_y", "mega_z". This is what distinguishes, say, Charizard's X and Y Megas (and the two entries' otherwise-identical required blocks) — and what the reverting code removes to turn the Feature back off when the Mega ends. |
has_item |
boolean | Whether this Mega requires holding a Mega Stone item at all. true for every stock Mega except mega_rayquaza, which instead requires knowing Dragon Ascent (see required.moves below). When true, item_information must be filled in — GenesisForms registers an actual Mega Stone item from it. |
item_information |
object | The Mega Stone item tied to this entry. Ignored (and can be {}) when has_item is false. See below. |
| Field | Type | Description |
|---|---|---|
species |
string | The species (lowercase, Cobblemon species ID form) that can use this Mega. |
aspects |
string array | Aspects the Pokémon must currently have, e.g. ["flower-eternal"] for Eternal Floette or ["complete-percent"] for Zygarde-Complete. Leave empty for no aspect requirement. |
moves |
string array | Moves the Pokémon must know. This is how the itemless Mega Rayquaza is gated — ["dragonascent"] — instead of a held item. Leave empty for no move requirement. |
All three conditions must pass simultaneously (species match plus every listed aspect plus every listed move) — read directly from MegaEvolutionConfig.canMegaEvolve(), which short-circuits to false on the first unmet condition.
| Field | Type | Description |
|---|---|---|
showdown_id |
string | The Pokémon Showdown / Cobblemon battle-engine held-item ID this Mega Stone is remapped to. GenesisForms registers its own real Minecraft item for the stone, then calls Cobblemon's CobblemonHeldItemManager.registerRemap() with this ID so the battle engine recognizes the custom item as that Showdown item (battle logic, legality checks, and anything else that looks up held items by their Showdown ID all key off of this). It generally matches the real games' internal item name (e.g. charizarditex, no separators). |
item_id |
string | The actual Minecraft item ID GenesisForms registers for this Mega Stone, under the mod's own namespace (genesisforms:<item_id>) — this is what you /give to players and what shows up in-game. It's usually the same word as showdown_id but with real-world hyphenation restored (e.g. charizardite-x), since Minecraft item IDs can't contain the stray capitalization Showdown IDs sometimes rely on. |
lore |
string array | Lore lines shown on the Mega Stone item's tooltip. Supports MiniMessage formatting (e.g. <gray>). |
Note
showdown_id and item_id look redundant but serve two different systems: showdown_id is purely for Cobblemon's battle engine to recognize the item as a held Mega Stone; item_id is the real Minecraft/GenesisForms item identifier used for giving, disabling (general_settings.disabled_items in Config.json), and resource-pack models. Get either one wrong and the stone will either not work in battle or not exist as an item.
At a high level: a Pokémon holding the right Mega Stone (or, for itemless Megas like Rayquaza, simply meeting the required conditions) can Mega Evolve once per battle via a Mega Evolution accessory item, or automatically through Cobblemon's own Mega Evolution battle action. GenesisForms checks every entry in this file (plus the itemless ones) against the Pokémon to find a match, applies feature_name/feature_value, fires the matching mega_evolution entry in Events, and reverts everything (Feature, tradeability, etc.) when the Pokémon leaves battle or the item is removed. The full mechanical breakdown — accessories, battle hooks, tradeability locking, reverting — lives on How-It-Works; this page only documents the JSON schema.
Adding a custom Mega here only handles the GenesisForms half — the required Feature, the eligibility check, and (optionally) a real Mega Stone item. Cobblemon itself also needs to know about the new form (species JSON/model additions), and if you want it usable in competitive-style battles, the Showdown/Pokedex.js side needs the matching entry too. That full walkthrough is covered separately in Custom Mega Evolutions — this page is only the GenesisForms-side registration step.
-
Config.json —
mega_settingsblock (enabling Mega Evolution, allowing it outside battle, tradeability locking). -
Events — the
mega_evolutionevents section (particles, glow, scale animations played on Mega Evolve/revert). - Commands — giving Mega Stones and Mega Evolution accessories to players.
- Custom Mega Evolutions — the full tutorial for adding a brand new custom Mega, including the Cobblemon/Showdown side.