Anuken/Mindustry · error · IOException
Unknown version: {ver} (are you trying to load a schematic f
Error message
Unknown version: {ver} (are you trying to load a schematic from a newer version of the game?) What it means
Thrown by Schematics.read(InputStream) after the header passes, when the version byte read from the stream is greater than the supported schematic version (Schematics.version, currently 1). This is a forward-compatibility guard: a higher version implies a format the running code cannot safely parse.
Source
Thrown at core/src/mindustry/game/Schematics.java:579
public static Schematic read(Fi file) throws IOException{
Schematic s = read(new DataInputStream(file.read(1024)));
if(!s.tags.containsKey("name")){
s.tags.put("name", file.nameWithoutExtension());
}
s.file = file;
return s;
}
public static Schematic read(InputStream input) throws IOException{
for(byte b : header){
if(input.read() != b){
throw new IOException("Not a schematic file (missing header).");
}
}
int ver = input.read();
if(ver > version) throw new IOException("Unknown version: " + ver + " (are you trying to load a schematic from a newer version of the game?)");
try(DataInputStream stream = new DataInputStream(new InflaterInputStream(input))){
short width = stream.readShort(), height = stream.readShort();
if(limitSchematicSize && (width > 128 || height > 128)) throw new IOException("Invalid schematic: Too large (max possible size is 128x128)");
StringMap map = new StringMap();
int tags = stream.readUnsignedByte();
for(int i = 0; i < tags; i++){
map.put(stream.readUTF(), stream.readUTF());
}
ContentMapper mapper = null;
//set up content mapping if found; this should not fail
if(map.containsKey("contentMap")){
IntMap<ObjectIntMap<String>> nameMap = JsonIO.json.fromJson(IntMap.class, ObjectIntMap.class, map.get("contentMap", "{}"));
IntMap<IntMap<Content>> contentMap = new IntMap<>();View on GitHub (pinned to f695ad7e60)
Solutions
- Update Mindustry to a version >= the one that created the schematic.
- Re-save the schematic in an older/compatible version, or obtain a version-1 schematic.
- Catch the IOException and inform the user the schematic requires a newer game version.
Example fix
// before
Schematic s = Schematics.read(input);
// after
try{
Schematic s = Schematics.read(input);
}catch(IOException e){
ui.showErrorMessage("This schematic was made by a newer version of the game.");
} Defensive patterns
Strategy: try-catch
Validate before calling
// version is read after header; pre-check the game/schematic source version if known
if(knownSchematicVersion > Schematics.version){
ui.showErrorMessage("Schematic requires a newer game version");
return;
} Try / catch
try{ Schematic s = Schematics.read(input); }catch(IOException e){ ui.showErrorMessage("Unsupported schematic version"); } Prevention
- Keep the game updated to read newer schematic versions.
- Catch IOException around Schematics.read and inform the user.
- Tag schematics with the creating version when storing them.
When it happens
Trigger: Loading a schematic saved by a newer game version. The header is valid but the following byte (ver) > Schematics.version. The message hints the user may be loading a schematic from a newer game.
Common situations: Player shares a schematic made in a newer Mindustry build with someone on an older build; loading schematics imported across version boundaries; dev builds with bumped version read by stable.
Related errors
- Unknown save version: {}. Are you trying to load a save from
- Not a schematic file (missing header).
- Invalid schematic: Too large (max possible size is 128x128)
- Invalid schematic: Too many blocks.
- Error reading region "{}".
AI-assisted analysis of Anuken/Mindustry@f695ad7e60 (2026-08-14).
Data as JSON: /api/errors/0862fb3e265acd55.
Report an issue: GitHub.