Iron out 1.13.2 biomes and chunk loading

This commit is contained in:
Mike Primm 2020-05-03 17:35:38 -05:00
parent 0d937ce368
commit 151122a333
3 changed files with 27 additions and 8 deletions

View File

@ -552,8 +552,9 @@ public class DynmapCore implements DynmapCommonAPI {
/* Print version info */
Log.info("version " + plugin_ver + " is enabled - core version " + version );
Log.info("For support, visit https://forums.dynmap.us");
Log.info("For support, visit https://reddit.com/r/Dynmap");
Log.info("To report or track bugs, visit https://github.com/webbukkit/dynmap/issues");
Log.info("If you'd like to donate, please visit https://www.patreon.com/dynmap or https://ko-fi.com/michaelprimm");
events.<Object>trigger("initialized", null);

View File

@ -51,6 +51,8 @@ import net.minecraft.util.SoundCategory;
import net.minecraft.util.SoundEvent;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.ChunkPos;
import net.minecraft.util.registry.IRegistry;
import net.minecraft.util.registry.RegistryNamespaced;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.TextComponentString;
import net.minecraft.world.IBlockReader;
@ -72,6 +74,8 @@ import net.minecraftforge.fml.common.gameevent.PlayerEvent.PlayerChangedDimensio
import net.minecraftforge.fml.common.gameevent.PlayerEvent.PlayerLoggedInEvent;
import net.minecraftforge.fml.common.gameevent.PlayerEvent.PlayerLoggedOutEvent;
import net.minecraftforge.fml.common.gameevent.PlayerEvent.PlayerRespawnEvent;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.ForgeRegistry;
import net.minecraftforge.registries.RegistryManager;
import net.minecraftforge.fml.common.gameevent.TickEvent;
import net.minecraftforge.fml.common.registry.GameRegistry;
@ -258,10 +262,10 @@ public class DynmapPlugin
public static final Biome[] getBiomeList() {
if (biomelist == null) {
biomelist = new Biome[256];
Iterator<Biome> iter = Biome.MUTATION_TO_BASE_ID_MAP.iterator();
Iterator<Biome> iter = ForgeRegistries.BIOMES.iterator();
while (iter.hasNext()) {
Biome b = iter.next();
int bidx = Biome.MUTATION_TO_BASE_ID_MAP.get(b);
Biome b = iter.next();
int bidx = RegistryNamespaced.BIOME.getId(b);
if (bidx >= biomelist.length) {
biomelist = Arrays.copyOf(biomelist, bidx + biomelist.length);
}
@ -1361,16 +1365,23 @@ public class DynmapPlugin
if(bb != null) {
String id = bb.getRegistryName().getPath();
float tmp = bb.getDefaultTemperature(), hum = bb.getDownfall();
int watermult = bb.getWaterColor();
Log.verboseinfo("biome[" + i + "]: hum=" + hum + ", tmp=" + tmp + ", mult=" + Integer.toHexString(watermult));
BiomeMap bmap = BiomeMap.byBiomeID(i);
if (bmap.isDefault()) {
BiomeMap m = new BiomeMap(i, id, tmp, hum);
Log.verboseinfo("Add custom biome [" + m.toString() + "] (" + i + ")");
bmap = new BiomeMap(i, id, tmp, hum);
Log.verboseinfo("Add custom biome [" + bmap.toString() + "] (" + i + ")");
cnt++;
}
else {
bmap.setTemperature(tmp);
bmap.setRainfall(hum);
}
if (watermult != -1) {
bmap.setWaterColorMultiplier(watermult);
Log.verboseinfo("Set watercolormult for " + bmap.toString() + " (" + i + ") to " + Integer.toHexString(watermult));
}
}
}
if(cnt > 0)

View File

@ -927,7 +927,7 @@ public class ForgeMapChunkCache extends MapChunkCache
Class<?>[] p = m.getParameterTypes();
if ((p.length == 3) && (p[0].equals(Chunk.class)) && (p[1].equals(World.class)) && (p[2].equals(NBTTagCompound.class))) {
writechunktonbt = m;
//Log.info("Found writechunktonbt- " + m.getName());
Log.info("Found writechunktonbt- " + m.getName());
m.setAccessible(true);
break;
}
@ -1059,6 +1059,7 @@ public class ForgeMapChunkCache extends MapChunkCache
NBTTagCompound rslt = null;
ChunkPos coord = new ChunkPos(x, z);
//}
// if (pendingcoords.contains(coord.asLong()) {
// for (Object o : chunkstoremove.values()) {
// if (chunkCoord == null) {
@ -1095,8 +1096,14 @@ public class ForgeMapChunkCache extends MapChunkCache
}
rslt = CompressedStreamTools.read(str);
}
if(rslt != null)
if(rslt != null) {
rslt = rslt.getCompound("Level");
// Don't load uncooked chunks
String stat = rslt.getString("Status");
if ((stat == null) || (stat.equals("full") == false)) {
rslt = null;
}
}
//Log.info(String.format("loadChunk(%d,%d)=%s", x, z, (rslt != null) ? rslt.toString() : "null"));
return rslt;
} catch (Exception exc) {