{"record":{"id":"1824406ef11165b1","repo":"HMCL-dev/HMCL","slug":"unsupported-mod-loader","errorCode":null,"errorMessage":"Unsupported mod loader ","messagePattern":"Unsupported mod loader ","errorType":"exception","errorClass":"IllegalStateException","httpStatus":null,"severity":"error","filePath":"HMCLCore/src/main/java/org/jackhuang/hmcl/modpack/modrinth/ModrinthInstallTask.java","lineNumber":205,"sourceCode":"                switch (modLoader.getKey()) {\n                    case \"minecraft\":\n                        break;\n                    case \"forge\":\n                        builder.component(GameComponentType.FORGE, modLoader.getValue());\n                        break;\n                    case \"neoforge\":\n                    // https://github.com/HMCL-dev/HMCL/pull/5170\n                    case \"neo-forge\":\n                        builder.component(GameComponentType.NEO_FORGE, modLoader.getValue());\n                        break;\n                    case \"fabric-loader\":\n                        builder.component(GameComponentType.FABRIC, modLoader.getValue());\n                        break;\n                    case \"quilt-loader\":\n                        builder.component(GameComponentType.QUILT, modLoader.getValue());\n                        break;\n                    default:\n                        throw new IllegalStateException(\"Unsupported mod loader \" + modLoader.getKey());\n                }\n            }\n            dependents.add(0, builder.buildAsync());\n        }\n    }\n\n    @Override\n    public Collection<Task<?>> getDependents() {\n        return dependents;\n    }\n\n    @Override\n    public Collection<Task<?>> getDependencies() {\n        return dependencies;\n    }\n\n    @Override\n    public void execute() throws Exception {","sourceCodeStart":187,"sourceCodeEnd":223,"githubUrl":"https://github.com/HMCL-dev/HMCL/blob/24702dc5a0214034f4c27166d5fd30cad08cec19/HMCLCore/src/main/java/org/jackhuang/hmcl/modpack/modrinth/ModrinthInstallTask.java#L187-L223","documentation":"The Modrinth modpack manifest lists a dependencies key that HMCL cannot map to a supported mod loader. Only forge-loader, neoforge-loader, fabric-loader, and quilt-loader are recognized; any other key hits the default branch and aborts installation.","triggerScenarios":"Importing a Modrinth .mrpack whose modrinth.index.json dependencies contains an unrecognized loader key or a key added by a newer Modrinth spec version.","commonSituations":"New loader types introduced by Modrinth before HMCL adds support; hand-edited manifests with typos like 'forge' or 'fabric' instead of the full loader key.","solutions":["Update HMCL to the latest version which may support the new loader","Edit modrinth.index.json dependencies to use a supported key (forge-loader, neoforge-loader, fabric-loader, quilt-loader)","Remove the unsupported dependency entry and install the loader manually after the pack installs"],"exampleFix":"// before\n\"dependencies\": { \"minecraft\": \"1.20.1\", \"fabric\": \"0.15.0\" }\n// after\n\"dependencies\": { \"minecraft\": \"1.20.1\", \"fabric-loader\": \"0.15.0\" }","handlingStrategy":"validation","validationCode":"Set.of(\"forge-loader\",\"neoforge-loader\",\"fabric-loader\",\"quilt-loader\").containsAll(manifest.getDependencies().keySet())","typeGuard":null,"tryCatchPattern":"try { task.start(); } catch (IllegalStateException e) { /* notify user to update HMCL or install loader manually */ }","preventionTips":["Update HMCL before installing new packs","Pre-validate dependencies keys against supported loader names","Avoid hand-editing modrinth.index.json"],"tags":["modrinth","mod-loader","unsupported-value"],"backgroundTag":"unsupported-enum-value","analyzedSha":"24702dc5a0214034f4c27166d5fd30cad08cec19","analyzedAt":"2026-09-10T12:36:46.680Z","contentChangedAt":"2026-09-10T12:36:46.680Z","schemaVersion":2},"datasetVersion":"2026-09-23T08:17:48.524Z"}