diff --git a/src/main/java/de/bixilon/minosoft/data/mappings/versions/VersionMapping.java b/src/main/java/de/bixilon/minosoft/data/mappings/versions/VersionMapping.java index 7f2af49bd..2f6f1ae79 100644 --- a/src/main/java/de/bixilon/minosoft/data/mappings/versions/VersionMapping.java +++ b/src/main/java/de/bixilon/minosoft/data/mappings/versions/VersionMapping.java @@ -429,10 +429,19 @@ public class VersionMapping { } // meta data index if (data.has("data")) { - JsonArray metaDataJson = data.getAsJsonArray("data"); - for (JsonElement jsonElement : metaDataJson) { - String field = jsonElement.getAsString(); - entityMetaIndexMap.put(EntityMetaDataFields.valueOf(field), metaDataIndexOffset++); + JsonElement metaDataJson = data.get("data"); + if (metaDataJson instanceof JsonArray metaDataJsonArray) { + for (JsonElement jsonElement : metaDataJsonArray) { + String field = jsonElement.getAsString(); + entityMetaIndexMap.put(EntityMetaDataFields.valueOf(field), metaDataIndexOffset++); + } + } else if (metaDataJson instanceof JsonObject metaDataJsonObject) { + for (String key : metaDataJsonObject.keySet()) { + entityMetaIndexMap.put(EntityMetaDataFields.valueOf(key), metaDataJsonObject.get(key).getAsInt()); + metaDataIndexOffset++; + } + } else { + throw new RuntimeException("entities.json is invalid"); } } entityMetaIndexOffsetParentMapping.put(identifier, new Pair<>(parent, metaDataIndexOffset));