Pixelmon Mod - Bug tracker

[9.2.3] Datapacks that define a new Pokemon cannot reference another newly defined Pokemon in its evolution. pending

Ticket description:
Given the Pokemon definitions below, see that a defined Pokemon with no evolutions defined works fine (even without its preevolutions defined). See also that a Pokemon defined as evolving into a Pixelmon implemented Pokemon works fine (eg. Wigglytuff). See, finally, that replacing that same Pokemon with a Pokemon defined elsewhere causes a server crash (eg. Patamon).

This issue was introduced in 9.2.3, as 9.2.2 did not have it and the datapack functioned on server start up.

Note: I manually modified this file to reduce the size. If there are minor syntax problems, it is likely due to this fact. This error is NOT caused by syntax, which I have validated through a JSON validator.

Valid:
Code: Select all{
  "name": "Ordinemon",
  "dex": 2152,
  "defaultForms": [
    ""
  ],
  "forms": [
    {
      "name": "",
      "experienceGroup": "MEDIUM_SLOW",
      "dimensions": {
        "height": 45.6,
        "width": 2.8,
        "length": 1.6,
        "eyeHeight": 45.6,
        "hoverHeight": 45.6
      },
      "moves": {
        "levelUpMoves": [
          {
            "level": 0,
            "attacks": [
              "Growl"
            ]
          },
          {
            "level": 4,
            "attacks": [
              "Sweet Kiss"
            ]
          },
        ],
        "tutorMoves": [
          "Coaching"
        ],
        "eggMoves": [],
        "tmMoves8": [],
        "trMoves": [],
        "hmMoves": [],
        "transferMoves": [],
        "tmMoves7": [],
        "tmMoves6": [],
        "tmMoves5": [],
        "tmMoves4": [],
        "tmMoves3": [],
        "tmMoves2": [],
        "tmMoves1": [],
        "tmMoves": []
      },
      "abilities": {
        "abilities": [
          "WonderGuard"
        ],
        "hiddenAbilities": [
          "NeutralizingGas"
        ]
      },
      "movement": {
        "rideable": true,
        "canFly": true,
        "canSurf": false,
        "canRideShoulder": false
      },
      "aggression": {
        "timid": 80,
        "passive": 0,
        "aggressive": 20
      },
      "battleStats": {
        "hp": 140,
        "attack": 125,
        "defense": 140,
        "specialAttack": 125,
        "specialDefense": 140,
        "speed": 70
      },
      "tags": [
        "legendary"
      ],
      "spawn": {
        "baseExp": 220,
        "baseFriendship": 70,
        "spawnLevel": 45,
        "spawnLevelRange": 5,
        "spawnLocations": [
          "LAND"
        ]
      },
      "possibleGenders": [
        "MALE",
        "FEMALE"
      ],
      "genderProperties": [
        {
          "gender": "ALL",
          "palettes": [
            {
              "name": "none",
              "texture": "pixelmon:pokemon/2152_ordinemon/all/base/none/texture.png",
              "sprite": "pixelmon:pokemon/2152_ordinemon/all/base/none/sprite.png",
              "particle": "",
              "modelLocator": {
                "factoryType": "NORMAL",
                "pqc": [
                  "pixelmon:pokemon/2152_ordinemon/all/base/none/model.pqc"
                ]
              }
            },
            {
              "name": "shiny",
              "texture": "pixelmon:pokemon/2152_ordinemon/all/base/shiny/texture.png",
              "sprite": "pixelmon:pokemon/2152_ordinemon/all/base/shiny/sprite.png",
              "particle": "arcanery:shiny"
            }
          ]
        }
      ],
      "eggGroups": [
        "UNDISCOVERED"
      ],
      "types": [
        "POISON",
        "FLYING"
      ],
      "preEvolutions": [
        "Raguelmon",
        "Ophanimon"
      ],
      "defaultBaseForm": "",
      "megaItems": [],
      "megas": [],
      "gigantamax": {
        "canHaveFactor": false,
        "canGigantamax": false
      },
      "eggCycles": 21,
      "weight": 100.9,
      "catchRate": 10,
      "malePercentage": -1,
      "evolutions": [],
      "evYields": {
        "specialdefense": 4,
        "defense": 4,
        "hp": 4
      }
    }
  ],
  "generation": 20
}


