mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-15 02:15:34 -04:00
pixlyzer data: load entity data
This commit is contained in:
parent
7bdb03b252
commit
a81db59e45
@ -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
|
||||
)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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<ModIdentifier, JsonObject>) {
|
||||
for ((identifier, model) in data) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user