Besoin d'aide



  • Salut bon voilà mon problème :
    J'ai créer un launcher 1.5.2 (avec forge+mods) et lorsque que je le lance il y a que fichier de l'archive mods.zip
    Aurait il une solution ?



  • pourrai tu mieux expliquer ton problème?

    PS: comme on me la fait remarquer c'est un forum forge et non pour les launcher.



  • Ouais mais désoler j'ai pas trouver d'autre forum pour sa !
    Donc voilà quand je lance mon launcher tout fonctionne très bien sauf il télécharge pas les fichiers de l'archive mods.zip (genre
    il télécharger pas le fichier mods de l'archive).


  • Administrateurs

    Vérifie que ton launcher peut dézipper les fichiers.



  • j'ai déjà vérifier et il peut grâce à ça :

    package net.minecraft;
    
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.OutputStream;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipInputStream;
    
    public class Unzip{
    
    public static void unzip(File zipfile, File folder) throws FileNotFoundException, IOException{
    
    ZipInputStream zis = new ZipInputStream(
    new BufferedInputStream(
    new FileInputStream(zipfile.getCanonicalFile())));
    
    ZipEntry ze = null;
    try {
    while((ze = zis.getNextEntry()) != null){
    
    File f = new File(folder.getCanonicalPath(), ze.getName());
    
    if (ze.isDirectory()) {
    f.mkdirs();
    continue;
    }
    
    f.getParentFile().mkdirs();
    OutputStream fos = new BufferedOutputStream(
    new FileOutputStream(f));
    try {
    try {
    final byte[] buf = new byte[8192];
    int bytesRead;
    while (-1 != (bytesRead = zis.read(buf)))
    fos.write(buf, 0, bytesRead);
    }
    finally {
    fos.close();
    }
    }
    catch (final IOException ioe) {
    f.delete();
    throw ioe;
    }
    }
    }
    finally {
    zis.close();
    zipfile.delete();
    }
    }
    }
    


  • sur ton FTP tohn dossier mod doit avoir cette URL: ressources/mods/ et le dossier mod ne doit pas être compressé.



  • Ok j'essaye sa tout de suite !


  • Modérateurs

    @'isador34':

    sur ton FTP ton dossier mod doit avoir cette URL: ressources/mods/ et le dossier mod ne doit pas être compressé.

    Cela dépend vraiment de comment est codé le lanceur.

    Quels codes ? Par exemple ceux pour télécharger les ressources ?



  • bha pour le URL_Download_Base



  • Humm sa marche pas tes sur que c'est pas pour la 1.6 sa (car moi c'est 1.5)?


    Je peux vous mettre le GameUpdater.java si sa peut vous aider



  • Personne à trouver ?



  • Lis donc les règles… Double post.
    Je pense que jglrxav pourra t'aider quand il sera la, de mémoire il m'a parlé cet aprem qu'il connaissait un peu le launcher 1.5, ce qui n'est pas mon cas.


  • Modérateurs

    Donne ton code qui gère le téléchargement des ressources, sinon on peut pas t'aider hein ^^'



  • package net.minecraft;
    
    import java.applet.Applet;
    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.DataInputStream;
    import java.io.DataOutputStream;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.FilePermission;
    import java.io.FileWriter;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.io.OutputStream;
    import java.io.PrintWriter;
    import java.io.StringWriter;
    import java.io.Writer;
    import java.lang.reflect.Constructor;
    import java.lang.reflect.Field;
    import java.lang.reflect.Method;
    import java.net.HttpURLConnection;
    import java.net.JarURLConnection;
    import java.net.SocketPermission;
    import java.net.URL;
    import java.net.URLClassLoader;
    import java.net.URLConnection;
    import java.security.AccessControlException;
    import java.security.AccessController;
    import java.security.CodeSource;
    import java.security.PermissionCollection;
    import java.security.PrivilegedExceptionAction;
    import java.security.SecureClassLoader;
    import java.security.cert.Certificate;
    import java.util.Enumeration;
    import java.util.Scanner;
    import java.util.StringTokenizer;
    import java.util.Vector;
    import java.util.jar.JarEntry;
    import java.util.jar.JarFile;
    import java.util.jar.JarOutputStream;
    import java.util.jar.Pack200;
    
    public class GameUpdater implements Runnable
    {
    
    public String JarFile = "http://nom_du_serveur.olympe.in/Launcher/minecraft/nom_du_serveur.jar";//URL du dossier contenant minecraft.jar
    public String VersionFileTxt = "http://nom_du_serveur.olympe.in/Launcher/version_nom_de_servuer.txt";//URL du fichier version.txt
    public String ZipFile = "http://nom_du_serveur.olympe.in/Launcher/ressources/mods/mods.zip";//URL du fichier mods.zip
    public static String WorkingDirectory = "nom_du_serveur";//Dossier où se téléchargeront tous les fichiers
    public static String Title = "nom_du_serveur";//Nom de la fenêtre du launcher ainsi que celle des autres fenêtres
    public static String urlNews = "http://nom_du_serveur.olympe.in/Launcher/Font_Launcher.html";//URL de la page d'acceuil du launcher
    public static boolean AutoConnect = false;//Si sur "true", permet de se connecter automatiquement à un serveur en saisissant le "ServerIP" et le "ServerPort"
    public static String ServerIP = "ip_du_serveur";//IP du serveur auquel le launcher se connectera automatiquement après s'être lancé
    public static String ServerPort = "25565";//Port du serveur
    public File zip, folder;
    public static final int STATE_INIT = 1;
    public static final int STATE_DETERMINING_PACKAGES = 2;
    public static final int STATE_CHECKING_CACHE = 3;
    public static final int STATE_DOWNLOADING = 4;
    public static final int STATE_EXTRACTING_PACKAGES = 5;
    public static final int STATE_UPDATING_CLASSPATH = 6;
    public static final int STATE_SWITCHING_APPLET = 7;
    public static final int STATE_INITIALIZE_REAL_APPLET = 8;
    public static final int STATE_START_REAL_APPLET = 9;
    public static final int STATE_DONE = 10;
    public int percentage;
    public int currentSizeDownload;
    public int totalSizeDownload;
    public static boolean forceUpdate = false;
    public int currentSizeExtract;
    public int totalSizeExtract;
    protected URL[] urlList;
    private static ClassLoader classLoader;
    protected Thread loaderThread;
    protected Thread animationThread;
    public boolean fatalError;
    public boolean pauseAskUpdate;
    public boolean shouldUpdate;
    public String fatalErrorDescription;
    protected String subtaskMessage = "";
    protected int state = 1;
    protected boolean lzmaSupported = false;
    protected boolean pack200Supported = false;
    protected String[] genericErrorMessage = { "Une erreur s'est produite lors du chargement de l'applet.","S'il vous plaît contacter le support pour résoudre ce problème.", "<placeholder for="" error="" message="">" };
    protected boolean certificateRefused;
    protected String[] certificateRefusedMessage = { "Accès à l'applet refusé.", "Acceptez, s'il vous plaît, le texte des autorisations pour permettre","à l'applet de poursuivre le processus de chargement." };
    protected static boolean natives_loaded = false;
    private String latestVersion;
    private String mainGameUrl;
    
    public GameUpdater(String latestVersion, String mainGameUrl)
    {
    this.latestVersion = latestVersion;
    this.mainGameUrl = mainGameUrl;
    }
    
    public void init()
    {
    this.state = 1;
    try
    {
    Class.forName("LZMA.LzmaInputStream");
    this.lzmaSupported = true;
    }
    catch (Throwable localThrowable)
    {
    }
    try
    {
    Pack200.class.getSimpleName();
    this.pack200Supported = true;
    }
    catch (Throwable localThrowable1)
    {
    }
    }
    
    private String generateStacktrace(Exception exception)
    {
    Writer result = new StringWriter();
    PrintWriter printWriter = new PrintWriter(result);
    exception.printStackTrace(printWriter);
    return result.toString();
    }
    
    protected String getDescriptionForState()
    {
    switch (this.state)
    {
    case 1:
    return "Initialisation du téléchargement";
    case 2:
    return "Détermination des packs à télécharger";
    case 3:
    return "Vérification du cache pour les fichiers existants";
    case 4:
    return "Téléchargement des packs";
    case 5:
    return "Extraction des packs";
    case 6:
    return "Mise à jour du classpath";
    case 7:
    return "Changement d'applet";
    case 8:
    return "Initialisation de l'applet";
    case 9:
    return "Démarrage de l'applet";
    case 10:
    return "Chargement terminé";
    case 11:
    return "Mise à jour des fichiers";
    }
    return "Phase inconnu";
    }
    
    protected String trimExtensionByCapabilities(String file)
    {
    if (!this.pack200Supported)
    {
    file = file.replaceAll(".pack", "");
    }
    
    if (!this.lzmaSupported)
    {
    file = file.replaceAll(".lzma", "");
    }
    return file;
    }
    
    protected void loadJarURLs() throws Exception
    {
    this.state = 2;
    String jarList = "lwjgl.jar, jinput.jar, lwjgl_util.jar, " + this.mainGameUrl;
    jarList = trimExtensionByCapabilities(jarList);
    
    StringTokenizer jar = new StringTokenizer(jarList, ", ");
    int jarCount = jar.countTokens() + 1;
    
    this.urlList = new URL[jarCount];
    
    URL path = new URL("http://s3.amazonaws.com/MinecraftDownload/");
    
    for (int i = 0; i < jarCount - 1; i++)
    {
    String nextToken = jar.nextToken();
    URL oldPath = path;
    
    if (nextToken.indexOf("minecraft.jar") >= 0)
    {
    path = new URL(JarFile);
    }
    
    System.out.println(path + nextToken.replaceAll("minecraft.jar", "nom_du_serveur.jar"));
    if (nextToken.indexOf("minecraft.jar") >= 0)
    {
    this.urlList* = new URL(path, nextToken.replaceAll("minecraft.jar", "nom_du_serveur.jar"));
    }
    else
    {
    this.urlList* = new URL(path, nextToken);
    }
    
    if (nextToken.indexOf("minecraft.jar") >= 0)
    {
    path = oldPath;
    }
    }
    
    String osName = System.getProperty("os.name");
    String nativeJar = null;
    
    if (osName.startsWith("Win"))
    nativeJar = "windows_natives.jar.lzma";
    else if (osName.startsWith("Linux"))
    nativeJar = "linux_natives.jar.lzma";
    else if (osName.startsWith("Mac"))
    nativeJar = "macosx_natives.jar.lzma";
    else if ((osName.startsWith("Solaris")) || (osName.startsWith("SunOS")))
    nativeJar = "solaris_natives.jar.lzma";
    else
    {
    fatalErrorOccured("OS (" + osName + ") non supporté.", null);
    }
    
    if (nativeJar == null)
    {
    fatalErrorOccured("Aucun fichiers natifs lwjgl trouvés", null);
    }
    else
    {
    nativeJar = trimExtensionByCapabilities(nativeJar);
    this.urlList[(jarCount - 1)] = new URL(path, nativeJar);
    }
    }
    
    public void downloadFile(String pathFolder) {
    BufferedReader reader = null;
    FileOutputStream fos = null;
    InputStream in = null;
    
    zip = new File(pathFolder + "mods.zip");
    folder = new File(pathFolder);
    if(!folder.exists())
    folder.mkdir();
    
    try
    {
    System.out.println(ZipFile);
    URL url = new URL(ZipFile);
    URLConnection conn = url.openConnection();
    int FileLenght = conn.getContentLength();
    if (FileLenght == -1) {
    throw new IOException("Erreur");
    }
    in = conn.getInputStream();
    reader = new BufferedReader(new InputStreamReader(in));
    fos = new FileOutputStream(zip);
    byte[] buff = new byte[1024];
    int l = in.read(buff);
    int percents = 0;
    
    while (l > 0) {
    percents = (int)(zip.length()*100/FileLenght);
    fos.write(buff, 0, l);
    l = in.read(buff);
    this.subtaskMessage = ("Téléchargement en cours… (" + percents +"%)");
    }
    
    Unzip.unzip(zip, folder);
    
    }
    catch (Exception e) {
    e.printStackTrace();
    }
    finally {
    try {
    fos.flush();
    fos.close();
    }
    catch (IOException e) {
    e.printStackTrace();
    }
    try {
    reader.close();
    }
    catch (Exception e) {
    e.printStackTrace();
    }
    }
    zip.delete();
    System.out.println("Merci d'avoir utiliser ce launcher. Décompilé, amélioré et optimisé par bxtoxik");
    }
    
    public void run()
    {
    init();
    this.state = 3;
    
    this.percentage = 5;
    try
    {
    loadJarURLs();
    
    String path = (String) AccessController.doPrivileged(new PrivilegedExceptionAction<object>()
    {
    public Object run() throws Exception
    {
    return Util.getWorkingDirectory() + File.separator + "bin" + File.separator;
    }
    });
    File dir = new File(path);
    
    if (!dir.exists())
    {
    dir.mkdirs();
    }
    
    if (this.latestVersion != null)
    {
    File versionFile = new File(dir, "version");
    
    boolean cacheAvailable = false;
    if ((versionFile.exists()) && ((this.latestVersion.equals("-1")) || (this.latestVersion.equals(readVersionFile(versionFile)))))
    {
    cacheAvailable = true;
    this.percentage = 90;
    }
    
    boolean update = false;
    try
    {
    String version = "";
    URL url_version = new URL(VersionFileTxt);
    try
    {
    BufferedReader in = new BufferedReader(new InputStreamReader(url_version.openStream()));
    version = in.readLine();
    }
    catch (Exception e)
    {
    System.err.println(e);
    }
    File current_version = new File(dir, "version_nom_du_serveur.txt");
    
    if (!current_version.exists())
    {
    update = true;
    try
    {
    BufferedWriter bw = new BufferedWriter(new FileWriter(current_version));
    bw.append(version);
    bw.close();
    }
    catch (IOException e)
    {
    System.out.println("Erreur");
    }
    }
    else
    {
    try
    {
    Scanner scanner = new Scanner(current_version);
    while (scanner.hasNextLine())
    {
    String line = scanner.nextLine().trim();
    if (!version.equals(line))
    {
    update = true;
    try
    {
    BufferedWriter bw = new BufferedWriter(new FileWriter(current_version));
    bw.append(version);
    bw.close();
    }
    catch (IOException e)
    {
    System.out.println("Erreur");
    }
    }
    }
    
    scanner.close();
    }
    catch (IOException e)
    {
    System.out.println("Erreur" + e.getMessage());
    }
    
    }
    
    }
    catch (Exception localException1)
    {
    }
    
    if ((!cacheAvailable) || (update) || (forceUpdate))
    {
    downloadJars(path);
    extractJars(path);
    extractNatives(path);
    
    if (this.latestVersion != null)
    {
    this.percentage = 90;
    writeVersionFile(versionFile, this.latestVersion);
    }
    }
    }
    
    updateClassPath(dir);
    this.state = 10;
    }
    catch (AccessControlException ace)
    {
    fatalErrorOccured(ace.getMessage(), ace);
    this.certificateRefused = true;
    }
    catch (Exception e)
    {
    fatalErrorOccured(e.getMessage(), e);
    }
    finally
    {
    this.loaderThread = null;
    }
    }
    
    protected String readVersionFile(File file) throws Exception
    {
    DataInputStream dis = new DataInputStream(new FileInputStream(file));
    String version = dis.readUTF();
    dis.close();
    return version;
    }
    
    protected void writeVersionFile(File file, String version) throws Exception
    {
    DataOutputStream dos = new DataOutputStream(new FileOutputStream(file));
    dos.writeUTF(version);
    dos.close();
    }
    
    protected void updateClassPath(File dir) throws Exception
    {
    this.state = 6;
    
    this.percentage = 95;
    
    URL[] urls = new URL[this.urlList.length];
    for (int i = 0; i < this.urlList.length; i++)
    {
    urls* = new File(dir, getJarName(this.urlList*)).toURI().toURL();
    }
    
    if (classLoader == null)
    {
    classLoader = new URLClassLoader(urls)
    {
    protected PermissionCollection getPermissions(CodeSource codesource)
    {
    PermissionCollection perms = null;
    try
    {
    Method method = SecureClassLoader.class.getDeclaredMethod("getPermissions", new Class[] { CodeSource.class });
    method.setAccessible(true);
    perms = (PermissionCollection) method.invoke(getClass().getClassLoader(), new Object[] { codesource });
    
    String host = "www.minecraft.net";
    
    if ((host != null) && (host.length() > 0))
    {
    perms.add(new SocketPermission(host, "connect,accept"));
    }
    else
    codesource.getLocation().getProtocol().equals("file");
    
    perms.add(new FilePermission("<<all files="">>", "read"));
    }
    catch (Exception e)
    {
    e.printStackTrace();
    }
    
    return perms;
    }
    };
    }
    String path = dir.getAbsolutePath();
    if (!path.endsWith(File.separator))
    path = path + File.separator;
    unloadNatives(path);
    
    System.setProperty("org.lwjgl.librarypath", path + "natives");
    System.setProperty("net.java.games.input.librarypath", path + "natives");
    
    natives_loaded = true;
    }
    
    private void unloadNatives(String nativePath)
    {
    if (!natives_loaded)
    {
    return;
    }
    try
    {
    Field field = ClassLoader.class.getDeclaredField("loadedLibraryNames");
    field.setAccessible(true);
    Vector libs = (Vector) field.get(getClass().getClassLoader());
    
    String path = new File(nativePath).getCanonicalPath();
    
    for (int i = 0; i < libs.size(); i++)
    {
    String s = (String) libs.get(i);
    
    if (s.startsWith(path))
    {
    libs.remove(i);
    i–;
    }
    }
    }
    catch (Exception e)
    {
    e.printStackTrace();
    }
    }
    
    public Applet createApplet() throws ClassNotFoundException, InstantiationException, IllegalAccessException
    {
    Class appletClass = classLoader.loadClass("net.minecraft.client.MinecraftApplet");
    return (Applet) appletClass.newInstance();
    }
    
    protected void downloadJars(String path) throws Exception
    {
    this.state = 4;
    
    int[] fileSizes = new int[this.urlList.length];
    
    for (int i = 0; i < this.urlList.length; i++)
    {
    System.out.println(this.urlList*);
    URLConnection urlconnection = this.urlList*.openConnection();
    urlconnection.setDefaultUseCaches(false);
    if ((urlconnection instanceof HttpURLConnection))
    {
    ((HttpURLConnection) urlconnection).setRequestMethod("HEAD");
    }
    fileSizes* = urlconnection.getContentLength();
    this.totalSizeDownload += fileSizes*;
    }
    
    int initialPercentage = this.percentage = 10;
    byte[] buffer = new byte[65536];
    this.subtaskMessage = ("Patch en cours…");
    downloadFile(path.substring(0, path.length() - 4));
    for (int i = 0; i < this.urlList.length; i++)
    {
    int unsuccessfulAttempts = 0;
    int maxUnsuccessfulAttempts = 3;
    boolean downloadFile = true;
    
    while (downloadFile)
    {
    downloadFile = false;
    
    URLConnection urlconnection = this.urlList*.openConnection();
    
    if ((urlconnection instanceof HttpURLConnection))
    {
    urlconnection.setRequestProperty("Cache-Control", "no-cache");
    urlconnection.connect();
    }
    
    String currentFile = getFileName(this.urlList*);
    InputStream inputstream = getJarInputStream(currentFile, urlconnection);
    FileOutputStream fos = new FileOutputStream(path + currentFile);
    
    long downloadStartTime = System.currentTimeMillis();
    int downloadedAmount = 0;
    int fileSize = 0;
    String downloadSpeedMessage = "";
    int bufferSize;
    while ((bufferSize = inputstream.read(buffer, 0, buffer.length)) != -1)
    {
    fos.write(buffer, 0, bufferSize);
    this.currentSizeDownload += bufferSize;
    fileSize += bufferSize;
    this.percentage = (initialPercentage + this.currentSizeDownload * 45 / this.totalSizeDownload);
    this.subtaskMessage = ("Téléchargement de " + currentFile + " " + this.currentSizeDownload * 100 / this.totalSizeDownload + "%");
    
    downloadedAmount += bufferSize;
    long timeLapse = System.currentTimeMillis() - downloadStartTime;
    
    if (timeLapse >= 1000L)
    {
    float downloadSpeed = downloadedAmount / (float) timeLapse;
    
    downloadSpeed = (int) (downloadSpeed * 100.0F) / 100.0F;
    
    downloadSpeedMessage = " @ " + downloadSpeed + " Kb/sec";
    
    downloadedAmount = 0;
    
    downloadStartTime += 1000L;
    }
    
    this.subtaskMessage += downloadSpeedMessage;
    }
    
    inputstream.close();
    fos.close();
    
    if ((!(urlconnection instanceof HttpURLConnection)) || (fileSize == fileSizes*))
    continue;
    if (fileSizes* <= 0)
    {
    continue;
    }
    unsuccessfulAttempts++;
    
    if (unsuccessfulAttempts < maxUnsuccessfulAttempts)
    {
    downloadFile = true;
    this.currentSizeDownload -= fileSize;
    }
    else
    {
    throw new Exception("Impossible de télécharger " + currentFile);
    }
    }
    
    }
    
    this.subtaskMessage = "";
    }
    
    protected InputStream getJarInputStream(String currentFile, final URLConnection urlconnection) throws Exception
    {
    final InputStream[] is = new InputStream[1];
    
    for (int j = 0; (j < 3) && (is[0] == null); j++)
    {
    Thread t = new Thread()
    {
    public void run()
    {
    try
    {
    is[0] = urlconnection.getInputStream();
    }
    catch (IOException localIOException)
    {
    }
    }
    };
    t.setName("JarInputStreamThread");
    t.start();
    
    int iterationCount = 0;
    while ((is[0] == null) && (iterationCount++ < 5))
    {
    try
    {
    t.join(1000L);
    }
    catch (InterruptedException localInterruptedException)
    {
    }
    }
    if (is[0] != null)
    continue;
    try
    {
    t.interrupt();
    t.join();
    }
    catch (InterruptedException localInterruptedException1)
    {
    }
    }
    
    if (is[0] == null)
    {
    if (currentFile.equals("minecraft.jar"))
    {
    throw new Exception("Impossible de télécharger " + currentFile);
    }
    throw new Exception("Impossible de télécharger " + currentFile);
    }
    
    return is[0];
    }
    
    protected void extractLZMA(String in, String out) throws Exception
    {
    File f = new File(in);
    FileInputStream fileInputHandle = new FileInputStream(f);
    
    Class clazz = Class.forName("LZMA.LzmaInputStream");
    Constructor constructor = clazz.getDeclaredConstructor(new Class[] { InputStream.class });
    InputStream inputHandle = (InputStream) constructor.newInstance(new Object[] { fileInputHandle });
    
    OutputStream outputHandle = new FileOutputStream(out);
    
    byte[] buffer = new byte[16384];
    
    int ret = inputHandle.read(buffer);
    while (ret >= 1)
    {
    outputHandle.write(buffer, 0, ret);
    ret = inputHandle.read(buffer);
    }
    
    inputHandle.close();
    outputHandle.close();
    
    outputHandle = null;
    inputHandle = null;
    
    f.delete();
    }
    
    protected void extractPack(String in, String out) throws Exception
    {
    File f = new File(in);
    FileOutputStream fostream = new FileOutputStream(out);
    JarOutputStream jostream = new JarOutputStream(fostream);
    
    Pack200.Unpacker unpacker = Pack200.newUnpacker();
    unpacker.unpack(f, jostream);
    jostream.close();
    
    f.delete();
    }
    
    protected void extractJars(String path) throws Exception
    {
    this.state = 5;
    
    float increment = 10.0F / this.urlList.length;
    
    for (int i = 0; i < this.urlList.length; i++)
    {
    this.percentage = (55 + (int) (increment * (i + 1)));
    String filename = getFileName(this.urlList*);
    
    if (filename.endsWith(".pack.lzma"))
    {
    this.subtaskMessage = ("Extraction de: " + filename + " en " + filename.replaceAll(".lzma", ""));
    extractLZMA(path + filename, path + filename.replaceAll(".lzma", ""));
    
    this.subtaskMessage = ("Extraction de: " + filename.replaceAll(".lzma", "") + " en " + filename.replaceAll(".pack.lzma", ""));
    extractPack(path + filename.replaceAll(".lzma", ""), path + filename.replaceAll(".pack.lzma", ""));
    }
    else if (filename.endsWith(".pack"))
    {
    this.subtaskMessage = ("Extraction de: " + filename + " en " + filename.replace(".pack", ""));
    extractPack(path + filename, path + filename.replace(".pack", ""));
    }
    else if (filename.endsWith(".lzma"))
    {
    this.subtaskMessage = ("Extraction de: " + filename + " en " + filename.replace(".lzma", ""));
    extractLZMA(path + filename, path + filename.replace(".lzma", ""));
    }
    }
    }
    
    protected void extractNatives(String path) throws Exception
    {
    this.state = 5;
    
    int initialPercentage = this.percentage;
    
    String nativeJar = getJarName(this.urlList[(this.urlList.length - 1)]);
    
    Certificate[] certificate = Launcher.class.getProtectionDomain().getCodeSource().getCertificates();
    
    if (certificate == null)
    {
    URL location = Launcher.class.getProtectionDomain().getCodeSource().getLocation();
    
    JarURLConnection jurl = (JarURLConnection) new URL("jar:" + location.toString() + "!/net/minecraft/Launcher.class").openConnection();
    jurl.setDefaultUseCaches(true);
    try
    {
    certificate = jurl.getCertificates();
    }
    catch (Exception localException)
    {
    }
    }
    File nativeFolder = new File(path + "natives");
    if (!nativeFolder.exists())
    {
    nativeFolder.mkdir();
    }
    
    JarFile jarFile = new JarFile(path + nativeJar, true);
    Enumeration entities = jarFile.entries();
    
    this.totalSizeExtract = 0;
    
    while (entities.hasMoreElements())
    {
    JarEntry entry = (JarEntry) entities.nextElement();
    
    if ((entry.isDirectory()) || (entry.getName().indexOf('/') != -1))
    {
    continue;
    }
    this.totalSizeExtract = (int) (this.totalSizeExtract + entry.getSize());
    }
    
    this.currentSizeExtract = 0;
    
    entities = jarFile.entries();
    
    while (entities.hasMoreElements())
    {
    JarEntry entry = (JarEntry) entities.nextElement();
    
    if ((entry.isDirectory()) || (entry.getName().indexOf('/') != -1))
    {
    continue;
    }
    File f = new File(path + "natives" + File.separator + entry.getName());
    if ((f.exists()) && (!f.delete()))
    {
    continue;
    }
    
    InputStream in = jarFile.getInputStream(jarFile.getEntry(entry.getName()));
    OutputStream out = new FileOutputStream(path + "natives" + File.separator + entry.getName());
    
    byte[] buffer = new byte[65536];
    int bufferSize;
    while ((bufferSize = in.read(buffer, 0, buffer.length)) != -1)
    {
    out.write(buffer, 0, bufferSize);
    this.currentSizeExtract += bufferSize;
    
    this.percentage = (initialPercentage + this.currentSizeExtract * 20 / this.totalSizeExtract);
    this.subtaskMessage = ("Extraction de:" + entry.getName() + " " + this.currentSizeExtract * 100 / this.totalSizeExtract + "%");
    }
    
    validateCertificateChain(certificate, entry.getCertificates());
    
    in.close();
    out.close();
    }
    this.subtaskMessage = "";
    
    jarFile.close();
    
    File f = new File(path + nativeJar);
    f.delete();
    }
    
    protected static void validateCertificateChain(Certificate[] ownCerts, Certificate[] native_certs) throws Exception
    {
    if (ownCerts == null)
    return;
    if (native_certs == null)
    throw new Exception("Impossible de valider la chaîne de certificats. Les entrées natives n'y ont pas toutes accès.");
    
    if (ownCerts.length != native_certs.length)
    throw new Exception("Impossible de valider la chaîne de certificats. Certaines diffèrent de tailles [" + ownCerts.length + " contre " + native_certs.length
    + "]");
    
    for (int i = 0; i < ownCerts.length; i++)
    if (!ownCerts*.equals(native_certs*))
    throw new Exception("Certificat différents: " + ownCerts* + " != " + native_certs*);
    }
    
    protected String getJarName(URL url)
    {
    String fileName = url.getFile();
    
    if (fileName.contains("?"))
    {
    fileName = fileName.substring(0, fileName.indexOf("?"));
    }
    if (fileName.endsWith(".pack.lzma"))
    fileName = fileName.replaceAll(".pack.lzma", "");
    else if (fileName.endsWith(".pack"))
    fileName = fileName.replaceAll(".pack", "");
    else if (fileName.endsWith(".lzma"))
    {
    fileName = fileName.replaceAll(".lzma", "");
    }
    
    return fileName.substring(fileName.lastIndexOf('/') + 1);
    }
    
    protected String getFileName(URL url)
    {
    String fileName = url.getFile();
    if (fileName.contains("?"))
    {
    fileName = fileName.substring(0, fileName.indexOf("?"));
    }
    return fileName.substring(fileName.lastIndexOf('/') + 1);
    }
    
    protected void fatalErrorOccured(String error, Exception e)
    {
    e.printStackTrace();
    this.fatalError = true;
    this.fatalErrorDescription = ("Une erreur s'est produite (" + this.state + "): " + error);
    System.out.println(this.fatalErrorDescription);
    if (e != null)
    System.out.println(generateStacktrace(e));
    }
    
    public boolean canPlayOffline()
    {
    try
    {
    String path = (String) AccessController.doPrivileged(new PrivilegedExceptionAction<object>()
    {
    public Object run() throws Exception
    {
    return Util.getWorkingDirectory() + File.separator + "bin" + File.separator;
    }
    });
    File dir = new File(path);
    if (!dir.exists())
    return false;
    
    dir = new File(dir, "version");
    if (!dir.exists())
    return false;
    
    if (dir.exists())
    {
    String version = readVersionFile(dir);
    if ((version != null) && (version.length() > 0))
    return true;
    }
    }
    catch (Exception e)
    {
    e.printStackTrace();
    return false;
    }
    return false;
    }
    }
    

    C'est pas grave après si vous trouver pas (je précise une chose c'est a la suppression d'un mods qui a arrêter des télécharger les fichier mods, car avant il les télécharger).</object></all></object></placeholder>



  • par contre met la balise java car la c'est illisible


  • Modérateurs

    Il me semble que ton fichier mods.zip est téléchargé mais pas mis dans […]/DossierDuLauncher/mods



  • chez pas car dans […]/DossierDuLauncher/mods il télécharger juste 1 fichier de télécharger (fichier milénaire)___et je met aussi le texte de la console d'eclipse quand je lance mon launcher :

    
    java.io.FileNotFoundException: C:\Users\bxtoxik\AppData\Roaming\.survivalcraft\lastlogin (Le fichier spécifié est introuvable)
    at java.io.FileInputStream.open(Native Method)
    at java.io.FileInputStream.<init>(Unknown Source)
    at net.minecraft.LoginForm.readUsername(LoginForm.java:116)
    at net.minecraft.LoginForm.<init>(LoginForm.java:64)
    at net.minecraft.LauncherFrame.<init>(LauncherFrame.java:36)
    at net.minecraft.LauncherFrame.main(LauncherFrame.java:154)
    http://s3.amazonaws.com/MinecraftDownload/lwjgl.jar
    http://s3.amazonaws.com/MinecraftDownload/jinput.jar
    http://s3.amazonaws.com/MinecraftDownload/lwjgl_util.jar
    http://survivalcraft.olympe.in/Launcher/minecraft/survivalcraft.jarsurvivalcraft.jar?user=BxToxik&ticket=35b9fd01865fda9d70b157e244cf801c
    http://s3.amazonaws.com/MinecraftDownload/lwjgl.jar
    http://s3.amazonaws.com/MinecraftDownload/jinput.jar
    http://s3.amazonaws.com/MinecraftDownload/lwjgl_util.jar
    http://survivalcraft.olympe.in/Launcher/minecraft/survivalcraft.jar?user=BxToxik&ticket=35b9fd01865fda9d70b157e244cf801c
    http://s3.amazonaws.com/MinecraftDownload/windows_natives.jar
    http://survivalcraft.olympe.in/Launcher/ressources/mods/mods.zip
    java.lang.IllegalArgumentException: MALFORMED
    at java.util.zip.ZipCoder.toString(Unknown Source)
    at java.util.zip.ZipInputStream.readLOC(Unknown Source)
    at java.util.zip.ZipInputStream.getNextEntry(Unknown Source)
    at net.minecraft.Unzip.unzip(Unzip.java:32)
    at net.minecraft.GameUpdater.downloadFile(GameUpdater.java:272)
    at net.minecraft.GameUpdater.downloadJars(GameUpdater.java:562)
    at net.minecraft.GameUpdater.run(GameUpdater.java:402)
    at net.minecraft.Launcher$1.run(Launcher.java:84)
    Merci d'avoir utiliser ce launcher. Décompilé, amélioré et optimisé par bxtoxik
    2014-02-23 16:09:48 [Infos] [ForgeModLoader] Forge Mod Loader version 5.2.23.737 for Minecraft 1.5.2 loading
    2014-02-23 16:09:48 [Infos] [ForgeModLoader] Java is Java HotSpot(TM) Client VM, version 1.7.0_51, running on Windows 7:x86:6.1, installed at C:\Program Files\Java\jre7
    2014-02-23 16:09:48 [Infos] [ForgeModLoader] Downloading file http://survivalcraft.olympe.in/Launcher/fml_libs15/argo-small-3.2.jar
    2014-02-23 16:09:48 [Infos] [ForgeModLoader] Download complete
    2014-02-23 16:09:48 [Infos] [ForgeModLoader] Downloading file http://survivalcraft.olympe.in/Launcher/fml_libs15/guava-14.0-rc3.jar
    2014-02-23 16:09:50 [Infos] [ForgeModLoader] Download complete
    2014-02-23 16:09:50 [Infos] [ForgeModLoader] Downloading file http://survivalcraft.olympe.in/Launcher/fml_libs15/asm-all-4.1.jar
    2014-02-23 16:09:51 [Infos] [ForgeModLoader] Download complete
    2014-02-23 16:09:51 [Infos] [ForgeModLoader] Downloading file http://survivalcraft.olympe.in/Launcher/fml_libs15/bcprov-jdk15on-148.jar
    2014-02-23 16:09:54 [Infos] [ForgeModLoader] Download complete
    2014-02-23 16:09:54 [Infos] [ForgeModLoader] Downloading file http://survivalcraft.olympe.in/Launcher/fml_libs15/deobfuscation_data_1.5.2.zip
    2014-02-23 16:09:54 [Infos] [ForgeModLoader] Download complete
    2014-02-23 16:09:54 [Infos] [ForgeModLoader] Downloading file http://survivalcraft.olympe.in/Launcher/fml_libs15/scala-library.jar
    2014-02-23 16:10:02 [Infos] [ForgeModLoader] Download complete
    2014-02-23 16:10:02 [Grave] [ForgeModLoader] FML appears to be missing any signature data. This is not a good thing
    2014-02-23 16:10:03 [Infos] [STDOUT] 229 recipes
    2014-02-23 16:10:03 [Infos] [STDOUT] 27 achievements
    2014-02-23 16:10:03 [Infos] [Minecraft-Client] Setting user: BxToxik
    2014-02-23 16:10:03 [Infos] [STDOUT] (Session ID is 12345)
    2014-02-23 16:10:03 [Infos] [Minecraft-Client] LWJGL Version: 2.4.2
    2014-02-23 16:10:04 [Infos] [MinecraftForge] Attempting early MinecraftForge initialization
    2014-02-23 16:10:04 [Infos] [STDOUT] MinecraftForge v7.8.1.737 Initialized
    2014-02-23 16:10:04 [Infos] [ForgeModLoader] MinecraftForge v7.8.1.737 Initialized
    2014-02-23 16:10:04 [Infos] [STDOUT] Replaced 85 ore recipies
    2014-02-23 16:10:04 [Infos] [MinecraftForge] Completed early MinecraftForge initialization
    2014-02-23 16:10:04 [Infos] [ForgeModLoader] Config directory created successfully
    2014-02-23 16:10:04 [Infos] [ForgeModLoader] Reading custom logging properties from C:\Users\lucas\AppData\Roaming\.survivalcraft\config\logging.properties
    2014-02-23 16:10:04 [Désactivé] [ForgeModLoader] Logging level for ForgeModLoader logging is set to ALL
    2014-02-23 16:10:04 [Infos] [ForgeModLoader] Searching C:\Users\lucas\AppData\Roaming\.survivalcraft\mods for mods
    2014-02-23 16:10:04 [Infos] [ForgeModLoader] Forge Mod Loader has identified 3 mods to load
    2014-02-23 16:10:04 [Infos] [mcp] Activating mod mcp
    2014-02-23 16:10:04 [Infos] [FML] Activating mod FML
    2014-02-23 16:10:04 [Infos] [Forge] Activating mod Forge
    2014-02-23 16:10:04 [Infos] [ForgeModLoader] Registering Forge Packet Handler
    2014-02-23 16:10:04 [Infos] [ForgeModLoader] Succeeded registering Forge Packet Handler
    2014-02-23 16:10:04 [Infos] [ForgeModLoader] Configured a dormant chunk cache size of 0
    2014-02-23 16:10:05 [Infos] [STDOUT]
    2014-02-23 16:10:05 [Infos] [STDOUT] Starting up SoundSystem…
    2014-02-23 16:10:05 [Infos] [STDOUT] Initializing LWJGL OpenAL
    2014-02-23 16:10:05 [Infos] [STDOUT] (The LWJGL binding of OpenAL. For more information, see http://www.lwjgl.org)
    2014-02-23 16:10:05 [Infos] [STDOUT] OpenAL initialized.
    2014-02-23 16:10:05 [Infos] [STDOUT]
    2014-02-23 16:10:05 [Infos] [ForgeModLoader] Forge Mod Loader has detected an older LWJGL version, new advanced texture animation features are disabled
    2014-02-23 16:10:05 [Infos] [ForgeModLoader] Not using advanced OpenGL 4.3 advanced capability for animations : OpenGL 4.3 is not available
    2014-02-23 16:10:05 [Infos] [Minecraft-Client] Found animation info for: textures/blocks/lava_flow.txt
    2014-02-23 16:10:05 [Infos] [Minecraft-Client] Found animation info for: textures/blocks/water_flow.txt
    2014-02-23 16:10:05 [Infos] [Minecraft-Client] Found animation info for: textures/blocks/fire_0.txt
    2014-02-23 16:10:05 [Infos] [Minecraft-Client] Found animation info for: textures/blocks/fire_1.txt
    2014-02-23 16:10:05 [Infos] [Minecraft-Client] Found animation info for: textures/blocks/lava.txt
    2014-02-23 16:10:05 [Infos] [Minecraft-Client] Found animation info for: textures/blocks/portal.txt
    2014-02-23 16:10:05 [Infos] [Minecraft-Client] Found animation info for: textures/blocks/water.txt
    2014-02-23 16:10:05 [Infos] [Minecraft-Client] Found animation info for: textures/items/clock.txt
    2014-02-23 16:10:05 [Infos] [Minecraft-Client] Found animation info for: textures/items/compass.txt
    2014-02-23 16:10:05 [Infos] [ForgeModLoader] Forge Mod Loader has successfully loaded 3 mods
    2014-02-23 16:10:05 [Infos] [Minecraft-Client] Connecting to 192.168.1.18, 25565
    2014-02-23 16:10:06 [Infos] [Minecraft-Client] Found animation info for: textures/blocks/lava_flow.txt
    2014-02-23 16:10:06 [Infos] [Minecraft-Client] Found animation info for: textures/blocks/water_flow.txt
    2014-02-23 16:10:06 [Infos] [Minecraft-Client] Found animation info for: textures/blocks/fire_0.txt
    2014-02-23 16:10:06 [Infos] [Minecraft-Client] Found animation info for: textures/blocks/fire_1.txt
    2014-02-23 16:10:06 [Infos] [Minecraft-Client] Found animation info for: textures/blocks/lava.txt
    2014-02-23 16:10:06 [Infos] [Minecraft-Client] Found animation info for: textures/blocks/portal.txt
    2014-02-23 16:10:06 [Infos] [Minecraft-Client] Found animation info for: textures/blocks/water.txt
    2014-02-23 16:10:06 [Infos] [Minecraft-Client] Found animation info for: textures/items/clock.txt
    2014-02-23 16:10:06 [Infos] [Minecraft-Client] Found animation info for: textures/items/compass.txt
    2014-02-23 16:10:06 [Infos] [STDERR] java.lang.NullPointerException
    2014-02-23 16:10:06 [Infos] [STDERR] at net.minecraft.client.gui.RunnableTitleScreen.run(RunnableTitleScreen.java:33)
    2014-02-23 16:10:06 [Infos] [STDERR] at java.lang.Thread.run(Unknown Source)
    2014-02-23 16:10:09 [Infos] [STDERR] Exception in thread "Thread-22" java.lang.IllegalArgumentException: input stream cannot be null
    2014-02-23 16:10:09 [Infos] [STDERR] at net.minecraft.client.mco.Request.func_96352_a(SourceFile:86)
    2014-02-23 16:10:09 [Infos] [STDERR] at net.minecraft.client.mco.Request.func_96364_c(SourceFile:77)
    2014-02-23 16:10:09 [Infos] [STDERR] at net.minecraft.client.mco.McoClient.func_96377_a(SourceFile:173)
    2014-02-23 16:10:09 [Infos] [STDERR] at net.minecraft.client.mco.McoClient.func_96375_b(SourceFile:95)
    2014-02-23 16:10:09 [Infos] [STDERR] at net.minecraft.client.gui.ThreadTitleScreen.run(SourceFile:215)
    
    ```</init></init></init>

  • Modérateurs

    @'BxToxik':

    et je met aussi le texte de la console d'eclipse quand je lance mon launcher :

    
    http://survivalcraft.olympe.in/Launcher/ressources/mods/mods.zip
    java.lang.IllegalArgumentException: MALFORMED
    at java.util.zip.ZipCoder.toString(Unknown Source)
    at java.util.zip.ZipInputStream.readLOC(Unknown Source)
    at java.util.zip.ZipInputStream.getNextEntry(Unknown Source)
    at net.minecraft.Unzip.unzip(Unzip.java:32)
    at net.minecraft.GameUpdater.downloadFile(GameUpdater.java:272)
    at net.minecraft.GameUpdater.downloadJars(GameUpdater.java:562)
    at net.minecraft.GameUpdater.run(GameUpdater.java:402)
    at net.minecraft.Launcher$1.run(Launcher.java:84)
    
    

    Ça aurait été utile de le donner avant…
    Bref, vérifie que ton mods.zip sur le FTP n'est pas corrompu



  • 
    http://survivalcraft.olympe.in/Launcher/ressources/mods/mods.zip
    java.lang.IllegalArgumentException: MALFORMED
    at java.util.zip.ZipCoder.toString(Unknown Source)
    at java.util.zip.ZipInputStream.readLOC(Unknown Source)
    at java.util.zip.ZipInputStream.getNextEntry(Unknown Source)
    at net.minecraft.Unzip.unzip(Unzip.java:32)
    at net.minecraft.GameUpdater.downloadFile(GameUpdater.java:272)
    at net.minecraft.GameUpdater.downloadJars(GameUpdater.java:562)
    at net.minecraft.GameUpdater.run(GameUpdater.java:402)
    at net.minecraft.Launcher$1.run(Launcher.java:84)
    
    

    Je l'ai remplacé et cette fois il a télécharger 1 coremods et un pack de texture en plus


  • Administrateurs

    Il y a des accents dans le nom du contenu de l'archive ? Si oui, enlève-les.


Log in to reply