From 9d91440997133d06dd2ad9647456a103a4d9bc43 Mon Sep 17 00:00:00 2001 From: Zoe Gidiere Date: Tue, 29 Oct 2024 14:14:25 -0600 Subject: [PATCH] fixup --- .../terra/mod/mixin/invoke/BiomeInvoker.java | 12 ++++++ .../com/dfsek/terra/mod/util/BiomeUtil.java | 37 +++++++------------ 2 files changed, 26 insertions(+), 23 deletions(-) create mode 100644 platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/invoke/BiomeInvoker.java diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/invoke/BiomeInvoker.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/invoke/BiomeInvoker.java new file mode 100644 index 000000000..b3aa4792b --- /dev/null +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/mixin/invoke/BiomeInvoker.java @@ -0,0 +1,12 @@ +package com.dfsek.terra.mod.mixin.invoke; + +import net.minecraft.world.biome.Biome; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.gen.Invoker; + + +@Mixin(Biome.class) +public interface BiomeInvoker { + @Invoker("getDefaultGrassColor") + int invokeGetDefaultGrassColor(); +} diff --git a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/BiomeUtil.java b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/BiomeUtil.java index 0352e3089..44e6ddaf4 100644 --- a/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/BiomeUtil.java +++ b/platforms/mixin-common/src/main/java/com/dfsek/terra/mod/util/BiomeUtil.java @@ -1,15 +1,10 @@ package com.dfsek.terra.mod.util; -import com.dfsek.terra.api.config.ConfigPack; -import com.dfsek.terra.mod.config.VanillaBiomeProperties; -import com.dfsek.terra.mod.mixin.access.BiomeAccessor; - import net.minecraft.registry.Registries; import net.minecraft.util.Identifier; import net.minecraft.world.biome.Biome; import net.minecraft.world.biome.Biome.Builder; import net.minecraft.world.biome.BiomeEffects; -import net.minecraft.world.biome.GenerationSettings; import java.util.HashMap; import java.util.List; @@ -17,37 +12,33 @@ import java.util.Locale; import java.util.Map; import java.util.Objects; +import com.dfsek.terra.api.config.ConfigPack; +import com.dfsek.terra.mod.config.VanillaBiomeProperties; +import com.dfsek.terra.mod.mixin.access.BiomeAccessor; +import com.dfsek.terra.mod.mixin.invoke.BiomeInvoker; + public class BiomeUtil { public static final Map> TERRA_BIOME_MAP = new HashMap<>(); - public static Biome createBiome(com.dfsek.terra.api.world.biome.Biome biome, Biome vanilla, - VanillaBiomeProperties vanillaBiomeProperties) { - GenerationSettings.Builder generationSettings = new GenerationSettings.Builder(); + + public static Biome createBiome(com.dfsek.terra.api.world.biome.Biome biome, Biome vanilla) { BiomeEffects.Builder effects = new BiomeEffects.Builder(); net.minecraft.world.biome.Biome.Builder builder = new Builder(); + VanillaBiomeProperties vanillaBiomeProperties = biome.getContext().get(VanillaBiomeProperties.class); + effects.waterColor(Objects.requireNonNullElse(vanillaBiomeProperties.getWaterColor(), vanilla.getWaterColor())) .waterFogColor(Objects.requireNonNullElse(vanillaBiomeProperties.getWaterFogColor(), vanilla.getWaterFogColor())) .fogColor(Objects.requireNonNullElse(vanillaBiomeProperties.getFogColor(), vanilla.getFogColor())) .skyColor(Objects.requireNonNullElse(vanillaBiomeProperties.getSkyColor(), vanilla.getSkyColor())) .grassColorModifier( - Objects.requireNonNullElse(vanillaBiomeProperties.getGrassColorModifier(), - vanilla.getEffects().getGrassColorModifier())); - - if(vanillaBiomeProperties.getFoliageColor() == null) { - vanilla.getEffects().getFoliageColor().ifPresent(effects::foliageColor); - } else { - effects.foliageColor(vanillaBiomeProperties.getFoliageColor()); - } - - if(vanillaBiomeProperties.getGrassColor() == null) { - vanilla.getEffects().getGrassColor().ifPresent(effects::grassColor); - } else { - effects.grassColor(vanillaBiomeProperties.getGrassColor()); - } + Objects.requireNonNullElse(vanillaBiomeProperties.getGrassColorModifier(), vanilla.getEffects().getGrassColorModifier())) + .grassColor(Objects.requireNonNullElse(vanillaBiomeProperties.getGrassColor(), + vanilla.getEffects().getGrassColor().orElseGet(() -> ((BiomeInvoker) ((Object) vanilla)).invokeGetDefaultGrassColor()))) + .foliageColor(Objects.requireNonNullElse(vanillaBiomeProperties.getFoliageColor(), vanilla.getFoliageColor())); if(vanillaBiomeProperties.getParticleConfig() == null) { vanilla.getEffects().getParticleConfig().ifPresent(effects::particleConfig); @@ -93,7 +84,7 @@ public class BiomeUtil { return builder .effects(effects.build()) - .generationSettings(generationSettings.build()) + .generationSettings(vanilla.getGenerationSettings()) .build(); }