package org.dynmap.bukkit.helper.v114_1; import org.bukkit.craftbukkit.v1_14_R1.CraftWorld; import java.io.IOException; import java.util.List; import org.bukkit.World; import org.dynmap.DynmapChunk; import org.dynmap.bukkit.helper.BukkitWorld; import org.dynmap.common.chunk.GenericChunk; import org.dynmap.common.chunk.GenericChunkCache; import org.dynmap.common.chunk.GenericMapChunkCache; import net.minecraft.server.v1_14_R1.Chunk; import net.minecraft.server.v1_14_R1.ChunkCoordIntPair; import net.minecraft.server.v1_14_R1.ChunkRegionLoader; import net.minecraft.server.v1_14_R1.NBTTagCompound; /** * Container for managing chunks - dependent upon using chunk snapshots, since rendering is off server thread */ public class MapChunkCache114_1 extends GenericMapChunkCache { private World w; /** * Construct empty cache */ public MapChunkCache114_1(GenericChunkCache cc) { super(cc); } // Load generic chunk from existing and already loaded chunk protected GenericChunk getLoadedChunk(DynmapChunk chunk) { CraftWorld cw = (CraftWorld) w; NBTTagCompound nbt = null; GenericChunk gc = null; if (cw.isChunkLoaded(chunk.x, chunk.z)) { Chunk c = cw.getHandle().getChunkAt(chunk.x, chunk.z); if ((c != null) && c.loaded) { nbt = ChunkRegionLoader.saveChunk(cw.getHandle(), c); } if (nbt != null) { gc = parseChunkFromNBT(new NBT.NBTCompound(nbt)); } } return gc; } // Load generic chunk from unloaded chunk protected GenericChunk loadChunk(DynmapChunk chunk) { CraftWorld cw = (CraftWorld) w; NBTTagCompound nbt = null; ChunkCoordIntPair cc = new ChunkCoordIntPair(chunk.x, chunk.z); GenericChunk gc = null; try { nbt = cw.getHandle().getChunkProvider().playerChunkMap.read(cc); } catch (IOException iox) { } if (nbt != null) { gc = parseChunkFromNBT(new NBT.NBTCompound(nbt)); } return gc; } public void setChunks(BukkitWorld dw, List chunks) { this.w = dw.getWorld(); super.setChunks(dw, chunks); } }