Valid:
Code: Select all{
  "name": "Ordinemon",
  "dex": 2152,
  "defaultForms": [
    ""
  ],
  "forms": [
    {
      "name": "",
      "experienceGroup": "MEDIUM_SLOW",
      "dimensions": {
        "height": 45.6,
        "width": 2.8,
        "length": 1.6,
        "eyeHeight": 45.6,
        "hoverHeight": 45.6
      },
      "moves": {
        "levelUpMoves": [
          {
            "level": 0,
            "attacks": [
              "Growl"
            ]
          },
          {
            "level": 4,
            "attacks": [
              "Sweet Kiss"
            ]
          },
        ],
        "tutorMoves": [
          "Coaching"
        ],
        "eggMoves": [],
        "tmMoves8": [],
        "trMoves": [],
        "hmMoves": [],
        "transferMoves": [],
        "tmMoves7": [],
        "tmMoves6": [],
        "tmMoves5": [],
        "tmMoves4": [],
        "tmMoves3": [],
        "tmMoves2": [],
        "tmMoves1": [],
        "tmMoves": []
      },
      "abilities": {
        "abilities": [
          "WonderGuard"
        ],
        "hiddenAbilities": [
          "NeutralizingGas"
        ]
      },
      "movement": {
        "rideable": true,
        "canFly": true,
        "canSurf": false,
        "canRideShoulder": false
      },
      "aggression": {
        "timid": 80,
        "passive": 0,
        "aggressive": 20
      },
      "battleStats": {
        "hp": 140,
        "attack": 125,
        "defense": 140,
        "specialAttack": 125,
        "specialDefense": 140,
        "speed": 70
      },
      "tags": [
        "legendary"
      ],
      "spawn": {
        "baseExp": 220,
        "baseFriendship": 70,
        "spawnLevel": 45,
        "spawnLevelRange": 5,
        "spawnLocations": [
          "LAND"
        ]
      },
      "possibleGenders": [
        "MALE",
        "FEMALE"
      ],
      "genderProperties": [
        {
          "gender": "ALL",
          "palettes": [
            {
              "name": "none",
              "texture": "pixelmon:pokemon/2152_ordinemon/all/base/none/texture.png",
              "sprite": "pixelmon:pokemon/2152_ordinemon/all/base/none/sprite.png",
              "particle": "",
              "modelLocator": {
                "factoryType": "NORMAL",
                "pqc": [
                  "pixelmon:pokemon/2152_ordinemon/all/base/none/model.pqc"
                ]
              }
            },
            {
              "name": "shiny",
              "texture": "pixelmon:pokemon/2152_ordinemon/all/base/shiny/texture.png",
              "sprite": "pixelmon:pokemon/2152_ordinemon/all/base/shiny/sprite.png",
              "particle": "arcanery:shiny"
            }
          ]
        }
      ],
      "eggGroups": [
        "UNDISCOVERED"
      ],
      "types": [
        "POISON",
        "FLYING"
      ],
      "preEvolutions": [
        "Raguelmon",
        "Ophanimon"
      ],
      "defaultBaseForm": "",
      "megaItems": [],
      "megas": [],
      "gigantamax": {
        "canHaveFactor": false,
        "canGigantamax": false
      },
      "eggCycles": 21,
      "weight": 100.9,
      "catchRate": 10,
      "malePercentage": -1,
      "evolutions": [
        {
          "item": {
            "itemID": "pixelmon:moon_stone"
          },
          "to": "Wigglytuff",
          "conditions": [],
          "evoType": "interact"
        }
      ],
      "evYields": {
        "specialdefense": 4,
        "defense": 4,
        "hp": 4
      }
    }
  ],
  "generation": 20
}


