Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package de.promolitor.copymultiplayerworld;
- import java.io.DataInputStream;
- import java.io.File;
- import java.io.FileInputStream;
- import java.io.FileNotFoundException;
- import java.io.FileOutputStream;
- import java.io.FileReader;
- import java.io.FileWriter;
- import java.io.IOException;
- import java.io.InputStream;
- import java.io.OutputStream;
- import java.lang.reflect.Field;
- import java.lang.reflect.Method;
- import java.util.ArrayList;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import java.util.Properties;
- import org.apache.commons.compress.utils.IOUtils;
- import org.apache.commons.io.FileUtils;
- import cpw.mods.fml.relauncher.Side;
- import cpw.mods.fml.relauncher.SideOnly;
- import net.minecraft.block.Block;
- import net.minecraft.block.BlockBeacon;
- import net.minecraft.block.BlockBrewingStand;
- import net.minecraft.block.BlockChest;
- import net.minecraft.block.BlockDispenser;
- import net.minecraft.block.BlockFurnace;
- import net.minecraft.block.BlockHopper;
- import net.minecraft.block.BlockNote;
- import net.minecraft.client.ClientBrandRetriever;
- import net.minecraft.client.Minecraft;
- import net.minecraft.client.entity.EntityClientPlayerMP;
- import net.minecraft.client.gui.GuiScreen;
- import net.minecraft.client.multiplayer.ChunkProviderClient;
- import net.minecraft.client.multiplayer.ServerData;
- import net.minecraft.client.multiplayer.WorldClient;
- import net.minecraft.client.resources.I18n;
- import net.minecraft.crash.CrashReport;
- import net.minecraft.crash.CrashReportCategory;
- import net.minecraft.entity.Entity;
- import net.minecraft.entity.player.EntityPlayer;
- import net.minecraft.inventory.Container;
- import net.minecraft.inventory.IInventory;
- import net.minecraft.item.ItemStack;
- import net.minecraft.nbt.CompressedStreamTools;
- import net.minecraft.nbt.NBTTagCompound;
- import net.minecraft.nbt.NBTTagDouble;
- import net.minecraft.nbt.NBTTagFloat;
- import net.minecraft.nbt.NBTTagList;
- import net.minecraft.network.NetworkManager;
- import net.minecraft.realms.RealmsSharedConstants;
- import net.minecraft.tileentity.TileEntity;
- import net.minecraft.tileentity.TileEntityBeacon;
- import net.minecraft.tileentity.TileEntityBrewingStand;
- import net.minecraft.tileentity.TileEntityChest;
- import net.minecraft.tileentity.TileEntityDispenser;
- import net.minecraft.tileentity.TileEntityFurnace;
- import net.minecraft.tileentity.TileEntityHopper;
- import net.minecraft.tileentity.TileEntityNote;
- import net.minecraft.util.IChatComponent;
- import net.minecraft.util.LongHashMap;
- import net.minecraft.util.ReportedException;
- import net.minecraft.world.ChunkPosition;
- import net.minecraft.world.MinecraftException;
- import net.minecraft.world.chunk.Chunk;
- import net.minecraft.world.chunk.storage.AnvilSaveConverter;
- import net.minecraft.world.chunk.storage.IChunkLoader;
- import net.minecraft.world.chunk.storage.RegionFile;
- import net.minecraft.world.chunk.storage.RegionFileCache;
- import net.minecraft.world.storage.MapData;
- import net.minecraft.world.storage.SaveHandler;
- import net.minecraft.world.storage.ThreadedFileIOBase;
- import scala.actors.threadpool.Arrays;
- import net.minecraft.client.Minecraft;
- import net.minecraft.client.multiplayer.ChunkProviderClient;
- import net.minecraft.util.LongHashMap;
- import net.minecraft.world.chunk.Chunk;
- public class Download {
- private Minecraft mc;
- public Download() {
- Minecraft mc = Minecraft.getMinecraft();
- }
- @SideOnly(Side.SERVER)
- public static byte[] runDownload(int[] rId) {
- InputStream in = null;
- byte[] bytes = null;
- try {
- in = new FileInputStream("/world/region/r." + rId[0] + "." + rId[1] + ".mca");
- bytes = IOUtils.toByteArray(in);
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return bytes;
- }
- @SideOnly(Side.CLIENT)
- public static void getMCAFiles(int diameter, String saveName) {
- Minecraft mc = Minecraft.getMinecraft();
- int currentChunkX = mc.thePlayer.chunkCoordX;
- int currentChunkZ = mc.thePlayer.chunkCoordZ;
- System.out.println("Standing in Chunk: x:" + currentChunkX + " / y:" + currentChunkZ);
- ArrayList<int[]> regionIds = new ArrayList<int[]>();
- for (int x = -2; x < 5; x += 4) {
- for (int z = -2; z < 5; z += 4) {
- int regionX = (currentChunkX + x) >> 5;
- int regionZ = (currentChunkZ + z) >> 5;
- int[] region = { regionX, regionZ };
- boolean isNotAddedYet = true;
- for (int[] rIds : regionIds) {
- if (areEqual(rIds, region)) {
- isNotAddedYet = false;
- }
- }
- if (isNotAddedYet) {
- regionIds.add(region);
- }
- }
- }
- for (int[] rIds : regionIds) {
- System.out.println(Arrays.toString(rIds));
- }
- String saveFolderPath = "/saves/" + saveName;
- File directory = new File(saveFolderPath);
- if (!directory.exists()) {
- System.out.println("Folder Creation Success? " + directory.mkdirs());
- }
- for (int[] rIds : regionIds) {
- try {
- byte[] download = runDownload(rIds);
- FileUtils.writeByteArrayToFile(new File(saveFolderPath + "/r." + rIds[0] + "." + rIds[1] + ".mca"),
- download);
- } catch (Exception e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- }
- public static boolean areEqual(int[] array1, int[] array2) {
- boolean equal = false;
- if (array1.length == array2.length) {
- for (int i = 0; i < array1.length; i++) {
- if (array1[i] == array2[i]) {
- equal = true;
- } else {
- equal = false;
- }
- }
- }
- return equal;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement