45 lines
1.7 KiB
Kotlin
45 lines
1.7 KiB
Kotlin
package mods.betterfoliage.client.render
|
|
|
|
import mods.betterfoliage.BetterFoliageMod
|
|
import mods.betterfoliage.client.config.Config
|
|
import mods.betterfoliage.client.texture.GrassRegistry
|
|
import mods.octarinecore.client.render.CombinedContext
|
|
import mods.octarinecore.client.render.RenderDecorator
|
|
import mods.octarinecore.common.Int3
|
|
import mods.octarinecore.common.horizontalDirections
|
|
import mods.octarinecore.common.offset
|
|
import net.minecraft.tags.BlockTags
|
|
|
|
class RenderConnectedGrass : RenderDecorator(BetterFoliageMod.MOD_ID, BetterFoliageMod.bus) {
|
|
override fun isEligible(ctx: CombinedContext) =
|
|
Config.enabled && Config.connectedGrass.enabled &&
|
|
BlockTags.DIRT_LIKE.contains(ctx.state.block) &&
|
|
GrassRegistry[ctx, up1] != null &&
|
|
(Config.connectedGrass.snowEnabled || !ctx.state(up2).isSnow)
|
|
|
|
override fun render(ctx: CombinedContext) {
|
|
// if the block sides are not visible anyway, render normally
|
|
if (horizontalDirections.none { ctx.shouldSideBeRendered(it) }) {
|
|
ctx.render()
|
|
} else {
|
|
ctx.exchange(Int3.zero, up1).exchange(up1, up2).render()
|
|
}
|
|
}
|
|
}
|
|
|
|
class RenderConnectedGrassLog : RenderDecorator(BetterFoliageMod.MOD_ID, BetterFoliageMod.bus) {
|
|
|
|
override fun isEligible(ctx: CombinedContext) =
|
|
Config.enabled && Config.roundLogs.enabled && Config.roundLogs.connectGrass &&
|
|
BlockTags.DIRT_LIKE.contains(ctx.state.block) &&
|
|
LogRegistry[ctx, up1] != null
|
|
|
|
override fun render(ctx: CombinedContext) {
|
|
val grassDir = horizontalDirections.find { GrassRegistry[ctx, it.offset] != null }
|
|
if (grassDir == null) {
|
|
ctx.render()
|
|
} else {
|
|
ctx.exchange(Int3.zero, grassDir.offset).render()
|
|
}
|
|
}
|
|
} |