Causes Server Crash:
Code: Select all{
  "name": "Ordinemon",
  "dex": 2152,
  "defaultForms": [
    ""
  ],
  "forms": [
    {
      "name": "",
      "experienceGroup": "MEDIUM_SLOW",
      "dimensions": {
        "height": 45.6,
        "width": 2.8,
        "length": 1.6,
        "eyeHeight": 45.6,
        "hoverHeight": 45.6
      },
      "moves": {
        "levelUpMoves": [
          {
            "level": 0,
            "attacks": [
              "Growl"
            ]
          },
          {
            "level": 4,
            "attacks": [
              "Sweet Kiss"
            ]
          },
        ],
        "tutorMoves": [
          "Coaching"
        ],
        "eggMoves": [],
        "tmMoves8": [],
        "trMoves": [],
        "hmMoves": [],
        "transferMoves": [],
        "tmMoves7": [],
        "tmMoves6": [],
        "tmMoves5": [],
        "tmMoves4": [],
        "tmMoves3": [],
        "tmMoves2": [],
        "tmMoves1": [],
        "tmMoves": []
      },
      "abilities": {
        "abilities": [
          "WonderGuard"
        ],
        "hiddenAbilities": [
          "NeutralizingGas"
        ]
      },
      "movement": {
        "rideable": true,
        "canFly": true,
        "canSurf": false,
        "canRideShoulder": false
      },
      "aggression": {
        "timid": 80,
        "passive": 0,
        "aggressive": 20
      },
      "battleStats": {
        "hp": 140,
        "attack": 125,
        "defense": 140,
        "specialAttack": 125,
        "specialDefense": 140,
        "speed": 70
      },
      "tags": [
        "legendary"
      ],
      "spawn": {
        "baseExp": 220,
        "baseFriendship": 70,
        "spawnLevel": 45,
        "spawnLevelRange": 5,
        "spawnLocations": [
          "LAND"
        ]
      },
      "possibleGenders": [
        "MALE",
        "FEMALE"
      ],
      "genderProperties": [
        {
          "gender": "ALL",
          "palettes": [
            {
              "name": "none",
              "texture": "pixelmon:pokemon/2152_ordinemon/all/base/none/texture.png",
              "sprite": "pixelmon:pokemon/2152_ordinemon/all/base/none/sprite.png",
              "particle": "",
              "modelLocator": {
                "factoryType": "NORMAL",
                "pqc": [
                  "pixelmon:pokemon/2152_ordinemon/all/base/none/model.pqc"
                ]
              }
            },
            {
              "name": "shiny",
              "texture": "pixelmon:pokemon/2152_ordinemon/all/base/shiny/texture.png",
              "sprite": "pixelmon:pokemon/2152_ordinemon/all/base/shiny/sprite.png",
              "particle": "arcanery:shiny"
            }
          ]
        }
      ],
      "eggGroups": [
        "UNDISCOVERED"
      ],
      "types": [
        "POISON",
        "FLYING"
      ],
      "preEvolutions": [
        "Raguelmon",
        "Ophanimon"
      ],
      "defaultBaseForm": "",
      "megaItems": [],
      "megas": [],
      "gigantamax": {
        "canHaveFactor": false,
        "canGigantamax": false
      },
      "eggCycles": 21,
      "weight": 100.9,
      "catchRate": 10,
      "malePercentage": -1,
      "evolutions": [
        {
          "item": {
            "itemID": "pixelmon:moon_stone"
          },
          "to": "Patamon",
          "conditions": [],
          "evoType": "interact"
        }
      ],
      "evYields": {
        "specialdefense": 4,
        "defense": 4,
        "hp": 4
      }
    }
  ],
  "generation": 20
}


The available crash log:
Code: Select all[06Oct2023 14:41:56.346] [main/WARN] [net.minecraft.server.Main/]: Failed to load datapacks, can't proceed with server load. You can either fix your datapacks or reset to vanilla with --safeMode
java.util.concurrent.ExecutionException: com.google.gson.JsonParseException: Invalid spec: No valid specs found!
   at java.util.concurrent.CompletableFuture.reportGet(CompletableFuture.java:396) ~[?:?]
   at java.util.concurrent.CompletableFuture.get(CompletableFuture.java:2073) ~[?:?]
   at net.minecraft.server.Main.main(Main.java:195) ~[server-1.20.1-20230612.114412-srg.jar%23125!/:?]
   at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
   at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?]
   at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
   at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?]
   at net.minecraftforge.fml.loading.targets.CommonLaunchHandler.runTarget(CommonLaunchHandler.java:111) ~[fmlloader-1.20.1-47.1.46.jar%2369!/:?]
   at net.minecraftforge.fml.loading.targets.CommonLaunchHandler.serverService(CommonLaunchHandler.java:103) ~[fmlloader-1.20.1-47.1.46.jar%2369!/:?]
   at net.minecraftforge.fml.loading.targets.CommonServerLaunchHandler.lambda$makeService$0(CommonServerLaunchHandler.java:27) ~[fmlloader-1.20.1-47.1.46.jar%2369!/:?]
   at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:30) ~[modlauncher-10.0.9.jar%2355!/:?]
   at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:53) ~[modlauncher-10.0.9.jar%2355!/:?]
   at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:71) ~[modlauncher-10.0.9.jar%2355!/:?]
   at cpw.mods.modlauncher.Launcher.run(Launcher.java:108) ~[modlauncher-10.0.9.jar%2355!/:?]
   at cpw.mods.modlauncher.Launcher.main(Launcher.java:78) ~[modlauncher-10.0.9.jar%2355!/:?]
   at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26) ~[modlauncher-10.0.9.jar%2355!/:?]
   at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23) ~[modlauncher-10.0.9.jar%2355!/:?]
   at cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:141) ~[bootstraplauncher-1.1.2.jar:?]
