MFF

    Minecraft Forge France
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes
    • Forge Events
      • Automatique
      • Foncé
      • Clair
    • S'inscrire
    • Se connecter

    Cancel l'affichage des "achievements" Minecraft vanilla

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.10
    21 Messages 6 Publieurs 3.8k Vues 1 Watching
    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.
    • DeletedD Hors-ligne
      Deleted
      dernière édition par

      En quoi est-ce qu’elle te paraît différente ? Du moment que ça hérite de GuiScreen, y’a pas de soucis.

      1 réponse Dernière réponse Répondre Citer 0
      • FolganskyF Hors-ligne
        Folgansky Correcteurs
        dernière édition par

        J’arrive à enlever le bouton pour changer de page d’achievements, mais afficher celle que je veux par défaut, ça me dépasse.

        public ClientProxy()
            {
                MinecraftForge.EVENT_BUS.register(this);
            }
        
            @SubscribeEvent
            public void onInitGuiEvent(InitGuiEvent.Post event)
            {
                if (event.gui instanceof GuiAchievements)
                {
                    for (Object b : event.buttonList)
                    {
                        if (((GuiButton) b).id == 2)
                        {
                            ((GuiButton) b).visible = false;
                        }
                    }
                }
            }
        
        1 réponse Dernière réponse Répondre Citer 0
        • SCAREXS Hors-ligne
          SCAREX
          dernière édition par

          Ce que tu veux c’est laisser le bouton des achievement mais remplacer par ton gui, c’est ça ?

          Si c’est ça que tu veux tu utilises le GuiOpenEvent et tu remplaces par ton Gui

          Site web contenant mes scripts : http://SCAREXgaming.github.io

          Pas de demandes de support par MP ni par skype SVP.
          Je n'accepte sur skype que l…

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

            En gros il veut que lorsque l’on arrive sur la page des achievements, ce soit la page de son mod qui s’affiche par défaut, et non celle de Minecraft

            1 réponse Dernière réponse Répondre Citer 0
            • FolganskyF Hors-ligne
              Folgansky Correcteurs
              dernière édition par

              Je ne vois pas mais alors du tout comment je vais pouvoir me servir de ça Xd

              package net.minecraftforge.client.event;
              
              import cpw.mods.fml.common.eventhandler.Cancelable;
              import cpw.mods.fml.common.eventhandler.Event;
              import net.minecraft.client.gui.GuiScreen;
              
              /**
               * This event is called before any Gui will open.
               * If you don't want this to happen, cancel the event.
               * If you want to override this Gui, simply set the gui variable to your own Gui.
               *
               * @author jk-5
               */
              @Cancelable
              public class GuiOpenEvent extends Event
              {
                  public GuiScreen gui;
                  public GuiOpenEvent(GuiScreen gui)
                  {
                      this.gui = gui;
                  }
              }
              

              C’est juste la page affichée qui doit changer, pas tout le Gui

              1 réponse Dernière réponse Répondre Citer 0
              • robin4002R Hors-ligne
                robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                dernière édition par

                if(event.gui.getClass().equals(GuiAchievements.class))
                {
                Minecraft.getMinecraft().displayGuiScreen(ton gui);
                }
                
                1 réponse Dernière réponse Répondre Citer 0
                • AymericRedA Hors-ligne
                  AymericRed
                  dernière édition par

                  Et évent.setCanceled(true); aussi

                  Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                  AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                  Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                  Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

                  1 réponse Dernière réponse Répondre Citer 0
                  • FolganskyF Hors-ligne
                    Folgansky Correcteurs
                    dernière édition par

                    Ok euh si je cancel l’affichage de mon Gui Achievement je ne pourrai jamais afficher la page d’Achievement voulue il me semble

                    Actuellement j’en suis là:

                    @SubscribeEvent
                        public void onInitGuiEvent(InitGuiEvent.Post event)
                        {
                            if (event.gui instanceof GuiAchievements)
                            {
                                for (Object b : event.buttonList)
                                {
                                    if (((GuiButton) b).id == 2)
                                    {
                                        ((GuiButton) b).visible = false;
                                    }
                                }
                            }
                            if(event.gui.getClass().equals(GuiAchievements.class))
                            {
                                AchievementPage.getAchievementPage(1); //crash si ne vaut pas 0
                                System.out.println(AchievementPage.getAchievementPages().size());
                    //            Minecraft.getMinecraft().displayGuiScreen(???);
                            }
                        }
                    

                    Je pensais avoir trouvé avec "AchievementPage.getAchievementPage(); "
                    Mais il n’accepte que la valeur 0, le size étant de 1. Pourtant avec le bouton je peux accéder à ma page d’achievement, ce qui me laissait supposer que le size était de 2…

                    1 réponse Dernière réponse Répondre Citer 0
                    • SCAREXS Hors-ligne
                      SCAREX
                      dernière édition par

                      Pourquoi ne pas faire comme robin a fait ?

                      Site web contenant mes scripts : http://SCAREXgaming.github.io

                      Pas de demandes de support par MP ni par skype SVP.
                      Je n'accepte sur skype que l…

                      1 réponse Dernière réponse Répondre Citer 0
                      • FolganskyF Hors-ligne
                        Folgansky Correcteurs
                        dernière édition par

                        Parce que je ne sais pas à quoi correspond le gui que je veux afficher ^^’
                        Alors j’essaie de trouver à quoi correspond la page d’achievement que je veux afficher

                        1 réponse Dernière réponse Répondre Citer 0
                        • robin4002R Hors-ligne
                          robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                          dernière édition par

                          ton propre gui, donc ta propre classe.

                          1 réponse Dernière réponse Répondre Citer 0
                          • FolganskyF Hors-ligne
                            Folgansky Correcteurs
                            dernière édition par

                            Bah oui… Mais non Xd

                            Je ne vois pas pourquoi je devrais refaire tout l’affichage des achievements fonction de ce que le joueur a accomplis… Enfin le plus simple c’est d’afficher la page voulue, pas refaire tout le Gui…Si?

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

                              Je crois qu’il n’ont tout simplement pas compris ce que tu veux faire xD
                              Ce que moi j’ai compris :
                              Il a créé un objet de type AchievementPage auquel il a ajouté ses objets de type Achievement qu’il active via player.trigger…. Il a ensuite enregistré cette page de façon tout à fait normale, ce qui a pour effet de lorsque l’on clique sur le bouton Achievements on tombe sur ceux de Minecraft avec un bouton sur lequel est marqué Minecraft (normal quoi), si il clique sur ce bouton apparaît alors sa propre page d’achievement.
                              Cependant, ce qu’il voudrait, c’est que lorsque l’on appuie sur le bouton Achievements, ce ne soit pas la page de Minecraft qui apparaisse en première mais bien la sienne.
                              Son problème est le suivant, vous lui proposez de cancel l’affichage du GUI pour afficher son propre GUI, MAIS il ne sait pas quel est son GUI, il a juste une AchievementPage.

                              1 réponse Dernière réponse Répondre Citer 0
                              • robin4002R Hors-ligne
                                robin4002 Moddeurs confirmés Rédacteurs Administrateurs
                                dernière édition par

                                Ahhh, c’est plus clair comme ça.

                                Faudrait que je regardes ça plus en détail.

                                1 réponse Dernière réponse Répondre Citer 0
                                • AymericRedA Hors-ligne
                                  AymericRed
                                  dernière édition par

                                  Alors je viens de regarder comment mc gère ça, le gui a un int qui indique la page courante, cette int correspond à l’index de l’AchievementPage dans la liste des achievements, il va falloir que tu modifies la valeur de cet int quand le gui est initalisé (InitGuiEvent il me semble), mais comme il est en private, tu devras utiliser le “ObfuscationReflectionHelper.setPrivateValue(…)” et mettre la valeur de la position de ta page dans la liste (pour l’obtenir, il faudra que tu parcoures la liste dans une boucle et check si la page est égale à la tienne) à la variable “currentPage” de GuiAchievements.

                                  PS: le nom “currentPage” ne sera peut-être pas le même en 1.7.10.
                                  PS-2: j’espère que j’ai bien expliqué, par que ce n’est pas si compliqué que ça à faire.

                                  Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                                  AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                                  Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                                  Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

                                  1 réponse Dernière réponse Répondre Citer 1
                                  • FolganskyF Hors-ligne
                                    Folgansky Correcteurs
                                    dernière édition par

                                    Oh…

                                    Alors déjà merci de m’avoir mis bien droit sur les rails.

                                    Mais j’ai réussis sans trop comprendre les paramètres pour le ObfuscationReflectionHelper.

                                        public ClientProxy()
                                        {
                                            MinecraftForge.EVENT_BUS.register(this);
                                        }
                                    
                                        @SubscribeEvent
                                        public void onInitGuiEvent(InitGuiEvent.Post event)
                                        {
                                            if (event.gui instanceof GuiAchievements)
                                            {
                                                for (Object b : event.buttonList)
                                                {
                                                    if (((GuiButton) b).id == 2)
                                                    {
                                                        ((GuiButton) b).visible = false;
                                                    }
                                                }
                                            }
                                            if(event.gui.getClass().equals(GuiAchievements.class))
                                            {
                                                ObfuscationReflectionHelper.setPrivateValue(GuiAchievements.class, (GuiAchievements) event.gui, 0, "currentPage");
                                            }
                                        }
                                    

                                    J’aurais pensé que le 0 n’était pas valable et qu’il aurait fallu un field après "currentPage (qui est bien le même en 1.7.10)
                                    Bref coup de peau, merci à tous car tous les commentaires ont mené à la résolution de mon problème.

                                    1 réponse Dernière réponse Répondre Citer 0
                                    • AymericRedA Hors-ligne
                                      AymericRed
                                      dernière édition par

                                      De rien 🙂
                                      Par contre je précise, si tu utilises ça avec d’autres mods qui ajoutent des AchievementPage, il faudra peut-être changer le 0 car ta page n’aura peut-être pas la même position dans la liste d’AchievementPage. Pour obtenir cette position dans la liste, il faudra que tu parcoures la liste dans une boucle et check si la page est égale à la tienne, si c’est la cas, tu sauvegardes la valeur de la position (à incrémenter à chaque tour de boucle).

                                      Si je vous ai aidé, n'oubliez pas d’être heureux, j'aiderai encore +

                                      AymericRed, moddeur expérimenté qui aide sur ce forum et qui peut accepter de faire un mod Forge rémunéré de temps en temps.

                                      Mes tutos : Table de craft, plugin NEI, plugin JEI, modifier l'overlay
                                      Je suis un membre apprécié et joueur, j'ai déjà obtenu 6 points de réputation.

                                      1 réponse Dernière réponse Répondre Citer 0
                                      • FolganskyF Hors-ligne
                                        Folgansky Correcteurs
                                        dernière édition par

                                        Ouais solution de sécurité. Mais je n’ai pas d’autres pages d’achievements

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

                                        MINECRAFT FORGE FRANCE © 2024

                                        Powered by NodeBB