Tutoriel [Guide] [MAJ 12/07/14]Créer un launcher pour 1.6.2/1.6.4 avec mods

Statut
N'est pas ouverte pour d'autres réponses.

BlackGB

Aventurier
19 Mai 2014
30
0
1
73
Re bon je mets les sources que j'ai modifié ici : https://mega.co.nz/#!HBZlhbpb!fS6U3cBE50heKLjYM1II_B5FkO7awAqqne-5Wsymuro

Alors vue que java c'est pas trop ma tasse de thé et que j'ai pas trop le temps voici une liste de taches a faire a qui prendra les sources et a reposter ici :

- Finaliser la class CompleteVersion :
notamment la methode : getRequiredDownloadables
Cette methode ce charge d'ajouter tout les fichier a telecharger cad :
la version, les library, les assets et les mods. ce qu'il faut finir c'est :
en gros si le fichier n'exist pas faut le telechargé et ca c'est ok. par contre faut finir les cas ou le fichier aurait ete telechargé a moitié. pour l'instant j'ai gere une verif au niveau taille du fichier si renseigné dans le json (lib asset ou mod) .
faudrait finir le controle sur le hash du fichier cad : caculer le hash du fichier existant et si different (si hash dispo dans json) l'ajouter dans la liste des fichiers a mettre a jour.

j'ai geré un parametre URL dans les fichiers JSON de la maniere suivant :
genre imaginons qu'un fichier est son.mp3

si pas d'info URL dans json -> CONSTANTE/SON.MP3
si URL (type directorie) = htttp://www.xxx/toto/ -> http:/www.xxx/toto/SON.MP3
si URL (type fichier) = http://www.xxx/SON_ZARBI.MP3 -> SON.MP3
T'as rien compris c'est pas grave

Donc j'ai testé cette version avec 1.7.2 / 1.7.5 et 1.7.9 et ok si par exemple vote %appdata%/.minecraft est vide


Ce qu'il faut tester et blinder c'est par exmple supprimer un ficher index, asset, version, 1 fichier de l'asset ... bref blinder un peu le tout pour que ca marche dans tout les cas en cas de probleme de telechargement d'un fichier.

normalement c'est compatible avec le bootstrrap du tuto.

Concernant la nouvelle gestion des mods :
Les mods sont gere par version (comme les assets)
il faudra faire un fichier json pour par exemple en 1.7.2-custom:
par rapport au tuto deans votre dossier versions vous avez un :
1.7.2-cstom.jar
et
1.7.2.custom.json
(voir post precedant)

donc ajouter un :
1.7.2.custom_mod.json
qui ressemblerait a :
{
"forgeMods": {
"TooManyItems_1.7.2.jar": {
"size": 112923.0
}
}
}

ou

{
"forgeMods": {
"TooManyItems_1.7.2.jar": {
"hash": "92750c5f93c312ba9ab413d546f32190c56d6f1f",
"size": 112923.0
}
}
}

ou

{
"forgeMods": {
"TooManyItems_1.7.2.jar": {
"hash": "92750c5f93c312ba9ab413d546f32190c56d6f1f",
"size": 112923.0
"url":"http://lesitedepierre/toomany.jar"
}
}
}


ou encore