Caused by: com.google.gson.JsonParseException: Invalid spec: No valid specs found!
   at com.pixelmonmod.api.SpecificationTypeAdapter.deserialize(SpecificationTypeAdapter.java:30) ~[Pixelmon-1.20.1-9.2.3-universal.jar%23117!/:9.2.3-pipe21439]
   at com.pixelmonmod.api.SpecificationTypeAdapter.deserialize(SpecificationTypeAdapter.java:16) ~[Pixelmon-1.20.1-9.2.3-universal.jar%23117!/:9.2.3-pipe21439]
   at com.google.gson.internal.bind.TreeTypeAdapter.read(TreeTypeAdapter.java:76) ~[gson-2.10.jar%2372!/:?]
   at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$1.readIntoField(ReflectiveTypeAdapterFactory.java:212) ~[gson-2.10.jar%2372!/:?]
   at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$FieldReflectionAdapter.readField(ReflectiveTypeAdapterFactory.java:431) ~[gson-2.10.jar%2372!/:?]
   at com.google.gson.internal.bind.ReflectiveTypeAdapterFactory$Adapter.read(ReflectiveTypeAdapterFactory.java:391) ~[gson-2.10.jar%2372!/:?]
   at com.google.gson.Gson.fromJson(Gson.java:1214) ~[gson-2.10.jar%2372!/:?]
   at com.google.gson.Gson.fromJson(Gson.java:1319) ~[gson-2.10.jar%2372!/:?]
   at com.google.gson.Gson.fromJson(Gson.java:1290) ~[gson-2.10.jar%2372!/:?]
   at com.google.gson.internal.bind.TreeTypeAdapter$GsonContextImpl.deserialize(TreeTypeAdapter.java:179) ~[gson-2.10.jar%2372!/:?]
   at com.pixelmonmod.pixelmon.api.pokemon.stats.evolution.EvolutionTypeAdapter.deserialize(EvolutionTypeAdapter.java:12) ~[Pixelmon-1.20.1-9.2.3-universal.jar%23117!/:9.2.3-pipe21439]
   at com.pixelmonmod.pixelmon.api.pokemon.stats.evolution.EvolutionTypeAdapter.deserialize(EvolutionTypeAdapter.java:7) ~[Pixelmon-1.20.1-9.2.3-universal.jar%23117!/:9.2.3-pipe21439]
   at com.google.gson.internal.bind.TreeTypeAdapter.read(TreeTypeAdapter.java:76) ~[gson-2.10.jar%2372!/:?]
   at com.google.gson.Gson.fromJson(Gson.java:1214) ~[gson-2.10.jar%2372!/:?]
   at com.google.gson.Gson.fromJson(Gson.java:1319) ~[gson-2.10.jar%2372!/:?]
   at com.google.gson.Gson.fromJson(Gson.java:1290) ~[gson-2.10.jar%2372!/:?]
   at com.google.gson.internal.bind.TreeTypeAdapter$GsonContextImpl.deserialize(TreeTypeAdapter.java:179) ~[gson-2.10.jar%2372!/:?]
   at com.pixelmonmod.pixelmon.api.pokemon.species.StatsTypeAdapter.lambda$deserialize$4(StatsTypeAdapter.java:48) ~[Pixelmon-1.20.1-9.2.3-universal.jar%23117!/:9.2.3-pipe21439]
   at com.pixelmonmod.pixelmon.api.util.helpers.JsonHelper.deserializeList(JsonHelper.java:38) ~[Pixelmon-1.20.1-9.2.3-universal.jar%23117!/:9.2.3-pipe21439]
   at com.pixelmonmod.pixelmon.api.pokemon.species.StatsTypeAdapter.deserialize(StatsTypeAdapter.java:48) ~[Pixelmon-1.20.1-9.2.3-universal.jar%23117!/:9.2.3-pipe21439]
   at com.pixelmonmod.pixelmon.api.pokemon.species.StatsTypeAdapter.deserialize(StatsTypeAdapter.java:26) ~[Pixelmon-1.20.1-9.2.3-universal.jar%23117!/:9.2.3-pipe21439]
   at com.google.gson.internal.bind.TreeTypeAdapter.read(TreeTypeAdapter.java:76) ~[gson-2.10.jar%2372!/:?]
   at com.google.gson.Gson.fromJson(Gson.java:1214) ~[gson-2.10.jar%2372!/:?]
   at com.google.gson.Gson.fromJson(Gson.java:1319) ~[gson-2.10.jar%2372!/:?]
   at com.google.gson.Gson.fromJson(Gson.java:1290) ~[gson-2.10.jar%2372!/:?]
   at com.google.gson.internal.bind.TreeTypeAdapter$GsonContextImpl.deserialize(TreeTypeAdapter.java:179) ~[gson-2.10.jar%2372!/:?]
   at com.pixelmonmod.pixelmon.api.pokemon.species.SpeciesTypeAdapter.lambda$deserialize$1(SpeciesTypeAdapter.java:21) ~[Pixelmon-1.20.1-9.2.3-universal.jar%23117!/:9.2.3-pipe21439]
   at com.pixelmonmod.pixelmon.api.util.helpers.JsonHelper.deserializeList(JsonHelper.java:38) ~[Pixelmon-1.20.1-9.2.3-universal.jar%23117!/:9.2.3-pipe21439]
   at com.pixelmonmod.pixelmon.api.pokemon.species.SpeciesTypeAdapter.deserialize(SpeciesTypeAdapter.java:21) ~[Pixelmon-1.20.1-9.2.3-universal.jar%23117!/:9.2.3-pipe21439]
   at com.pixelmonmod.pixelmon.api.pokemon.species.SpeciesTypeAdapter.deserialize(SpeciesTypeAdapter.java:10) ~[Pixelmon-1.20.1-9.2.3-universal.jar%23117!/:9.2.3-pipe21439]
   at com.google.gson.internal.bind.TreeTypeAdapter.read(TreeTypeAdapter.java:76) ~[gson-2.10.jar%2372!/:?]
   at com.google.gson.Gson.fromJson(Gson.java:1214) ~[gson-2.10.jar%2372!/:?]
   at com.google.gson.Gson.fromJson(Gson.java:1319) ~[gson-2.10.jar%2372!/:?]
   at com.google.gson.Gson.fromJson(Gson.java:1261) ~[gson-2.10.jar%2372!/:?]
   at com.pixelmonmod.pixelmon.init.loaders.PixelmonLoaders.lambda$addReloadListeners$9(PixelmonLoaders.java:248) ~[Pixelmon-1.20.1-9.2.3-universal.jar%23117!/:9.2.3-pipe21439]
   at com.pixelmonmod.api.loader.DatapackLoader$Impl.apply(DatapackLoader.java:100) ~[Pixelmon-1.20.1-9.2.3-universal.jar%23117!/:9.2.3-pipe21439]
   at com.pixelmonmod.api.loader.DatapackLoader$Impl.m_5787_(DatapackLoader.java:69) ~[Pixelmon-1.20.1-9.2.3-universal.jar%23117!/:9.2.3-pipe21439]
   at net.minecraft.server.packs.resources.SimplePreparableReloadListener.m_10789_(SimplePreparableReloadListener.java:13) ~[server-1.20.1-20230612.114412-srg.jar%23125!/:?]
   at java.util.concurrent.CompletableFuture$UniAccept.tryFire(CompletableFuture.java:718) ~[?:?]
   at java.util.concurrent.CompletableFuture$Completion.run(CompletableFuture.java:482) ~[?:?]
   at net.minecraft.server.packs.resources.SimpleReloadInstance.m_143940_(SimpleReloadInstance.java:69) ~[server-1.20.1-20230612.114412-srg.jar%23125!/:?]
   at net.minecraft.Util.m_214652_(Util.java:783) ~[server-1.20.1-20230612.114412-srg.jar%23125!/:?]
   at net.minecraft.Util.m_214679_(Util.java:772) ~[server-1.20.1-20230612.114412-srg.jar%23125!/:?]
   at net.minecraft.server.Main.main(Main.java:166) ~[server-1.20.1-20230612.114412-srg.jar%23125!/:?]
   ... 15 more

