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.Identifier import net.shadowfacts.phycon.PhysicalConnectivity import net.shadowfacts.phycon.block.FaceDeviceBlock import net.shadowfacts.phycon.block.redstone_controller.RedstoneControllerBlock import java.util.function.Function /** * @author shadowfacts */ object RedstoneControllerModel: FaceDeviceModel() { private val ON = Identifier(PhysicalConnectivity.MODID, "block/redstone_controller_side_on") private val OFF = Identifier(PhysicalConnectivity.MODID, "block/redstone_controller_side_off") private val onModels = Array(6) { null } private val offModels = Array(6) { null } override fun getSideModelIDs(): Collection { return listOf(ON, OFF) } override fun bakeSideModels(loader: ModelLoader, textureGetter: Function) { defaultRotations.forEachIndexed { i, rot -> onModels[i] = loader.bake(ON, rot) offModels[i] = loader.bake(OFF, rot) } } override fun getSideModel(state: BlockState): BakedModel? { return if (state[RedstoneControllerBlock.POWERED]) { onModels[state[FaceDeviceBlock.FACING].ordinal] } else { offModels[state[FaceDeviceBlock.FACING].ordinal] } } override fun getParticleSprite(): Sprite { return offModels.first()!!.particleSprite } }