58 lines
2.3 KiB
Kotlin
58 lines
2.3 KiB
Kotlin
package mods.betterfoliage.render.block.vanillaold
|
|
|
|
import mods.betterfoliage.BetterFoliageMod
|
|
import mods.betterfoliage.config.BlockConfig
|
|
import mods.betterfoliage.config.Config
|
|
import mods.betterfoliage.integration.ShadersModIntegration
|
|
import mods.betterfoliage.resource.Identifier
|
|
import mods.betterfoliage.render.old.RenderDecorator
|
|
import mods.betterfoliage.render.lighting.FlatOffsetNoColor
|
|
import mods.betterfoliage.render.old.CombinedContext
|
|
import mods.betterfoliage.render.toCross
|
|
import mods.betterfoliage.render.xzDisk
|
|
import mods.betterfoliage.util.Int3
|
|
import net.minecraft.util.Direction.DOWN
|
|
import net.minecraft.util.Direction.UP
|
|
|
|
class RenderLilypad : RenderDecorator(BetterFoliageMod.MOD_ID, BetterFoliageMod.bus) {
|
|
|
|
val rootModel = model {
|
|
verticalRectangle(x1 = -0.5, z1 = 0.5, x2 = 0.5, z2 = -0.5, yBottom = -1.5, yTop = -0.5)
|
|
.setFlatShader(FlatOffsetNoColor(Int3.zero))
|
|
.toCross(UP).addAll()
|
|
}
|
|
val flowerModel = model {
|
|
verticalRectangle(x1 = -0.5, z1 = 0.5, x2 = 0.5, z2 = -0.5, yBottom = 0.0, yTop = 1.0)
|
|
.scale(0.5).move(0.5 to DOWN)
|
|
.setFlatShader(FlatOffsetNoColor(Int3.zero))
|
|
.toCross(UP).addAll()
|
|
}
|
|
val rootIcon = spriteSet { idx -> Identifier(BetterFoliageMod.MOD_ID, "blocks/better_lilypad_roots_$idx") }
|
|
val flowerIcon = spriteSet { idx -> Identifier(BetterFoliageMod.MOD_ID, "blocks/better_lilypad_flower_$idx") }
|
|
val perturbs = vectorSet(64) { modelIdx -> xzDisk(modelIdx) * Config.lilypad.hOffset }
|
|
|
|
override fun isEligible(ctx: CombinedContext): Boolean =
|
|
Config.enabled && Config.lilypad.enabled &&
|
|
BlockConfig.lilypad.matchesClass(ctx.state.block)
|
|
|
|
override fun render(ctx: CombinedContext) {
|
|
ctx.render()
|
|
|
|
val rand = ctx.semiRandomArray(5)
|
|
ShadersModIntegration.grass(ctx) {
|
|
ctx.render(
|
|
rootModel.model,
|
|
translation = ctx.blockCenter.add(perturbs[rand[2]]),
|
|
forceFlat = true,
|
|
icon = { ctx, qi, q -> rootIcon[rand[qi and 1]] }
|
|
)
|
|
}
|
|
|
|
if (rand[3] < Config.lilypad.flowerChance) ctx.render(
|
|
flowerModel.model,
|
|
translation = ctx.blockCenter.add(perturbs[rand[4]]),
|
|
forceFlat = true,
|
|
icon = { _, _, _ -> flowerIcon[rand[0]] }
|
|
)
|
|
}
|
|
} |