Comments

#30775 Posted by ThingxII » 06 Oct 2023 17:41

I've significantly trimmed down my test cases, and I'm still encountering the issue. The server can start normally if all added Pokemon have

Code: Select all"evolutions": []


but adding any evolution dependency of these Pokemon causes the crash.

#30840 Posted by LordSamosa » 15 Oct 2023 19:10

Hi there, I can't seem to reproduce this on 9.2.4.
Can you double check on that version?
(Important to note evolving Pokemon is broken on 9.2.4 but I can start the server/world fine and use the custom species as normal)

#30857 Posted by ThingxII » 20 Oct 2023 15:04

I am receiving the same crash on 9.2.4. I can provide some test files, if necessary.

I think there is more to it than simply Fakemon having evolutions - perhaps something with how Pixelmon processes malformed Pokemon has changed, which instead of failing silently fails with a crash.

I say this because it functions if I do the following:
- Copy an existing Pokemon, such as Bulbasaur, twice.
- Rename, new dex#, new gen# for each of them
- Remove evolutions entirely for one
- Change the evolution for the other to the first

I am running into the issue with completely custom Pokemon (ie. those that were not copied and modified, but are proper JSON). These Pokemon were able to be loaded in 9.2.2 and 9.1.7, but cause a crash on 9.2.3 and 9.2.4. If you want to reproduce, the Digimon Datapack https://www.curseforge.com/minecraft/texture-packs/pixelmon-digimon-datapack

