Salut à tous et à toutes c'est elias54 ! On se retrouve pour un nouveau tutoriel sur FORGE cette fois ci
. Ce tutoriel va consiste à vous montrer comment faire un Achievement et comment faire pour qu'il se déclanche lors d'une action. (ex: Lors qu'on tue un mob, lors d'un craft, etc...)
Pour commencer, nous allons déclarer cet Achievement ! Dans votre class principale, insérez ceci au tout début du code (entre la fonction Preload et le public class) :
Ensuite, une fois cette ligne ajouté, il vous faudra maintenant (comme un item) ajouter la ligne qui déclare l'ID etc, dans la fonction load(FMLInitializationEvent event) :
C'est bien beau de taper cette ligne... Mais qu'est-ce que c'est ?![Big Grin :D :D](/wp-content/uploads/2016/04/sourire.gif)
Je vous propose de passer à l'analyse !
Maintenant que nous avons enregistré notre Achievements, il nous faut lui assigner un nom et une description !
Voici ce que vous devez mettre :
Maintenant, nous avons le nom ! Mais NE PAS oublier d'ajouter une description !
Et voilà ! Nous avons maintenant créer notre Achievement !
Oui, mais comment faire pour que le joueur remporte l'Achievement ?
-Ah ah ^^. Et bien nous allons faire en sorte que l'achievement se déclare lors qu'on tue un mob !![Smile :) :)](/wp-content/uploads/2016/04/sourire-2.gif)
Dans votre Entity de mob, mettez ce code :
Maintenant que nous avons notre achievement c'est b... ATTENDEZ ! Nous avons une erreur à addAchievementName et à addAchievementDesc !!!
C'est NORMAL ! On a oublié de déclarer ces méthodes !![Smile :) :)](/wp-content/uploads/2016/04/sourire-2.gif)
Ajoutez ce code tout en bas de votre class principal :
Et voilà ! ^^ Maintenant testez et admirez le résultat.![Stick Out Tongue :p :p](/wp-content/uploads/2016/04/nah.gif)
J'espère que mon tuto vous a plus, si vous voulez me suivre d'avantage; RDV sur ma chaîne YouTube où je prévois (peut être) de faire des tutos en vidéo, et des petits live détente sur du modding ^^
![Big Grin :D :D](/wp-content/uploads/2016/04/sourire.gif)
-Avoir une class principale (pour les achievements, les proxy ne sont pas nécessaire)
-Avoir une connaissance en Java
-Avoir une connaissance en Java
Pour commencer, nous allons déclarer cet Achievement ! Dans votre class principale, insérez ceci au tout début du code (entre la fonction Preload et le public class) :
Code:
public static Achievement Tuto;
Ensuite, une fois cette ligne ajouté, il vous faudra maintenant (comme un item) ajouter la ligne qui déclare l'ID etc, dans la fonction load(FMLInitializationEvent event) :
Code:
Tuto = new Achievement(125, "Tuto", 0, 0, Block.bedrock, null).registerAchievement();
C'est bien beau de taper cette ligne... Mais qu'est-ce que c'est ?
![Big Grin :D :D](/wp-content/uploads/2016/04/sourire.gif)
Je vous propose de passer à l'analyse !
Tuto = new Achievement(125, "Tuto", 0, 0, Block.bedrock, null).registerAchievement();
Tuto : Ce qu'on a déclaré en premier (le public static Achievement Tuto; )
new Achievement : Ici, on définit que c'est un nouvel Achievement![Wink ;) ;)](/wp-content/uploads/2016/04/clindoeil.gif)
125 : Ce nombre définit l'ID de l'Achievement (oui oui, les achievements aussi ont leurs ID
)
"Tuto" : C'est Tuto mais en String ^^ (Vous verrez à quoi il sert par la suite
)
0, 0 : Apparement, c'est l'emplacement de l'achievement dans le GUI des achievements, mais ça parait un peu buggé ^^
Block.bedrock : C'est l'icône qui va s'afficher quand l'achievement sera remporté.
null : On ne s'en occupe pas, dans tous les achievement, c'est la même chose. Sauf si le votre est un SOUS Achievement (donc inutile ^^)
.registerAchievement() : Et enfin, ce qui permet d'enregistrer l'achievement !
Tuto : Ce qu'on a déclaré en premier (le public static Achievement Tuto; )
new Achievement : Ici, on définit que c'est un nouvel Achievement
![Wink ;) ;)](/wp-content/uploads/2016/04/clindoeil.gif)
125 : Ce nombre définit l'ID de l'Achievement (oui oui, les achievements aussi ont leurs ID
![Stick Out Tongue :p :p](/wp-content/uploads/2016/04/nah.gif)
"Tuto" : C'est Tuto mais en String ^^ (Vous verrez à quoi il sert par la suite
![Smile :) :)](/wp-content/uploads/2016/04/sourire-2.gif)
0, 0 : Apparement, c'est l'emplacement de l'achievement dans le GUI des achievements, mais ça parait un peu buggé ^^
Block.bedrock : C'est l'icône qui va s'afficher quand l'achievement sera remporté.
null : On ne s'en occupe pas, dans tous les achievement, c'est la même chose. Sauf si le votre est un SOUS Achievement (donc inutile ^^)
.registerAchievement() : Et enfin, ce qui permet d'enregistrer l'achievement !
Maintenant que nous avons enregistré notre Achievements, il nous faut lui assigner un nom et une description !
Voici ce que vous devez mettre :
this.addAchievementName("Tuto", "Tuto LOL !");
"Tuto" : Vous vous rappelez quand je vous ai dis en haut que "Vous verrez à quoi il sert" ? Vous avez désormais la réponse !
En effet, c'est une sorte d'ID mais en String (on va en avoir besoin pour la dernière partie encore !)^^
"Tuto LOL !" : Hum.... Voici en image ce que c'est ^^
"Tuto" : Vous vous rappelez quand je vous ai dis en haut que "Vous verrez à quoi il sert" ? Vous avez désormais la réponse !
![Smile :) :)](/wp-content/uploads/2016/04/sourire-2.gif)
"Tuto LOL !" : Hum.... Voici en image ce que c'est ^^
Maintenant, nous avons le nom ! Mais NE PAS oublier d'ajouter une description !
this.addAchievementDesc("Tuto", "TUEZ MOI !");
"Tuto" : J'ai déjà expliqué juste au dessus ^^
"TUEZ MOI !" : C'est la description de l'achievement qui apparaîtra dans le GUI Achievements.![Smile :) :)](/wp-content/uploads/2016/04/sourire-2.gif)
"Tuto" : J'ai déjà expliqué juste au dessus ^^
"TUEZ MOI !" : C'est la description de l'achievement qui apparaîtra dans le GUI Achievements.
![Smile :) :)](/wp-content/uploads/2016/04/sourire-2.gif)
Et voilà ! Nous avons maintenant créer notre Achievement !
Oui, mais comment faire pour que le joueur remporte l'Achievement ?
-Ah ah ^^. Et bien nous allons faire en sorte que l'achievement se déclare lors qu'on tue un mob !
![Smile :) :)](/wp-content/uploads/2016/04/sourire-2.gif)
Dans votre Entity de mob, mettez ce code :
public void onDeath(DamageSource par1DamageSource)
{
super.onDeath(par1DamageSource);
if (par1DamageSource.getEntity() instanceof EntityPlayer)
{
((EntityPlayer)par1DamageSource.getEntity()).triggerAchievement(VotreMod.Tuto);
}
}
VotreMod : Le nom de votre class principale![Smile :) :)](/wp-content/uploads/2016/04/sourire-2.gif)
Tuto : L'achievement ^^
Le reste du code ne concerne pas le tuto, mais je peux vous dire vite fait :
C'est en quelque sorte ce qui permet de savoir ce qui va se passer lors de la mort du mob![Stick Out Tongue :p :p](/wp-content/uploads/2016/04/nah.gif)
/!\ VOUS DEVEZ IMPORTER LES CLASS : EntityPlayer ET DamageSource /!\
{
super.onDeath(par1DamageSource);
if (par1DamageSource.getEntity() instanceof EntityPlayer)
{
((EntityPlayer)par1DamageSource.getEntity()).triggerAchievement(VotreMod.Tuto);
}
}
VotreMod : Le nom de votre class principale
![Smile :) :)](/wp-content/uploads/2016/04/sourire-2.gif)
Tuto : L'achievement ^^
Le reste du code ne concerne pas le tuto, mais je peux vous dire vite fait :
C'est en quelque sorte ce qui permet de savoir ce qui va se passer lors de la mort du mob
![Stick Out Tongue :p :p](/wp-content/uploads/2016/04/nah.gif)
/!\ VOUS DEVEZ IMPORTER LES CLASS : EntityPlayer ET DamageSource /!\
Maintenant que nous avons notre achievement c'est b... ATTENDEZ ! Nous avons une erreur à addAchievementName et à addAchievementDesc !!!
C'est NORMAL ! On a oublié de déclarer ces méthodes !
![Smile :) :)](/wp-content/uploads/2016/04/sourire-2.gif)
Ajoutez ce code tout en bas de votre class principal :
private void addAchievementName(String ach, String name)
{
LanguageRegistry.instance().addStringLocalization("achievement." + ach, "en_US", name);
}
private void addAchievementDesc(String ach, String desc)
{
LanguageRegistry.instance().addStringLocalization("achievement." + ach + ".desc", "en_US", desc);
}
{
LanguageRegistry.instance().addStringLocalization("achievement." + ach, "en_US", name);
}
private void addAchievementDesc(String ach, String desc)
{
LanguageRegistry.instance().addStringLocalization("achievement." + ach + ".desc", "en_US", desc);
}
Et voilà ! ^^ Maintenant testez et admirez le résultat.
![Stick Out Tongue :p :p](/wp-content/uploads/2016/04/nah.gif)
J'espère que mon tuto vous a plus, si vous voulez me suivre d'avantage; RDV sur ma chaîne YouTube où je prévois (peut être) de faire des tutos en vidéo, et des petits live détente sur du modding ^^