{
"forgeMods": {
"TooManyItems_1.7.2.jar": {
"hash": "92750c5f93c312ba9ab413d546f32190c56d6f1f",
"size": 112923.0
"url":"http://lesitedepierre/ }
}
}

Voir regele URL d'avant

quoi dire de plus ? ha si sur mon serveur ... GOD it's me.
 

Kouki

Aventurier
21 Mai 2011
71
0
1
Salut, merci pour ton launcher et le travail que tu as fait.
Je l'ai modifié pour la 1.7.2 et 1.7.9 (compatible launcher Version 13 - gestion des assets par version + Gestion des mods Forges par version)
Si ca t'interesse je t'envois les sources. A+ :tnt:



Yo ça m’intéresserait grandement, as tu aussi régler le problème des libraries qui se DL à chaque fois + Le Serveur.jar qui se DL à chaque fois ?

EDIT : OK les nouveaus messages étaient pas apparus, j'vois que t'a fait du bon boulot ! Malheureusement ça risque d'être compliquer d'adapter tout ça pour que ça fonctionne sans "erreur". Comme dit le truc uqi m'emmerde actuellement avec mon launcher c'est juste que ça REDL TOUT le temps / à chaque fois les libraries et le Serveur.jar alors quel es fichiers EXISTENT déjà O;O c'est trop relou !
 

BlackGB

Aventurier
19 Mai 2014
30
0
1
73
Yo ça m’intéresserait grandement, as tu aussi régler le problème des libraries qui se DL à chaque fois + Le Serveur.jar qui se DL à chaque fois ?

EDIT : OK les nouveaus messages étaient pas apparus, j'vois que t'a fait du bon boulot ! Malheureusement ça risque d'être compliquer d'adapter tout ça pour que ça fonctionne sans "erreur". Comme dit le truc uqi m'emmerde actuellement avec mon launcher c'est juste que ça REDL TOUT le temps / à chaque fois les libraries et le Serveur.jar alors quel es fichiers EXISTENT déjà O;O c'est trop relou !


Salut alors deja voila comment ca doit fonctionner normalement pour les librairies :
Normalement (sauf si c'est bugger) a chaque fois que tu lances le jeu, pour chaque librairie, le launcher envoie une requete au serveur hebergeant les lib du style "Tiens pour tel Lib j'ai celle la qu'a un MD5 = 44sq44qsd4qs4d4"
A cela le serveur HTTP repond : OK c'est a jour, ou OK ba re-telecharge la".
Donc normalement a chaque fois que tu lances le jeu pour chaque lib il doit y avoir un controle mais ca ne doit pas les telechargé.
Cependant j'ai qd meme gerer une nouvelle constante pour désactivé ce controle pour notamment si qq1 veux hébergé les lib sur un serveur perso sans avoir développer ce mechanisme de controle de MD5.

Concernant le serveur.jar ... c'est le launcher.jar tu veux dire ? si c'est ca c'est que ton fichier md5.txt n'est pas correct : le principe c'est a chaque fois que tu lance le jeu, le launcher telecharge le fichier md5.txt puis recalcule le md5 de ton launcher actuelle et si ya des differences -> retelechargement du launcher.

Pour connaitre le MD5 du launcher (qui change a chaque fois que tu fais une modif dans le launcher) et du coup le mettre a jour dans le fichier MD5.txt ya un trace a un noment dans le bootstrap qui dit : MD5Calculé = xxxx MD5 du MD5.txt = yyyy

Bref le mieux c'est de prendre le bootstrap en debug.
L'ideal serait de faire un petit .exe qui recalcul le MD5 car effectivement c'est un peu merdique
 

Tidusffx50

Architecte en herbe
27 Août 2011
68
1
84
Je testerais la version du launcher et je tiendrais au courant la communauté , je m'y mets des que j'ai fini le boulot.
 

Kouki

Aventurier
21 Mai 2011
71
0
1
Salut alors deja voila comment ca doit fonctionner normalement pour les librairies :
Normalement (sauf si c'est bugger) a chaque fois que tu lances le jeu, pour chaque librairie, le launcher envoie une requete au serveur hebergeant les lib du style "Tiens pour tel Lib j'ai celle la qu'a un MD5 = 44sq44qsd4qs4d4"
A cela le serveur HTTP repond : OK c'est a jour, ou OK ba re-telecharge la".
Donc normalement a chaque fois que tu lances le jeu pour chaque lib il doit y avoir un controle mais ca ne doit pas les telechargé.
Cependant j'ai qd meme gerer une nouvelle constante pour désactivé ce controle pour notamment si qq1 veux hébergé les lib sur un serveur perso sans avoir développer ce mechanisme de controle de MD5.

Concernant le serveur.jar ... c'est le launcher.jar tu veux dire ? si c'est ca c'est que ton fichier md5.txt n'est pas correct : le principe c'est a chaque fois que tu lance le jeu, le launcher telecharge le fichier md5.txt puis recalcule le md5 de ton launcher actuelle et si ya des differences -> retelechargement du launcher.

Pour connaitre le MD5 du launcher (qui change a chaque fois que tu fais une modif dans le launcher) et du coup le mettre a jour dans le fichier MD5.txt ya un trace a un noment dans le bootstrap qui dit : MD5Calculé = xxxx MD5 du MD5.txt = yyyy

Bref le mieux c'est de prendre le bootstrap en debug.
L'ideal serait de faire un petit .exe qui recalcul le MD5 car effectivement c'est un peu merdique


Je t'assures que sans aucune modif, et en prenant le bon md5 il le re-dl quand meme à chaque fois et pour le launcher.jar en plus d'être RE-DL tout le temps à chaque fois, je ne parlais pas de celui-ci mas celui dans /version/versionsServeur/versionsServeur.jar ! Et il ne fait pas que check le md5 des libs, sur la version des sources ici ils les RE-DL bien à chaque fois. pour preuve avec le launcher officiel il ce lance instant moi 'jdois attendre une plombe.
 

BlackGB

Aventurier
19 Mai 2014
30
0
1
73
Je t'assures que sans aucune modif, et en prenant le bon md5 il le re-dl quand meme à chaque fois et pour le launcher.jar en plus d'être RE-DL tout le temps à chaque fois, je ne parlais pas de celui-ci mas celui dans /version/versionsServeur/versionsServeur.jar ! Et il ne fait pas que check le md5 des libs, sur la version des sources ici ils les RE-DL bien à chaque fois. pour preuve avec le launcher officiel il ce lance instant moi 'jdois attendre une plombe.

Salut et bien plus maintenant ;)
Pour info, les versions avec Forge ne marche pas sur MAC OSX.
J’essayerai de faire une modif ... un jour
Ya des bugs dans le launcher alors si jamais le jeu ne veut pas ce lancer n’hésiter pas a supprimer le dossier
%appdata%/.minecraft/versions
 

Kouki

Aventurier
21 Mai 2011
71
0
1
Salut et bien plus maintenant ;)
Pour info, les versions avec Forge ne marche pas sur MAC OSX.
J’essayerai de faire une modif ... un jour
Ya des bugs dans le launcher alors si jamais le jeu ne veut pas ce lancer n’hésiter pas a supprimer le dossier
%appdata%/.minecraft/versions


Ouai mais voilà pourquoi je peux pas utiliser ton launcher pour le moment si il y a des bugs ^^'
 

BlackGB

Aventurier
19 Mai 2014
30
0
1
73

Salut, alors merci a ceux qui ont réagient par rapport a la version du launcher que je vous ai posté il y a qq temps compatible 1.7.9, cependant j'ai pas de temps a perdre vue que ya pas de retour et j'en ai rien a foutre que vous l'utilisiez ou pas c'est pour ca que je post une derniere fois qq infos util sur ce forum (au cas ou qq1 l'aurait essayé mais question politesse a du mal a laisser un com ...)

Donc cette fois je vous propose qq corrections de bug a apporter a la version precedente:

- BUG 1 : A chaque fois que je relance le jeu, je perds la config de mes mods.

En effet certain mod stock leur config sous %appdata%\mods (Config touches par exemple) or chaque lancement le launcher efface le repertoire "mods" et suivant la version, recopie les mods de "mods_forge" vers "mods".

Modif a faire :

RDV dans la class : GameLauncher (net.minecraft.launcher.GameLauncher)

en dessous de la Methode "public static void deleteFolder(File folder)" definir une nouvelle methode :

public static void deleteJarFolder(File folder) {
File[] files = folder.listFiles();
if(files!=null) { //some JVMs return null for empty dirs
for(File f: files) {
if(f.isDirectory()) {
deleteJarFolder(f);
} else {

if( f.getName().toLowerCase().endsWith("jar") || f.getName().toLowerCase().endsWith("zip") )
f.delete();
}
}
}
folder.delete();
}

Puis ensuite un peu plus bas dans la methode "launchGame" modifier :

final File forgeModsDirectory = new File(gameDirectory, "mods");

if( forgeModsDirectory.exists() ) {

if( forgeModsDirectory.isDirectory())
deleteFolder(forgeModsDirectory);
else
forgeModsDirectory.delete();
}

par

final File forgeModsDirectory = new File(gameDirectory, "mods");

if( forgeModsDirectory.exists() ) {

if( forgeModsDirectory.isDirectory())
deleteJarFolder(forgeModsDirectory); // MODIF CEDRIC 2
else
forgeModsDirectory.delete();
}
 

BlackGB

Aventurier
19 Mai 2014
30
0
1
73
BUG 2 :
avec le nouveau launcher (Qd j'active la gestion des mods) dans la gestion des profiles la liste des versions est vide alors que avec le launcher officiel tout est OK.

Cela est du a ce que un fichier : %appdata%\.minecraft\versions\xxxxx\xxxxx_mod.json est manquant (Voir nouvelle gestion des mods)

Pour corriger cela RDV dans la class LocalVersionList (net.minecraft.launcher.updater.LocalVersionList)

puis dans la methode "refreshVersions"

remplacer :

if( LauncherConstants.useModResource)
{
try
{
mods = gson.fromJson(getContentMod( "versions/" + id + "/" + id + "_mod.json"), ModVersion.class);
}
catch(final RuntimeException ex) // JsonSyntaxException ex
{
throw new IOException( "Couldn't load local mods " + version.getId(), ex );
}
catch(final IOException ex) {
throw new IOException( "Couldn't load local mods " + version.getId(), ex );
}
}

par :

if( LauncherConstants.useModResource)
{
try
{
mods = gson.fromJson(getContentMod( "versions/" + id + "/" + id + "_mod.json"), ModVersion.class);
}
catch(final RuntimeException ex) // JsonSyntaxException ex
{
throw new IOException( "Couldn't load local mods " + version.getId(), ex );
}
catch(final IOException ex) {

// MODIF CEDRIC 2
//throw new IOException( "Couldn't load local mods " + version.getId(), ex );
mods = null;
// FIN MODIF CEDRIC 2
}
}
 
Statut
N'est pas ouverte pour d'autres réponses.