qu'est ce que tu entends par "c'est long " ?Je sait pas si c'est que le launcher re-télécharge tous a chaque fois mais a chaque fois que je le lance il est long Quelqu'un a une idée .
qu'est ce que tu entends par "c'est long " ?
salut a toi tu n'aurais pas une video a nous passer s'il te plait ??
package net.minecraft.launcher;
import java.io.File;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class OldModDeleter
{
public static void run(File workingDirectory)
{
List<URL> modList = getFullModFile();
File modsFolder = new File(workingDirectory, "mods");
if(modsFolder.exists())
{
File[] modsList = modsFolder.listFiles();
for(File mods : modsList)
{
if(!valideFile(mods, modList))
{
mods.delete();
}
if(mods.isDirectory())
{
File[] fileInModSubfolder = mods.listFiles();
for(File subFile : fileInModSubfolder)
{
if(!valideFile(subFile, modList))
{
subFile.delete();
}
}
}
}
}
}
public static List<URL> getFullModFile()
{
List<URL> result = Collections.synchronizedList(new ArrayList<URL>());
try
{
URL resourceUrl = new URL(LauncherConstants.URL_DOWNLOAD_MODS);
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(resourceUrl.openStream());
NodeList nodeLst = doc.getElementsByTagName("Contents");
long start = System.nanoTime();
for(int i = 0; i < nodeLst.getLength(); i++)
{
Node node = nodeLst.item(i);
if(node.getNodeType() == 1)
{
Element element = (Element)node;
String key = element.getElementsByTagName("Key").item(0).getChildNodes().item(0).getNodeValue();
long size = Long.parseLong(element.getElementsByTagName("Size").item(0).getChildNodes().item(0).getNodeValue());
if(size > 0L)
{
result.add(new URL(LauncherConstants.URL_DOWNLOAD_MODS + key));
}
}
}
long end = System.nanoTime();
long delta = end - start;
Launcher.getInstance().println("Delta time to compare mods: " + delta / 1000000L + " ms ");
}
catch(Exception ex)
{
Launcher.getInstance().println("Couldn't download mods", ex);
}
return result;
}
public static boolean valideFile(File file, List<URL> urlList)
{
if(file.isDirectory())
{
return true;
}
System.out.println("Vérification de : " + file.getName());
for(URL remoteMods : urlList)
{
String remoteFileName = remoteMods.getFile().substring(remoteMods.getFile().lastIndexOf('/') + 1);
System.out.println("Comparaison avec : " + remoteFileName);
if(file.getName().equals(remoteFileName))
{
System.out.println("Fichier validé : " + file.getName());
return true;
}
}
System.out.println("Fichier non validé : " + file.getName());
return false;
}
}
OldModDeleter.run(workingDirectory);
Vérification de : FFMT-libs-universal-1.1.0.7-mc1.6.4.jar
Comparaison avec : Nanotech_mod-UltimateGraviSuite-universal-1.7.0.165-mc1.6.4.jar
Comparaison avec : Nanotech_mod-city-universal-2.2.2.165-mc1.6.4.jar
Comparaison avec : ejml-0.23.jar
Comparaison avec : FFMT-libs-universal-1.1.0.7-mc1.6.4.jar
Fichier validé : FFMT-libs-universal-1.1.0.7-mc1.6.4.jar
Vérification de : Fichier qui sert à rien.txt
Comparaison avec : Nanotech_mod-UltimateGraviSuite-universal-1.7.0.165-mc1.6.4.jar
Comparaison avec : Nanotech_mod-city-universal-2.2.2.165-mc1.6.4.jar
Comparaison avec : ejml-0.23.jar
Comparaison avec : FFMT-libs-universal-1.1.0.7-mc1.6.4.jar
Comparaison avec : Nanotech_mod-core-universal-2.2.2.165-mc1.6.4.jar
Comparaison avec : industrialcraft-2_2.0.305-experimental.jar
Fichier non validé : Fichier qui sert à rien.txt
Vérification de : ejml-0.23.jar
Comparaison avec : Nanotech_mod-UltimateGraviSuite-universal-1.7.0.165-mc1.6.4.jar
Comparaison avec : Nanotech_mod-city-universal-2.2.2.165-mc1.6.4.jar
Comparaison avec : ejml-0.23.jar
Fichier validé : ejml-0.23.jar
Vérification de : industrialcraft-2_2.0.305-experimental.jar
Comparaison avec : Nanotech_mod-UltimateGraviSuite-universal-1.7.0.165-mc1.6.4.jar
Comparaison avec : Nanotech_mod-city-universal-2.2.2.165-mc1.6.4.jar
Comparaison avec : ejml-0.23.jar
Comparaison avec : FFMT-libs-universal-1.1.0.7-mc1.6.4.jar
Comparaison avec : Nanotech_mod-core-universal-2.2.2.165-mc1.6.4.jar
Comparaison avec : industrialcraft-2_2.0.305-experimental.jar
Fichier validé : industrialcraft-2_2.0.305-experimental.jar
Vérification de : Nanotech_mod-city-universal-2.2.2.165-mc1.6.4.jar
Comparaison avec : Nanotech_mod-UltimateGraviSuite-universal-1.7.0.165-mc1.6.4.jar
Comparaison avec : Nanotech_mod-city-universal-2.2.2.165-mc1.6.4.jar
Fichier validé : Nanotech_mod-city-universal-2.2.2.165-mc1.6.4.jar
Vérification de : Nanotech_mod-core-universal-2.2.2.164-mc1.6.4.jar
Comparaison avec : Nanotech_mod-UltimateGraviSuite-universal-1.7.0.165-mc1.6.4.jar
Comparaison avec : Nanotech_mod-city-universal-2.2.2.165-mc1.6.4.jar
Comparaison avec : ejml-0.23.jar
Comparaison avec : FFMT-libs-universal-1.1.0.7-mc1.6.4.jar
Comparaison avec : Nanotech_mod-core-universal-2.2.2.165-mc1.6.4.jar
Comparaison avec : industrialcraft-2_2.0.305-experimental.jar
Fichier non validé : Nanotech_mod-core-universal-2.2.2.164-mc1.6.4.jar
Vérification de : Nanotech_mod-core-universal-2.2.2.165-mc1.6.4.jar
Comparaison avec : Nanotech_mod-UltimateGraviSuite-universal-1.7.0.165-mc1.6.4.jar
Comparaison avec : Nanotech_mod-city-universal-2.2.2.165-mc1.6.4.jar
Comparaison avec : ejml-0.23.jar
Comparaison avec : FFMT-libs-universal-1.1.0.7-mc1.6.4.jar
Comparaison avec : Nanotech_mod-core-universal-2.2.2.165-mc1.6.4.jar
Fichier validé : Nanotech_mod-core-universal-2.2.2.165-mc1.6.4.jar
Vérification de : Nanotech_mod-UltimateGraviSuite-universal-1.7.0.165-mc1.6.4.jar
Comparaison avec : Nanotech_mod-UltimateGraviSuite-universal-1.7.0.165-mc1.6.4.jar
Fichier validé : Nanotech_mod-UltimateGraviSuite-universal-1.7.0.165-mc1.6.4.jar
Vérification de : X ray - cheat mod.jar
Comparaison avec : Nanotech_mod-UltimateGraviSuite-universal-1.7.0.165-mc1.6.4.jar
Comparaison avec : Nanotech_mod-city-universal-2.2.2.165-mc1.6.4.jar
Comparaison avec : ejml-0.23.jar
Comparaison avec : FFMT-libs-universal-1.1.0.7-mc1.6.4.jar
Comparaison avec : Nanotech_mod-core-universal-2.2.2.165-mc1.6.4.jar
Comparaison avec : industrialcraft-2_2.0.305-experimental.jar
Fichier non validé : X ray - cheat mod.jar
Code:package net.minecraft.launcher; import java.io.File; import java.net.URL; import java.util.ArrayList; import java.util.Collections; import java.util.List; import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; public class OldModDeleter { public static void run(File workingDirectory) { List<URL> modList = getFullModFile(); File modsFolder = new File(workingDirectory, "mods"); if(modsFolder.exists()) { File[] modsList = modsFolder.listFiles(); for(File mods : modsList) { if(!valideFile(mods, modList)) { mods.delete(); } if(mods.isDirectory()) { File[] fileInModSubfolder = mods.listFiles(); for(File subFile : fileInModSubfolder) { if(!valideFile(subFile, modList)) { subFile.delete(); } } } } } } public static List<URL> getFullModFile() { List<URL> result = Collections.synchronizedList(new ArrayList<URL>()); try { URL resourceUrl = new URL(LauncherConstants.URL_DOWNLOAD_MODS); DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); DocumentBuilder db = dbf.newDocumentBuilder(); Document doc = db.parse(resourceUrl.openStream()); NodeList nodeLst = doc.getElementsByTagName("Contents"); long start = System.nanoTime(); for(int i = 0; i < nodeLst.getLength(); i++) { Node node = nodeLst.item(i); if(node.getNodeType() == 1) { Element element = (Element)node; String key = element.getElementsByTagName("Key").item(0).getChildNodes().item(0).getNodeValue(); long size = Long.parseLong(element.getElementsByTagName("Size").item(0).getChildNodes().item(0).getNodeValue()); if(size > 0L) { result.add(new URL(LauncherConstants.URL_DOWNLOAD_MODS + key)); } } } long end = System.nanoTime(); long delta = end - start; Launcher.getInstance().println("Delta time to compare mods: " + delta / 1000000L + " ms "); } catch(Exception ex) { Launcher.getInstance().println("Couldn't download mods", ex); } return result; } public static boolean valideFile(File file, List<URL> urlList) { System.out.println(urlList.size()); if(file.isDirectory()) { return true; } System.out.println("Vérification de : " + file.getName()); for(URL remoteMods : urlList) { String remoteFileName = remoteMods.getFile().substring(remoteMods.getFile().lastIndexOf('/') + 1); System.out.println("Comparaison avec : " + remoteFileName); if(file.getName().equals(remoteFileName)) { System.out.println("Fichier validé : " + file.getName()); return true; } } System.out.println("Fichier non validé : " + file.getName()); return false; } }
Dans la classe Launcher, dans le constructeur, avant le download la fonction downloadResources(); il faut ajouter
Et voila, plus de problème de vieux mod qui encombreCode:OldModDeleter.run(workingDirectory);
(vous pouvez enlever les System.out.println c'est juste du débug qui m'a beaucoup servit).
Ha non, j'ai juste vérifier les dossiers dans le dossier mods. S'il y a un autre dossier dans un dossier qui se trouve dans le dossier mods, il vérifiera pas.
Je vais voir pour rendre ça récursive.
package net.minecraft.launcher;
import java.io.File;
import java.net.URL;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
public class OldModDeleter
{
public static void run(File workingDirectory)
{
List<URL> modList = getFullModFile();
File modsFolder = new File(workingDirectory, "mods");
if(modsFolder.exists())
{
File[] modsList = modsFolder.listFiles();
for(File mods : modsList)
{
if(!valideFile(mods, modList))
{
mods.delete();
}
}
}
}
public static List<URL> getFullModFile()
{
List<URL> result = Collections.synchronizedList(new ArrayList<URL>());
try
{
URL resourceUrl = new URL(LauncherConstants.URL_DOWNLOAD_MODS);
DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
DocumentBuilder db = dbf.newDocumentBuilder();
Document doc = db.parse(resourceUrl.openStream());
NodeList nodeLst = doc.getElementsByTagName("Contents");
long start = System.nanoTime();
for(int i = 0; i < nodeLst.getLength(); i++)
{
Node node = nodeLst.item(i);
if(node.getNodeType() == 1)
{
Element element = (Element)node;
String key = element.getElementsByTagName("Key").item(0).getChildNodes().item(0).getNodeValue();
long size = Long.parseLong(element.getElementsByTagName("Size").item(0).getChildNodes().item(0).getNodeValue());
if(size > 0L)
{
result.add(new URL(LauncherConstants.URL_DOWNLOAD_MODS + key));
}
}
}
long end = System.nanoTime();
long delta = end - start;
Launcher.getInstance().println("Delta time to compare mods: " + delta / 1000000L + " ms ");
}
catch(Exception ex)
{
Launcher.getInstance().println("Couldn't download mods", ex);
}
return result;
}
public static boolean valideFile(File file, List<URL> urlList)
{
System.out.println("Vérification de : " + file.getName());
if(file.isDirectory())
{
File[] fileInSubfolder = file.listFiles();
for(File subFile : fileInSubfolder)
{
if(!valideFile(subFile, urlList))
{
subFile.delete();
}
}
return true;
}
for(URL remoteMods : urlList)
{
String remoteFileName = remoteMods.getFile().substring(remoteMods.getFile().lastIndexOf('/') + 1);
System.out.println("Comparaison avec : " + remoteFileName);
if(file.getName().equals(remoteFileName))
{
System.out.println("Fichier validé : " + file.getName());
return true;
}
}
System.out.println("Fichier non validé : " + file.getName());
return false;
}
}