Advertisement
Guest User

Untitled

a guest
Jan 28th, 2016
84
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 5.46 KB | None | 0 0
  1. package de.promolitor.copymultiplayerworld;
  2.  
  3. import java.io.DataInputStream;
  4. import java.io.File;
  5. import java.io.FileInputStream;
  6. import java.io.FileNotFoundException;
  7. import java.io.FileOutputStream;
  8. import java.io.FileReader;
  9. import java.io.FileWriter;
  10. import java.io.IOException;
  11. import java.io.InputStream;
  12. import java.io.OutputStream;
  13. import java.lang.reflect.Field;
  14. import java.lang.reflect.Method;
  15. import java.util.ArrayList;
  16. import java.util.HashMap;
  17. import java.util.List;
  18. import java.util.Map;
  19. import java.util.Properties;
  20.  
  21. import org.apache.commons.compress.utils.IOUtils;
  22. import org.apache.commons.io.FileUtils;
  23.  
  24. import cpw.mods.fml.relauncher.Side;
  25. import cpw.mods.fml.relauncher.SideOnly;
  26. import net.minecraft.block.Block;
  27. import net.minecraft.block.BlockBeacon;
  28. import net.minecraft.block.BlockBrewingStand;
  29. import net.minecraft.block.BlockChest;
  30. import net.minecraft.block.BlockDispenser;
  31. import net.minecraft.block.BlockFurnace;
  32. import net.minecraft.block.BlockHopper;
  33. import net.minecraft.block.BlockNote;
  34. import net.minecraft.client.ClientBrandRetriever;
  35. import net.minecraft.client.Minecraft;
  36. import net.minecraft.client.entity.EntityClientPlayerMP;
  37. import net.minecraft.client.gui.GuiScreen;
  38. import net.minecraft.client.multiplayer.ChunkProviderClient;
  39. import net.minecraft.client.multiplayer.ServerData;
  40. import net.minecraft.client.multiplayer.WorldClient;
  41. import net.minecraft.client.resources.I18n;
  42. import net.minecraft.crash.CrashReport;
  43. import net.minecraft.crash.CrashReportCategory;
  44. import net.minecraft.entity.Entity;
  45. import net.minecraft.entity.player.EntityPlayer;
  46. import net.minecraft.inventory.Container;
  47. import net.minecraft.inventory.IInventory;
  48. import net.minecraft.item.ItemStack;
  49. import net.minecraft.nbt.CompressedStreamTools;
  50. import net.minecraft.nbt.NBTTagCompound;
  51. import net.minecraft.nbt.NBTTagDouble;
  52. import net.minecraft.nbt.NBTTagFloat;
  53. import net.minecraft.nbt.NBTTagList;
  54. import net.minecraft.network.NetworkManager;
  55. import net.minecraft.realms.RealmsSharedConstants;
  56. import net.minecraft.tileentity.TileEntity;
  57. import net.minecraft.tileentity.TileEntityBeacon;
  58. import net.minecraft.tileentity.TileEntityBrewingStand;
  59. import net.minecraft.tileentity.TileEntityChest;
  60. import net.minecraft.tileentity.TileEntityDispenser;
  61. import net.minecraft.tileentity.TileEntityFurnace;
  62. import net.minecraft.tileentity.TileEntityHopper;
  63. import net.minecraft.tileentity.TileEntityNote;
  64. import net.minecraft.util.IChatComponent;
  65. import net.minecraft.util.LongHashMap;
  66. import net.minecraft.util.ReportedException;
  67. import net.minecraft.world.ChunkPosition;
  68. import net.minecraft.world.MinecraftException;
  69. import net.minecraft.world.chunk.Chunk;
  70. import net.minecraft.world.chunk.storage.AnvilSaveConverter;
  71. import net.minecraft.world.chunk.storage.IChunkLoader;
  72. import net.minecraft.world.chunk.storage.RegionFile;
  73. import net.minecraft.world.chunk.storage.RegionFileCache;
  74. import net.minecraft.world.storage.MapData;
  75. import net.minecraft.world.storage.SaveHandler;
  76. import net.minecraft.world.storage.ThreadedFileIOBase;
  77. import scala.actors.threadpool.Arrays;
  78. import net.minecraft.client.Minecraft;
  79. import net.minecraft.client.multiplayer.ChunkProviderClient;
  80. import net.minecraft.util.LongHashMap;
  81. import net.minecraft.world.chunk.Chunk;
  82.  
  83. public class Download {
  84.  
  85.     private Minecraft mc;
  86.  
  87.     public Download() {
  88.         Minecraft mc = Minecraft.getMinecraft();
  89.     }
  90.  
  91.     @SideOnly(Side.SERVER)
  92.     public static byte[] runDownload(int[] rId) {
  93.         InputStream in = null;
  94.         byte[] bytes = null;
  95.         try {
  96.             in = new FileInputStream("/world/region/r." + rId[0] + "." + rId[1] + ".mca");
  97.             bytes = IOUtils.toByteArray(in);
  98.  
  99.         } catch (Exception e) {
  100.             // TODO Auto-generated catch block
  101.             e.printStackTrace();
  102.         }
  103.         return bytes;
  104.  
  105.     }
  106.  
  107.     @SideOnly(Side.CLIENT)
  108.     public static void getMCAFiles(int diameter, String saveName) {
  109.         Minecraft mc = Minecraft.getMinecraft();
  110.         int currentChunkX = mc.thePlayer.chunkCoordX;
  111.         int currentChunkZ = mc.thePlayer.chunkCoordZ;
  112.         System.out.println("Standing in Chunk: x:" + currentChunkX + " / y:" + currentChunkZ);
  113.         ArrayList<int[]> regionIds = new ArrayList<int[]>();
  114.  
  115.         for (int x = -2; x < 5; x += 4) {
  116.             for (int z = -2; z < 5; z += 4) {
  117.                 int regionX = (currentChunkX + x) >> 5;
  118.                 int regionZ = (currentChunkZ + z) >> 5;
  119.                 int[] region = { regionX, regionZ };
  120.                 boolean isNotAddedYet = true;
  121.                 for (int[] rIds : regionIds) {
  122.                     if (areEqual(rIds, region)) {
  123.                         isNotAddedYet = false;
  124.                     }
  125.  
  126.                 }
  127.                 if (isNotAddedYet) {
  128.                     regionIds.add(region);
  129.                 }
  130.  
  131.             }
  132.  
  133.         }
  134.         for (int[] rIds : regionIds) {
  135.             System.out.println(Arrays.toString(rIds));
  136.         }
  137.         String saveFolderPath = "/saves/" + saveName;
  138.         File directory = new File(saveFolderPath);
  139.         if (!directory.exists()) {
  140.             System.out.println("Folder Creation Success? " + directory.mkdirs());
  141.         }
  142.  
  143.         for (int[] rIds : regionIds) {
  144.             try {
  145.  
  146.                 byte[] download = runDownload(rIds);
  147.                 FileUtils.writeByteArrayToFile(new File(saveFolderPath + "/r." + rIds[0] + "." + rIds[1] + ".mca"),
  148.                         download);
  149.  
  150.             } catch (Exception e) {
  151.                 // TODO Auto-generated catch block
  152.                 e.printStackTrace();
  153.             }
  154.         }
  155.  
  156.     }
  157.  
  158.     public static boolean areEqual(int[] array1, int[] array2) {
  159.         boolean equal = false;
  160.         if (array1.length == array2.length) {
  161.             for (int i = 0; i < array1.length; i++) {
  162.                 if (array1[i] == array2[i]) {
  163.                     equal = true;
  164.                 } else {
  165.                     equal = false;
  166.                 }
  167.             }
  168.         }
  169.         return equal;
  170.     }
  171.  
  172. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement