Bon j'ai réactivé la class lister en modifiant la ligne suivante :
URL resourceUrl = new URL(LauncherConstants.URL_DOWNLOAD_MODS+"/nomrep/mods");
Pour qu'il retrouve le point d'entré des ressources/mods maintenant il fait le travail de delete des mods inexistants sur le ftp. J'ai pas lu tout le code entier de ton nouveau launcher donc je sais pas si c'est une bêtise ou pas mais ça à l'air de fonctionner pas trop mal.A toi de me dire si j'ai fais un gaffe. Au passage,as-tu déjà remarqué que (pas tout le temps mais souvent) certains fichiers sont redownloader sans réelles raisons ?
Salut, en fait oui je lis mes messages privés mais j'ai pas eu le temps d'y répondre.
Alors pourquoi je fais appel de ma méthode lors de l'appui sur Play ? Tout simplement car je prends en compte la variable déterminant la version avec laquelle on va jouer, or cette variable n'est définie que lorsqu'on appuie sur Play, pas avant (avant d'appuyer sur Play, on est toujours à temps de changer de version dans notre profil.).
La classe Lister n'est effectivement pas utilisée dans le launcher présent, normalement j'ai une autre procédure dans la classe VersionManager :
Code:
if(LauncherConstants.useModResource){
//Check version already installed
final File forgeModsDirectory = new File(Launcher.getInstance().getWorkingDirectory().getAbsolutePath(), "/mods");
if(!forgeModsDirectory.exists()){
forgeModsDirectory.mkdirs();
}
else{
String[] modsList = forgeModsDirectory.list();
for(String versionFile : modsList){
if(versionFile.contains(".version")){
String vers1 = versionFile.replace(".version", "");
Launcher.getInstance().println("You have mods for version : " + vers1);
String vers2 = version.getId();
Launcher.getInstance().println("Version gonna be played : " + vers2);
if(!vers1.equals(vers2)){
Launcher.getInstance().println("You have mods for an other version of the game, deleting local mods.");
deleteRecur(forgeModsDirectory);
forgeModsDirectory.mkdir();
}
}
}
}
File versf = new File(forgeModsDirectory.getAbsolutePath(), "/" + version.getId() + ".version");
if (versf.createNewFile()){
System.out.println("Version File created.");
}
job.addDownloadables(getModFiles(((RemoteVersionList)this.remoteVersionList).getProxy(), baseDirectory, version.getId()));
}
return job;
L'objet job retourné, appellera la methode downloadJob (la même que celle pour les assets) et téléchergera ou non les fichiers.
Il y a peut être une faille dans le code, c'est qu'en restant sur la même version, les mods obsolètes resteront, voilà le problème... Remettre Lister peut être une solution, il faut que je vérifie si la classe est bien utilisable dans tous les cas.
Merci du Feedback