#30858 Posted by ThingxII » 20 Oct 2023 15:06

Whoops, left my message hanging. The Digimon datapack is an example of this. It loaded in previous versions and crashes now. It is quite large, but even cutting it down to a couple files can make it happen. I've been working on validation of this pack and have made various fixes (such as capitalization or typos of the To Pokemon in evolutions, removing non-existent moves, etc.) but have yet to get a version that functions on the latest versions.

#30859 Posted by ThingxII » 20 Oct 2023 16:05

Alright, here is a test that should reproduce it for you.

Poomon - basically an empty Fakemon that Newmon evolves into.
Code: Select all{
  "name": "Poomon",
  "dex": 6005,
  "defaultForms": [
    ""
  ],
  "forms": [
    {
      "name": "",
      "tags": [],
      "experienceGroup": "SLOW",
      "dimensions": {
        "height": 3.0,
        "width": 1.2,
        "length": 1.0,
        "eyeHeight": 3.0,
        "hoverHeight": 3.0
      },
      "moves": {
        "levelUpMoves": [
          {
            "level": 0,
            "attacks": [
              "Splash"
            ]
          }
        ],
        "tutorMoves": [],
        "eggMoves": [],
        "tmMoves8": [],
        "trMoves": [],
        "hmMoves": [],
        "transferMoves": [],
        "tmMoves7": [],
        "tmMoves6": [],
        "tmMoves5": [],
        "tmMoves4": [],
        "tmMoves3": [],
        "tmMoves2": [],
        "tmMoves1": [],
        "tmMoves": []
      },
      "abilities": {
        "abilities": [
          "Error"
        ]
      },
      "movement": {
        "rideable": false,
        "canFly": false,
        "canSurf": false,
        "canRideShoulder": false
      },
      "aggression": {
        "timid": 80,
        "passive": 0,
        "aggressive": 20
      },
      "battleStats": {
        "hp": 33,
        "attack": 136,
        "defense": 0,
        "specialAttack": 6,
        "specialDefense": 6,
        "speed": 29
      },
      "spawn": {
        "baseExp": 64,
        "baseFriendship": 70,
        "spawnLevel": 10,
        "spawnLevelRange": 6,
        "spawnLocations": [
          "LAND"
        ]
      },
      "possibleGenders": [
        "MALE",
        "FEMALE"
      ],
      "genderProperties": [
        {
          "gender": "ALL",
          "palettes": [
            {
              "name": "none",
              "texture": "pixelmon:pokemon/000_missingno/all/base/none/texture.png",
              "sprite": "pixelmon:pokemon/000_missingno/all/base/none/sprite.png",
              "particle": "",
              "modelLocator": {
                "factoryType": "NORMAL",
                "pqc": [
                  "pixelmon:pokemon/000_missingno/all/base/none/model.pqc"
                ]
              },
              "sounds": []
            }
          ]
        }
      ],
      "eggGroups": [
        "UNDISCOVERED"
      ],
      "types": [
        "NORMAL"
      ],
      "preEvolutions": [],
      "defaultBaseForm": "",
      "megaItems": [],
      "megas": [],
      "eggCycles": 21,
      "weight": 30.0,
      "catchRate": 1,
      "malePercentage": -1.0
    }
  ],
  "generation": 21
}


