package advancedsystemsmanager.helpers; import advancedsystemsmanager.commands.CommandDuplicator; import net.minecraft.entity.player.EntityPlayerMP; import net.minecraft.item.ItemStack; import net.minecraft.nbt.JsonToNBT; import net.minecraft.nbt.NBTBase; import net.minecraft.nbt.NBTException; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.ChatComponentText; import java.awt.*; import java.awt.datatransfer.Clipboard; import java.awt.datatransfer.ClipboardOwner; import java.awt.datatransfer.StringSelection; import java.awt.datatransfer.Transferable; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.Future; public class PastebinHelper { private static ClipboardOwner clippy = new ClipboardOwner() { @Override public void lostOwnership(Clipboard clipboard, Transferable contents) { } }; private PastebinHelper() { } public static class Set implements Runnable { private EntityPlayerMP sender; private ItemStack duplicator; private String name; public Set(ItemStack duplicator, EntityPlayerMP sender, String[] arguments) throws UnsupportedEncodingException { name = arguments[2]; this.sender = sender; this.duplicator = duplicator; } @Override public void run() { name = name.replaceAll("http://pastebin.com/(.*)", "$1"); name = name.replaceAll("pastebin.com/(.*)", "$1"); HttpPost httpPost; try { httpPost = new HttpPost("http://pastebin.com/raw.php?i=" + URLEncoder.encode(name, "UTF-8")); } catch (UnsupportedEncodingException e) { e.printStackTrace(); return; } ExecutorService service = Executors.newSingleThreadExecutor(); Future<String> post = service.submit(httpPost); NBTBase nbtBase; try { nbtBase = JsonToNBT.func_150315_a(post.get()); } catch (NBTException e) { e.printStackTrace(); return; } catch (InterruptedException e) { e.printStackTrace(); return; } catch (ExecutionException e) { e.printStackTrace(); return; } if (nbtBase instanceof NBTTagCompound) { NBTTagCompound tagCompound = (NBTTagCompound)nbtBase; tagCompound = CommandDuplicator.unstripBaseNBT(tagCompound); duplicator.setTagCompound(tagCompound); sender.addChatComponentMessage(new ChatComponentText(LocalizationHelper.translateFormatted("stevesaddons.command.loadSuccess", "http://pastebin.com/" + name))); } } } public static class Put implements Runnable { private EntityPlayerMP sender; private ItemStack duplicator; private String[] arguments; public Put(ItemStack duplicator, EntityPlayerMP sender, String[] arguments) throws UnsupportedEncodingException { this.duplicator = duplicator; this.sender = sender; this.arguments = arguments; } @Override public void run() { HttpPost httpPost = new HttpPost("http://pastebin.com/api/api_post.php"); httpPost.put("api_option", "paste"); httpPost.put("api_paste_private", "1"); String apiKey = "367773fafa3565615286cf270e73f3de"; httpPost.put("api_dev_key", apiKey); if (arguments.length > 2) httpPost.put("api_paste_name", arguments[2]); NBTTagCompound tagCompound = (NBTTagCompound)duplicator.getTagCompound().copy(); tagCompound.removeTag("x"); tagCompound.removeTag("y"); tagCompound.removeTag("z"); CommandDuplicator.stripBaseNBT(tagCompound); tagCompound.setString("Author", sender.getCommandSenderName()); httpPost.put("api_paste_code", tagCompound.toString()); ExecutorService service = Executors.newSingleThreadExecutor(); Future<String> line = service.submit(httpPost); String inputLine; try { inputLine = line.get(); } catch (InterruptedException e) { e.printStackTrace(); return; } catch (ExecutionException e) { e.printStackTrace(); return; } sender.addChatComponentMessage(new ChatComponentText(LocalizationHelper.translateFormatted("stevesaddons.command.savedTo", inputLine))); if (!sender.mcServer.isDedicatedServer()) { Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); clipboard.setContents(new StringSelection(inputLine), clippy); sender.addChatComponentMessage(new ChatComponentText(LocalizationHelper.translate("stevesaddons.command.copiedToClip"))); } } } }