From a81db59e454d777285247c2e1176e92f93920ec5 Mon Sep 17 00:00:00 2001 From: Bixilon Date: Tue, 23 Feb 2021 21:44:39 +0100 Subject: [PATCH] pixlyzer data: load entity data --- .../data/entities/EntityInformation.kt | 16 +++++++++--- .../data/mappings/versions/VersionMapping.kt | 26 ++++++++++++++++++- 2 files changed, 37 insertions(+), 5 deletions(-) diff --git a/src/main/java/de/bixilon/minosoft/data/entities/EntityInformation.kt b/src/main/java/de/bixilon/minosoft/data/entities/EntityInformation.kt index 9ffb8a1bd..83fbab2a2 100644 --- a/src/main/java/de/bixilon/minosoft/data/entities/EntityInformation.kt +++ b/src/main/java/de/bixilon/minosoft/data/entities/EntityInformation.kt @@ -17,15 +17,23 @@ import de.bixilon.minosoft.data.mappings.ModIdentifier data class EntityInformation( val identifier: ModIdentifier, + val descriptionId: String?, val width: Float, val height: Float, + val size_fixed: Boolean, + val fireImmune: Boolean, ) { companion object { - fun deserialize(identifier: ModIdentifier, data: JsonObject): EntityInformation? { - return if (data.has("width") && data.has("height")) { - EntityInformation(identifier, data["width"].asFloat, data["height"].asFloat) - } else null + fun deserialize(identifier: ModIdentifier, data: JsonObject): EntityInformation { + return EntityInformation( + identifier = identifier, + descriptionId = data["description_id"]?.asString, + width = data["width"].asFloat, + height = data["height"].asFloat, + fireImmune = data["fire_immune"]?.asBoolean ?: false, + size_fixed = data["site_fixed"]?.asBoolean ?: false + ) } } } diff --git a/src/main/java/de/bixilon/minosoft/data/mappings/versions/VersionMapping.kt b/src/main/java/de/bixilon/minosoft/data/mappings/versions/VersionMapping.kt index 532eb53e5..07b510462 100644 --- a/src/main/java/de/bixilon/minosoft/data/mappings/versions/VersionMapping.kt +++ b/src/main/java/de/bixilon/minosoft/data/mappings/versions/VersionMapping.kt @@ -14,6 +14,7 @@ package de.bixilon.minosoft.data.mappings.versions import com.google.common.collect.HashBiMap import com.google.gson.JsonObject +import de.bixilon.minosoft.data.EntityClassMappings import de.bixilon.minosoft.data.entities.EntityInformation import de.bixilon.minosoft.data.entities.EntityMetaDataFields import de.bixilon.minosoft.data.entities.entities.Entity @@ -126,12 +127,35 @@ class VersionMapping(var version: Version?) { biomeRegistry.initialize(pixlyzerData["biomes"]?.asJsonObject, this, Biome.Companion) dimensionRegistry.initialize(pixlyzerData["dimensions"]?.asJsonObject, this, Dimension.Companion) - + loadEntities(pixlyzerData["entities"]?.asJsonObject) // post init biomeRegistry.postInit(this) isFullyLoaded = true } + private fun loadEntities(data: JsonObject?) { + if (data == null) { + return + } + + for ((identifierName, entity) in data.entrySet()) { + check(entity is JsonObject) + val identifier = ModIdentifier(identifierName) + EntityClassMappings.getByIdentifier(identifier)?.let { + // not abstract + entityInformationMap[it] = EntityInformation.deserialize(identifier, entity) + entityIdClassMap[entity["id"].asInt] = it + } + entity["meta"]?.asJsonObject?.let { + for ((minosoftFieldName, index) in it.entrySet()) { + val minosoftField = EntityMetaDataFields.valueOf(minosoftFieldName) + entityMetaIndexMap[minosoftField] = index.asInt + } + } + + } + } + private fun loadBlockModels(data: Map) { for ((identifier, model) in data) {