Compare commits
1 Commits
1.15.2-For
...
1.15.2-For
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a97a575dd5 |
@@ -4,7 +4,7 @@ org.gradle.daemon=false
|
|||||||
group = com.github.octarine-noise
|
group = com.github.octarine-noise
|
||||||
jarName = BetterFoliage-Forge
|
jarName = BetterFoliage-Forge
|
||||||
|
|
||||||
version = 2.6.0
|
version = 2.6.1
|
||||||
|
|
||||||
mcVersion = 1.15.2
|
mcVersion = 1.15.2
|
||||||
forgeVersion = 31.2.44
|
forgeVersion = 31.2.44
|
||||||
|
|||||||
18
src/main/kotlin/mods/betterfoliage/config/MiscDefaults.kt
Normal file
18
src/main/kotlin/mods/betterfoliage/config/MiscDefaults.kt
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
package mods.betterfoliage.config
|
||||||
|
|
||||||
|
import net.minecraft.block.BlockState
|
||||||
|
import net.minecraft.block.Blocks
|
||||||
|
import net.minecraft.block.material.Material
|
||||||
|
import net.minecraft.world.biome.Biome
|
||||||
|
|
||||||
|
val CACTUS_BLOCKS = listOf(Blocks.CACTUS)
|
||||||
|
val DIRT_BLOCKS = listOf(Blocks.DIRT, Blocks.COARSE_DIRT, Blocks.PODZOL)
|
||||||
|
val SAND_BLOCKS = listOf(Blocks.SAND, Blocks.RED_SAND)
|
||||||
|
val NETHERRACK_BLOCKS = listOf(Blocks.NETHERRACK)
|
||||||
|
val LILYPAD_BLOCKS = listOf(Blocks.LILY_PAD)
|
||||||
|
val MYCELIUM_BLOCKS = listOf(Blocks.MYCELIUM)
|
||||||
|
|
||||||
|
val SALTWATER_BIOMES = listOf(Biome.Category.BEACH, Biome.Category.OCEAN)
|
||||||
|
|
||||||
|
val SNOW_MATERIALS = listOf(Material.SNOW_BLOCK, Material.SNOW)
|
||||||
|
val BlockState.isSnow: Boolean get() = material in SNOW_MATERIALS
|
||||||
@@ -2,6 +2,7 @@ package mods.betterfoliage.render.block.vanilla
|
|||||||
|
|
||||||
import mods.betterfoliage.BetterFoliageMod
|
import mods.betterfoliage.BetterFoliageMod
|
||||||
import mods.betterfoliage.BetterFoliage
|
import mods.betterfoliage.BetterFoliage
|
||||||
|
import mods.betterfoliage.config.CACTUS_BLOCKS
|
||||||
import mods.betterfoliage.config.Config
|
import mods.betterfoliage.config.Config
|
||||||
import mods.betterfoliage.model.HalfBakedSpecialWrapper
|
import mods.betterfoliage.model.HalfBakedSpecialWrapper
|
||||||
import mods.betterfoliage.model.HalfBakedWrapperKey
|
import mods.betterfoliage.model.HalfBakedWrapperKey
|
||||||
@@ -33,8 +34,6 @@ import net.minecraft.util.Direction.DOWN
|
|||||||
import net.minecraft.util.ResourceLocation
|
import net.minecraft.util.ResourceLocation
|
||||||
|
|
||||||
object StandardCactusDiscovery : AbstractModelDiscovery() {
|
object StandardCactusDiscovery : AbstractModelDiscovery() {
|
||||||
val CACTUS_BLOCKS = listOf(Blocks.CACTUS)
|
|
||||||
|
|
||||||
override fun processModel(ctx: ModelDiscoveryContext) {
|
override fun processModel(ctx: ModelDiscoveryContext) {
|
||||||
val model = ctx.getUnbaked()
|
val model = ctx.getUnbaked()
|
||||||
if (model is BlockModel && ctx.blockState.block in CACTUS_BLOCKS) {
|
if (model is BlockModel && ctx.blockState.block in CACTUS_BLOCKS) {
|
||||||
|
|||||||
@@ -3,6 +3,9 @@ package mods.betterfoliage.render.block.vanilla
|
|||||||
import mods.betterfoliage.BetterFoliageMod
|
import mods.betterfoliage.BetterFoliageMod
|
||||||
import mods.betterfoliage.BetterFoliage
|
import mods.betterfoliage.BetterFoliage
|
||||||
import mods.betterfoliage.config.Config
|
import mods.betterfoliage.config.Config
|
||||||
|
import mods.betterfoliage.config.DIRT_BLOCKS
|
||||||
|
import mods.betterfoliage.config.SALTWATER_BIOMES
|
||||||
|
import mods.betterfoliage.integration.ShadersModIntegration
|
||||||
import mods.betterfoliage.model.HalfBakedSpecialWrapper
|
import mods.betterfoliage.model.HalfBakedSpecialWrapper
|
||||||
import mods.betterfoliage.model.HalfBakedWrapperKey
|
import mods.betterfoliage.model.HalfBakedWrapperKey
|
||||||
import mods.betterfoliage.model.SpecialRenderModel
|
import mods.betterfoliage.model.SpecialRenderModel
|
||||||
@@ -34,8 +37,6 @@ import net.minecraft.util.ResourceLocation
|
|||||||
import net.minecraft.world.biome.Biome
|
import net.minecraft.world.biome.Biome
|
||||||
|
|
||||||
object StandardDirtDiscovery : AbstractModelDiscovery() {
|
object StandardDirtDiscovery : AbstractModelDiscovery() {
|
||||||
val DIRT_BLOCKS = listOf(Blocks.DIRT, Blocks.COARSE_DIRT, Blocks.PODZOL)
|
|
||||||
|
|
||||||
fun canRenderInLayer(layer: RenderType) = when {
|
fun canRenderInLayer(layer: RenderType) = when {
|
||||||
!Config.enabled -> layer == RenderType.getSolid()
|
!Config.enabled -> layer == RenderType.getSolid()
|
||||||
!Config.connectedGrass.enabled && !Config.algae.enabled && !Config.reed.enabled -> layer == RenderType.getSolid()
|
!Config.connectedGrass.enabled && !Config.algae.enabled && !Config.reed.enabled -> layer == RenderType.getSolid()
|
||||||
@@ -64,7 +65,8 @@ class StandardDirtModel(
|
|||||||
override fun render(ctx: RenderCtxBase, noDecorations: Boolean) {
|
override fun render(ctx: RenderCtxBase, noDecorations: Boolean) {
|
||||||
if (!Config.enabled || noDecorations) return super.render(ctx, noDecorations)
|
if (!Config.enabled || noDecorations) return super.render(ctx, noDecorations)
|
||||||
|
|
||||||
val stateUp = ctx.offset(UP).state
|
val stateUp = ctx.state(UP)
|
||||||
|
val state2Up = ctx.state(Int3(0, 2, 0))
|
||||||
val isConnectedGrass = Config.connectedGrass.enabled && stateUp in BetterFoliage.blockTypes.grass
|
val isConnectedGrass = Config.connectedGrass.enabled && stateUp in BetterFoliage.blockTypes.grass
|
||||||
if (isConnectedGrass) {
|
if (isConnectedGrass) {
|
||||||
(ctx.blockModelShapes.getModel(stateUp) as? SpecialRenderModel)?.let { grassModel ->
|
(ctx.blockModelShapes.getModel(stateUp) as? SpecialRenderModel)?.let { grassModel ->
|
||||||
@@ -84,17 +86,19 @@ class StandardDirtModel(
|
|||||||
val isSaltWater = isWater && ctx.biome?.category in SALTWATER_BIOMES
|
val isSaltWater = isWater && ctx.biome?.category in SALTWATER_BIOMES
|
||||||
|
|
||||||
if (Config.algae.enabled(ctx.random) && isDeepWater) {
|
if (Config.algae.enabled(ctx.random) && isDeepWater) {
|
||||||
(ctx as? RenderCtxVanilla)?.vertexLighter = vanillaTuftLighting
|
ctx.vertexLighter = vanillaTuftLighting
|
||||||
|
ShadersModIntegration.grass(ctx, Config.algae.shaderWind) {
|
||||||
ctx.renderQuads(algaeModels[ctx.random])
|
ctx.renderQuads(algaeModels[ctx.random])
|
||||||
|
}
|
||||||
} else if (Config.reed.enabled(ctx.random) && isShallowWater && !isSaltWater) {
|
} else if (Config.reed.enabled(ctx.random) && isShallowWater && !isSaltWater) {
|
||||||
(ctx as? RenderCtxVanilla)?.vertexLighter = vanillaTuftLighting
|
ctx.vertexLighter = vanillaTuftLighting
|
||||||
|
ShadersModIntegration.grass(ctx, Config.reed.shaderWind) {
|
||||||
ctx.renderQuads(reedModels[ctx.random])
|
ctx.renderQuads(reedModels[ctx.random])
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
val SALTWATER_BIOMES = listOf(Biome.Category.BEACH, Biome.Category.OCEAN)
|
|
||||||
|
|
||||||
val algaeSprites by SpriteSetDelegate(Atlas.BLOCKS) { idx ->
|
val algaeSprites by SpriteSetDelegate(Atlas.BLOCKS) { idx ->
|
||||||
ResourceLocation(BetterFoliageMod.MOD_ID, "blocks/better_algae_$idx")
|
ResourceLocation(BetterFoliageMod.MOD_ID, "blocks/better_algae_$idx")
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,9 +1,10 @@
|
|||||||
package mods.betterfoliage.render.block.vanilla
|
package mods.betterfoliage.render.block.vanilla
|
||||||
|
|
||||||
import mods.betterfoliage.BetterFoliageMod
|
|
||||||
import mods.betterfoliage.BetterFoliage
|
import mods.betterfoliage.BetterFoliage
|
||||||
|
import mods.betterfoliage.BetterFoliageMod
|
||||||
import mods.betterfoliage.config.BlockConfig
|
import mods.betterfoliage.config.BlockConfig
|
||||||
import mods.betterfoliage.config.Config
|
import mods.betterfoliage.config.Config
|
||||||
|
import mods.betterfoliage.config.isSnow
|
||||||
import mods.betterfoliage.integration.ShadersModIntegration
|
import mods.betterfoliage.integration.ShadersModIntegration
|
||||||
import mods.betterfoliage.model.Color
|
import mods.betterfoliage.model.Color
|
||||||
import mods.betterfoliage.model.HalfBakedSpecialWrapper
|
import mods.betterfoliage.model.HalfBakedSpecialWrapper
|
||||||
@@ -28,7 +29,6 @@ import mods.betterfoliage.util.LazyMapInvalidatable
|
|||||||
import mods.betterfoliage.util.averageColor
|
import mods.betterfoliage.util.averageColor
|
||||||
import mods.betterfoliage.util.colorOverride
|
import mods.betterfoliage.util.colorOverride
|
||||||
import mods.betterfoliage.util.get
|
import mods.betterfoliage.util.get
|
||||||
import mods.betterfoliage.util.isSnow
|
|
||||||
import mods.betterfoliage.util.logColorOverride
|
import mods.betterfoliage.util.logColorOverride
|
||||||
import mods.betterfoliage.util.randomI
|
import mods.betterfoliage.util.randomI
|
||||||
import net.minecraft.util.Direction.DOWN
|
import net.minecraft.util.Direction.DOWN
|
||||||
|
|||||||
@@ -1,9 +1,11 @@
|
|||||||
package mods.betterfoliage.render.block.vanilla
|
package mods.betterfoliage.render.block.vanilla
|
||||||
|
|
||||||
import mods.betterfoliage.BetterFoliageMod
|
|
||||||
import mods.betterfoliage.BetterFoliage
|
import mods.betterfoliage.BetterFoliage
|
||||||
|
import mods.betterfoliage.BetterFoliageMod
|
||||||
import mods.betterfoliage.config.BlockConfig
|
import mods.betterfoliage.config.BlockConfig
|
||||||
import mods.betterfoliage.config.Config
|
import mods.betterfoliage.config.Config
|
||||||
|
import mods.betterfoliage.config.isSnow
|
||||||
|
import mods.betterfoliage.integration.ShadersModIntegration
|
||||||
import mods.betterfoliage.model.Color
|
import mods.betterfoliage.model.Color
|
||||||
import mods.betterfoliage.model.HalfBakedSpecialWrapper
|
import mods.betterfoliage.model.HalfBakedSpecialWrapper
|
||||||
import mods.betterfoliage.model.HalfBakedWrapperKey
|
import mods.betterfoliage.model.HalfBakedWrapperKey
|
||||||
@@ -27,7 +29,6 @@ import mods.betterfoliage.util.Atlas
|
|||||||
import mods.betterfoliage.util.LazyMapInvalidatable
|
import mods.betterfoliage.util.LazyMapInvalidatable
|
||||||
import mods.betterfoliage.util.averageColor
|
import mods.betterfoliage.util.averageColor
|
||||||
import mods.betterfoliage.util.colorOverride
|
import mods.betterfoliage.util.colorOverride
|
||||||
import mods.betterfoliage.util.isSnow
|
|
||||||
import mods.betterfoliage.util.logColorOverride
|
import mods.betterfoliage.util.logColorOverride
|
||||||
import net.minecraft.util.Direction.UP
|
import net.minecraft.util.Direction.UP
|
||||||
import net.minecraft.util.ResourceLocation
|
import net.minecraft.util.ResourceLocation
|
||||||
@@ -72,6 +73,7 @@ class StandardLeafModel(
|
|||||||
val leafSnowed by leafModelsSnowed.delegate(key)
|
val leafSnowed by leafModelsSnowed.delegate(key)
|
||||||
|
|
||||||
override fun render(ctx: RenderCtxBase, noDecorations: Boolean) {
|
override fun render(ctx: RenderCtxBase, noDecorations: Boolean) {
|
||||||
|
ShadersModIntegration.leaves(ctx, true) {
|
||||||
super.render(ctx, noDecorations)
|
super.render(ctx, noDecorations)
|
||||||
if (!Config.enabled || !Config.leaves.enabled || noDecorations) return
|
if (!Config.enabled || !Config.leaves.enabled || noDecorations) return
|
||||||
|
|
||||||
@@ -80,6 +82,7 @@ class StandardLeafModel(
|
|||||||
ctx.renderQuads(leafNormal[leafIdx])
|
ctx.renderQuads(leafNormal[leafIdx])
|
||||||
if (ctx.state(UP).isSnow) ctx.renderQuads(leafSnowed[leafIdx])
|
if (ctx.state(UP).isSnow) ctx.renderQuads(leafSnowed[leafIdx])
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
val leafSpritesSnowed by SpriteSetDelegate(Atlas.BLOCKS) { idx ->
|
val leafSpritesSnowed by SpriteSetDelegate(Atlas.BLOCKS) { idx ->
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package mods.betterfoliage.render.block.vanilla
|
|||||||
|
|
||||||
import mods.betterfoliage.BetterFoliageMod
|
import mods.betterfoliage.BetterFoliageMod
|
||||||
import mods.betterfoliage.config.Config
|
import mods.betterfoliage.config.Config
|
||||||
|
import mods.betterfoliage.config.LILYPAD_BLOCKS
|
||||||
import mods.betterfoliage.integration.ShadersModIntegration
|
import mods.betterfoliage.integration.ShadersModIntegration
|
||||||
import mods.betterfoliage.model.HalfBakedSpecialWrapper
|
import mods.betterfoliage.model.HalfBakedSpecialWrapper
|
||||||
import mods.betterfoliage.model.HalfBakedWrapperKey
|
import mods.betterfoliage.model.HalfBakedWrapperKey
|
||||||
@@ -28,8 +29,6 @@ import net.minecraft.util.Direction.DOWN
|
|||||||
import net.minecraft.util.ResourceLocation
|
import net.minecraft.util.ResourceLocation
|
||||||
|
|
||||||
object StandardLilypadDiscovery : AbstractModelDiscovery() {
|
object StandardLilypadDiscovery : AbstractModelDiscovery() {
|
||||||
val LILYPAD_BLOCKS = listOf(Blocks.LILY_PAD)
|
|
||||||
|
|
||||||
override fun processModel(ctx: ModelDiscoveryContext) {
|
override fun processModel(ctx: ModelDiscoveryContext) {
|
||||||
if (ctx.getUnbaked() is BlockModel && ctx.blockState.block in LILYPAD_BLOCKS) {
|
if (ctx.getUnbaked() is BlockModel && ctx.blockState.block in LILYPAD_BLOCKS) {
|
||||||
ctx.addReplacement(StandardLilypadKey)
|
ctx.addReplacement(StandardLilypadKey)
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ package mods.betterfoliage.render.block.vanilla
|
|||||||
|
|
||||||
import mods.betterfoliage.BetterFoliageMod
|
import mods.betterfoliage.BetterFoliageMod
|
||||||
import mods.betterfoliage.config.Config
|
import mods.betterfoliage.config.Config
|
||||||
|
import mods.betterfoliage.config.MYCELIUM_BLOCKS
|
||||||
import mods.betterfoliage.model.HalfBakedSpecialWrapper
|
import mods.betterfoliage.model.HalfBakedSpecialWrapper
|
||||||
import mods.betterfoliage.model.HalfBakedWrapperKey
|
import mods.betterfoliage.model.HalfBakedWrapperKey
|
||||||
import mods.betterfoliage.model.SpecialRenderModel
|
import mods.betterfoliage.model.SpecialRenderModel
|
||||||
@@ -27,8 +28,6 @@ import net.minecraft.util.Direction
|
|||||||
import net.minecraft.util.ResourceLocation
|
import net.minecraft.util.ResourceLocation
|
||||||
|
|
||||||
object StandardMyceliumDiscovery : AbstractModelDiscovery() {
|
object StandardMyceliumDiscovery : AbstractModelDiscovery() {
|
||||||
val MYCELIUM_BLOCKS = listOf(Blocks.MYCELIUM)
|
|
||||||
|
|
||||||
override fun processModel(ctx: ModelDiscoveryContext) {
|
override fun processModel(ctx: ModelDiscoveryContext) {
|
||||||
if (ctx.getUnbaked() is BlockModel && ctx.blockState.block in MYCELIUM_BLOCKS) {
|
if (ctx.getUnbaked() is BlockModel && ctx.blockState.block in MYCELIUM_BLOCKS) {
|
||||||
ctx.addReplacement(StandardMyceliumKey)
|
ctx.addReplacement(StandardMyceliumKey)
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ package mods.betterfoliage.render.block.vanilla
|
|||||||
import mods.betterfoliage.BetterFoliageMod
|
import mods.betterfoliage.BetterFoliageMod
|
||||||
import mods.betterfoliage.BetterFoliage
|
import mods.betterfoliage.BetterFoliage
|
||||||
import mods.betterfoliage.config.Config
|
import mods.betterfoliage.config.Config
|
||||||
|
import mods.betterfoliage.config.NETHERRACK_BLOCKS
|
||||||
import mods.betterfoliage.model.HalfBakedSpecialWrapper
|
import mods.betterfoliage.model.HalfBakedSpecialWrapper
|
||||||
import mods.betterfoliage.model.HalfBakedWrapperKey
|
import mods.betterfoliage.model.HalfBakedWrapperKey
|
||||||
import mods.betterfoliage.model.SpecialRenderModel
|
import mods.betterfoliage.model.SpecialRenderModel
|
||||||
@@ -30,8 +31,6 @@ import net.minecraft.util.Direction.DOWN
|
|||||||
import net.minecraft.util.ResourceLocation
|
import net.minecraft.util.ResourceLocation
|
||||||
|
|
||||||
object StandardNetherrackDiscovery : AbstractModelDiscovery() {
|
object StandardNetherrackDiscovery : AbstractModelDiscovery() {
|
||||||
val NETHERRACK_BLOCKS = listOf(Blocks.NETHERRACK)
|
|
||||||
|
|
||||||
fun canRenderInLayer(layer: RenderType) = when {
|
fun canRenderInLayer(layer: RenderType) = when {
|
||||||
!Config.enabled -> layer == RenderType.getSolid()
|
!Config.enabled -> layer == RenderType.getSolid()
|
||||||
!Config.netherrack.enabled -> layer == RenderType.getSolid()
|
!Config.netherrack.enabled -> layer == RenderType.getSolid()
|
||||||
|
|||||||
@@ -1,8 +1,10 @@
|
|||||||
package mods.betterfoliage.render.block.vanilla
|
package mods.betterfoliage.render.block.vanilla
|
||||||
|
|
||||||
import mods.betterfoliage.BetterFoliageMod
|
|
||||||
import mods.betterfoliage.BetterFoliage
|
import mods.betterfoliage.BetterFoliage
|
||||||
|
import mods.betterfoliage.BetterFoliageMod
|
||||||
import mods.betterfoliage.config.Config
|
import mods.betterfoliage.config.Config
|
||||||
|
import mods.betterfoliage.config.SALTWATER_BIOMES
|
||||||
|
import mods.betterfoliage.config.SAND_BLOCKS
|
||||||
import mods.betterfoliage.model.HalfBakedSpecialWrapper
|
import mods.betterfoliage.model.HalfBakedSpecialWrapper
|
||||||
import mods.betterfoliage.model.HalfBakedWrapperKey
|
import mods.betterfoliage.model.HalfBakedWrapperKey
|
||||||
import mods.betterfoliage.model.Quad
|
import mods.betterfoliage.model.Quad
|
||||||
@@ -13,7 +15,6 @@ import mods.betterfoliage.model.buildTufts
|
|||||||
import mods.betterfoliage.model.transform
|
import mods.betterfoliage.model.transform
|
||||||
import mods.betterfoliage.model.tuftModelSet
|
import mods.betterfoliage.model.tuftModelSet
|
||||||
import mods.betterfoliage.model.tuftShapeSet
|
import mods.betterfoliage.model.tuftShapeSet
|
||||||
import mods.betterfoliage.render.block.vanilla.StandardDirtModel.Companion.SALTWATER_BIOMES
|
|
||||||
import mods.betterfoliage.render.lighting.LightingPreferredFace
|
import mods.betterfoliage.render.lighting.LightingPreferredFace
|
||||||
import mods.betterfoliage.render.pipeline.RenderCtxBase
|
import mods.betterfoliage.render.pipeline.RenderCtxBase
|
||||||
import mods.betterfoliage.resource.discovery.AbstractModelDiscovery
|
import mods.betterfoliage.resource.discovery.AbstractModelDiscovery
|
||||||
@@ -29,7 +30,6 @@ import mods.betterfoliage.util.mapArray
|
|||||||
import mods.betterfoliage.util.randomB
|
import mods.betterfoliage.util.randomB
|
||||||
import mods.betterfoliage.util.randomD
|
import mods.betterfoliage.util.randomD
|
||||||
import mods.betterfoliage.util.randomI
|
import mods.betterfoliage.util.randomI
|
||||||
import net.minecraft.block.Blocks
|
|
||||||
import net.minecraft.block.material.Material
|
import net.minecraft.block.material.Material
|
||||||
import net.minecraft.client.renderer.RenderType
|
import net.minecraft.client.renderer.RenderType
|
||||||
import net.minecraft.client.renderer.RenderTypeLookup
|
import net.minecraft.client.renderer.RenderTypeLookup
|
||||||
@@ -39,8 +39,6 @@ import net.minecraft.util.Direction.UP
|
|||||||
import net.minecraft.util.ResourceLocation
|
import net.minecraft.util.ResourceLocation
|
||||||
|
|
||||||
object StandardSandDiscovery : AbstractModelDiscovery() {
|
object StandardSandDiscovery : AbstractModelDiscovery() {
|
||||||
val SAND_BLOCKS = listOf(Blocks.SAND, Blocks.RED_SAND)
|
|
||||||
|
|
||||||
override fun processModel(ctx: ModelDiscoveryContext) {
|
override fun processModel(ctx: ModelDiscoveryContext) {
|
||||||
if (ctx.getUnbaked() is BlockModel && ctx.blockState.block in SAND_BLOCKS) {
|
if (ctx.getUnbaked() is BlockModel && ctx.blockState.block in SAND_BLOCKS) {
|
||||||
BetterFoliage.blockTypes.dirt.add(ctx.blockState)
|
BetterFoliage.blockTypes.dirt.add(ctx.blockState)
|
||||||
|
|||||||
@@ -1,127 +0,0 @@
|
|||||||
package mods.betterfoliage.render.old
|
|
||||||
|
|
||||||
import mods.betterfoliage.util.Double3
|
|
||||||
import mods.betterfoliage.util.PI2
|
|
||||||
import net.minecraft.client.Minecraft
|
|
||||||
import net.minecraft.client.particle.IParticleRenderType
|
|
||||||
import net.minecraft.client.particle.SpriteTexturedParticle
|
|
||||||
import net.minecraft.client.renderer.BufferBuilder
|
|
||||||
import net.minecraft.world.World
|
|
||||||
import kotlin.math.cos
|
|
||||||
import kotlin.math.sin
|
|
||||||
|
|
||||||
abstract class AbstractEntityFX(world: World, x: Double, y: Double, z: Double) : SpriteTexturedParticle(world, x, y, z) {
|
|
||||||
|
|
||||||
companion object {
|
|
||||||
@JvmStatic val sin = Array(64) { idx -> sin(PI2 / 64.0 * idx) }
|
|
||||||
@JvmStatic val cos = Array(64) { idx -> cos(PI2 / 64.0 * idx) }
|
|
||||||
}
|
|
||||||
|
|
||||||
val billboardRot = Pair(Double3.zero, Double3.zero)
|
|
||||||
val currentPos = Double3.zero
|
|
||||||
val prevPos = Double3.zero
|
|
||||||
val velocity = Double3.zero
|
|
||||||
|
|
||||||
override fun tick() {
|
|
||||||
super.tick()
|
|
||||||
currentPos.setTo(posX, posY, posZ)
|
|
||||||
prevPos.setTo(prevPosX, prevPosY, prevPosZ)
|
|
||||||
velocity.setTo(motionX, motionY, motionZ)
|
|
||||||
update()
|
|
||||||
posX = currentPos.x; posY = currentPos.y; posZ = currentPos.z;
|
|
||||||
motionX = velocity.x; motionY = velocity.y; motionZ = velocity.z;
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Render the particle. */
|
|
||||||
abstract fun render(worldRenderer: BufferBuilder, partialTickTime: Float)
|
|
||||||
|
|
||||||
/** Update particle on world tick. */
|
|
||||||
abstract fun update()
|
|
||||||
|
|
||||||
/** True if the particle is renderable. */
|
|
||||||
abstract val isValid: Boolean
|
|
||||||
|
|
||||||
/** Add the particle to the effect renderer if it is valid. */
|
|
||||||
fun addIfValid() { if (isValid) Minecraft.getInstance().particles.addEffect(this) }
|
|
||||||
|
|
||||||
// override fun renderParticle(buffer: BufferBuilder, entity: ActiveRenderInfo, partialTicks: Float, rotX: Float, rotZ: Float, rotYZ: Float, rotXY: Float, rotXZ: Float) {
|
|
||||||
// billboardRot.first.setTo(rotX + rotXY, rotZ, rotYZ + rotXZ)
|
|
||||||
// billboardRot.second.setTo(rotX - rotXY, -rotZ, rotYZ - rotXZ)
|
|
||||||
// render(buffer, partialTicks)
|
|
||||||
// }
|
|
||||||
/**
|
|
||||||
* Render a particle quad.
|
|
||||||
*
|
|
||||||
* @param[tessellator] the [Tessellator] instance to use
|
|
||||||
* @param[partialTickTime] partial tick time
|
|
||||||
* @param[currentPos] render position
|
|
||||||
* @param[prevPos] previous tick position for interpolation
|
|
||||||
* @param[size] particle size
|
|
||||||
* @param[rotation] viewpoint-dependent particle rotation (64 steps)
|
|
||||||
* @param[icon] particle texture
|
|
||||||
* @param[isMirrored] mirror particle texture along V-axis
|
|
||||||
* @param[alpha] aplha blending
|
|
||||||
*/
|
|
||||||
// fun renderParticleQuad(worldRenderer: BufferBuilder,
|
|
||||||
// partialTickTime: Float,
|
|
||||||
// currentPos: Double3 = this.currentPos,
|
|
||||||
// prevPos: Double3 = this.prevPos,
|
|
||||||
// size: Double = particleScale.toDouble(),
|
|
||||||
// rotation: Int = 0,
|
|
||||||
// icon: TextureAtlasSprite = sprite,
|
|
||||||
// isMirrored: Boolean = false,
|
|
||||||
// alpha: Float = this.particleAlpha) {
|
|
||||||
//
|
|
||||||
// val minU = (if (isMirrored) icon.minU else icon.maxU).toDouble()
|
|
||||||
// val maxU = (if (isMirrored) icon.maxU else icon.minU).toDouble()
|
|
||||||
// val minV = icon.minV.toDouble()
|
|
||||||
// val maxV = icon.maxV.toDouble()
|
|
||||||
//
|
|
||||||
// val center = currentPos.copy().sub(prevPos).mul(partialTickTime.toDouble()).add(prevPos).sub(interpPosX, interpPosY, interpPosZ)
|
|
||||||
// val v1 = if (rotation == 0) billboardRot.first * size else
|
|
||||||
// Double3.weight(billboardRot.first, cos[rotation and 63] * size, billboardRot.second, sin[rotation and 63] * size)
|
|
||||||
// val v2 = if (rotation == 0) billboardRot.second * size else
|
|
||||||
// Double3.weight(billboardRot.first, -sin[rotation and 63] * size, billboardRot.second, cos[rotation and 63] * size)
|
|
||||||
//
|
|
||||||
// val renderBrightness = this.getBrightnessForRender(partialTickTime)
|
|
||||||
// val brLow = renderBrightness shr 16 and 65535
|
|
||||||
// val brHigh = renderBrightness and 65535
|
|
||||||
//
|
|
||||||
// worldRenderer
|
|
||||||
// .pos(center.x - v1.x, center.y - v1.y, center.z - v1.z)
|
|
||||||
// .tex(maxU, maxV)
|
|
||||||
// .color(particleRed, particleGreen, particleBlue, alpha)
|
|
||||||
// .lightmap(brLow, brHigh)
|
|
||||||
// .endVertex()
|
|
||||||
//
|
|
||||||
// worldRenderer
|
|
||||||
// .pos(center.x - v2.x, center.y - v2.y, center.z - v2.z)
|
|
||||||
// .tex(maxU, minV)
|
|
||||||
// .color(particleRed, particleGreen, particleBlue, alpha)
|
|
||||||
// .lightmap(brLow, brHigh)
|
|
||||||
// .endVertex()
|
|
||||||
//
|
|
||||||
// worldRenderer
|
|
||||||
// .pos(center.x + v1.x, center.y + v1.y, center.z + v1.z)
|
|
||||||
// .tex(minU, minV)
|
|
||||||
// .color(particleRed, particleGreen, particleBlue, alpha)
|
|
||||||
// .lightmap(brLow, brHigh)
|
|
||||||
// .endVertex()
|
|
||||||
//
|
|
||||||
// worldRenderer
|
|
||||||
// .pos(center.x + v2.x, center.y + v2.y, center.z + v2.z)
|
|
||||||
// .tex(minU, maxV)
|
|
||||||
// .color(particleRed, particleGreen, particleBlue, alpha)
|
|
||||||
// .lightmap(brLow, brHigh)
|
|
||||||
// .endVertex()
|
|
||||||
// }
|
|
||||||
|
|
||||||
// override fun getFXLayer() = 1
|
|
||||||
override fun getRenderType(): IParticleRenderType = IParticleRenderType.PARTICLE_SHEET_TRANSLUCENT
|
|
||||||
|
|
||||||
fun setColor(color: Int) {
|
|
||||||
particleBlue = (color and 255) / 256.0f
|
|
||||||
particleGreen = ((color shr 8) and 255) / 256.0f
|
|
||||||
particleRed = ((color shr 16) and 255) / 256.0f
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -66,9 +66,11 @@ abstract class ConfigurableModelDiscovery : AbstractModelDiscovery() {
|
|||||||
detailLogger.log(Level.INFO, " model ${ctx.modelLocation}")
|
detailLogger.log(Level.INFO, " model ${ctx.modelLocation}")
|
||||||
detailLogger.log(Level.INFO, " class ${ctx.blockState.block.javaClass.name} matches ${matchClass.name}")
|
detailLogger.log(Level.INFO, " class ${ctx.blockState.block.javaClass.name} matches ${matchClass.name}")
|
||||||
|
|
||||||
modelTextures
|
val ancestry = ctx.bakery.getAncestry(ctx.modelLocation)
|
||||||
.filter { matcher -> ctx.bakery.modelDerivesFrom(model, ctx.modelLocation, matcher.modelLocation) }
|
val matches = modelTextures.filter { matcher ->
|
||||||
.forEach { match ->
|
matcher.modelLocation in ancestry
|
||||||
|
}
|
||||||
|
matches.forEach { match ->
|
||||||
detailLogger.log(Level.INFO, " model $model matches ${match.modelLocation}")
|
detailLogger.log(Level.INFO, " model $model matches ${match.modelLocation}")
|
||||||
|
|
||||||
val materials = match.textureNames.map { it to model.resolveTextureName(it) }
|
val materials = match.textureNames.map { it to model.resolveTextureName(it) }
|
||||||
@@ -91,3 +93,9 @@ fun ModelBakery.modelDerivesFrom(model: BlockModel, location: ResourceLocation,
|
|||||||
?.let { getUnbakedModel(it) as? BlockModel }
|
?.let { getUnbakedModel(it) as? BlockModel }
|
||||||
?.let { parent -> modelDerivesFrom(parent, model.parentLocation!!, target) }
|
?.let { parent -> modelDerivesFrom(parent, model.parentLocation!!, target) }
|
||||||
?: false
|
?: false
|
||||||
|
|
||||||
|
fun ModelBakery.getAncestry(location: ResourceLocation): List<ResourceLocation> {
|
||||||
|
val model = getUnbakedModel(location) as? BlockModel ?: return listOf(location)
|
||||||
|
val parentAncestry = model.parentLocation?.let { getAncestry(it) } ?: emptyList()
|
||||||
|
return listOf(location) + parentAncestry
|
||||||
|
}
|
||||||
@@ -4,6 +4,6 @@ import net.minecraft.block.BlockState
|
|||||||
import net.minecraft.block.Blocks
|
import net.minecraft.block.Blocks
|
||||||
import net.minecraft.block.material.Material
|
import net.minecraft.block.material.Material
|
||||||
|
|
||||||
val BlockState.isSnow: Boolean get() = material.let { it == Material.SNOW }
|
|
||||||
|
|
||||||
val DIRT_BLOCKS = listOf(Blocks.DIRT, Blocks.COARSE_DIRT)
|
val DIRT_BLOCKS = listOf(Blocks.DIRT, Blocks.COARSE_DIRT)
|
||||||
Reference in New Issue
Block a user