public void deleteChunkLoader(ChunkLoader chunkLoader) { if (chunkLoader.isLoaded()) chunkLoader.delete(); chunkLoader.getBlock().setType(Material.AIR); chunkLoaders.remove(chunkLoader); data.deleteChunkLoader(chunkLoader); }
public void updateChunkLoader(ChunkLoader chunkLoader) { data.saveChunkLoader(chunkLoader); Player player = getServer().getPlayer(chunkLoader.getOwner()); if (player != null && player.isOnline()) player.sendMessage( String.format( "%sSuccessfully updated your chunk loader. Chunks loaded are now %s", ChatColor.GOLD, chunkLoader.getSize())); }
public void loadWorldChunks() { List<ChunkLoader> chunks = data.getWorldChunks(); int chunkCount = 0; for (ChunkLoader cl : chunks) { if (!cl.load()) continue; chunkCount += cl.getSize(); chunkLoaders.add(cl); } getLogger() .info( String.format( "Loaded %s world chunk loaders, totalling %s chunks", chunks.size(), chunkCount)); }
public void loadPersonalChunks(UUID uuid) { List<ChunkLoader> chunks = data.getPersonalChunks(uuid); int chunkCount = 0; for (ChunkLoader cl : chunks) { if (!cl.load()) continue; chunkCount += cl.getSize(); getChunkLoaders().add(cl); } getLogger() .info( String.format( "Loaded %s personal chunk loaders, totalling %s chunks", chunks.size(), chunkCount)); }
public void unloadPersonalChunks(UUID uuid) { List<ChunkLoader> chunks = chunkLoaders .stream() .filter( c -> c.getOwner().equals(uuid) && c.getChunkType() == ChunkLoader.ChunkType.PERSONAL) .collect(Collectors.toList()); int chunkCount = 0; for (ChunkLoader c : chunks) { chunkCount += c.getSize(); c.unload(); } getChunkLoaders().removeAll(chunks); getLogger() .info( String.format( "Unloaded %s personal chunk loaders, totalling %s chunks", chunks.size(), chunkCount)); }
public IconMenu getChunkLoaderIconMenu(ChunkLoader chunkLoader) { return getChunkLoaderIconMenu(chunkLoader.getChunkType()); }
public void addChunkLoader(ChunkLoader chunkLoader) { Block block = getServer() .getWorld(chunkLoader.getWorld()) .getBlockAt(chunkLoader.getX(), chunkLoader.getY(), chunkLoader.getZ()); ChunkLoader existing = chunkLoaders.stream().filter(c -> c.getBlock().equals(block)).findFirst().orElse(null); if (existing != null) existing.delete(); chunkLoader.setBlock(block); block.setType(getChunkLoaderMaterial(chunkLoader.getChunkType())); getChunkLoaders().add(chunkLoader); chunkLoader.load(); data.saveChunkLoader(chunkLoader); Player player = getServer().getPlayer(chunkLoader.getOwner()); if (player != null && player.isOnline()) player.sendMessage( String.format( "%sSuccessfully placed %s chunk loader with and ID of %s and %s chunks", ChatColor.GOLD, chunkLoader.getChunkType(), chunkLoader.getId(), chunkLoader.getSize())); }
/** copies a 32x32 chunk set from par2File to par1File, via AnvilConverterData */ private void convertChunks( File par1File, File par2File, WorldChunkManager par3WorldChunkManager, int par4, int par5, IProgressUpdate par6IProgressUpdate) { try { String s = par2File.getName(); RegionFile regionfile = new RegionFile(par2File); RegionFile regionfile1 = new RegionFile( new File( par1File, (new StringBuilder()) .append(s.substring(0, s.length() - ".mcr".length())) .append(".mca") .toString())); for (int i = 0; i < 32; i++) { for (int j = 0; j < 32; j++) { if (!regionfile.isChunkSaved(i, j) || regionfile1.isChunkSaved(i, j)) { continue; } DataInputStream datainputstream = regionfile.getChunkDataInputStream(i, j); if (datainputstream == null) { System.out.println("Failed to fetch input stream"); } else { NBTTagCompound nbttagcompound = CompressedStreamTools.read(datainputstream); datainputstream.close(); NBTTagCompound nbttagcompound1 = nbttagcompound.getCompoundTag("Level"); AnvilConverterData anvilconverterdata = ChunkLoader.load(nbttagcompound1); NBTTagCompound nbttagcompound2 = new NBTTagCompound(); NBTTagCompound nbttagcompound3 = new NBTTagCompound(); nbttagcompound2.setTag("Level", nbttagcompound3); ChunkLoader.convertToAnvilFormat( anvilconverterdata, nbttagcompound3, par3WorldChunkManager); DataOutputStream dataoutputstream = regionfile1.getChunkDataOutputStream(i, j); CompressedStreamTools.write(nbttagcompound2, dataoutputstream); dataoutputstream.close(); } } int k = (int) Math.round((100D * (double) (par4 * 1024)) / (double) (par5 * 1024)); int l = (int) Math.round((100D * (double) ((i + 1) * 32 + par4 * 1024)) / (double) (par5 * 1024)); if (l > k) { par6IProgressUpdate.setLoadingProgress(l); } } regionfile.close(); regionfile1.close(); } catch (IOException ioexception) { ioexception.printStackTrace(); } }