Working Newmon - it has an evolution to Poomon, but no conditions.
Code: Select all{
  "name": "Newmon",
  "dex": 6001,
  "defaultForms": [
    ""
  ],
  "forms": [
    {
      "name": "",
      "tags": [],
      "experienceGroup": "SLOW",
      "dimensions": {
        "height": 3.0,
        "width": 1.2,
        "length": 1.0,
        "eyeHeight": 3.0,
        "hoverHeight": 3.0
      },
      "moves": {
        "levelUpMoves": [
          {
            "level": 0,
            "attacks": [
              "Splash"
            ]
          }
        ],
        "tutorMoves": [],
        "eggMoves": [],
        "tmMoves8": [],
        "trMoves": [],
        "hmMoves": [],
        "transferMoves": [],
        "tmMoves7": [],
        "tmMoves6": [],
        "tmMoves5": [],
        "tmMoves4": [],
        "tmMoves3": [],
        "tmMoves2": [],
        "tmMoves1": [],
        "tmMoves": []
      },
      "abilities": {
        "abilities": [
          "Error"
        ]
      },
      "movement": {
        "rideable": false,
        "canFly": false,
        "canSurf": false,
        "canRideShoulder": false
      },
      "aggression": {
        "timid": 80,
        "passive": 0,
        "aggressive": 20
      },
      "battleStats": {
        "hp": 33,
        "attack": 136,
        "defense": 0,
        "specialAttack": 6,
        "specialDefense": 6,
        "speed": 29
      },
      "spawn": {
        "baseExp": 64,
        "baseFriendship": 70,
        "spawnLevel": 10,
        "spawnLevelRange": 6,
        "spawnLocations": [
          "LAND"
        ]
      },
      "possibleGenders": [
        "MALE",
        "FEMALE"
      ],
      "genderProperties": [
        {
          "gender": "ALL",
          "palettes": [
            {
              "name": "none",
              "texture": "pixelmon:pokemon/000_missingno/all/base/none/texture.png",
              "sprite": "pixelmon:pokemon/000_missingno/all/base/none/sprite.png",
              "particle": "",
              "modelLocator": {
                "factoryType": "NORMAL",
                "pqc": [
                  "pixelmon:pokemon/000_missingno/all/base/none/model.pqc"
                ]
              },
              "sounds": []
            }
          ]
        }
      ],
      "eggGroups": [
        "UNDISCOVERED"
      ],
      "types": [
        "NORMAL"
      ],
      "preEvolutions": [],
      "defaultBaseForm": "",
      "megaItems": [],
      "megas": [],
      "eggCycles": 21,
      "weight": 30.0,
      "catchRate": 1,
      "malePercentage": -1.0,
      "evolutions": [
        {
          "level": 1,
          "to": "Poomon",
          "conditions": [],
          "evoType": "leveling",
          "moves": [
            "Acid"
          ]
        }
      ]
    }
  ],
  "generation": 21
}


