mirror of https://github.com/webbukkit/dynmap.git
Support for 1.16.5
This commit is contained in:
parent
053df84196
commit
0ebbc2bbe5
|
@ -20,6 +20,7 @@ import java.lang.reflect.Method;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.IdentityHashMap;
|
import java.util.IdentityHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -28,10 +29,16 @@ import java.util.List;
|
||||||
public class BukkitVersionHelperSpigot116_4 extends BukkitVersionHelperGeneric {
|
public class BukkitVersionHelperSpigot116_4 extends BukkitVersionHelperGeneric {
|
||||||
private final boolean unsafeAsync;
|
private final boolean unsafeAsync;
|
||||||
private Field watercolorfield;
|
private Field watercolorfield;
|
||||||
|
private static Field grassColorField;
|
||||||
|
private static Field foliageColorField;
|
||||||
|
private static Field grassColorModifierField;
|
||||||
|
|
||||||
public BukkitVersionHelperSpigot116_4() {
|
public BukkitVersionHelperSpigot116_4() {
|
||||||
Class biomefog = getNMSClass("net.minecraft.server.BiomeFog");
|
Class biomefog = getNMSClass("net.minecraft.server.BiomeFog");
|
||||||
watercolorfield = getPrivateField(biomefog, new String[] { "c" }, int.class);
|
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;
|
this.unsafeAsync = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -50,9 +57,9 @@ public class BukkitVersionHelperSpigot116_4 extends BukkitVersionHelperGeneric {
|
||||||
return names;
|
return names;
|
||||||
}
|
}
|
||||||
|
|
||||||
private IRegistry<BiomeBase> reg = null;
|
private static IRegistry<BiomeBase> reg = null;
|
||||||
|
|
||||||
private IRegistry<BiomeBase> getBiomeReg() {
|
public static IRegistry<BiomeBase> getBiomeReg() {
|
||||||
if (reg == null) {
|
if (reg == null) {
|
||||||
reg = MinecraftServer.getServer().getCustomRegistry().b(IRegistry.ay);
|
reg = MinecraftServer.getServer().getCustomRegistry().b(IRegistry.ay);
|
||||||
}
|
}
|
||||||
|
@ -160,6 +167,29 @@ public class BukkitVersionHelperSpigot116_4 extends BukkitVersionHelperGeneric {
|
||||||
}
|
}
|
||||||
return 0xFFFFFF;
|
return 0xFFFFFF;
|
||||||
}
|
}
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
public static Optional<Integer> getBiomeBaseGrassMult(BiomeBase bb) {
|
||||||
|
if (bb == null) return Optional.empty();
|
||||||
|
try {
|
||||||
|
return (Optional<Integer>) grassColorField.get(bb.l());
|
||||||
|
} catch (IllegalArgumentException | IllegalAccessException ignored) {}
|
||||||
|
return Optional.empty();
|
||||||
|
}
|
||||||
|
@SuppressWarnings("unchecked")
|
||||||
|
public static Optional<Integer> getBiomeBaseFoliageMult(BiomeBase bb) {
|
||||||
|
if (bb == null) return Optional.empty();
|
||||||
|
try {
|
||||||
|
return (Optional<Integer>) 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 */
|
/** Get temperature from biomebase */
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -6,12 +6,14 @@ import org.bukkit.World;
|
||||||
import org.bukkit.craftbukkit.v1_16_R3.CraftWorld;
|
import org.bukkit.craftbukkit.v1_16_R3.CraftWorld;
|
||||||
import org.dynmap.DynmapChunk;
|
import org.dynmap.DynmapChunk;
|
||||||
import org.dynmap.bukkit.helper.BukkitWorld;
|
import org.dynmap.bukkit.helper.BukkitWorld;
|
||||||
|
import org.dynmap.common.BiomeMap;
|
||||||
import org.dynmap.common.chunk.GenericChunk;
|
import org.dynmap.common.chunk.GenericChunk;
|
||||||
import org.dynmap.common.chunk.GenericChunkCache;
|
import org.dynmap.common.chunk.GenericChunkCache;
|
||||||
import org.dynmap.common.chunk.GenericMapChunkCache;
|
import org.dynmap.common.chunk.GenericMapChunkCache;
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Container for managing chunks - dependent upon using chunk snapshots, since rendering is off server thread
|
* 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();
|
this.w = dw.getWorld();
|
||||||
super.setChunks(dw, chunks);
|
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;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue