From a6ead1bc3d485485684ce7b1811498099f14ec9c Mon Sep 17 00:00:00 2001 From: mastermc05 Date: Fri, 18 Nov 2022 13:27:07 +0200 Subject: [PATCH] Fabric 1.16.4 (1.16.5) --- .../fabric_1_16_4/FabricMapChunkCache.java | 24 +++++++++++++++++++ .../mixin/BiomeEffectsAccessor.java | 8 +++++++ 2 files changed, 32 insertions(+) diff --git a/fabric-1.16.4/src/main/java/org/dynmap/fabric_1_16_4/FabricMapChunkCache.java b/fabric-1.16.4/src/main/java/org/dynmap/fabric_1_16_4/FabricMapChunkCache.java index 8d845aa7..c17c2e93 100644 --- a/fabric-1.16.4/src/main/java/org/dynmap/fabric_1_16_4/FabricMapChunkCache.java +++ b/fabric-1.16.4/src/main/java/org/dynmap/fabric_1_16_4/FabricMapChunkCache.java @@ -7,12 +7,16 @@ import net.minecraft.server.world.ThreadedAnvilChunkStorage; import net.minecraft.util.math.ChunkPos; import net.minecraft.world.ChunkSerializer; import net.minecraft.world.World; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.biome.BiomeEffects; import net.minecraft.world.chunk.ChunkManager; import net.minecraft.world.chunk.ChunkStatus; import org.dynmap.DynmapChunk; import org.dynmap.Log; +import org.dynmap.common.BiomeMap; import org.dynmap.common.chunk.GenericChunk; import org.dynmap.common.chunk.GenericMapChunkCache; +import org.dynmap.fabric_1_16_4.mixin.BiomeEffectsAccessor; import java.util.*; @@ -85,5 +89,25 @@ public class FabricMapChunkCache extends GenericMapChunkCache { } return gc; } + @Override + public int getFoliageColor(BiomeMap bm, int[] colormap, int x, int z) { + return bm.getBiomeObject().map(Biome::getEffects).flatMap(BiomeEffects::getFoliageColor).orElse(colormap[bm.biomeLookup()]); + } + + @Override + public int getGrassColor(BiomeMap bm, int[] colormap, int x, int z) { + BiomeEffectsAccessor effects = (BiomeEffectsAccessor) bm.getBiomeObject().map(Biome::getEffects).orElse(null); + if (effects == null) return colormap[bm.biomeLookup()]; + int grassMult = effects.getGrassColor().orElse(colormap[bm.biomeLookup()]); + BiomeEffects.GrassColorModifier modifier = effects.getGrassColorModifier(); + if (modifier == BiomeEffects.GrassColorModifier.DARK_FOREST) { + return ((grassMult & 0xfefefe) + 0x28340a) >> 1; + } else if (modifier == BiomeEffects.GrassColorModifier.SWAMP) { + double var5 = Biome.FOLIAGE_NOISE.sample(x * 0.0225, z * 0.0225, false); + return var5 < -0.1 ? 0x4c763c : 0x6a7039; + } else { + return grassMult; + } + } } diff --git a/fabric-1.16.4/src/main/java/org/dynmap/fabric_1_16_4/mixin/BiomeEffectsAccessor.java b/fabric-1.16.4/src/main/java/org/dynmap/fabric_1_16_4/mixin/BiomeEffectsAccessor.java index edaf842c..8992d789 100644 --- a/fabric-1.16.4/src/main/java/org/dynmap/fabric_1_16_4/mixin/BiomeEffectsAccessor.java +++ b/fabric-1.16.4/src/main/java/org/dynmap/fabric_1_16_4/mixin/BiomeEffectsAccessor.java @@ -4,8 +4,16 @@ import net.minecraft.world.biome.BiomeEffects; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.gen.Accessor; +import java.util.Optional; + @Mixin(BiomeEffects.class) public interface BiomeEffectsAccessor { @Accessor int getWaterColor(); + @Accessor + Optional getFoliageColor(); + @Accessor + Optional getGrassColor(); + @Accessor + BiomeEffects.GrassColorModifier getGrassColorModifier(); }