/**
* This class was created by <Vazkii>. It's distributed as
* part of the Botania Mod. Get the Source Code in github:
* https://github.com/Vazkii/Botania
*
* Botania is Open Source and distributed under the
* Botania License: http://botaniamod.net/license.php
*
* File Created @ [May 31, 2014, 10:22:44 PM (GMT)]
*/
package vazkii.botania.common.core.version;
import java.awt.Desktop;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import net.minecraft.client.Minecraft;
import net.minecraft.client.resources.I18n;
import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.Style;
import net.minecraft.util.text.TextComponentTranslation;
import net.minecraft.util.text.TextFormatting;
public class ThreadDownloadMod extends Thread {
private final String fileName;
private byte[] buffer = new byte[10240];
private int bytesJustDownloaded;
private InputStream webReader;
public ThreadDownloadMod(String fileName) {
setName("Botania Download File Thread");
this.fileName = fileName;
setDaemon(true);
start();
}
@Override
public void run() {
try {
ITextComponent component = ITextComponent.Serializer.jsonToComponent(I18n.format("botania.versioning.startingDownload", fileName));
if(Minecraft.getMinecraft().player != null)
Minecraft.getMinecraft().player.sendMessage(component);
VersionChecker.startedDownload = true;
String base = "http://botaniamod.net/";
String file = fileName.replaceAll(" ", "%20");
URL url = new URL(base + "dl.php?file=" + file);
try {
url.openStream().close(); // Add to DL Counter
} catch(IOException ignored) {}
url = new URL(base + "files/" + file);
webReader = url.openStream();
File dir = new File(".", "mods");
File f = new File(dir, fileName + ".dl");
f.createNewFile();
FileOutputStream outputStream = new FileOutputStream(f.getAbsolutePath());
while((bytesJustDownloaded = webReader.read(buffer)) > 0) {
outputStream.write(buffer, 0, bytesJustDownloaded);
buffer = new byte[10240];
}
outputStream.close();
webReader.close();
File f1 = new File(dir, fileName);
if(!f1.exists())
f.renameTo(f1);
if(Minecraft.getMinecraft().player != null)
Minecraft.getMinecraft().player.sendMessage(new TextComponentTranslation("botania.versioning.doneDownloading", fileName).setStyle(new Style().setColor(TextFormatting.GREEN)));
Desktop.getDesktop().open(dir);
VersionChecker.downloadedFile = true;
} catch (IOException e) {
e.printStackTrace();
sendError();
}
}
private void sendError() {
if(Minecraft.getMinecraft().player != null)
Minecraft.getMinecraft().player.sendMessage(new TextComponentTranslation("botania.versioning.error").setStyle(new Style().setColor(TextFormatting.RED)));
}
}