package ru.dbotthepony.kstarbound.defs.tile import com.google.gson.GsonBuilder import ru.dbotthepony.kstarbound.io.json.builder.FactoryAdapter data class MaterialModifier( val modId: Int, val modName: String, val itemDrop: String? = null, val description: String = "...", val health: Int = 0, val harvestLevel: Int = 0, val breaksWithTile: Boolean = true, val grass: Boolean = false, val miningSounds: List = listOf(), val miningParticle: String? = null, override val renderTemplate: RenderTemplate, override val renderParameters: RenderParameters ) : IRenderableTile { init { require(modId > 0) { "Invalid material modifier ID $modId" } } companion object { val ADAPTER = FactoryAdapter.Builder(MaterialModifier::class) .auto(MaterialModifier::modId) .auto(MaterialModifier::modName) .auto(MaterialModifier::itemDrop) .auto(MaterialModifier::description) .auto(MaterialModifier::health) .auto(MaterialModifier::harvestLevel) .auto(MaterialModifier::breaksWithTile) .auto(MaterialModifier::grass) .autoList(MaterialModifier::miningSounds) .auto(MaterialModifier::miningParticle) .add(MaterialModifier::renderTemplate, RenderTemplate.CACHE) .auto(MaterialModifier::renderParameters) .build() fun registerGson(gsonBuilder: GsonBuilder) { gsonBuilder.registerTypeAdapter(MaterialModifier::class.java, ADAPTER) } } }