mod support: BOP, BYG, Environmental, Desolation

This commit is contained in:
octarine-noise
2021-07-26 22:44:11 +02:00
parent 31eddf682d
commit d2b9326ced
6 changed files with 75 additions and 4 deletions

View File

@@ -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 }
)

View File

@@ -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 }

View File

@@ -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

View File

@@ -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

View File

@@ -0,0 +1 @@
match block.class.extends(classOf("desolation:charred_branches")) setParam("type", "leaf") end

View File

@@ -0,0 +1 @@
match block.class.extends(classOf("environmental:blue_wisteria_leaves")) setParam("type", "leaf") end