From 172651ce17b85a669db496492282c08c6f049594 Mon Sep 17 00:00:00 2001 From: Bixilon Date: Wed, 24 Mar 2021 16:47:42 +0100 Subject: [PATCH] biomes: add sky color (just the base color), blocks: fix tint color --- .../pixlyzer/generator/generators/BiomeGenerator.kt | 9 ++++++++- .../pixlyzer/generator/generators/BlockGenerator.kt | 10 ++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/main/kotlin/de/bixilon/pixlyzer/generator/generators/BiomeGenerator.kt b/src/main/kotlin/de/bixilon/pixlyzer/generator/generators/BiomeGenerator.kt index b9577e7..765826f 100644 --- a/src/main/kotlin/de/bixilon/pixlyzer/generator/generators/BiomeGenerator.kt +++ b/src/main/kotlin/de/bixilon/pixlyzer/generator/generators/BiomeGenerator.kt @@ -33,10 +33,11 @@ object BiomeGenerator : Generator( BIOME_SKY_COLOR_FIELD?.getInt(biome)?.let { biomeData.addProperty("sky_color", it) + } ?: let { + biomeData.addProperty("sky_color", SKY_COLOR_FUNCTION!!.invoke(biome, 0.0f) as Int) } - getField(Biome::class.java, "specialEffects")?.get(biome)?.let { FOG_COLOR_SPECIAL_EFFECTS_FIELD?.getInt(it)?.let { biomeData.addProperty("fog_color", it) @@ -73,6 +74,12 @@ object BiomeGenerator : Generator( } } + private val SKY_COLOR_FUNCTION = try { + Biome::class.java.getDeclaredMethod("getSkyColor", Float::class.java) + } catch (exception: Exception) { + null + } + private val SPECIAL_EFFECTS_CLASS = getClass("net.minecraft.world.level.biome.BiomeSpecialEffects") private val CLIMATE_SETTINGS_CLASS = getClass("net.minecraft.world.level.biome.Biome\$ClimateSettings", "net.minecraft.world.level.biome.Biome", "net.minecraft.world.biome.Biome")!! diff --git a/src/main/kotlin/de/bixilon/pixlyzer/generator/generators/BlockGenerator.kt b/src/main/kotlin/de/bixilon/pixlyzer/generator/generators/BlockGenerator.kt index aba15e5..ef66c20 100644 --- a/src/main/kotlin/de/bixilon/pixlyzer/generator/generators/BlockGenerator.kt +++ b/src/main/kotlin/de/bixilon/pixlyzer/generator/generators/BlockGenerator.kt @@ -127,7 +127,8 @@ object BlockGenerator : Generator( } val hasColorProperties = (TINT_PROPERTIES_METHOD?.invoke(DEFAULT_BLOCK_COLORS, block) as Set<*>?)?.size?.let { it > 0 } ?: let { - true + val blockColorProviderList = BLOCK_COLORS_PROVIDERS_ID_LIST!!.get(DEFAULT_BLOCK_COLORS) as IdList + blockColorProviderList.get(Registry.BLOCK.getRawId(block)) != null } val states = JsonObject() @@ -199,10 +200,9 @@ object BlockGenerator : Generator( try { if (hasColorProperties) { val tintColor = DEFAULT_BLOCK_COLORS.getColor(state, null, null) - if (tintColor == -1) { - throw IllegalStateException() + if (tintColor != -1 && tintColor != 0) { + stateData.addProperty("tint_color", tintColor) } - stateData.addProperty("tint_color", tintColor) } } catch (exception: Exception) { } @@ -332,6 +332,8 @@ object BlockGenerator : Generator( } } + private val BLOCK_COLORS_PROVIDERS_ID_LIST = getField(BlockColors::class.java, "providers") + private val TINT_PROPERTIES_METHOD = try { BlockColors::class.java.getDeclaredMethod("method_21592") } catch (exception: Exception) {