• S'inscrire
    • Se connecter
    • Recherche
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes

    Nouveau Achievement !

    Tutoriels des membres
    1.9.4
    3
    7
    1462
    Charger plus de messages
    • Du plus ancien au plus récent
    • Du plus récent au plus ancien
    • Les plus votés
    Répondre
    • Répondre à l'aide d'un nouveau sujet
    Se connecter pour répondre
    Ce sujet a été supprimé. Seuls les utilisateurs avec les droits d'administration peuvent le voir.
    • Tituya
      Tituya dernière édition par robin4002

      Sommaire

      • Introduction
      • Pré-requis
      • Code
        • Classe principale
        • Classe des Succès
      • Lang
      • Bonus
      • Résultat
      • Crédits

      Introduction

      Ici, vous allez apprendre a crée votre propre Succès ! C’est très rapide et simple !

      Pré-requis

      Rien de particulier.

      Savoir manipuler un peu les events forge

      Code

      Classe Principale

      Vous rajoutez simplement ceci dans vos init de votre classe principal.

      new AchievementHandler();
      

      On va crée votre classe après.

      Classe des Succès

      En premier lieu, vous allez créer une nouvelle classe dans votre mod, rien comme extend ni d’importation. Cela va etre la classe général de vos Achievements.
      Je vais appeler ma classe AchievementHandler.

      public class AchievementHandler 
      {    
          //TOUTE la suite ici
      }
      

      Vous voila maintenant avec une classe vierge, nous allons y rajouter des choses.
      En tant que premiere chose, vous ajoutez de cette maniere vos Achievement

      public static Achievement votresucces;
      

      Celle ci ajoute votre Achievement.

      Maintenant, on va register et initialiser vos Achievements. Pour cela, rien de plus simple ! rajoutez simplement ceci :

          public AchievementHandler() 
          {
              init();
              register();
          }
      

      /!\ RAJOUTEZ BIEN TOUT ! LE PUBLIC Y COMPRIS ! CE N’EST PAS UNE FAUTE DE MA PART.
      Vous allez avoir deux erreurs sur votre init et votre register, c’est NORMAL.

      Maintenant, vous rajoutez celle ci, elles vont déclarer votre init et votre register:

          private void init() 
          {
      
          }
      
          private void register()
          {
          }
      

      Voila, dans ces fonctions, vous allez déclarer vos Achievements, comme cela:

      L’init:

      tuto = new Achievement("achievement.votresucces", "votresucces", POSITION_X, POSITION_Y, BlocksTutoriel.blockTest//Le Bloc en guise d'affichage);
      

      Voila un exemple :

      tuto = new Achievement("achievement.tuto", "tuto", 1, 1, BlocksMod.blockTest);
      

      Voila pour un Achievement Simple, si vous voulez en faire un avec un graphisme différent (Piquant), vous rajoutez simplement ceci :

      , (Achievement) null).initIndependentStat().setSpecial();
      

      derriere le bloc choisi.

      On a maintenant un Achievement ayant un style différent, mais il faut que vous ajoutez le register ! (Bah oui sinon ça marche pas 😄 )
      Voila ce que vous avez à rajouter:

      votresucces.registerStat();
      

      Mais Tituya, les Achievements, ils sont où ? J’y viens t’inquiète pas !

      Dans le register, on va crée une nouvelle page de succès. Aussi simplement que ceci:

      AchievementPage.registerAchievementPage(new AchievementPage("votresucces", new Achievement[] { vos, succes}));
      

      Vous avez un succès disponible !

      Pour simplement relier deux succès entre eux par une flèches, vous rajoutez ceci derriere votre bloc de décoration de succès:

      , nomSuccesAQui il est relié
      

      Maintenant, pour ajouter le succes au joueur, vous devrez utilisez ceci dans une fonction avec player:

      player.addStat(AchievementHandler.votresucces);
      

      ou encore dans un event comme ceci:

      event.getPlayer().addStat(AchievementHandler.votresucces);
      

      Lang

      Dans votre fichier lang, pas grand chose à faire, vous rajoutez juste ceci:

      achievement.votresucces=Join
      achievement.votresucces.desc=Join the Minecraft World !
      

      On donne le nom du succès, puis son texte en guise de description.

      Bonus

      Dans ce bonus, on va voir comment faire un succès dès que le joueur rejoins la partie:

      Vous allez crée une classe dans vos event nommé JoinEvent.
      AU préalable, vous allez la déclarer dans votre classe avec vos event comme ceci:

      MinecraftForge.EVENT_BUS.register(new JoinEvent());
      

      Maintenant dans votre classe JoinEvent, mettez ceci:

      @SubscribeEvent
          public void onPlayerJoin(PlayerLoggedInEvent event)
          {
              EntityPlayer player = event.player;
              player.addChatMessage(new TextComponentString("§4Hey " + player.getDisplayNameString())); //Un message normal coloré avec le nom du joueur après
              player.addStat(AchievementHandler.test); // ici, on déclare notre succès !
          }
      

      Résultat

      J’ai crée trois event qui hérite tous entre eux. On vois très bien que ma nouvelle page “Topaze Mod” est faite

      Crédits

      Rédaction : Tituya


      Ce tutoriel de Tituya publié sur Minecraft Forge France est mis à disposition selon les termes de la licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International

      Retour vers le sommaire des tutoriels

      Il y a deux choses qui m'énerve dans la vie : les babouches et les personnes jouant en 1.7.10 !

      1 réponse Dernière réponse Répondre Citer 0
      • Deleted
        Deleted dernière édition par

        Salut,
        Premièrement bien joué, ça fait plaisir de te voir rédiger des tutos pour mff, on sent que tu t’investis pour les membres, bref c’est cool de ta part !

        Sinon, les rares critiques qu’on pourrait te reprocher serait de soigner tes phrases (ponctuation, orthographes et tournures quelquefois maladroites) ou même la forme générale de la page (“Classe générale” et “Classe principale”, c’est quoi la différence o_O) ?, un peu de couleur sur les termes importants ne ferait pas de mal, un peu trop de balises java, tes lecteurs ne sont pas assistés, tu pourrais ainsi limiter leur nombre de copier-coller, etc…).

        La convention serait à revoir, on ne nomme avec des majuscules et des underscores, que les constantes, et non de simples variables static. L’organisation des packages et des classes serait à revoir, notamment “AchievementTuto”, une classe pour regrouper tous tes achievements ?! Mauvais choix selon moi, j’aurais plutôt pencher pour un “AchievementHandler”, mais ce n’est que mon avis ^^
        Finalement, tu aurais pu faire un bonus, non pas sur l’obtention d’un Achievement, mais sur la petite méthode Achievement#setStatStringFormatter, qui en aurait intéressé + d’un (notamment sur un compteur de mobs à kill, affichables et décrémentant en temps réel !).
        A part ça, c’est propre, c’est good, rien à dire, tu gères !

        1 réponse Dernière réponse Répondre Citer 0
        • Tituya
          Tituya dernière édition par

          Voila, update du topic, je ne connaissait pas la méthode Achievement#setStatStringFormatter, je vais m’y pencher dessus !
          J’ai enlever l’exemple pour limiter le copier coller.
          Sinon, pas d’erreur dans mes codes ? J’ai un petit doute sur ça:

          event.getPlayer().addStat(AchievementHandler.votresucces);
          

          Car je l’ai ajouter sur le coup et apres test, je n’arrive pas vraiment a la faire fonctionner 😕

          Il y a deux choses qui m'énerve dans la vie : les babouches et les personnes jouant en 1.7.10 !

          1 réponse Dernière réponse Répondre Citer 0
          • Deleted
            Deleted dernière édition par

            La fonction EntityPlayer#addStat, doit être appelé côté serveur. Du coup, assure-toi que ton event soit bien appelé côté serveur.

            1 réponse Dernière réponse Répondre Citer 0
            • Tituya
              Tituya dernière édition par

              Bh maintenant il faut attendre pour voir si le tutoriel sera validé. Je sais que j’ai chercher pendant pas mal de temps sur le forum la création de succès, donc j’espère ne pas être le seul dans ce cas là et que mon tutoriel va servir à des personnes !
              Sinon, niveau rédaction, tu trouve que c’est mieu ?

              Il y a deux choses qui m'énerve dans la vie : les babouches et les personnes jouant en 1.7.10 !

              1 réponse Dernière réponse Répondre Citer 0
              • BrokenSwing
                BrokenSwing Moddeurs confirmés Rédacteurs dernière édition par

                Je pense que tu peut encore l’améliorer, déjà au niveau des sauts de ligne et aussi quand tu dis :

                Rajoutez :

                , (Achievement) null).initIndependentStat().setSpecial();
                

                Même si je comprend ce que tu veux dire c’est pas très clair, je te conseille de remettre le constructeur entièrement :

                
                new Achievement("achievement.tuto", "tuto", 1, 1, BlocksMod.blockTest, null).initIndependentStat().setSpecial();
                
                

                Il y a plusieurs endroits comme celui-ci dans ton tutoriel. Et comme l’a dit Plaigon parle aussi de Achievement#setStatStringFormatter, car pour ma part un tutoriel simple comme celui-ci doit être complet.

                Sinon ça me parait pas trop mal, cependant je me demande pourquoi tu n’instancie pas tes Achievements directement lors de leur déclaration car il me semble pas qu’il y est de restriction au niveau du moment où les créer et les enregistrer

                1 réponse Dernière réponse Répondre Citer 0
                • Tituya
                  Tituya dernière édition par

                  J’ai appris à le faire comme cela donc… bah je vais regarder vraiment de plus près et essaye de renseigner au maximum mes classes

                  Il y a deux choses qui m'énerve dans la vie : les babouches et les personnes jouant en 1.7.10 !

                  1 réponse Dernière réponse Répondre Citer 0
                  • 1 / 1
                  • Premier message
                    Dernier message
                  Design by Woryk
                  Contact / Mentions Légales

                  MINECRAFT FORGE FRANCE © 2018

                  Powered by NodeBB