48 lines
1.5 KiB
Kotlin
48 lines
1.5 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.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<BakedModel?>(6) { null }
|
|
private val offModels = Array<BakedModel?>(6) { null }
|
|
|
|
override fun getSideModelIDs(): Collection<Identifier> {
|
|
return listOf(ON, OFF)
|
|
}
|
|
|
|
override fun bakeSideModels(loader: ModelLoader, textureGetter: Function<SpriteIdentifier, Sprite>) {
|
|
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
|
|
}
|
|
|
|
}
|