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) {