{"record":{"id":"fd6c982c7779d019","repo":"Anuken/Mindustry","slug":"sector-sector-id-on-planet-sector-planet-name","errorCode":null,"errorMessage":"Sector {sector.id} on planet {sector.planet.name} has no generator or preset defined. Provide a planet generator or preset map.","messagePattern":"Sector (.+?) on planet (.+?) has no generator or preset defined\\. Provide a planet generator or preset map\\.","errorType":"exception","errorClass":"RuntimeException","httpStatus":null,"severity":"error","filePath":"core/src/mindustry/core/World.java","lineNumber":276,"sourceCode":"        endMapLoad();\n    }\n\n    public void loadSector(Sector sector){\n        loadSector(sector, new WorldParams());\n    }\n\n    public void loadSector(Sector sector, WorldParams params){\n        setSectorRules(sector, params.saveInfo);\n\n        int size = sector.getSize();\n        loadGenerator(size, size, tiles -> {\n            if(sector.preset != null){\n                sector.preset.generator.generate(tiles, params);\n                sector.preset.rules.get(state.rules); //apply extra rules\n            }else if(sector.planet.generator != null){\n                sector.planet.generator.generate(tiles, sector, params);\n            }else{\n                throw new RuntimeException(\"Sector \" + sector.id + \" on planet \" + sector.planet.name + \" has no generator or preset defined. Provide a planet generator or preset map.\");\n            }\n            //just in case\n            state.rules.sector = sector;\n        });\n\n        if(params.saveInfo && state.rules.waves){\n            sector.info.waves = state.rules.waves;\n        }\n\n        //postgenerate for bases\n        if(sector.preset == null && sector.planet.generator != null){\n            sector.planet.generator.postGenerate(tiles);\n        }\n\n        //reset rules\n        setSectorRules(sector, params.saveInfo);\n\n        if(state.rules.defaultTeam.core() != null){","sourceCodeStart":258,"sourceCodeEnd":294,"githubUrl":"https://github.com/Anuken/Mindustry/blob/f695ad7e60323ebced984fa26d0bcf0bc54296b4/core/src/mindustry/core/World.java#L258-L294","documentation":"Thrown by World.loadSector when a sector has neither a preset (sector.preset) nor a planet generator (sector.planet.generator). Generation needs one of them to populate tiles; with neither, the world cannot be built. The message includes the sector id and planet name to locate the misconfiguration. This is a RuntimeException during world generation.","triggerScenarios":"Calling World.loadSector(sector, params) for a sector whose sector.preset is null AND sector.planet.generator is null. Happens when a planet is added without assigning its generator field, or a sector's preset was cleared/not set.","commonSituations":"A mod adds a new planet and forgets to set planet.generator; a custom sector references a preset that failed to load (preset became null); loading a campaign sector on a planet whose generator was removed in a refactor.","solutions":["Set a generator on the planet: planet.generator = new YourPlanetGenerator(); before loadSector is invoked.","Or assign a preset to the sector (sector.preset = ...) that supplies its own generator and rules.","Verify the planet is fully constructed (generator assigned) in the planet/content registration code.","If loading a save tied to a removed generator, migrate or regenerate the sector."],"exampleFix":"// before\nplanet.generator = null;\nworld.loadSector(sector, params);\n\n// after\nplanet.generator = new MyPlanetGenerator();\nworld.loadSector(sector, params);","handlingStrategy":"validation","validationCode":"// verify a generator or preset exists before loading the sector\nif(sector.preset == null && (sector.planet.generator == null)){\n    throw new IllegalStateException(\"Planet '\" + sector.planet.name + \"' needs a generator or preset\");\n}\nworld.loadSector(sector, params);","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Always assign planet.generator when defining a new planet.","Unit-test planet definitions asserting generator != null.","When clearing/invalidating presets, ensure a generator remains as fallback.","Log planet registration to confirm generator assignment at startup."],"tags":["sector","generation","planet","campaign","world"],"backgroundTag":null,"analyzedSha":"f695ad7e60323ebced984fa26d0bcf0bc54296b4","analyzedAt":"2026-08-14T04:31:16.262Z","schemaVersion":2},"datasetVersion":"2026-08-14T05:17:29.042Z"}