diff --git a/src/main/java/de/bixilon/minosoft/data/mappings/blocks/Block.kt b/src/main/java/de/bixilon/minosoft/data/mappings/blocks/Block.kt index dc80a0119..a4ec8136d 100644 --- a/src/main/java/de/bixilon/minosoft/data/mappings/blocks/Block.kt +++ b/src/main/java/de/bixilon/minosoft/data/mappings/blocks/Block.kt @@ -22,16 +22,14 @@ import de.bixilon.minosoft.data.text.RGBColor import de.bixilon.minosoft.gui.rendering.TintColorCalculator import de.bixilon.minosoft.gui.rendering.chunk.models.renderable.BlockLikeRenderer -open class Block : RegistryItem { - override val resourceLocation: ResourceLocation - - open val explosionResistance: Float - open val tintColor: RGBColor? - open val randomOffsetType: RandomOffsetTypes? - open val tint: ResourceLocation? +open class Block(override val resourceLocation: ResourceLocation, mappings: VersionMapping, data: JsonObject) : RegistryItem { + open val explosionResistance: Float = data["explosion_resistance"]?.asFloat ?: 0.0f + open val tintColor: RGBColor? = data["tint_color"]?.asInt?.let { TintColorCalculator.getJsonColor(it) } + open val randomOffsetType: RandomOffsetTypes? = data["offset_type"]?.asString?.let { RandomOffsetTypes[it] } + open val tint: ResourceLocation? = data["tint"]?.asString?.let { ResourceLocation(it) } open val renderOverride: List? = null - private val itemId: Int + private val itemId: Int = data["item"]?.asInt ?: 0 open lateinit var states: Set protected set @@ -40,15 +38,6 @@ open class Block : RegistryItem { open lateinit var item: Item protected set - constructor(resourceLocation: ResourceLocation, mappings: VersionMapping, data: JsonObject) { - resourceLocation.also { this.resourceLocation = it } - (data["explosion_resistance"]?.asFloat ?: 0.0f).also { explosionResistance = it } - data["tint_color"]?.asInt?.let { TintColorCalculator.getJsonColor(it) }.also { this@Block.tintColor = it } - data["offset_type"]?.asString?.let { RandomOffsetTypes[it] }.also { randomOffsetType = it } - itemId = data["item"]?.asInt ?: 0 - data["tint"]?.asString?.let { ResourceLocation(it) }.also { tint = it } - } - override fun postInit(versionMapping: VersionMapping) { item = versionMapping.itemRegistry.get(itemId) } diff --git a/src/main/java/de/bixilon/minosoft/data/mappings/blocks/FluidBlock.kt b/src/main/java/de/bixilon/minosoft/data/mappings/blocks/FluidBlock.kt index 921714512..dc16a81fe 100644 --- a/src/main/java/de/bixilon/minosoft/data/mappings/blocks/FluidBlock.kt +++ b/src/main/java/de/bixilon/minosoft/data/mappings/blocks/FluidBlock.kt @@ -20,20 +20,19 @@ import de.bixilon.minosoft.data.mappings.versions.VersionMapping import de.bixilon.minosoft.gui.rendering.chunk.models.renderable.BlockLikeRenderer import de.bixilon.minosoft.gui.rendering.chunk.models.renderable.FluidRenderer -class FluidBlock : Block { - override val renderOverride: List - - open val stillFluid: Fluid - open val flowingFluid: Fluid +open class FluidBlock(resourceLocation: ResourceLocation, mappings: VersionMapping, data: JsonObject) : Block(resourceLocation, mappings, data) { + open val stillFluid: Fluid = mappings.fluidRegistry.get(data["still_fluid"].asInt) + open val flowingFluid: Fluid = mappings.fluidRegistry.get(data["flow_fluid"].asInt) val fluidRenderer: FluidRenderer + override val renderOverride: List - constructor(resourceLocation: ResourceLocation, mappings: VersionMapping, data: JsonObject) : super(resourceLocation, mappings, data) { - stillFluid = mappings.fluidRegistry.get(data["still_fluid"].asInt) - flowingFluid = mappings.fluidRegistry.get(data["flow_fluid"].asInt) - - fluidRenderer = FluidRenderer(this, stillFluid, flowingFluid) - renderOverride = listOf(fluidRenderer) + init { + also { + fluidRenderer = FluidRenderer(it, stillFluid, flowingFluid) + renderOverride = listOf(fluidRenderer) + } } + } diff --git a/src/main/java/de/bixilon/minosoft/data/mappings/items/BlockItem.kt b/src/main/java/de/bixilon/minosoft/data/mappings/items/BlockItem.kt index 11b24c624..34dd18cbe 100644 --- a/src/main/java/de/bixilon/minosoft/data/mappings/items/BlockItem.kt +++ b/src/main/java/de/bixilon/minosoft/data/mappings/items/BlockItem.kt @@ -22,6 +22,6 @@ open class BlockItem( resourceLocation: ResourceLocation, data: JsonObject, versionMapping: VersionMapping, -) : Item(resourceLocation, data, versionMapping) { +) : Item(resourceLocation, versionMapping, data) { val block: Block = versionMapping.blockRegistry.get(data["block"].asInt) } diff --git a/src/main/java/de/bixilon/minosoft/data/mappings/items/Item.kt b/src/main/java/de/bixilon/minosoft/data/mappings/items/Item.kt index 6f04c7cea..8dd0a6b66 100644 --- a/src/main/java/de/bixilon/minosoft/data/mappings/items/Item.kt +++ b/src/main/java/de/bixilon/minosoft/data/mappings/items/Item.kt @@ -24,8 +24,8 @@ import de.bixilon.minosoft.data.mappings.versions.VersionMapping open class Item( override val resourceLocation: ResourceLocation, - data: JsonObject, versionMapping: VersionMapping, + data: JsonObject, ) : RegistryItem, Translatable { val rarity: Rarities = data["rarity"]?.asInt?.let { Rarities[it] } ?: Rarities.COMMON val maxStackSize: Int = data["max_stack_size"]?.asInt ?: 64 @@ -43,10 +43,10 @@ open class Item( check(mappings != null) { "VersionMapping is null!" } return when (data["class"].asString) { "BlockItem" -> BlockItem(resourceLocation, data, mappings) - "ArmorItem" -> ArmorItem(resourceLocation, data, mappings) + "ArmorItem" -> ArmorItem(resourceLocation, mappings, data) // "Item" -> Item(resourceLocation, data) // else -> TODO("Can not find item class: ${data["class"].asString}") - else -> Item(resourceLocation, data, mappings) + else -> Item(resourceLocation, mappings, data) } } } diff --git a/src/main/java/de/bixilon/minosoft/data/mappings/items/armor/ArmorItem.kt b/src/main/java/de/bixilon/minosoft/data/mappings/items/armor/ArmorItem.kt index dd61b87e9..357db7ea6 100644 --- a/src/main/java/de/bixilon/minosoft/data/mappings/items/armor/ArmorItem.kt +++ b/src/main/java/de/bixilon/minosoft/data/mappings/items/armor/ArmorItem.kt @@ -21,9 +21,9 @@ import de.bixilon.minosoft.data.mappings.versions.VersionMapping open class ArmorItem( resourceLocation: ResourceLocation, - data: JsonObject, versionMapping: VersionMapping, -) : Item(resourceLocation, data, versionMapping) { + data: JsonObject, +) : Item(resourceLocation, versionMapping, data) { val protection = data["defense"].asFloat val toughness = data["toughness"].asFloat val equipmentSlot = data["equipment_slot"].asString.let { InventorySlots.EquipmentSlots.NAME_MAP[it]!! }