From 1f1a34277773551877526ce987b8379750ad56a4 Mon Sep 17 00:00:00 2001 From: mastermc05 Date: Fri, 14 Oct 2022 12:57:23 +0300 Subject: [PATCH 01/22] 1.19 support --- .gitignore | 1 + .../main/java/org/dynmap/common/BiomeMap.java | 3 + .../common/chunk/GenericMapChunkCache.java | 8 +- .../v119/BukkitVersionHelperSpigot119.java | 2 +- .../bukkit/helper/v119/MapChunkCache119.java | 96 +++++++++++++++++-- spigot/build.gradle | 11 ++- 6 files changed, 108 insertions(+), 13 deletions(-) diff --git a/.gitignore b/.gitignore index 0eeb19b4..69d02691 100644 --- a/.gitignore +++ b/.gitignore @@ -37,3 +37,4 @@ /fabric-1.16.1_server.launch /fabric-1.16.2_client.launch /fabric-1.16.2_server.launch +/spigot/run/ diff --git a/DynmapCore/src/main/java/org/dynmap/common/BiomeMap.java b/DynmapCore/src/main/java/org/dynmap/common/BiomeMap.java index 1902c4d4..7611c514 100644 --- a/DynmapCore/src/main/java/org/dynmap/common/BiomeMap.java +++ b/DynmapCore/src/main/java/org/dynmap/common/BiomeMap.java @@ -300,6 +300,9 @@ public class BiomeMap { public String getId() { return id; } + public String getResourcelocation() { + return resourcelocation; + } public String toString() { return String.format("%s(%s)", id, resourcelocation); } diff --git a/DynmapCore/src/main/java/org/dynmap/common/chunk/GenericMapChunkCache.java b/DynmapCore/src/main/java/org/dynmap/common/chunk/GenericMapChunkCache.java index 18aaaad6..f22fb840 100644 --- a/DynmapCore/src/main/java/org/dynmap/common/chunk/GenericMapChunkCache.java +++ b/DynmapCore/src/main/java/org/dynmap/common/chunk/GenericMapChunkCache.java @@ -55,7 +55,7 @@ public abstract class GenericMapChunkCache extends MapChunkCache { private final int worldheight; private final int ymin; - OurMapIterator(int x0, int y0, int z0) { + protected OurMapIterator(int x0, int y0, int z0) { initialize(x0, y0, z0); worldheight = dw.worldheight; ymin = dw.minY; @@ -157,7 +157,7 @@ public abstract class GenericMapChunkCache extends MapChunkCache { } } - private final BiomeMap getBiomeRel(int dx, int dz) { + public final BiomeMap getBiomeRel(int dx, int dz) { int nx = x + dx; int nz = z + dz; int nchunkindex = ((nx >> 4) - x_min) + (((nz >> 4) - z_min) * x_dim); @@ -169,7 +169,7 @@ public abstract class GenericMapChunkCache extends MapChunkCache { } @Override - public final int getSmoothGrassColorMultiplier(int[] colormap) { + public int getSmoothGrassColorMultiplier(int[] colormap) { int mult = 0xFFFFFF; try { @@ -200,7 +200,7 @@ public abstract class GenericMapChunkCache extends MapChunkCache { } @Override - public final int getSmoothFoliageColorMultiplier(int[] colormap) { + public int getSmoothFoliageColorMultiplier(int[] colormap) { int mult = 0xFFFFFF; try { diff --git a/bukkit-helper-119/src/main/java/org/dynmap/bukkit/helper/v119/BukkitVersionHelperSpigot119.java b/bukkit-helper-119/src/main/java/org/dynmap/bukkit/helper/v119/BukkitVersionHelperSpigot119.java index d4d5daf9..b27b8008 100644 --- a/bukkit-helper-119/src/main/java/org/dynmap/bukkit/helper/v119/BukkitVersionHelperSpigot119.java +++ b/bukkit-helper-119/src/main/java/org/dynmap/bukkit/helper/v119/BukkitVersionHelperSpigot119.java @@ -111,7 +111,7 @@ public class BukkitVersionHelperSpigot119 extends BukkitVersionHelper { private static IRegistry reg = null; - private static IRegistry getBiomeReg() { + public static IRegistry getBiomeReg() { if (reg == null) { reg = MinecraftServer.getServer().aX().d(IRegistry.aR); } diff --git a/bukkit-helper-119/src/main/java/org/dynmap/bukkit/helper/v119/MapChunkCache119.java b/bukkit-helper-119/src/main/java/org/dynmap/bukkit/helper/v119/MapChunkCache119.java index 5ecbc277..62b855e1 100644 --- a/bukkit-helper-119/src/main/java/org/dynmap/bukkit/helper/v119/MapChunkCache119.java +++ b/bukkit-helper-119/src/main/java/org/dynmap/bukkit/helper/v119/MapChunkCache119.java @@ -1,10 +1,14 @@ package org.dynmap.bukkit.helper.v119; +import net.minecraft.core.IRegistry; +import net.minecraft.resources.MinecraftKey; +import net.minecraft.world.level.biome.BiomeBase; import org.bukkit.World; import org.bukkit.craftbukkit.v1_19_R1.CraftWorld; import org.dynmap.DynmapChunk; import org.dynmap.bukkit.helper.BukkitVersionHelper; import org.dynmap.bukkit.helper.BukkitWorld; +import org.dynmap.common.BiomeMap; import org.dynmap.common.chunk.GenericChunk; import org.dynmap.common.chunk.GenericChunkCache; import org.dynmap.common.chunk.GenericMapChunkCache; @@ -13,6 +17,7 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.level.ChunkCoordIntPair; import net.minecraft.world.level.chunk.storage.ChunkRegionLoader; import net.minecraft.world.level.chunk.Chunk; +import org.dynmap.utils.MapIterator; import java.lang.reflect.InvocationTargetException; import java.util.List; @@ -27,7 +32,7 @@ import java.util.function.Supplier; */ public class MapChunkCache119 extends GenericMapChunkCache { private static final AsyncChunkProvider119 provider = BukkitVersionHelper.helper.isUnsafeAsync() ? null : new AsyncChunkProvider119(); - private World w; + private CraftWorld w; /** * Construct empty cache */ @@ -38,14 +43,14 @@ public class MapChunkCache119 extends GenericMapChunkCache { // Load generic chunk from existing and already loaded chunk @Override protected Supplier getLoadedChunkAsync(DynmapChunk chunk) { - Supplier supplier = provider.getLoadedChunk((CraftWorld) w, chunk.x, chunk.z); + Supplier supplier = provider.getLoadedChunk(w, chunk.x, chunk.z); return () -> { NBTTagCompound nbt = supplier.get(); return nbt != null ? parseChunkFromNBT(new NBT.NBTCompound(nbt)) : null; }; } protected GenericChunk getLoadedChunk(DynmapChunk chunk) { - CraftWorld cw = (CraftWorld) w; + CraftWorld cw = w; if (!cw.isChunkLoaded(chunk.x, chunk.z)) return null; Chunk c = cw.getHandle().getChunkIfLoaded(chunk.x, chunk.z); if (c == null || !c.o) return null; // c.loaded @@ -57,7 +62,7 @@ public class MapChunkCache119 extends GenericMapChunkCache { @Override protected Supplier loadChunkAsync(DynmapChunk chunk){ try { - CompletableFuture nbt = provider.getChunk(((CraftWorld) w).getHandle(), chunk.x, chunk.z); + CompletableFuture nbt = provider.getChunk(w.getHandle(), chunk.x, chunk.z); return () -> { NBTTagCompound compound; try { @@ -75,7 +80,7 @@ public class MapChunkCache119 extends GenericMapChunkCache { } protected GenericChunk loadChunk(DynmapChunk chunk) { - CraftWorld cw = (CraftWorld) w; + CraftWorld cw = w; NBTTagCompound nbt = null; ChunkCoordIntPair cc = new ChunkCoordIntPair(chunk.x, chunk.z); GenericChunk gc = null; @@ -91,7 +96,86 @@ public class MapChunkCache119 extends GenericMapChunkCache { } public void setChunks(BukkitWorld dw, List chunks) { - this.w = dw.getWorld(); + this.w = (CraftWorld) dw.getWorld(); super.setChunks(dw, chunks); } + + private class MapIterator119 extends OurMapIterator { + int light; + MapIterator119(int x, int y, int z) { + super(x, y, z); + light = dw.getEnvironment().equals("the_end") ? 15 : -1; + } + + @Override + public int getBlockSkyLight() { + return light == -1 ? super.getBlockSkyLight() : light; + } + + @Override + public int getSmoothGrassColorMultiplier(int[] colormap) { + int r = 0; + int g = 0; + int b = 0; + int cnt = 0; + IRegistry reg = BukkitVersionHelperSpigot119.getBiomeReg(); + for (int x = -2; x <= 2; x++) { + for (int z = -2; z <= 2; z++) { + BiomeMap map = this.getBiomeRel(x, z); + if (map.getResourcelocation() == null) continue; + BiomeBase base = reg.a(MinecraftKey.a(map.getResourcelocation())); + int rgb = 0; + if (base != null) { + rgb = base.j().f().orElse(colormap[map.biomeLookup()]); + rgb = base.j().g().a(x + getX(), z + getZ(), rgb); + } + if (rgb == 0) rgb = colormap[map.biomeLookup()]; + b += rgb & 0xFF; + rgb >>= 8; + g += rgb & 0xFF; + rgb >>= 8; + r += rgb & 0xFF; + cnt++; + } + } + if (cnt < 1) return 0; + r /= cnt; + g /= cnt; + b /= cnt; + return r << 16 | g << 8 | b; + } + + @Override + public int getSmoothFoliageColorMultiplier(int[] colormap) { + int r = 0; + int g = 0; + int b = 0; + int cnt = 0; + IRegistry reg = BukkitVersionHelperSpigot119.getBiomeReg(); + for (int x = -2; x <= 2; x++) { + for (int z = -2; z <= 2; z++) { + BiomeMap map = this.getBiomeRel(x, z); + if (map.getResourcelocation() == null) continue; + BiomeBase base = reg.a(MinecraftKey.a(map.getResourcelocation())); + int rgb = base == null ? colormap[map.biomeLookup()] : base.j().e().orElse(colormap[map.biomeLookup()]); + b += rgb & 0xFF; + rgb >>= 8; + g += rgb & 0xFF; + rgb >>= 8; + r += rgb & 0xFF; + cnt++; + } + } + if (cnt < 1) return 0; + r /= cnt; + g /= cnt; + b /= cnt; + return r << 16 | g << 8 | b; + } + } + + @Override + public MapIterator getIterator(int x, int y, int z) { + return new MapIterator119(x, y, z); + } } diff --git a/spigot/build.gradle b/spigot/build.gradle index 8f1da35a..b2c99fde 100644 --- a/spigot/build.gradle +++ b/spigot/build.gradle @@ -1,4 +1,6 @@ - +plugins { + id "xyz.jpenilla.run-paper" version "1.0.6" +} description = 'dynmap' eclipse { @@ -82,7 +84,12 @@ processResources { jar { classifier = 'unshaded' } - +runServer { + // Configure the Minecraft version for our task. + // This is the only required configuration besides applying the plugin. + // Your plugin's jar (or shadowJar if present) will be used automatically. + minecraftVersion("1.19.2") +} shadowJar { dependencies { include(dependency('org.bstats::')) From 8a8e2ecfcf8f297acac9f7de1295b8033ead2555 Mon Sep 17 00:00:00 2001 From: mastermc05 Date: Fri, 14 Oct 2022 15:37:36 +0300 Subject: [PATCH 02/22] Abstract for easier multiversion support, reduce diff --- .../common/chunk/GenericMapChunkCache.java | 20 ++-- .../bukkit/helper/v119/MapChunkCache119.java | 97 +++---------------- 2 files changed, 29 insertions(+), 88 deletions(-) diff --git a/DynmapCore/src/main/java/org/dynmap/common/chunk/GenericMapChunkCache.java b/DynmapCore/src/main/java/org/dynmap/common/chunk/GenericMapChunkCache.java index f22fb840..55f0cc44 100644 --- a/DynmapCore/src/main/java/org/dynmap/common/chunk/GenericMapChunkCache.java +++ b/DynmapCore/src/main/java/org/dynmap/common/chunk/GenericMapChunkCache.java @@ -55,7 +55,7 @@ public abstract class GenericMapChunkCache extends MapChunkCache { private final int worldheight; private final int ymin; - protected OurMapIterator(int x0, int y0, int z0) { + OurMapIterator(int x0, int y0, int z0) { initialize(x0, y0, z0); worldheight = dw.worldheight; ymin = dw.minY; @@ -157,7 +157,7 @@ public abstract class GenericMapChunkCache extends MapChunkCache { } } - public final BiomeMap getBiomeRel(int dx, int dz) { + private final BiomeMap getBiomeRel(int dx, int dz) { int nx = x + dx; int nz = z + dz; int nchunkindex = ((nx >> 4) - x_min) + (((nz >> 4) - z_min) * x_dim); @@ -169,7 +169,7 @@ public abstract class GenericMapChunkCache extends MapChunkCache { } @Override - public int getSmoothGrassColorMultiplier(int[] colormap) { + public final int getSmoothGrassColorMultiplier(int[] colormap) { int mult = 0xFFFFFF; try { @@ -181,7 +181,7 @@ public abstract class GenericMapChunkCache extends MapChunkCache { for (int dz = -1; dz <= 1; dz++) { BiomeMap bm = getBiomeRel(dx, dz); if (bm == BiomeMap.NULL) continue; - int rmult = bm.getModifiedGrassMultiplier(colormap[bm.biomeLookup()]); + int rmult = getGrassColor(bm, colormap, getX() + dx, getZ() + dz); raccum += (rmult >> 16) & 0xFF; gaccum += (rmult >> 8) & 0xFF; baccum += rmult & 0xFF; @@ -200,7 +200,7 @@ public abstract class GenericMapChunkCache extends MapChunkCache { } @Override - public int getSmoothFoliageColorMultiplier(int[] colormap) { + public final int getSmoothFoliageColorMultiplier(int[] colormap) { int mult = 0xFFFFFF; try { @@ -212,7 +212,7 @@ public abstract class GenericMapChunkCache extends MapChunkCache { for (int dz = -1; dz <= 1; dz++) { BiomeMap bm = getBiomeRel(dx, dz); if (bm == BiomeMap.NULL) continue; - int rmult = bm.getModifiedFoliageMultiplier(colormap[bm.biomeLookup()]); + int rmult = getFoliageColor(bm, colormap, getX() + dx, getZ() + dz); raccum += (rmult >> 16) & 0xFF; gaccum += (rmult >> 8) & 0xFF; baccum += rmult & 0xFF; @@ -546,6 +546,14 @@ public abstract class GenericMapChunkCache extends MapChunkCache { } } + public int getGrassColor(BiomeMap bm, int[] colormap, int x, int z) { + return bm.getModifiedGrassMultiplier(colormap[bm.biomeLookup()]); + } + + public int getFoliageColor(BiomeMap bm, int[] colormap, int x, int z) { + return bm.getModifiedFoliageMultiplier(colormap[bm.biomeLookup()]); + } + private class OurEndMapIterator extends OurMapIterator { OurEndMapIterator(int x0, int y0, int z0) { super(x0, y0, z0); diff --git a/bukkit-helper-119/src/main/java/org/dynmap/bukkit/helper/v119/MapChunkCache119.java b/bukkit-helper-119/src/main/java/org/dynmap/bukkit/helper/v119/MapChunkCache119.java index 62b855e1..995d60b4 100644 --- a/bukkit-helper-119/src/main/java/org/dynmap/bukkit/helper/v119/MapChunkCache119.java +++ b/bukkit-helper-119/src/main/java/org/dynmap/bukkit/helper/v119/MapChunkCache119.java @@ -1,6 +1,5 @@ package org.dynmap.bukkit.helper.v119; -import net.minecraft.core.IRegistry; import net.minecraft.resources.MinecraftKey; import net.minecraft.world.level.biome.BiomeBase; import org.bukkit.World; @@ -17,7 +16,6 @@ import net.minecraft.nbt.NBTTagCompound; import net.minecraft.world.level.ChunkCoordIntPair; import net.minecraft.world.level.chunk.storage.ChunkRegionLoader; import net.minecraft.world.level.chunk.Chunk; -import org.dynmap.utils.MapIterator; import java.lang.reflect.InvocationTargetException; import java.util.List; @@ -32,7 +30,7 @@ import java.util.function.Supplier; */ public class MapChunkCache119 extends GenericMapChunkCache { private static final AsyncChunkProvider119 provider = BukkitVersionHelper.helper.isUnsafeAsync() ? null : new AsyncChunkProvider119(); - private CraftWorld w; + private World w; /** * Construct empty cache */ @@ -43,14 +41,14 @@ public class MapChunkCache119 extends GenericMapChunkCache { // Load generic chunk from existing and already loaded chunk @Override protected Supplier getLoadedChunkAsync(DynmapChunk chunk) { - Supplier supplier = provider.getLoadedChunk(w, chunk.x, chunk.z); + Supplier supplier = provider.getLoadedChunk((CraftWorld) w, chunk.x, chunk.z); return () -> { NBTTagCompound nbt = supplier.get(); return nbt != null ? parseChunkFromNBT(new NBT.NBTCompound(nbt)) : null; }; } protected GenericChunk getLoadedChunk(DynmapChunk chunk) { - CraftWorld cw = w; + CraftWorld cw = (CraftWorld) w; if (!cw.isChunkLoaded(chunk.x, chunk.z)) return null; Chunk c = cw.getHandle().getChunkIfLoaded(chunk.x, chunk.z); if (c == null || !c.o) return null; // c.loaded @@ -62,7 +60,7 @@ public class MapChunkCache119 extends GenericMapChunkCache { @Override protected Supplier loadChunkAsync(DynmapChunk chunk){ try { - CompletableFuture nbt = provider.getChunk(w.getHandle(), chunk.x, chunk.z); + CompletableFuture nbt = provider.getChunk(((CraftWorld) w).getHandle(), chunk.x, chunk.z); return () -> { NBTTagCompound compound; try { @@ -80,7 +78,7 @@ public class MapChunkCache119 extends GenericMapChunkCache { } protected GenericChunk loadChunk(DynmapChunk chunk) { - CraftWorld cw = w; + CraftWorld cw = (CraftWorld) w; NBTTagCompound nbt = null; ChunkCoordIntPair cc = new ChunkCoordIntPair(chunk.x, chunk.z); GenericChunk gc = null; @@ -96,86 +94,21 @@ public class MapChunkCache119 extends GenericMapChunkCache { } public void setChunks(BukkitWorld dw, List chunks) { - this.w = (CraftWorld) dw.getWorld(); + this.w = dw.getWorld(); super.setChunks(dw, chunks); } - private class MapIterator119 extends OurMapIterator { - int light; - MapIterator119(int x, int y, int z) { - super(x, y, z); - light = dw.getEnvironment().equals("the_end") ? 15 : -1; - } - - @Override - public int getBlockSkyLight() { - return light == -1 ? super.getBlockSkyLight() : light; - } - - @Override - public int getSmoothGrassColorMultiplier(int[] colormap) { - int r = 0; - int g = 0; - int b = 0; - int cnt = 0; - IRegistry reg = BukkitVersionHelperSpigot119.getBiomeReg(); - for (int x = -2; x <= 2; x++) { - for (int z = -2; z <= 2; z++) { - BiomeMap map = this.getBiomeRel(x, z); - if (map.getResourcelocation() == null) continue; - BiomeBase base = reg.a(MinecraftKey.a(map.getResourcelocation())); - int rgb = 0; - if (base != null) { - rgb = base.j().f().orElse(colormap[map.biomeLookup()]); - rgb = base.j().g().a(x + getX(), z + getZ(), rgb); - } - if (rgb == 0) rgb = colormap[map.biomeLookup()]; - b += rgb & 0xFF; - rgb >>= 8; - g += rgb & 0xFF; - rgb >>= 8; - r += rgb & 0xFF; - cnt++; - } - } - if (cnt < 1) return 0; - r /= cnt; - g /= cnt; - b /= cnt; - return r << 16 | g << 8 | b; - } - - @Override - public int getSmoothFoliageColorMultiplier(int[] colormap) { - int r = 0; - int g = 0; - int b = 0; - int cnt = 0; - IRegistry reg = BukkitVersionHelperSpigot119.getBiomeReg(); - for (int x = -2; x <= 2; x++) { - for (int z = -2; z <= 2; z++) { - BiomeMap map = this.getBiomeRel(x, z); - if (map.getResourcelocation() == null) continue; - BiomeBase base = reg.a(MinecraftKey.a(map.getResourcelocation())); - int rgb = base == null ? colormap[map.biomeLookup()] : base.j().e().orElse(colormap[map.biomeLookup()]); - b += rgb & 0xFF; - rgb >>= 8; - g += rgb & 0xFF; - rgb >>= 8; - r += rgb & 0xFF; - cnt++; - } - } - if (cnt < 1) return 0; - r /= cnt; - g /= cnt; - b /= cnt; - return r << 16 | g << 8 | b; - } + @Override + public int getFoliageColor(BiomeMap bm, int[] colormap, int x, int z) { + if (bm.getResourcelocation() == null) return colormap[bm.biomeLookup()]; + BiomeBase base = BukkitVersionHelperSpigot119.getBiomeReg().a(MinecraftKey.a(bm.getResourcelocation())); + return base == null ? colormap[bm.biomeLookup()] : base.j().e().orElse(colormap[bm.biomeLookup()]); } @Override - public MapIterator getIterator(int x, int y, int z) { - return new MapIterator119(x, y, z); + public int getGrassColor(BiomeMap bm, int[] colormap, int x, int z) { + if (bm.getResourcelocation() == null) return colormap[bm.biomeLookup()]; + BiomeBase base = BukkitVersionHelperSpigot119.getBiomeReg().a(MinecraftKey.a(bm.getResourcelocation())); + return base == null ? colormap[bm.biomeLookup()] : base.j().g().a(x, z, base.j().f().orElse(colormap[bm.biomeLookup()])); } } From 5f29846645b230a56e2e0baf212b6eea0a19a457 Mon Sep 17 00:00:00 2001 From: mastermc05 Date: Fri, 14 Oct 2022 15:51:08 +0300 Subject: [PATCH 03/22] Support 1.18.2 --- .../v118_2/BukkitVersionHelperSpigot118_2.java | 2 +- .../helper/v118_2/MapChunkCache118_2.java | 17 +++++++++++++++++ spigot/build.gradle | 2 +- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/bukkit-helper-118-2/src/main/java/org/dynmap/bukkit/helper/v118_2/BukkitVersionHelperSpigot118_2.java b/bukkit-helper-118-2/src/main/java/org/dynmap/bukkit/helper/v118_2/BukkitVersionHelperSpigot118_2.java index fed30017..054ffc70 100644 --- a/bukkit-helper-118-2/src/main/java/org/dynmap/bukkit/helper/v118_2/BukkitVersionHelperSpigot118_2.java +++ b/bukkit-helper-118-2/src/main/java/org/dynmap/bukkit/helper/v118_2/BukkitVersionHelperSpigot118_2.java @@ -111,7 +111,7 @@ public class BukkitVersionHelperSpigot118_2 extends BukkitVersionHelper { private static IRegistry reg = null; - private static IRegistry getBiomeReg() { + public static IRegistry getBiomeReg() { if (reg == null) { reg = MinecraftServer.getServer().aU().d(IRegistry.aP); } diff --git a/bukkit-helper-118-2/src/main/java/org/dynmap/bukkit/helper/v118_2/MapChunkCache118_2.java b/bukkit-helper-118-2/src/main/java/org/dynmap/bukkit/helper/v118_2/MapChunkCache118_2.java index 21b94ea3..1b939426 100644 --- a/bukkit-helper-118-2/src/main/java/org/dynmap/bukkit/helper/v118_2/MapChunkCache118_2.java +++ b/bukkit-helper-118-2/src/main/java/org/dynmap/bukkit/helper/v118_2/MapChunkCache118_2.java @@ -1,6 +1,8 @@ package org.dynmap.bukkit.helper.v118_2; +import net.minecraft.resources.MinecraftKey; import net.minecraft.server.MinecraftServer; +import net.minecraft.world.level.biome.BiomeBase; import org.bukkit.Bukkit; import org.bukkit.World; import org.bukkit.craftbukkit.v1_18_R2.CraftServer; @@ -9,6 +11,7 @@ import org.dynmap.DynmapChunk; import org.dynmap.MapManager; import org.dynmap.bukkit.helper.BukkitVersionHelper; import org.dynmap.bukkit.helper.BukkitWorld; +import org.dynmap.common.BiomeMap; import org.dynmap.common.chunk.GenericChunk; import org.dynmap.common.chunk.GenericChunkCache; import org.dynmap.common.chunk.GenericMapChunkCache; @@ -96,4 +99,18 @@ public class MapChunkCache118_2 extends GenericMapChunkCache { this.w = dw.getWorld(); super.setChunks(dw, chunks); } + + @Override + public int getFoliageColor(BiomeMap bm, int[] colormap, int x, int z) { + if (bm.getResourcelocation() == null) return colormap[bm.biomeLookup()]; + BiomeBase base = BukkitVersionHelperSpigot118_2.getBiomeReg().a(MinecraftKey.a(bm.getResourcelocation())); + return base == null ? colormap[bm.biomeLookup()] : base.j().e().orElse(colormap[bm.biomeLookup()]); + } + + @Override + public int getGrassColor(BiomeMap bm, int[] colormap, int x, int z) { + if (bm.getResourcelocation() == null) return colormap[bm.biomeLookup()]; + BiomeBase base = BukkitVersionHelperSpigot118_2.getBiomeReg().a(MinecraftKey.a(bm.getResourcelocation())); + return base == null ? colormap[bm.biomeLookup()] : base.j().g().a(x, z, base.j().f().orElse(colormap[bm.biomeLookup()])); + } } diff --git a/spigot/build.gradle b/spigot/build.gradle index b2c99fde..86778407 100644 --- a/spigot/build.gradle +++ b/spigot/build.gradle @@ -88,7 +88,7 @@ runServer { // Configure the Minecraft version for our task. // This is the only required configuration besides applying the plugin. // Your plugin's jar (or shadowJar if present) will be used automatically. - minecraftVersion("1.19.2") + minecraftVersion("1.18.2") } shadowJar { dependencies { From f34929c6cf9706bc7d95b110b4b1f32590f4b412 Mon Sep 17 00:00:00 2001 From: mastermc05 Date: Fri, 14 Oct 2022 15:59:20 +0300 Subject: [PATCH 04/22] Support 1.18 --- .../v118/BukkitVersionHelperSpigot118.java | 2 +- .../bukkit/helper/v118/MapChunkCache118.java | 17 +++++++++++++++++ spigot/build.gradle | 2 +- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/bukkit-helper-118/src/main/java/org/dynmap/bukkit/helper/v118/BukkitVersionHelperSpigot118.java b/bukkit-helper-118/src/main/java/org/dynmap/bukkit/helper/v118/BukkitVersionHelperSpigot118.java index fbacfa6d..3e9b464c 100644 --- a/bukkit-helper-118/src/main/java/org/dynmap/bukkit/helper/v118/BukkitVersionHelperSpigot118.java +++ b/bukkit-helper-118/src/main/java/org/dynmap/bukkit/helper/v118/BukkitVersionHelperSpigot118.java @@ -104,7 +104,7 @@ public class BukkitVersionHelperSpigot118 extends BukkitVersionHelper { private static IRegistry reg = null; - private static IRegistry getBiomeReg() { + public static IRegistry getBiomeReg() { if (reg == null) { reg = MinecraftServer.getServer().aV().d(IRegistry.aR); } diff --git a/bukkit-helper-118/src/main/java/org/dynmap/bukkit/helper/v118/MapChunkCache118.java b/bukkit-helper-118/src/main/java/org/dynmap/bukkit/helper/v118/MapChunkCache118.java index f9bb442c..98117bbd 100644 --- a/bukkit-helper-118/src/main/java/org/dynmap/bukkit/helper/v118/MapChunkCache118.java +++ b/bukkit-helper-118/src/main/java/org/dynmap/bukkit/helper/v118/MapChunkCache118.java @@ -1,5 +1,7 @@ package org.dynmap.bukkit.helper.v118; +import net.minecraft.resources.MinecraftKey; +import net.minecraft.world.level.biome.BiomeBase; import org.bukkit.ChunkSnapshot; import org.bukkit.World; import org.bukkit.block.Biome; @@ -85,4 +87,19 @@ public class MapChunkCache118 extends GenericMapChunkCache { this.w = dw.getWorld(); super.setChunks(dw, chunks); } + + + @Override + public int getFoliageColor(BiomeMap bm, int[] colormap, int x, int z) { + if (bm.getResourcelocation() == null) return colormap[bm.biomeLookup()]; + BiomeBase base = BukkitVersionHelperSpigot118.getBiomeReg().a(MinecraftKey.a(bm.getResourcelocation())); + return base == null ? colormap[bm.biomeLookup()] : base.j().e().orElse(colormap[bm.biomeLookup()]); + } + + @Override + public int getGrassColor(BiomeMap bm, int[] colormap, int x, int z) { + if (bm.getResourcelocation() == null) return colormap[bm.biomeLookup()]; + BiomeBase base = BukkitVersionHelperSpigot118.getBiomeReg().a(MinecraftKey.a(bm.getResourcelocation())); + return base == null ? colormap[bm.biomeLookup()] : base.j().g().a(x, z, base.j().f().orElse(colormap[bm.biomeLookup()])); + } } diff --git a/spigot/build.gradle b/spigot/build.gradle index 86778407..25918f99 100644 --- a/spigot/build.gradle +++ b/spigot/build.gradle @@ -88,7 +88,7 @@ runServer { // Configure the Minecraft version for our task. // This is the only required configuration besides applying the plugin. // Your plugin's jar (or shadowJar if present) will be used automatically. - minecraftVersion("1.18.2") + minecraftVersion("1.18") } shadowJar { dependencies { From 97a82a3d1b88d86f2f5867a60750ec31e87ea83d Mon Sep 17 00:00:00 2001 From: mastermc05 Date: Fri, 14 Oct 2022 16:06:15 +0300 Subject: [PATCH 05/22] Support 1.17 --- .../v117/BukkitVersionHelperSpigot117.java | 4 ++-- .../bukkit/helper/v117/MapChunkCache117.java | 17 +++++++++++++++++ spigot/build.gradle | 2 +- 3 files changed, 20 insertions(+), 3 deletions(-) diff --git a/bukkit-helper-117/src/main/java/org/dynmap/bukkit/helper/v117/BukkitVersionHelperSpigot117.java b/bukkit-helper-117/src/main/java/org/dynmap/bukkit/helper/v117/BukkitVersionHelperSpigot117.java index f5a9b076..9a7a5fb1 100644 --- a/bukkit-helper-117/src/main/java/org/dynmap/bukkit/helper/v117/BukkitVersionHelperSpigot117.java +++ b/bukkit-helper-117/src/main/java/org/dynmap/bukkit/helper/v117/BukkitVersionHelperSpigot117.java @@ -85,9 +85,9 @@ public class BukkitVersionHelperSpigot117 extends BukkitVersionHelper { return names; } - private IRegistry reg = null; + private static IRegistry reg = null; - private IRegistry getBiomeReg() { + public static IRegistry getBiomeReg() { if (reg == null) { reg = MinecraftServer.getServer().getCustomRegistry().b(IRegistry.aO); } diff --git a/bukkit-helper-117/src/main/java/org/dynmap/bukkit/helper/v117/MapChunkCache117.java b/bukkit-helper-117/src/main/java/org/dynmap/bukkit/helper/v117/MapChunkCache117.java index b92d76a0..0148f2d0 100644 --- a/bukkit-helper-117/src/main/java/org/dynmap/bukkit/helper/v117/MapChunkCache117.java +++ b/bukkit-helper-117/src/main/java/org/dynmap/bukkit/helper/v117/MapChunkCache117.java @@ -1,9 +1,12 @@ package org.dynmap.bukkit.helper.v117; +import net.minecraft.resources.MinecraftKey; +import net.minecraft.world.level.biome.BiomeBase; import org.bukkit.World; import org.bukkit.craftbukkit.v1_17_R1.CraftWorld; import org.dynmap.DynmapChunk; import org.dynmap.bukkit.helper.BukkitWorld; +import org.dynmap.common.BiomeMap; import org.dynmap.common.chunk.GenericChunk; import org.dynmap.common.chunk.GenericChunkCache; import org.dynmap.common.chunk.GenericMapChunkCache; @@ -66,4 +69,18 @@ public class MapChunkCache117 extends GenericMapChunkCache { this.w = dw.getWorld(); super.setChunks(dw, chunks); } + + @Override + public int getFoliageColor(BiomeMap bm, int[] colormap, int x, int z) { + if (bm.getResourcelocation() == null) return colormap[bm.biomeLookup()]; + BiomeBase base = BukkitVersionHelperSpigot117.getBiomeReg().get(MinecraftKey.a(bm.getResourcelocation())); + return base == null ? colormap[bm.biomeLookup()] : base.l().e().orElse(colormap[bm.biomeLookup()]); + } + + @Override + public int getGrassColor(BiomeMap bm, int[] colormap, int x, int z) { + if (bm.getResourcelocation() == null) return colormap[bm.biomeLookup()]; + BiomeBase base = BukkitVersionHelperSpigot117.getBiomeReg().get(MinecraftKey.a(bm.getResourcelocation())); + return base == null ? colormap[bm.biomeLookup()] : base.l().g().a(x, z, base.l().f().orElse(colormap[bm.biomeLookup()])); + } } diff --git a/spigot/build.gradle b/spigot/build.gradle index 25918f99..5b54daeb 100644 --- a/spigot/build.gradle +++ b/spigot/build.gradle @@ -88,7 +88,7 @@ runServer { // Configure the Minecraft version for our task. // This is the only required configuration besides applying the plugin. // Your plugin's jar (or shadowJar if present) will be used automatically. - minecraftVersion("1.18") + minecraftVersion("1.17") } shadowJar { dependencies { From 053df84196763e37e718472455d9bc995a782509 Mon Sep 17 00:00:00 2001 From: mastermc05 Date: Fri, 14 Oct 2022 16:14:40 +0300 Subject: [PATCH 06/22] Clean up --- .gitignore | 1 - spigot/build.gradle | 11 ++--------- 2 files changed, 2 insertions(+), 10 deletions(-) diff --git a/.gitignore b/.gitignore index 69d02691..0eeb19b4 100644 --- a/.gitignore +++ b/.gitignore @@ -37,4 +37,3 @@ /fabric-1.16.1_server.launch /fabric-1.16.2_client.launch /fabric-1.16.2_server.launch -/spigot/run/ diff --git a/spigot/build.gradle b/spigot/build.gradle index 5b54daeb..8f1da35a 100644 --- a/spigot/build.gradle +++ b/spigot/build.gradle @@ -1,6 +1,4 @@ -plugins { - id "xyz.jpenilla.run-paper" version "1.0.6" -} + description = 'dynmap' eclipse { @@ -84,12 +82,7 @@ processResources { jar { classifier = 'unshaded' } -runServer { - // Configure the Minecraft version for our task. - // This is the only required configuration besides applying the plugin. - // Your plugin's jar (or shadowJar if present) will be used automatically. - minecraftVersion("1.17") -} + shadowJar { dependencies { include(dependency('org.bstats::')) From 0ebbc2bbe5e7ddec38754ee43c5129cd69fcb6e2 Mon Sep 17 00:00:00 2001 From: mastermc05 Date: Sat, 22 Oct 2022 14:24:49 +0300 Subject: [PATCH 07/22] Support for 1.16.5 --- .../BukkitVersionHelperSpigot116_4.java | 34 +++++++++++++++++-- .../helper/v116_4/MapChunkCache116_4.java | 24 +++++++++++++ 2 files changed, 56 insertions(+), 2 deletions(-) diff --git a/bukkit-helper-116-4/src/main/java/org/dynmap/bukkit/helper/v116_4/BukkitVersionHelperSpigot116_4.java b/bukkit-helper-116-4/src/main/java/org/dynmap/bukkit/helper/v116_4/BukkitVersionHelperSpigot116_4.java index 26b87b2f..7407ab7b 100644 --- a/bukkit-helper-116-4/src/main/java/org/dynmap/bukkit/helper/v116_4/BukkitVersionHelperSpigot116_4.java +++ b/bukkit-helper-116-4/src/main/java/org/dynmap/bukkit/helper/v116_4/BukkitVersionHelperSpigot116_4.java @@ -20,6 +20,7 @@ import java.lang.reflect.Method; import java.util.HashMap; import java.util.IdentityHashMap; import java.util.List; +import java.util.Optional; /** @@ -28,10 +29,16 @@ import java.util.List; public class BukkitVersionHelperSpigot116_4 extends BukkitVersionHelperGeneric { private final boolean unsafeAsync; private Field watercolorfield; + private static Field grassColorField; + private static Field foliageColorField; + private static Field grassColorModifierField; public BukkitVersionHelperSpigot116_4() { Class biomefog = getNMSClass("net.minecraft.server.BiomeFog"); watercolorfield = getPrivateField(biomefog, new String[] { "c" }, int.class); + grassColorField = getPrivateField(biomefog, new String[] { "g" }, Optional.class); + foliageColorField = getPrivateField(biomefog, new String[] { "f" }, Optional.class); + grassColorModifierField = getPrivateField(biomefog, new String[] { "h" }, BiomeFog.GrassColor.class); this.unsafeAsync = true; } @@ -50,9 +57,9 @@ public class BukkitVersionHelperSpigot116_4 extends BukkitVersionHelperGeneric { return names; } - private IRegistry reg = null; + private static IRegistry reg = null; - private IRegistry getBiomeReg() { + public static IRegistry getBiomeReg() { if (reg == null) { reg = MinecraftServer.getServer().getCustomRegistry().b(IRegistry.ay); } @@ -160,6 +167,29 @@ public class BukkitVersionHelperSpigot116_4 extends BukkitVersionHelperGeneric { } return 0xFFFFFF; } + @SuppressWarnings("unchecked") + public static Optional getBiomeBaseGrassMult(BiomeBase bb) { + if (bb == null) return Optional.empty(); + try { + return (Optional) grassColorField.get(bb.l()); + } catch (IllegalArgumentException | IllegalAccessException ignored) {} + return Optional.empty(); + } + @SuppressWarnings("unchecked") + public static Optional getBiomeBaseFoliageMult(BiomeBase bb) { + if (bb == null) return Optional.empty(); + try { + return (Optional) foliageColorField.get(bb.l()); + } catch (IllegalArgumentException | IllegalAccessException ignored) {} + return Optional.empty(); + } + public static BiomeFog.GrassColor getBiomeBaseGrassModifier(BiomeBase bb) { + if (bb == null) return BiomeFog.GrassColor.NONE; + try { + return (BiomeFog.GrassColor) grassColorModifierField.get(bb.l()); + } catch (IllegalArgumentException | IllegalAccessException ignored) {} + return BiomeFog.GrassColor.NONE; + } /** Get temperature from biomebase */ @Override diff --git a/bukkit-helper-116-4/src/main/java/org/dynmap/bukkit/helper/v116_4/MapChunkCache116_4.java b/bukkit-helper-116-4/src/main/java/org/dynmap/bukkit/helper/v116_4/MapChunkCache116_4.java index e046e4fd..6863c085 100644 --- a/bukkit-helper-116-4/src/main/java/org/dynmap/bukkit/helper/v116_4/MapChunkCache116_4.java +++ b/bukkit-helper-116-4/src/main/java/org/dynmap/bukkit/helper/v116_4/MapChunkCache116_4.java @@ -6,12 +6,14 @@ import org.bukkit.World; import org.bukkit.craftbukkit.v1_16_R3.CraftWorld; import org.dynmap.DynmapChunk; import org.dynmap.bukkit.helper.BukkitWorld; +import org.dynmap.common.BiomeMap; import org.dynmap.common.chunk.GenericChunk; import org.dynmap.common.chunk.GenericChunkCache; import org.dynmap.common.chunk.GenericMapChunkCache; import java.io.IOException; import java.util.List; +import java.util.Optional; /** * Container for managing chunks - dependent upon using chunk snapshots, since rendering is off server thread @@ -62,5 +64,27 @@ public class MapChunkCache116_4 extends GenericMapChunkCache { this.w = dw.getWorld(); super.setChunks(dw, chunks); } + @Override + public int getFoliageColor(BiomeMap bm, int[] colormap, int x, int z) { + if (bm.getResourcelocation() == null) return colormap[bm.biomeLookup()]; + BiomeBase base = BukkitVersionHelperSpigot116_4.getBiomeReg().get(MinecraftKey.a(bm.getResourcelocation())); + return BukkitVersionHelperSpigot116_4.getBiomeBaseFoliageMult(base).orElse(colormap[bm.biomeLookup()]); + } + + @Override + public int getGrassColor(BiomeMap bm, int[] colormap, int x, int z) { + if (bm.getResourcelocation() == null) return colormap[bm.biomeLookup()]; + BiomeBase base = BukkitVersionHelperSpigot116_4.getBiomeReg().get(MinecraftKey.a(bm.getResourcelocation())); + int grassMult = BukkitVersionHelperSpigot116_4.getBiomeBaseGrassMult(base).orElse(colormap[bm.biomeLookup()]); + BiomeFog.GrassColor modifier = BukkitVersionHelperSpigot116_4.getBiomeBaseGrassModifier(base); + if (modifier == BiomeFog.GrassColor.DARK_FOREST) { + return ((grassMult & 0xfefefe) + 0x28340a) >> 1; + } else if (modifier == BiomeFog.GrassColor.SWAMP) { + double var5 = BiomeBase.f.a(x * 0.0225, z * 0.0225, false); + return var5 < -0.1 ? 0x4c763c : 0x6a7039; + } else { + return grassMult; + } + } } From 0f8174796ca1c7441911fb3382cb945230d8a601 Mon Sep 17 00:00:00 2001 From: mastermc05 Date: Fri, 18 Nov 2022 13:06:54 +0200 Subject: [PATCH 08/22] Cache biome object, further reduce diff --- .../src/main/java/org/dynmap/common/BiomeMap.java | 11 ++++++++--- .../v116_4/BukkitVersionHelperSpigot116_4.java | 4 ++-- .../bukkit/helper/v116_4/MapChunkCache116_4.java | 9 ++++----- .../helper/v117/BukkitVersionHelperSpigot117.java | 4 ++-- .../dynmap/bukkit/helper/v117/MapChunkCache117.java | 13 ++++++------- .../v118_2/BukkitVersionHelperSpigot118_2.java | 2 +- .../bukkit/helper/v118_2/MapChunkCache118_2.java | 12 +++++------- .../helper/v118/BukkitVersionHelperSpigot118.java | 2 +- .../dynmap/bukkit/helper/v118/MapChunkCache118.java | 12 +++++------- .../helper/v119/BukkitVersionHelperSpigot119.java | 2 +- .../dynmap/bukkit/helper/v119/MapChunkCache119.java | 12 +++++------- .../main/java/org/dynmap/bukkit/DynmapPlugin.java | 1 + 12 files changed, 41 insertions(+), 43 deletions(-) diff --git a/DynmapCore/src/main/java/org/dynmap/common/BiomeMap.java b/DynmapCore/src/main/java/org/dynmap/common/BiomeMap.java index 7611c514..346fc841 100644 --- a/DynmapCore/src/main/java/org/dynmap/common/BiomeMap.java +++ b/DynmapCore/src/main/java/org/dynmap/common/BiomeMap.java @@ -3,6 +3,7 @@ package org.dynmap.common; import java.util.Arrays; import java.util.HashMap; import java.util.Map; +import java.util.Optional; import org.dynmap.hdmap.HDBlockModels; @@ -44,6 +45,7 @@ public class BiomeMap { private int watercolormult; private int grassmult; private int foliagemult; + private Optional biomeObj = Optional.empty(); private final String id; private final String resourcelocation; private final int index; @@ -300,10 +302,13 @@ public class BiomeMap { public String getId() { return id; } - public String getResourcelocation() { - return resourcelocation; - } public String toString() { return String.format("%s(%s)", id, resourcelocation); } + public @SuppressWarnings("unchecked") Optional getBiomeObject() { + return (Optional) biomeObj; + } + public void setBiomeObject(Object biomeObj) { + this.biomeObj = Optional.of(biomeObj); + } } diff --git a/bukkit-helper-116-4/src/main/java/org/dynmap/bukkit/helper/v116_4/BukkitVersionHelperSpigot116_4.java b/bukkit-helper-116-4/src/main/java/org/dynmap/bukkit/helper/v116_4/BukkitVersionHelperSpigot116_4.java index 7407ab7b..2ea990b2 100644 --- a/bukkit-helper-116-4/src/main/java/org/dynmap/bukkit/helper/v116_4/BukkitVersionHelperSpigot116_4.java +++ b/bukkit-helper-116-4/src/main/java/org/dynmap/bukkit/helper/v116_4/BukkitVersionHelperSpigot116_4.java @@ -57,9 +57,9 @@ public class BukkitVersionHelperSpigot116_4 extends BukkitVersionHelperGeneric { return names; } - private static IRegistry reg = null; + private IRegistry reg = null; - public static IRegistry getBiomeReg() { + private IRegistry getBiomeReg() { if (reg == null) { reg = MinecraftServer.getServer().getCustomRegistry().b(IRegistry.ay); } diff --git a/bukkit-helper-116-4/src/main/java/org/dynmap/bukkit/helper/v116_4/MapChunkCache116_4.java b/bukkit-helper-116-4/src/main/java/org/dynmap/bukkit/helper/v116_4/MapChunkCache116_4.java index 6863c085..7c1b6665 100644 --- a/bukkit-helper-116-4/src/main/java/org/dynmap/bukkit/helper/v116_4/MapChunkCache116_4.java +++ b/bukkit-helper-116-4/src/main/java/org/dynmap/bukkit/helper/v116_4/MapChunkCache116_4.java @@ -66,15 +66,14 @@ public class MapChunkCache116_4 extends GenericMapChunkCache { } @Override public int getFoliageColor(BiomeMap bm, int[] colormap, int x, int z) { - if (bm.getResourcelocation() == null) return colormap[bm.biomeLookup()]; - BiomeBase base = BukkitVersionHelperSpigot116_4.getBiomeReg().get(MinecraftKey.a(bm.getResourcelocation())); - return BukkitVersionHelperSpigot116_4.getBiomeBaseFoliageMult(base).orElse(colormap[bm.biomeLookup()]); + Optional base = bm.getBiomeObject(); + return BukkitVersionHelperSpigot116_4.getBiomeBaseFoliageMult(base.orElse(null)).orElse(colormap[bm.biomeLookup()]); } @Override public int getGrassColor(BiomeMap bm, int[] colormap, int x, int z) { - if (bm.getResourcelocation() == null) return colormap[bm.biomeLookup()]; - BiomeBase base = BukkitVersionHelperSpigot116_4.getBiomeReg().get(MinecraftKey.a(bm.getResourcelocation())); + BiomeBase base = bm.getBiomeObject().orElse(null); + if (base == null) return bm.getModifiedGrassMultiplier(colormap[bm.biomeLookup()]); int grassMult = BukkitVersionHelperSpigot116_4.getBiomeBaseGrassMult(base).orElse(colormap[bm.biomeLookup()]); BiomeFog.GrassColor modifier = BukkitVersionHelperSpigot116_4.getBiomeBaseGrassModifier(base); if (modifier == BiomeFog.GrassColor.DARK_FOREST) { diff --git a/bukkit-helper-117/src/main/java/org/dynmap/bukkit/helper/v117/BukkitVersionHelperSpigot117.java b/bukkit-helper-117/src/main/java/org/dynmap/bukkit/helper/v117/BukkitVersionHelperSpigot117.java index 9a7a5fb1..f5a9b076 100644 --- a/bukkit-helper-117/src/main/java/org/dynmap/bukkit/helper/v117/BukkitVersionHelperSpigot117.java +++ b/bukkit-helper-117/src/main/java/org/dynmap/bukkit/helper/v117/BukkitVersionHelperSpigot117.java @@ -85,9 +85,9 @@ public class BukkitVersionHelperSpigot117 extends BukkitVersionHelper { return names; } - private static IRegistry reg = null; + private IRegistry reg = null; - public static IRegistry getBiomeReg() { + private IRegistry getBiomeReg() { if (reg == null) { reg = MinecraftServer.getServer().getCustomRegistry().b(IRegistry.aO); } diff --git a/bukkit-helper-117/src/main/java/org/dynmap/bukkit/helper/v117/MapChunkCache117.java b/bukkit-helper-117/src/main/java/org/dynmap/bukkit/helper/v117/MapChunkCache117.java index 0148f2d0..9d5c790d 100644 --- a/bukkit-helper-117/src/main/java/org/dynmap/bukkit/helper/v117/MapChunkCache117.java +++ b/bukkit-helper-117/src/main/java/org/dynmap/bukkit/helper/v117/MapChunkCache117.java @@ -1,7 +1,7 @@ package org.dynmap.bukkit.helper.v117; -import net.minecraft.resources.MinecraftKey; import net.minecraft.world.level.biome.BiomeBase; +import net.minecraft.world.level.biome.BiomeFog; import org.bukkit.World; import org.bukkit.craftbukkit.v1_17_R1.CraftWorld; import org.dynmap.DynmapChunk; @@ -19,6 +19,7 @@ import net.minecraft.world.level.chunk.storage.ChunkRegionLoader; import java.io.IOException; import java.util.List; +import java.util.Optional; /** * Container for managing chunks - dependent upon using chunk snapshots, since rendering is off server thread @@ -72,15 +73,13 @@ public class MapChunkCache117 extends GenericMapChunkCache { @Override public int getFoliageColor(BiomeMap bm, int[] colormap, int x, int z) { - if (bm.getResourcelocation() == null) return colormap[bm.biomeLookup()]; - BiomeBase base = BukkitVersionHelperSpigot117.getBiomeReg().get(MinecraftKey.a(bm.getResourcelocation())); - return base == null ? colormap[bm.biomeLookup()] : base.l().e().orElse(colormap[bm.biomeLookup()]); + return bm.getBiomeObject().map(BiomeBase::l).flatMap(BiomeFog::e).orElse(colormap[bm.biomeLookup()]); } @Override public int getGrassColor(BiomeMap bm, int[] colormap, int x, int z) { - if (bm.getResourcelocation() == null) return colormap[bm.biomeLookup()]; - BiomeBase base = BukkitVersionHelperSpigot117.getBiomeReg().get(MinecraftKey.a(bm.getResourcelocation())); - return base == null ? colormap[bm.biomeLookup()] : base.l().g().a(x, z, base.l().f().orElse(colormap[bm.biomeLookup()])); + BiomeFog fog = bm.getBiomeObject().map(BiomeBase::l).orElse(null); + if (fog == null) return colormap[bm.biomeLookup()]; + return fog.g().a(x, z, fog.f().orElse(colormap[bm.biomeLookup()])); } } diff --git a/bukkit-helper-118-2/src/main/java/org/dynmap/bukkit/helper/v118_2/BukkitVersionHelperSpigot118_2.java b/bukkit-helper-118-2/src/main/java/org/dynmap/bukkit/helper/v118_2/BukkitVersionHelperSpigot118_2.java index 054ffc70..fed30017 100644 --- a/bukkit-helper-118-2/src/main/java/org/dynmap/bukkit/helper/v118_2/BukkitVersionHelperSpigot118_2.java +++ b/bukkit-helper-118-2/src/main/java/org/dynmap/bukkit/helper/v118_2/BukkitVersionHelperSpigot118_2.java @@ -111,7 +111,7 @@ public class BukkitVersionHelperSpigot118_2 extends BukkitVersionHelper { private static IRegistry reg = null; - public static IRegistry getBiomeReg() { + private static IRegistry getBiomeReg() { if (reg == null) { reg = MinecraftServer.getServer().aU().d(IRegistry.aP); } diff --git a/bukkit-helper-118-2/src/main/java/org/dynmap/bukkit/helper/v118_2/MapChunkCache118_2.java b/bukkit-helper-118-2/src/main/java/org/dynmap/bukkit/helper/v118_2/MapChunkCache118_2.java index 1b939426..966bba72 100644 --- a/bukkit-helper-118-2/src/main/java/org/dynmap/bukkit/helper/v118_2/MapChunkCache118_2.java +++ b/bukkit-helper-118-2/src/main/java/org/dynmap/bukkit/helper/v118_2/MapChunkCache118_2.java @@ -1,8 +1,8 @@ package org.dynmap.bukkit.helper.v118_2; -import net.minecraft.resources.MinecraftKey; import net.minecraft.server.MinecraftServer; import net.minecraft.world.level.biome.BiomeBase; +import net.minecraft.world.level.biome.BiomeFog; import org.bukkit.Bukkit; import org.bukkit.World; import org.bukkit.craftbukkit.v1_18_R2.CraftServer; @@ -102,15 +102,13 @@ public class MapChunkCache118_2 extends GenericMapChunkCache { @Override public int getFoliageColor(BiomeMap bm, int[] colormap, int x, int z) { - if (bm.getResourcelocation() == null) return colormap[bm.biomeLookup()]; - BiomeBase base = BukkitVersionHelperSpigot118_2.getBiomeReg().a(MinecraftKey.a(bm.getResourcelocation())); - return base == null ? colormap[bm.biomeLookup()] : base.j().e().orElse(colormap[bm.biomeLookup()]); + return bm.getBiomeObject().map(BiomeBase::j).flatMap(BiomeFog::e).orElse(colormap[bm.biomeLookup()]); } @Override public int getGrassColor(BiomeMap bm, int[] colormap, int x, int z) { - if (bm.getResourcelocation() == null) return colormap[bm.biomeLookup()]; - BiomeBase base = BukkitVersionHelperSpigot118_2.getBiomeReg().a(MinecraftKey.a(bm.getResourcelocation())); - return base == null ? colormap[bm.biomeLookup()] : base.j().g().a(x, z, base.j().f().orElse(colormap[bm.biomeLookup()])); + BiomeFog fog = bm.getBiomeObject().map(BiomeBase::j).orElse(null); + if (fog == null) return colormap[bm.biomeLookup()]; + return fog.g().a(x, z, fog.f().orElse(colormap[bm.biomeLookup()])); } } diff --git a/bukkit-helper-118/src/main/java/org/dynmap/bukkit/helper/v118/BukkitVersionHelperSpigot118.java b/bukkit-helper-118/src/main/java/org/dynmap/bukkit/helper/v118/BukkitVersionHelperSpigot118.java index 3e9b464c..fbacfa6d 100644 --- a/bukkit-helper-118/src/main/java/org/dynmap/bukkit/helper/v118/BukkitVersionHelperSpigot118.java +++ b/bukkit-helper-118/src/main/java/org/dynmap/bukkit/helper/v118/BukkitVersionHelperSpigot118.java @@ -104,7 +104,7 @@ public class BukkitVersionHelperSpigot118 extends BukkitVersionHelper { private static IRegistry reg = null; - public static IRegistry getBiomeReg() { + private static IRegistry getBiomeReg() { if (reg == null) { reg = MinecraftServer.getServer().aV().d(IRegistry.aR); } diff --git a/bukkit-helper-118/src/main/java/org/dynmap/bukkit/helper/v118/MapChunkCache118.java b/bukkit-helper-118/src/main/java/org/dynmap/bukkit/helper/v118/MapChunkCache118.java index 98117bbd..6269a004 100644 --- a/bukkit-helper-118/src/main/java/org/dynmap/bukkit/helper/v118/MapChunkCache118.java +++ b/bukkit-helper-118/src/main/java/org/dynmap/bukkit/helper/v118/MapChunkCache118.java @@ -1,7 +1,7 @@ package org.dynmap.bukkit.helper.v118; -import net.minecraft.resources.MinecraftKey; import net.minecraft.world.level.biome.BiomeBase; +import net.minecraft.world.level.biome.BiomeFog; import org.bukkit.ChunkSnapshot; import org.bukkit.World; import org.bukkit.block.Biome; @@ -91,15 +91,13 @@ public class MapChunkCache118 extends GenericMapChunkCache { @Override public int getFoliageColor(BiomeMap bm, int[] colormap, int x, int z) { - if (bm.getResourcelocation() == null) return colormap[bm.biomeLookup()]; - BiomeBase base = BukkitVersionHelperSpigot118.getBiomeReg().a(MinecraftKey.a(bm.getResourcelocation())); - return base == null ? colormap[bm.biomeLookup()] : base.j().e().orElse(colormap[bm.biomeLookup()]); + return bm.getBiomeObject().map(BiomeBase::j).flatMap(BiomeFog::e).orElse(colormap[bm.biomeLookup()]); } @Override public int getGrassColor(BiomeMap bm, int[] colormap, int x, int z) { - if (bm.getResourcelocation() == null) return colormap[bm.biomeLookup()]; - BiomeBase base = BukkitVersionHelperSpigot118.getBiomeReg().a(MinecraftKey.a(bm.getResourcelocation())); - return base == null ? colormap[bm.biomeLookup()] : base.j().g().a(x, z, base.j().f().orElse(colormap[bm.biomeLookup()])); + BiomeFog fog = bm.getBiomeObject().map(BiomeBase::j).orElse(null); + if (fog == null) return colormap[bm.biomeLookup()]; + return fog.g().a(x, z, fog.f().orElse(colormap[bm.biomeLookup()])); } } diff --git a/bukkit-helper-119/src/main/java/org/dynmap/bukkit/helper/v119/BukkitVersionHelperSpigot119.java b/bukkit-helper-119/src/main/java/org/dynmap/bukkit/helper/v119/BukkitVersionHelperSpigot119.java index b27b8008..d4d5daf9 100644 --- a/bukkit-helper-119/src/main/java/org/dynmap/bukkit/helper/v119/BukkitVersionHelperSpigot119.java +++ b/bukkit-helper-119/src/main/java/org/dynmap/bukkit/helper/v119/BukkitVersionHelperSpigot119.java @@ -111,7 +111,7 @@ public class BukkitVersionHelperSpigot119 extends BukkitVersionHelper { private static IRegistry reg = null; - public static IRegistry getBiomeReg() { + private static IRegistry getBiomeReg() { if (reg == null) { reg = MinecraftServer.getServer().aX().d(IRegistry.aR); } diff --git a/bukkit-helper-119/src/main/java/org/dynmap/bukkit/helper/v119/MapChunkCache119.java b/bukkit-helper-119/src/main/java/org/dynmap/bukkit/helper/v119/MapChunkCache119.java index 995d60b4..7a08ac41 100644 --- a/bukkit-helper-119/src/main/java/org/dynmap/bukkit/helper/v119/MapChunkCache119.java +++ b/bukkit-helper-119/src/main/java/org/dynmap/bukkit/helper/v119/MapChunkCache119.java @@ -1,7 +1,7 @@ package org.dynmap.bukkit.helper.v119; -import net.minecraft.resources.MinecraftKey; import net.minecraft.world.level.biome.BiomeBase; +import net.minecraft.world.level.biome.BiomeFog; import org.bukkit.World; import org.bukkit.craftbukkit.v1_19_R1.CraftWorld; import org.dynmap.DynmapChunk; @@ -100,15 +100,13 @@ public class MapChunkCache119 extends GenericMapChunkCache { @Override public int getFoliageColor(BiomeMap bm, int[] colormap, int x, int z) { - if (bm.getResourcelocation() == null) return colormap[bm.biomeLookup()]; - BiomeBase base = BukkitVersionHelperSpigot119.getBiomeReg().a(MinecraftKey.a(bm.getResourcelocation())); - return base == null ? colormap[bm.biomeLookup()] : base.j().e().orElse(colormap[bm.biomeLookup()]); + return bm.getBiomeObject().map(BiomeBase::j).flatMap(BiomeFog::e).orElse(colormap[bm.biomeLookup()]); } @Override public int getGrassColor(BiomeMap bm, int[] colormap, int x, int z) { - if (bm.getResourcelocation() == null) return colormap[bm.biomeLookup()]; - BiomeBase base = BukkitVersionHelperSpigot119.getBiomeReg().a(MinecraftKey.a(bm.getResourcelocation())); - return base == null ? colormap[bm.biomeLookup()] : base.j().g().a(x, z, base.j().f().orElse(colormap[bm.biomeLookup()])); + BiomeFog fog = bm.getBiomeObject().map(BiomeBase::j).orElse(null); + if (fog == null) return colormap[bm.biomeLookup()]; + return fog.g().a(x, z, fog.f().orElse(colormap[bm.biomeLookup()])); } } diff --git a/spigot/src/main/java/org/dynmap/bukkit/DynmapPlugin.java b/spigot/src/main/java/org/dynmap/bukkit/DynmapPlugin.java index c4f6c3cf..6fa416b1 100644 --- a/spigot/src/main/java/org/dynmap/bukkit/DynmapPlugin.java +++ b/spigot/src/main/java/org/dynmap/bukkit/DynmapPlugin.java @@ -875,6 +875,7 @@ public class DynmapPlugin extends JavaPlugin implements DynmapAPI { bmap.setWaterColorMultiplier(watermult); Log.verboseinfo("Set watercolormult for " + bmap.toString() + " (" + i + ") to " + Integer.toHexString(watermult)); } + bmap.setBiomeObject(bb); } } if(cnt > 0) { From 64407e3ce184d7164e90846e011da01273698b74 Mon Sep 17 00:00:00 2001 From: mastermc05 Date: Fri, 18 Nov 2022 13:16:02 +0200 Subject: [PATCH 09/22] Fabric 1.19 --- .../org/dynmap/fabric_1_19/FabricMapChunkCache.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/fabric-1.19/src/main/java/org/dynmap/fabric_1_19/FabricMapChunkCache.java b/fabric-1.19/src/main/java/org/dynmap/fabric_1_19/FabricMapChunkCache.java index 4e63d359..41eed383 100644 --- a/fabric-1.19/src/main/java/org/dynmap/fabric_1_19/FabricMapChunkCache.java +++ b/fabric-1.19/src/main/java/org/dynmap/fabric_1_19/FabricMapChunkCache.java @@ -12,6 +12,7 @@ import net.minecraft.util.registry.Registry; 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; @@ -101,4 +102,15 @@ 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) { + BiomeEffects effects = bm.getBiomeObject().map(Biome::getEffects).orElse(null); + if (effects == null) return colormap[bm.biomeLookup()]; + return effects.getGrassColorModifier().getModifiedGrassColor(x, z, effects.getGrassColor().orElse(colormap[bm.biomeLookup()])); + } } From c643430225238e95dc4440b17a6488564224691f Mon Sep 17 00:00:00 2001 From: mastermc05 Date: Fri, 18 Nov 2022 13:16:29 +0200 Subject: [PATCH 10/22] Fabric 1.18 --- .../org/dynmap/fabric_1_18/FabricMapChunkCache.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/fabric-1.18/src/main/java/org/dynmap/fabric_1_18/FabricMapChunkCache.java b/fabric-1.18/src/main/java/org/dynmap/fabric_1_18/FabricMapChunkCache.java index cc575c4e..cf10e17c 100644 --- a/fabric-1.18/src/main/java/org/dynmap/fabric_1_18/FabricMapChunkCache.java +++ b/fabric-1.18/src/main/java/org/dynmap/fabric_1_18/FabricMapChunkCache.java @@ -12,6 +12,7 @@ import net.minecraft.util.registry.Registry; 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; @@ -100,4 +101,15 @@ 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) { + BiomeEffects effects = bm.getBiomeObject().map(Biome::getEffects).orElse(null); + if (effects == null) return colormap[bm.biomeLookup()]; + return effects.getGrassColorModifier().getModifiedGrassColor(x, z, effects.getGrassColor().orElse(colormap[bm.biomeLookup()])); + } } From ec3c0e998b905aaed78881d34b205e6d20ec29b1 Mon Sep 17 00:00:00 2001 From: mastermc05 Date: Fri, 18 Nov 2022 13:16:51 +0200 Subject: [PATCH 11/22] Fabric 1.19.1 --- .../dynmap/fabric_1_19_1/FabricMapChunkCache.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/fabric-1.19.1/src/main/java/org/dynmap/fabric_1_19_1/FabricMapChunkCache.java b/fabric-1.19.1/src/main/java/org/dynmap/fabric_1_19_1/FabricMapChunkCache.java index 4b6a2a12..867ae29b 100644 --- a/fabric-1.19.1/src/main/java/org/dynmap/fabric_1_19_1/FabricMapChunkCache.java +++ b/fabric-1.19.1/src/main/java/org/dynmap/fabric_1_19_1/FabricMapChunkCache.java @@ -12,6 +12,7 @@ import net.minecraft.util.registry.Registry; 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; @@ -101,4 +102,15 @@ 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) { + BiomeEffects effects = bm.getBiomeObject().map(Biome::getEffects).orElse(null); + if (effects == null) return colormap[bm.biomeLookup()]; + return effects.getGrassColorModifier().getModifiedGrassColor(x, z, effects.getGrassColor().orElse(colormap[bm.biomeLookup()])); + } } From 0043a1e4fbac4d0c8e20a0cab6e3211c1a4f9ff3 Mon Sep 17 00:00:00 2001 From: mastermc05 Date: Fri, 18 Nov 2022 13:17:21 +0200 Subject: [PATCH 12/22] Fabric 1.18.2 --- .../dynmap/fabric_1_18_2/FabricMapChunkCache.java | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/fabric-1.18.2/src/main/java/org/dynmap/fabric_1_18_2/FabricMapChunkCache.java b/fabric-1.18.2/src/main/java/org/dynmap/fabric_1_18_2/FabricMapChunkCache.java index f7394767..0aa74c1d 100644 --- a/fabric-1.18.2/src/main/java/org/dynmap/fabric_1_18_2/FabricMapChunkCache.java +++ b/fabric-1.18.2/src/main/java/org/dynmap/fabric_1_18_2/FabricMapChunkCache.java @@ -12,6 +12,7 @@ import net.minecraft.util.registry.Registry; 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; @@ -100,4 +101,15 @@ 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) { + BiomeEffects effects = bm.getBiomeObject().map(Biome::getEffects).orElse(null); + if (effects == null) return colormap[bm.biomeLookup()]; + return effects.getGrassColorModifier().getModifiedGrassColor(x, z, effects.getGrassColor().orElse(colormap[bm.biomeLookup()])); + } } From 6245a183811f69692a71e9c3af0bc0a50e0432e7 Mon Sep 17 00:00:00 2001 From: mastermc05 Date: Fri, 18 Nov 2022 13:18:19 +0200 Subject: [PATCH 13/22] Fabric 1.17.1 --- .../dynmap/fabric_1_17_1/FabricMapChunkCache.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/fabric-1.17.1/src/main/java/org/dynmap/fabric_1_17_1/FabricMapChunkCache.java b/fabric-1.17.1/src/main/java/org/dynmap/fabric_1_17_1/FabricMapChunkCache.java index efc410f8..2b433330 100644 --- a/fabric-1.17.1/src/main/java/org/dynmap/fabric_1_17_1/FabricMapChunkCache.java +++ b/fabric-1.17.1/src/main/java/org/dynmap/fabric_1_17_1/FabricMapChunkCache.java @@ -7,10 +7,13 @@ 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; @@ -83,4 +86,15 @@ 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) { + BiomeEffects effects = bm.getBiomeObject().map(Biome::getEffects).orElse(null); + if (effects == null) return colormap[bm.biomeLookup()]; + return effects.getGrassColorModifier().getModifiedGrassColor(x, z, effects.getGrassColor().orElse(colormap[bm.biomeLookup()])); + } } From a6ead1bc3d485485684ce7b1811498099f14ec9c Mon Sep 17 00:00:00 2001 From: mastermc05 Date: Fri, 18 Nov 2022 13:27:07 +0200 Subject: [PATCH 14/22] 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(); } From 9060c8f32bdd8ada71e21212c675cb1d2dd8c859 Mon Sep 17 00:00:00 2001 From: mastermc05 Date: Fri, 18 Nov 2022 13:30:13 +0200 Subject: [PATCH 15/22] Forge 1.19.2 --- .../dynmap/forge_1_19_2/ForgeMapChunkCache.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/forge-1.19.2/src/main/java/org/dynmap/forge_1_19_2/ForgeMapChunkCache.java b/forge-1.19.2/src/main/java/org/dynmap/forge_1_19_2/ForgeMapChunkCache.java index a46d23dd..0f9d7f2d 100644 --- a/forge-1.19.2/src/main/java/org/dynmap/forge_1_19_2/ForgeMapChunkCache.java +++ b/forge-1.19.2/src/main/java/org/dynmap/forge_1_19_2/ForgeMapChunkCache.java @@ -3,8 +3,11 @@ package org.dynmap.forge_1_19_2; import java.util.List; import java.util.NoSuchElementException; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.biome.BiomeSpecialEffects; import org.dynmap.DynmapChunk; import org.dynmap.Log; +import org.dynmap.common.BiomeMap; import org.dynmap.common.chunk.GenericChunk; import org.dynmap.common.chunk.GenericChunkCache; import org.dynmap.common.chunk.GenericMapChunkCache; @@ -87,4 +90,17 @@ public class ForgeMapChunkCache extends GenericMapChunkCache { return null; } } + @Override + public int getFoliageColor(BiomeMap bm, int[] colormap, int x, int z) { + return bm.getBiomeObject().map(Biome::getSpecialEffects) + .flatMap(BiomeSpecialEffects::getFoliageColorOverride) + .orElse(colormap[bm.biomeLookup()]); + } + + @Override + public int getGrassColor(BiomeMap bm, int[] colormap, int x, int z) { + BiomeSpecialEffects effects = bm.getBiomeObject().map(Biome::getSpecialEffects).orElse(null); + if (effects == null) return colormap[bm.biomeLookup()]; + return effects.getGrassColorModifier().modifyColor(x, z, effects.getGrassColorOverride().orElse(colormap[bm.biomeLookup()])); + } } From ed9fb8614d5d65a1b3f79fda3295c351dc04e867 Mon Sep 17 00:00:00 2001 From: mastermc05 Date: Fri, 18 Nov 2022 13:31:11 +0200 Subject: [PATCH 16/22] Forge 1.19 --- .../dynmap/forge_1_19/ForgeMapChunkCache.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/forge-1.19/src/main/java/org/dynmap/forge_1_19/ForgeMapChunkCache.java b/forge-1.19/src/main/java/org/dynmap/forge_1_19/ForgeMapChunkCache.java index 7231843b..4af2b806 100644 --- a/forge-1.19/src/main/java/org/dynmap/forge_1_19/ForgeMapChunkCache.java +++ b/forge-1.19/src/main/java/org/dynmap/forge_1_19/ForgeMapChunkCache.java @@ -3,8 +3,11 @@ package org.dynmap.forge_1_19; import java.util.List; import java.util.NoSuchElementException; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.biome.BiomeSpecialEffects; import org.dynmap.DynmapChunk; import org.dynmap.Log; +import org.dynmap.common.BiomeMap; import org.dynmap.common.chunk.GenericChunk; import org.dynmap.common.chunk.GenericChunkCache; import org.dynmap.common.chunk.GenericMapChunkCache; @@ -87,4 +90,17 @@ public class ForgeMapChunkCache extends GenericMapChunkCache { return null; } } + @Override + public int getFoliageColor(BiomeMap bm, int[] colormap, int x, int z) { + return bm.getBiomeObject().map(Biome::getSpecialEffects) + .flatMap(BiomeSpecialEffects::getFoliageColorOverride) + .orElse(colormap[bm.biomeLookup()]); + } + + @Override + public int getGrassColor(BiomeMap bm, int[] colormap, int x, int z) { + BiomeSpecialEffects effects = bm.getBiomeObject().map(Biome::getSpecialEffects).orElse(null); + if (effects == null) return colormap[bm.biomeLookup()]; + return effects.getGrassColorModifier().modifyColor(x, z, effects.getGrassColorOverride().orElse(colormap[bm.biomeLookup()])); + } } From 1f352e0b117e7595cededa3b17bfd5d001a57109 Mon Sep 17 00:00:00 2001 From: mastermc05 Date: Fri, 18 Nov 2022 13:31:38 +0200 Subject: [PATCH 17/22] Forge 1.18.2 --- .../dynmap/forge_1_18_2/ForgeMapChunkCache.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/forge-1.18.2/src/main/java/org/dynmap/forge_1_18_2/ForgeMapChunkCache.java b/forge-1.18.2/src/main/java/org/dynmap/forge_1_18_2/ForgeMapChunkCache.java index 01148433..51f45c6e 100644 --- a/forge-1.18.2/src/main/java/org/dynmap/forge_1_18_2/ForgeMapChunkCache.java +++ b/forge-1.18.2/src/main/java/org/dynmap/forge_1_18_2/ForgeMapChunkCache.java @@ -2,8 +2,11 @@ package org.dynmap.forge_1_18_2; import java.util.List; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.biome.BiomeSpecialEffects; import org.dynmap.DynmapChunk; import org.dynmap.Log; +import org.dynmap.common.BiomeMap; import org.dynmap.common.chunk.GenericChunk; import org.dynmap.common.chunk.GenericChunkCache; import org.dynmap.common.chunk.GenericMapChunkCache; @@ -86,4 +89,17 @@ public class ForgeMapChunkCache extends GenericMapChunkCache { return null; } } + @Override + public int getFoliageColor(BiomeMap bm, int[] colormap, int x, int z) { + return bm.getBiomeObject().map(Biome::getSpecialEffects) + .flatMap(BiomeSpecialEffects::getFoliageColorOverride) + .orElse(colormap[bm.biomeLookup()]); + } + + @Override + public int getGrassColor(BiomeMap bm, int[] colormap, int x, int z) { + BiomeSpecialEffects effects = bm.getBiomeObject().map(Biome::getSpecialEffects).orElse(null); + if (effects == null) return colormap[bm.biomeLookup()]; + return effects.getGrassColorModifier().modifyColor(x, z, effects.getGrassColorOverride().orElse(colormap[bm.biomeLookup()])); + } } From d434b33cfb362f546b4ad1f933670669ff54d80c Mon Sep 17 00:00:00 2001 From: mastermc05 Date: Fri, 18 Nov 2022 13:32:07 +0200 Subject: [PATCH 18/22] Forge 1.18 --- .../dynmap/forge_1_18/ForgeMapChunkCache.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/forge-1.18/src/main/java/org/dynmap/forge_1_18/ForgeMapChunkCache.java b/forge-1.18/src/main/java/org/dynmap/forge_1_18/ForgeMapChunkCache.java index fbcf362d..476613c8 100644 --- a/forge-1.18/src/main/java/org/dynmap/forge_1_18/ForgeMapChunkCache.java +++ b/forge-1.18/src/main/java/org/dynmap/forge_1_18/ForgeMapChunkCache.java @@ -2,8 +2,11 @@ package org.dynmap.forge_1_18; import java.util.List; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.biome.BiomeSpecialEffects; import org.dynmap.DynmapChunk; import org.dynmap.Log; +import org.dynmap.common.BiomeMap; import org.dynmap.common.chunk.GenericChunk; import org.dynmap.common.chunk.GenericChunkCache; import org.dynmap.common.chunk.GenericMapChunkCache; @@ -86,4 +89,17 @@ public class ForgeMapChunkCache extends GenericMapChunkCache { return null; } } + @Override + public int getFoliageColor(BiomeMap bm, int[] colormap, int x, int z) { + return bm.getBiomeObject().map(Biome::getSpecialEffects) + .flatMap(BiomeSpecialEffects::getFoliageColorOverride) + .orElse(colormap[bm.biomeLookup()]); + } + + @Override + public int getGrassColor(BiomeMap bm, int[] colormap, int x, int z) { + BiomeSpecialEffects effects = bm.getBiomeObject().map(Biome::getSpecialEffects).orElse(null); + if (effects == null) return colormap[bm.biomeLookup()]; + return effects.getGrassColorModifier().modifyColor(x, z, effects.getGrassColorOverride().orElse(colormap[bm.biomeLookup()])); + } } From 4fdb04725d7f4b33cae84ce01593d6542331cf1f Mon Sep 17 00:00:00 2001 From: mastermc05 Date: Fri, 18 Nov 2022 13:32:35 +0200 Subject: [PATCH 19/22] Forge 1.17.1 --- .../dynmap/forge_1_17_1/ForgeMapChunkCache.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/forge-1.17.1/src/main/java/org/dynmap/forge_1_17_1/ForgeMapChunkCache.java b/forge-1.17.1/src/main/java/org/dynmap/forge_1_17_1/ForgeMapChunkCache.java index 520f8e13..ebf9625d 100644 --- a/forge-1.17.1/src/main/java/org/dynmap/forge_1_17_1/ForgeMapChunkCache.java +++ b/forge-1.17.1/src/main/java/org/dynmap/forge_1_17_1/ForgeMapChunkCache.java @@ -2,8 +2,11 @@ package org.dynmap.forge_1_17_1; import java.util.List; +import net.minecraft.world.level.biome.Biome; +import net.minecraft.world.level.biome.BiomeSpecialEffects; import org.dynmap.DynmapChunk; import org.dynmap.Log; +import org.dynmap.common.BiomeMap; import org.dynmap.common.chunk.GenericChunk; import org.dynmap.common.chunk.GenericChunkCache; import org.dynmap.common.chunk.GenericMapChunkCache; @@ -70,4 +73,17 @@ public class ForgeMapChunkCache extends GenericMapChunkCache { return null; } } + @Override + public int getFoliageColor(BiomeMap bm, int[] colormap, int x, int z) { + return bm.getBiomeObject().map(Biome::getSpecialEffects) + .flatMap(BiomeSpecialEffects::getFoliageColorOverride) + .orElse(colormap[bm.biomeLookup()]); + } + + @Override + public int getGrassColor(BiomeMap bm, int[] colormap, int x, int z) { + BiomeSpecialEffects effects = bm.getBiomeObject().map(Biome::getSpecialEffects).orElse(null); + if (effects == null) return colormap[bm.biomeLookup()]; + return effects.getGrassColorModifier().modifyColor(x, z, effects.getGrassColorOverride().orElse(colormap[bm.biomeLookup()])); + } } From adc9e273ca5435d7ae711745331b72c30b26a663 Mon Sep 17 00:00:00 2001 From: mastermc05 Date: Fri, 18 Nov 2022 13:38:14 +0200 Subject: [PATCH 20/22] Forge 1.16.5 --- .../forge_1_16_5/ForgeMapChunkCache.java | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/forge-1.16.5/src/main/java/org/dynmap/forge_1_16_5/ForgeMapChunkCache.java b/forge-1.16.5/src/main/java/org/dynmap/forge_1_16_5/ForgeMapChunkCache.java index 33369cf2..5d2e9320 100644 --- a/forge-1.16.5/src/main/java/org/dynmap/forge_1_16_5/ForgeMapChunkCache.java +++ b/forge-1.16.5/src/main/java/org/dynmap/forge_1_16_5/ForgeMapChunkCache.java @@ -4,6 +4,8 @@ import java.util.List; import net.minecraft.nbt.CompoundNBT; import net.minecraft.util.math.ChunkPos; +import net.minecraft.world.biome.Biome; +import net.minecraft.world.biome.BiomeAmbience; import net.minecraft.world.chunk.AbstractChunkProvider; import net.minecraft.world.chunk.ChunkStatus; import net.minecraft.world.chunk.IChunk; @@ -13,6 +15,7 @@ import net.minecraft.world.server.ServerWorld; import org.dynmap.DynmapChunk; import org.dynmap.Log; +import org.dynmap.common.BiomeMap; import org.dynmap.common.chunk.GenericChunk; import org.dynmap.common.chunk.GenericChunkCache; import org.dynmap.common.chunk.GenericMapChunkCache; @@ -77,4 +80,25 @@ public class ForgeMapChunkCache extends GenericMapChunkCache { return null; } } + @Override + public int getFoliageColor(BiomeMap bm, int[] colormap, int x, int z) { + return bm.getBiomeObject().map(Biome::getAmbience) + .flatMap(BiomeAmbience::getFoliageColor) + .orElse(colormap[bm.biomeLookup()]); + } + + @Override + public int getGrassColor(BiomeMap bm, int[] colormap, int x, int z) { + BiomeAmbience effects = bm.getBiomeObject().map(Biome::getAmbience).orElse(null); + if (effects == null) return colormap[bm.biomeLookup()]; + BiomeAmbience.GrassColorModifier modifier = effects.getGrassColorModifier(); + if (modifier == BiomeAmbience.GrassColorModifier.DARK_FOREST) { + return ((effects.getGrassColor().orElse(colormap[bm.biomeLookup()]) & 0xfefefe) + 0x28340a) >> 1; + } else if (modifier == BiomeAmbience.GrassColorModifier.SWAMP) { + double d0 = Biome.INFO_NOISE.noiseAt(x * 0.0225D, z * 0.0225D, false); + return d0 < -0.1D ? 0x4c763c : 0x6a7039; + } else { + return effects.getGrassColor().orElse(colormap[bm.biomeLookup()]); + } + } } From e3911b0d3b09489533691fc90b9d455bf990f061 Mon Sep 17 00:00:00 2001 From: mastermc05 Date: Fri, 18 Nov 2022 13:44:59 +0200 Subject: [PATCH 21/22] Add biome to cache --- .../src/main/java/org/dynmap/fabric_1_16_4/DynmapPlugin.java | 1 + .../src/main/java/org/dynmap/fabric_1_17_1/DynmapPlugin.java | 1 + .../src/main/java/org/dynmap/fabric_1_18_2/DynmapPlugin.java | 1 + .../src/main/java/org/dynmap/fabric_1_18/DynmapPlugin.java | 1 + .../src/main/java/org/dynmap/fabric_1_19_1/DynmapPlugin.java | 1 + .../src/main/java/org/dynmap/fabric_1_19/DynmapPlugin.java | 1 + .../src/main/java/org/dynmap/forge_1_16_5/DynmapPlugin.java | 1 + .../src/main/java/org/dynmap/forge_1_17_1/DynmapPlugin.java | 1 + .../src/main/java/org/dynmap/forge_1_18_2/DynmapPlugin.java | 1 + forge-1.18/src/main/java/org/dynmap/forge_1_18/DynmapPlugin.java | 1 + .../src/main/java/org/dynmap/forge_1_19_2/DynmapPlugin.java | 1 + forge-1.19/src/main/java/org/dynmap/forge_1_19/DynmapPlugin.java | 1 + 12 files changed, 12 insertions(+) diff --git a/fabric-1.16.4/src/main/java/org/dynmap/fabric_1_16_4/DynmapPlugin.java b/fabric-1.16.4/src/main/java/org/dynmap/fabric_1_16_4/DynmapPlugin.java index 9cebfd15..1297f99b 100644 --- a/fabric-1.16.4/src/main/java/org/dynmap/fabric_1_16_4/DynmapPlugin.java +++ b/fabric-1.16.4/src/main/java/org/dynmap/fabric_1_16_4/DynmapPlugin.java @@ -396,6 +396,7 @@ public class DynmapPlugin { bmap.setWaterColorMultiplier(watermult); Log.verboseinfo("Set watercolormult for " + bmap.toString() + " (" + i + ") to " + Integer.toHexString(watermult)); } + bmap.setBiomeObject(bb); } } if (cnt > 0) diff --git a/fabric-1.17.1/src/main/java/org/dynmap/fabric_1_17_1/DynmapPlugin.java b/fabric-1.17.1/src/main/java/org/dynmap/fabric_1_17_1/DynmapPlugin.java index e37d4cf2..bea87f23 100644 --- a/fabric-1.17.1/src/main/java/org/dynmap/fabric_1_17_1/DynmapPlugin.java +++ b/fabric-1.17.1/src/main/java/org/dynmap/fabric_1_17_1/DynmapPlugin.java @@ -397,6 +397,7 @@ public class DynmapPlugin { bmap.setWaterColorMultiplier(watermult); Log.verboseinfo("Set watercolormult for " + bmap.toString() + " (" + i + ") to " + Integer.toHexString(watermult)); } + bmap.setBiomeObject(bb); } } if (cnt > 0) diff --git a/fabric-1.18.2/src/main/java/org/dynmap/fabric_1_18_2/DynmapPlugin.java b/fabric-1.18.2/src/main/java/org/dynmap/fabric_1_18_2/DynmapPlugin.java index f75589c0..84fdeb43 100644 --- a/fabric-1.18.2/src/main/java/org/dynmap/fabric_1_18_2/DynmapPlugin.java +++ b/fabric-1.18.2/src/main/java/org/dynmap/fabric_1_18_2/DynmapPlugin.java @@ -374,6 +374,7 @@ public class DynmapPlugin { bmap.setWaterColorMultiplier(watermult); Log.verboseinfo("Set watercolormult for " + bmap.toString() + " (" + i + ") to " + Integer.toHexString(watermult)); } + bmap.setBiomeObject(bb); } } if (cnt > 0) diff --git a/fabric-1.18/src/main/java/org/dynmap/fabric_1_18/DynmapPlugin.java b/fabric-1.18/src/main/java/org/dynmap/fabric_1_18/DynmapPlugin.java index 83cf5c55..66fa1d9c 100644 --- a/fabric-1.18/src/main/java/org/dynmap/fabric_1_18/DynmapPlugin.java +++ b/fabric-1.18/src/main/java/org/dynmap/fabric_1_18/DynmapPlugin.java @@ -367,6 +367,7 @@ public class DynmapPlugin { bmap.setWaterColorMultiplier(watermult); Log.verboseinfo("Set watercolormult for " + bmap.toString() + " (" + i + ") to " + Integer.toHexString(watermult)); } + bmap.setBiomeObject(bb); } } if (cnt > 0) diff --git a/fabric-1.19.1/src/main/java/org/dynmap/fabric_1_19_1/DynmapPlugin.java b/fabric-1.19.1/src/main/java/org/dynmap/fabric_1_19_1/DynmapPlugin.java index 0e898c1c..f7e309ee 100644 --- a/fabric-1.19.1/src/main/java/org/dynmap/fabric_1_19_1/DynmapPlugin.java +++ b/fabric-1.19.1/src/main/java/org/dynmap/fabric_1_19_1/DynmapPlugin.java @@ -362,6 +362,7 @@ public class DynmapPlugin { bmap.setWaterColorMultiplier(watermult); Log.verboseinfo("Set watercolormult for " + bmap.toString() + " (" + i + ") to " + Integer.toHexString(watermult)); } + bmap.setBiomeObject(bb); } } if (cnt > 0) diff --git a/fabric-1.19/src/main/java/org/dynmap/fabric_1_19/DynmapPlugin.java b/fabric-1.19/src/main/java/org/dynmap/fabric_1_19/DynmapPlugin.java index f209550b..1b84835e 100644 --- a/fabric-1.19/src/main/java/org/dynmap/fabric_1_19/DynmapPlugin.java +++ b/fabric-1.19/src/main/java/org/dynmap/fabric_1_19/DynmapPlugin.java @@ -362,6 +362,7 @@ public class DynmapPlugin { bmap.setWaterColorMultiplier(watermult); Log.verboseinfo("Set watercolormult for " + bmap.toString() + " (" + i + ") to " + Integer.toHexString(watermult)); } + bmap.setBiomeObject(bb); } } if (cnt > 0) diff --git a/forge-1.16.5/src/main/java/org/dynmap/forge_1_16_5/DynmapPlugin.java b/forge-1.16.5/src/main/java/org/dynmap/forge_1_16_5/DynmapPlugin.java index 29104fe4..728504e3 100644 --- a/forge-1.16.5/src/main/java/org/dynmap/forge_1_16_5/DynmapPlugin.java +++ b/forge-1.16.5/src/main/java/org/dynmap/forge_1_16_5/DynmapPlugin.java @@ -1442,6 +1442,7 @@ public class DynmapPlugin bmap.setWaterColorMultiplier(watermult); Log.verboseinfo("Set watercolormult for " + bmap.toString() + " (" + i + ") to " + Integer.toHexString(watermult)); } + bmap.setBiomeObject(bb); } } if(cnt > 0) diff --git a/forge-1.17.1/src/main/java/org/dynmap/forge_1_17_1/DynmapPlugin.java b/forge-1.17.1/src/main/java/org/dynmap/forge_1_17_1/DynmapPlugin.java index 7f405300..9479e425 100644 --- a/forge-1.17.1/src/main/java/org/dynmap/forge_1_17_1/DynmapPlugin.java +++ b/forge-1.17.1/src/main/java/org/dynmap/forge_1_17_1/DynmapPlugin.java @@ -1422,6 +1422,7 @@ public class DynmapPlugin bmap.setWaterColorMultiplier(watermult); Log.verboseinfo("Set watercolormult for " + bmap.toString() + " (" + i + ") to " + Integer.toHexString(watermult)); } + bmap.setBiomeObject(bb); } } if(cnt > 0) diff --git a/forge-1.18.2/src/main/java/org/dynmap/forge_1_18_2/DynmapPlugin.java b/forge-1.18.2/src/main/java/org/dynmap/forge_1_18_2/DynmapPlugin.java index aec39852..d71fdc82 100644 --- a/forge-1.18.2/src/main/java/org/dynmap/forge_1_18_2/DynmapPlugin.java +++ b/forge-1.18.2/src/main/java/org/dynmap/forge_1_18_2/DynmapPlugin.java @@ -1423,6 +1423,7 @@ public class DynmapPlugin bmap.setWaterColorMultiplier(watermult); Log.verboseinfo("Set watercolormult for " + bmap.toString() + " (" + i + ") to " + Integer.toHexString(watermult)); } + bmap.setBiomeObject(bb); } } if(cnt > 0) diff --git a/forge-1.18/src/main/java/org/dynmap/forge_1_18/DynmapPlugin.java b/forge-1.18/src/main/java/org/dynmap/forge_1_18/DynmapPlugin.java index 05cdbf63..0fce39fb 100644 --- a/forge-1.18/src/main/java/org/dynmap/forge_1_18/DynmapPlugin.java +++ b/forge-1.18/src/main/java/org/dynmap/forge_1_18/DynmapPlugin.java @@ -1423,6 +1423,7 @@ public class DynmapPlugin bmap.setWaterColorMultiplier(watermult); Log.verboseinfo("Set watercolormult for " + bmap.toString() + " (" + i + ") to " + Integer.toHexString(watermult)); } + bmap.setBiomeObject(bb); } } if(cnt > 0) diff --git a/forge-1.19.2/src/main/java/org/dynmap/forge_1_19_2/DynmapPlugin.java b/forge-1.19.2/src/main/java/org/dynmap/forge_1_19_2/DynmapPlugin.java index 0b8ad8b5..6bf9f67e 100644 --- a/forge-1.19.2/src/main/java/org/dynmap/forge_1_19_2/DynmapPlugin.java +++ b/forge-1.19.2/src/main/java/org/dynmap/forge_1_19_2/DynmapPlugin.java @@ -1424,6 +1424,7 @@ public class DynmapPlugin bmap.setWaterColorMultiplier(watermult); Log.verboseinfo("Set watercolormult for " + bmap.toString() + " (" + i + ") to " + Integer.toHexString(watermult)); } + bmap.setBiomeObject(bb); } } if(cnt > 0) diff --git a/forge-1.19/src/main/java/org/dynmap/forge_1_19/DynmapPlugin.java b/forge-1.19/src/main/java/org/dynmap/forge_1_19/DynmapPlugin.java index c97c6455..5098992d 100644 --- a/forge-1.19/src/main/java/org/dynmap/forge_1_19/DynmapPlugin.java +++ b/forge-1.19/src/main/java/org/dynmap/forge_1_19/DynmapPlugin.java @@ -1424,6 +1424,7 @@ public class DynmapPlugin bmap.setWaterColorMultiplier(watermult); Log.verboseinfo("Set watercolormult for " + bmap.toString() + " (" + i + ") to " + Integer.toHexString(watermult)); } + bmap.setBiomeObject(bb); } } if(cnt > 0) From a5e7ae10136a109c9f5ca3d95cfd959b59a6227b Mon Sep 17 00:00:00 2001 From: mastermc05 Date: Fri, 18 Nov 2022 14:53:24 +0200 Subject: [PATCH 22/22] Fabric 1.16.5: Use BiomeEffectsAccessor to get foliage color --- .../java/org/dynmap/fabric_1_16_4/FabricMapChunkCache.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) 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 c17c2e93..8d0e1d3f 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 @@ -91,7 +91,11 @@ public class FabricMapChunkCache extends GenericMapChunkCache { } @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()]); + return bm.getBiomeObject() + .map(Biome::getEffects) + .map(BiomeEffectsAccessor.class::cast) + .flatMap(BiomeEffectsAccessor::getFoliageColor) + .orElse(colormap[bm.biomeLookup()]); } @Override