2021-03-06 20:32:38 +00:00
|
|
|
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
|
2021-03-15 22:30:35 +00:00
|
|
|
import net.minecraft.client.util.SpriteIdentifier
|
|
|
|
import net.minecraft.util.DyeColor
|
2021-03-06 20:32:38 +00:00
|
|
|
import net.minecraft.util.Identifier
|
|
|
|
import net.shadowfacts.phycon.block.FaceDeviceBlock
|
2021-03-15 22:30:35 +00:00
|
|
|
import net.shadowfacts.phycon.client.util.bakeRecoloredCable
|
|
|
|
import java.util.function.Function
|
2021-03-06 20:32:38 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
* @author shadowfacts
|
|
|
|
*/
|
|
|
|
class SimpleFaceDeviceModel(
|
|
|
|
private val sideModelID: Identifier,
|
|
|
|
): FaceDeviceModel() {
|
2021-03-15 22:30:35 +00:00
|
|
|
private val sideModels = mutableMapOf<DyeColor, Array<BakedModel>>()
|
2021-03-06 20:32:38 +00:00
|
|
|
|
|
|
|
override fun getSideModelIDs(): Collection<Identifier> {
|
|
|
|
return listOf(sideModelID)
|
|
|
|
}
|
|
|
|
|
2021-03-15 22:30:35 +00:00
|
|
|
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)
|
|
|
|
}
|
2021-03-06 20:32:38 +00:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-03-15 22:30:35 +00:00
|
|
|
override fun getSideModel(state: BlockState): BakedModel {
|
|
|
|
return sideModels[state[FaceDeviceBlock.COLOR]]!![state[FaceDeviceBlock.FACING].ordinal]
|
2021-03-06 20:32:38 +00:00
|
|
|
}
|
|
|
|
|
2021-12-22 23:59:51 +00:00
|
|
|
override fun getParticleSprite(): Sprite {
|
|
|
|
return sideModels[DyeColor.BLACK]!!.first().particleSprite
|
2021-03-06 20:32:38 +00:00
|
|
|
}
|
|
|
|
}
|