mirror of
https://gitlab.bixilon.de/bixilon/minosoft.git
synced 2025-09-15 10:25:06 -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(
|
data class EntityInformation(
|
||||||
val identifier: ModIdentifier,
|
val identifier: ModIdentifier,
|
||||||
|
val descriptionId: String?,
|
||||||
val width: Float,
|
val width: Float,
|
||||||
val height: Float,
|
val height: Float,
|
||||||
|
val size_fixed: Boolean,
|
||||||
|
val fireImmune: Boolean,
|
||||||
) {
|
) {
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
fun deserialize(identifier: ModIdentifier, data: JsonObject): EntityInformation? {
|
fun deserialize(identifier: ModIdentifier, data: JsonObject): EntityInformation {
|
||||||
return if (data.has("width") && data.has("height")) {
|
return EntityInformation(
|
||||||
EntityInformation(identifier, data["width"].asFloat, data["height"].asFloat)
|
identifier = identifier,
|
||||||
} else null
|
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.common.collect.HashBiMap
|
||||||
import com.google.gson.JsonObject
|
import com.google.gson.JsonObject
|
||||||
|
import de.bixilon.minosoft.data.EntityClassMappings
|
||||||
import de.bixilon.minosoft.data.entities.EntityInformation
|
import de.bixilon.minosoft.data.entities.EntityInformation
|
||||||
import de.bixilon.minosoft.data.entities.EntityMetaDataFields
|
import de.bixilon.minosoft.data.entities.EntityMetaDataFields
|
||||||
import de.bixilon.minosoft.data.entities.entities.Entity
|
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)
|
biomeRegistry.initialize(pixlyzerData["biomes"]?.asJsonObject, this, Biome.Companion)
|
||||||
dimensionRegistry.initialize(pixlyzerData["dimensions"]?.asJsonObject, this, Dimension.Companion)
|
dimensionRegistry.initialize(pixlyzerData["dimensions"]?.asJsonObject, this, Dimension.Companion)
|
||||||
|
|
||||||
|
loadEntities(pixlyzerData["entities"]?.asJsonObject)
|
||||||
// post init
|
// post init
|
||||||
biomeRegistry.postInit(this)
|
biomeRegistry.postInit(this)
|
||||||
isFullyLoaded = true
|
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>) {
|
private fun loadBlockModels(data: Map<ModIdentifier, JsonObject>) {
|
||||||
for ((identifier, model) in data) {
|
for ((identifier, model) in data) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user