Broken Newmon - it has an evolution to Poomon with a condition and crashes on startup
Code: Select all{
  "name": "Newmon",
  "dex": 6001,
  "defaultForms": [
    ""
  ],
  "forms": [
    {
      "name": "",
      "tags": [],
      "experienceGroup": "SLOW",
      "dimensions": {
        "height": 3.0,
        "width": 1.2,
        "length": 1.0,
        "eyeHeight": 3.0,
        "hoverHeight": 3.0
      },
      "moves": {
        "levelUpMoves": [
          {
            "level": 0,
            "attacks": [
              "Splash"
            ]
          }
        ],
        "tutorMoves": [],
        "eggMoves": [],
        "tmMoves8": [],
        "trMoves": [],
        "hmMoves": [],
        "transferMoves": [],
        "tmMoves7": [],
        "tmMoves6": [],
        "tmMoves5": [],
        "tmMoves4": [],
        "tmMoves3": [],
        "tmMoves2": [],
        "tmMoves1": [],
        "tmMoves": []
      },
      "abilities": {
        "abilities": []
      },
      "movement": {
        "rideable": false,
        "canFly": false,
        "canSurf": false,
        "canRideShoulder": false
      },
      "aggression": {
        "timid": 80,
        "passive": 0,
        "aggressive": 20
      },
      "battleStats": {
        "hp": 33,
        "attack": 136,
        "defense": 0,
        "specialAttack": 6,
        "specialDefense": 6,
        "speed": 29
      },
      "spawn": {
        "baseExp": 64,
        "baseFriendship": 70,
        "spawnLevel": 10,
        "spawnLevelRange": 6,
        "spawnLocations": [
          "LAND"
        ]
      },
      "possibleGenders": [
        "MALE",
        "FEMALE"
      ],
      "genderProperties": [
        {
          "gender": "ALL",
          "palettes": [
            {
              "name": "none",
              "texture": "pixelmon:pokemon/000_missingno/all/base/none/texture.png",
              "sprite": "pixelmon:pokemon/000_missingno/all/base/none/sprite.png",
              "particle": "",
              "modelLocator": {
                "factoryType": "NORMAL",
                "pqc": [
                  "pixelmon:pokemon/000_missingno/all/base/none/model.pqc"
                ]
              },
              "sounds": []
            }
          ]
        }
      ],
      "eggGroups": [
        "UNDISCOVERED"
      ],
      "types": [
        "NORMAL"
      ],
      "preEvolutions": [],
      "defaultBaseForm": "",
      "megaItems": [],
      "megas": [],
      "eggCycles": 21,
      "weight": 30.0,
      "catchRate": 1,
      "malePercentage": -1.0,
      "evolutions": [
        {
          "to": "Poomon",
          "conditions": [
            {
              "evolutionRock": "MOSSY_ROCK",
              "maxRangeSquared": 15,
              "evoConditionType": "evolutionRock"
            }
          ],
          "evoType": "leveling",
          "moves": [
            "Acid"
          ]
        }
      ]
    }
  ],
  "generation": 21
}


The added condition for the broken Newmon should match up with Eevee's evolution into Leafeon (but the number is different).

#30976 Posted by Sophie847 » 09 Nov 2023 05:33

Hi there, apologies for the delay. I'm going to take over with this issue

I was able to reproduce the issue described here - an evolution into a custom pokemon (which was defined in the same datapack) causes datapack validation to fail. In my own testing (which was done in a singleplayer, 9.2.5 environment), I found that even without a condition, the evolution to a custom species that isn't already loaded caused the datapack to fail validation.

I also noted that the datapack appeared to be getting cached once succesfully loaded for the first time. As a result I could load the evolved pokemon first in a completely seperate datapack, and then load the pre-evolution without issues (even if the evolved form was later removed).

Could you confirm if this is consistent with the behaviour experienced on your end?

Either way, I'll pass the information I've gathered so far to internal - thanks!

Ticket details

  • Ticket ID: 21129
  • Project: Pixelmon Mod
  • Status: Pending
  • Component: Crash
  • Project version: 1.20.1-9.x.x
  • Priority: Normal
  • Severity: Normal
  • Forge/Sponge: 47.1.46
  • What else would be useful to know?: (unknown)
  • Assigned to: Sophie847
  • Reported by: ThingxII (Send PM)
  • Reporter's tickets: (List all tickets)
  • Reported on: 06 Oct 2023 14:41
  • Ticket last visited by: Sophie847 on 09 Nov 2023 05:33
JOIN THE TEAM