PhysicalConnectivity/src/main/kotlin/net/shadowfacts/phycon/client/model/SimpleFaceDeviceModel.kt

42 lines
1.3 KiB
Kotlin

package net.shadowfacts.phycon.client.model
import net.minecraft.block.BlockState
import net.minecraft.client.render.model.BakedModel
import net.minecraft.client.render.model.ModelLoader
import net.minecraft.client.texture.Sprite
import net.minecraft.client.util.SpriteIdentifier
import net.minecraft.util.DyeColor
import net.minecraft.util.Identifier
import net.shadowfacts.phycon.block.FaceDeviceBlock
import net.shadowfacts.phycon.client.util.bakeRecoloredCable
import java.util.function.Function
/**
* @author shadowfacts
*/
class SimpleFaceDeviceModel(
private val sideModelID: Identifier,
): FaceDeviceModel() {
private val sideModels = mutableMapOf<DyeColor, Array<BakedModel>>()
override fun getSideModelIDs(): Collection<Identifier> {
return listOf(sideModelID)
}
override fun bakeSideModels(loader: ModelLoader, textureGetter: Function<SpriteIdentifier, Sprite>) {
DyeColor.values().forEach { color ->
sideModels[color] = Array(6) { i ->
loader.bakeRecoloredCable(sideModelID, defaultRotations[i], textureGetter, color)
}
}
}
override fun getSideModel(state: BlockState): BakedModel {
return sideModels[state[FaceDeviceBlock.COLOR]]!![state[FaceDeviceBlock.FACING].ordinal]
}
override fun getParticleSprite(): Sprite {
return sideModels[DyeColor.BLACK]!!.first().particleSprite
}
}