From d2b9326ced0cc48dc78932b45f704059373a16c5 Mon Sep 17 00:00:00 2001 From: octarine-noise Date: Mon, 26 Jul 2021 22:44:11 +0200 Subject: [PATCH] mod support: BOP, BYG, Environmental, Desolation --- .../render/block/vanilla/Dirt.kt | 10 +++- .../render/block/vanilla/Grass.kt | 8 ++-- .../config/betterfoliage/bop.rules | 11 +++++ .../config/betterfoliage/byg.rules | 48 +++++++++++++++++++ .../config/betterfoliage/desolation.rules | 1 + .../config/betterfoliage/environmental.rules | 1 + 6 files changed, 75 insertions(+), 4 deletions(-) create mode 100644 src/main/resources/assets/betterfoliage/config/betterfoliage/bop.rules create mode 100644 src/main/resources/assets/betterfoliage/config/betterfoliage/byg.rules create mode 100644 src/main/resources/assets/betterfoliage/config/betterfoliage/desolation.rules create mode 100644 src/main/resources/assets/betterfoliage/config/betterfoliage/environmental.rules diff --git a/src/main/kotlin/mods/betterfoliage/render/block/vanilla/Dirt.kt b/src/main/kotlin/mods/betterfoliage/render/block/vanilla/Dirt.kt index 8fca675..1984341 100644 --- a/src/main/kotlin/mods/betterfoliage/render/block/vanilla/Dirt.kt +++ b/src/main/kotlin/mods/betterfoliage/render/block/vanilla/Dirt.kt @@ -79,8 +79,16 @@ class StandardDirtModel( val isShallowWater = isWater && state2Up.isAir val isSaltWater = isWater && ctx.biome?.biomeCategory in SALTWATER_BIOMES + // get the actual grass model to use for connected grass rendering + // return null if the grass specifically does not want to connect + val connectedGrassModel = if (!isConnectedGrass) null else getBlockModel(stateUp).let { model -> + (model as? SpecialRenderModel)?.resolve(random)?.let { grassModel -> + if ((grassModel as? StandardGrassModel)?.key?.noConnect == true) null else grassModel + } + } + return DirtRenderData( - connectedGrassModel = if (isConnectedGrass) (getBlockModel(stateUp) as? SpecialRenderModel)?.resolve(random) else null, + connectedGrassModel = connectedGrassModel, algaeIdx = random.idxOrNull(algaeModels) { Config.algae.enabled(random) && isDeepWater && isSaltWater }, reedIdx = random.idxOrNull(reedModels) { Config.reed.enabled(random) && isShallowWater && !isSaltWater } ) diff --git a/src/main/kotlin/mods/betterfoliage/render/block/vanilla/Grass.kt b/src/main/kotlin/mods/betterfoliage/render/block/vanilla/Grass.kt index 09315cd..554c033 100644 --- a/src/main/kotlin/mods/betterfoliage/render/block/vanilla/Grass.kt +++ b/src/main/kotlin/mods/betterfoliage/render/block/vanilla/Grass.kt @@ -46,7 +46,8 @@ object StandardGrassDiscovery : ParametrizedModelDiscovery() { detailLogger.logTextureColor(INFO, "grass texture \"$texture\"", it) it.brighten().asColor } - ctx.addReplacement(StandardGrassKey(texture, tint, color)) + val noConnect = params["no-connect"] == "true" + ctx.addReplacement(StandardGrassKey(texture, tint, color, noConnect)) BetterFoliage.blockTypes.grass.add(ctx.blockState) ctx.blockState.block.extendLayers() } @@ -56,6 +57,7 @@ data class StandardGrassKey( val sprite: ResourceLocation, val tintIndex: Int, val avgColor: Color, + val noConnect: Boolean ) : HalfBakedWrapperKey() { override fun bake(ctx: ModelBakingContext, wrapped: SpecialRenderModel): SpecialRenderModel { return StandardGrassModel(wrapped, this) @@ -76,7 +78,7 @@ class GrassRenderData( class StandardGrassModel( wrapped: SpecialRenderModel, - key: StandardGrassKey + val key: StandardGrassKey ) : HalfBakedSpecialWrapper(wrapped) { val tuftNormal by grassTuftMeshesNormal.delegate(key) @@ -91,7 +93,7 @@ class StandardGrassModel( val stateAbove = ctx.state(UP) val isAir = ctx.isAir(UP) val isSnowed = stateAbove.isSnow - val connected = Config.connectedGrass.enabled && + val connected = !key.noConnect && Config.connectedGrass.enabled && (!isSnowed || Config.connectedGrass.snowEnabled) && BetterFoliage.blockTypes.run { stateBelow in grass || stateBelow in dirt } diff --git a/src/main/resources/assets/betterfoliage/config/betterfoliage/bop.rules b/src/main/resources/assets/betterfoliage/config/betterfoliage/bop.rules new file mode 100644 index 0000000..99f8f89 --- /dev/null +++ b/src/main/resources/assets/betterfoliage/config/betterfoliage/bop.rules @@ -0,0 +1,11 @@ +match isParam("type", "leaf") +model.extends("biomesoplenty:block/leaves_overlay") +setParam("texture", model.texture("leaves")) +setParam("tint", model.tint("leaves")) +end + +match isParam("type", "grass") +model.extends("biomesoplenty:block/origin_grass_block") +setParam("texture", model.texture("top")) +setParam("tint", model.tint("top")) +end \ No newline at end of file diff --git a/src/main/resources/assets/betterfoliage/config/betterfoliage/byg.rules b/src/main/resources/assets/betterfoliage/config/betterfoliage/byg.rules new file mode 100644 index 0000000..0d6f451 --- /dev/null +++ b/src/main/resources/assets/betterfoliage/config/betterfoliage/byg.rules @@ -0,0 +1,48 @@ +// A lot of BYG leaf models are very sloppily made, extending "block/cube" or even "block/block" +// These rules are meh, but there's no better way to do it, there's no method to the madness here + +// snowy leaves +match isParam("type", "leaf") block.name.contains("byg:leaves") model.contains("snowy") +setParam("texture", model.texture("up")) setParam("tint", model.tint("up")) end + +// list of leaves where texture is "up" +match model.matches( +"byg:block/aspen_leaves", +"byg:block/baobab_leaves", +"byg:block/blue_enchanted_leaves" +) setParam("texture", model.texture("up")) setParam("tint", model.tint("up")) +end + +// list of leaves where texture is "top" +match model.matches( +"byg:block/flowering_orchard_leaves", +"byg:block/joshua_leaves", +"byg:block/mahogany_leaves", +"byg:block/maple_leaves", +"byg:block/orchard_leaves", +"byg:block/rainbow_eucalyptus_leaves", +"byg:block/willow_leaves" +) setParam("texture", model.texture("top")) setParam("tint", model.tint("top")) +end + +// ripe leaves (tint comes from overlay) +match model.matches( +"byg:block/ripe_joshua_leaves", +"byg:block/ripe_orchard_leaves" +) setParam("texture", model.texture("top")) setParam("tint", model.tint("overlay")) +end + +// +// other blocks +// +match block.name.matches("byg:meadow_dirt") setParam("type", "dirt") end +match block.name.matches("byg:overgrown_crimson_blackstone") setParam("type", "mycelium") end + +match model.matches("byg:block/meadow_grass_block", "byg:block/overgrown_stone", "byg:block/overgrown_dacite", "byg:block/overgrown_netherrack") +setParam("type", "grass") +setParam("texture", model.texture("top")) setParam("tint", model.tint("top")) +end + +match block.name.matches("byg:overgrown_stone", "byg:overgrown_dacite", "byg:overgrown_netherrack", "byg:podzol_dacite") +setParam("no-connect", "true") +end \ No newline at end of file diff --git a/src/main/resources/assets/betterfoliage/config/betterfoliage/desolation.rules b/src/main/resources/assets/betterfoliage/config/betterfoliage/desolation.rules new file mode 100644 index 0000000..e60cce0 --- /dev/null +++ b/src/main/resources/assets/betterfoliage/config/betterfoliage/desolation.rules @@ -0,0 +1 @@ +match block.class.extends(classOf("desolation:charred_branches")) setParam("type", "leaf") end \ No newline at end of file diff --git a/src/main/resources/assets/betterfoliage/config/betterfoliage/environmental.rules b/src/main/resources/assets/betterfoliage/config/betterfoliage/environmental.rules new file mode 100644 index 0000000..da9e491 --- /dev/null +++ b/src/main/resources/assets/betterfoliage/config/betterfoliage/environmental.rules @@ -0,0 +1 @@ +match block.class.extends(classOf("environmental:blue_wisteria_leaves")) setParam("type", "leaf") end \ No newline at end of file