{"record":{"id":"6e825d12ed13e13a","repo":"HMCL-dev/HMCL","slug":"cursefile-projectid-fileid-cannot-be-empty","errorCode":null,"errorMessage":"CurseFile.{projectID|fileID} cannot be empty.","messagePattern":"CurseFile\\.(.+?) cannot be empty\\.","errorType":"validation","errorClass":"JsonParseException","httpStatus":null,"severity":"error","filePath":"HMCLCore/src/main/java/org/jackhuang/hmcl/modpack/mcbbs/McbbsModpackManifest.java","lineNumber":350,"sourceCode":"@Override\npublic void validate() throws JsonParseException, TolerableValidationException {\n    super.validate();\n\n    if (projectID == 0 || fileID == 0) {\n        throw new JsonParseException(\"CurseFile.{projectID|fileID} cannot be empty.\");\n    }\n}","sourceCodeStart":332,"sourceCodeEnd":368,"githubUrl":"https://github.com/HMCL-dev/HMCL/blob/24702dc5a0214034f4c27166d5fd30cad08cec19/HMCLCore/src/main/java/org/jackhuang/hmcl/modpack/mcbbs/McbbsModpackManifest.java#L332-L368","documentation":"Validation of the CurseFile entry inside an MCBBS manifest: projectID or fileID is 0, meaning the CurseForge project/file identifiers were missing. Without them HMCL cannot build the download URL, so the manifest entry is rejected.","triggerScenarios":"Thrown at HMCLCore/src/main/java/org/jackhuang/hmcl/modpack/mcbbs/McbbsModpackManifest.java:350 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Fix the manifest entry to include valid nonzero projectID and fileID","Remove the broken CurseFile entry or replace it with a direct URL"],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"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"}