{"record":{"id":"5a27323eec70c182","repo":"Anuken/Mindustry","slug":"unknown-unit-stance-name","errorCode":null,"errorMessage":"Unknown unit stance name: ","messagePattern":"Unknown unit stance name: ","errorType":"validation","errorClass":"IllegalArgumentException","httpStatus":null,"severity":"error","filePath":"core/src/mindustry/mod/ContentParser.java","lineNumber":173,"sourceCode":"        put(UnitCommand.class, (type, data) -> {\n            if(data.isString()){\n               var cmd = content.unitCommand(data.asString());\n               if(cmd != null){\n                   return cmd;\n               }else{\n                   throw new IllegalArgumentException(\"Unknown unit command name: \" + data.asString());\n               }\n            }else{\n                throw new IllegalArgumentException(\"Unit commands must be strings.\");\n            }\n        });\n        put(UnitStance.class, (type, data) -> {\n            if(data.isString()){\n                var cmd = content.unitStance(data.asString());\n                if(cmd != null){\n                    return cmd;\n                }else{\n                    throw new IllegalArgumentException(\"Unknown unit stance name: \" + data.asString());\n                }\n            }else{\n                throw new IllegalArgumentException(\"Unit stances must be strings.\");\n            }\n        });\n        put(BulletType.class, (type, data) -> {\n            if(data.isString()){\n                return field(Bullets.class, data);\n            }else if(data.isArray()){\n                return new MultiBulletType(parser.readValue(BulletType[].class, data));\n            }\n            Class<?> alternate = resolve(Strings.capitalize(data.getString(\"type\", \"basic\")) + \"BulletType\", Object.class, false);\n            Class<?> bc = alternate == Object.class ? resolve(data.getString(\"type\", \"\"), BasicBulletType.class) : alternate;\n            data.remove(\"type\");\n            BulletType result = (BulletType)make(bc);\n            result.minfo.mod = currentMod;\n            readFields(result, data);\n            return result;","sourceCodeStart":155,"sourceCodeEnd":191,"githubUrl":"https://github.com/Anuken/Mindustry/blob/f695ad7e60323ebced984fa26d0bcf0bc54296b4/core/src/mindustry/mod/ContentParser.java#L155-L191","documentation":"Thrown by the UnitStance parser when data is a string but content.unitStance(name) returns null, i.e. no stance with that name is registered.","triggerScenarios":"A mod JSON references a unit stance by a string name absent from the stance registry.","commonSituations":"Typo, stance not available in the current game version, or referencing content from an unloaded mod.","solutions":["Verify the stance name against registered unit stances.","Confirm the game version supports that stance.","Check mod load order if provided by another mod."],"exampleFix":"// before\n\"stance\": \"pursue\"\n// after\n\"stance\": \"pursueEnemy\"","handlingStrategy":"validation","validationCode":"// Verify a unit stance name is registered.\nboolean stanceExists(String name) {\n    return Vars.content.unitStance(name) != null;\n}","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Match stance names exactly as registered.","Confirm version support for the stance.","Check load order for cross-mod stances."],"tags":["modding","json","content-parser","unit-stance"],"backgroundTag":null,"analyzedSha":"f695ad7e60323ebced984fa26d0bcf0bc54296b4","analyzedAt":"2026-08-14T04:31:16.262Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}