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

    Ajout d'un header et d'un footer sur la liste de joueur

    Les events
    1.8
    8
    17
    6976
    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.
    • SCAREX
      SCAREX dernière édition par robin4002

      Sommaire

      • Introduction
      • Pré-requis
      • Code
      • Résultat
      • Crédits

      Introduction

      Comme on peut le voir sur la plupart des nouveaux serveurs, lorsque l’on appuie sur TAB, le gui qui apparaît possède un header (en-tête) et un footer (bas de page). Nous allons voir comment faire de même dans ce tutoriel.

      NOTE : ceci est un tutoriel utilise de code à mettre côté serveur et est donc à éviter sur un mod solo.

      Pré-requis

      • Utiliser les événements

      Code

      Dans la classe où est enregistré votre événement PlayerLoggedInEvent :

      package VotrePackage;
      
      public class VotreClasse
      {
          @SubscribeEvent
          public void onPlayerLoggedInEvent(PlayerLoggedInEvent event)
          {
              try
              {
                  // Création du paquet à envoyer au joueur
                  Packet packet = new S47PacketPlayerListHeaderFooter();
      
                  // On va devoir réécrire les variables
                  // ici on s'occupe du header
                  Field fi1 = packet.getClass().getDeclaredFields()[0];
                  // On la met accessible car elle est "private"
                  fi1.setAccessible(true);
                  // On créé le texte qui va le remplacer
                  ChatComponentText compH = new ChatComponentText("votre header");
                  // On remplace la valeur
                  fi1.set(packet, compH);
                  // Et on la remet en non-accessible pour éviter les problèmes d'autres mods
                  fi1.setAccessible(false);
      
                  // Même chose mais pour le footer cette fois
                  Field fi2 = packet.getClass().getDeclaredFields()[1];
                  fi2.setAccessible(true);
                  ChatComponentText compF = new ChatComponentText("votre footer");
                  fi2.set(packet, compF);
                  fi2.setAccessible(false);
      
                  // On envoi le paquet
                  event.player.playerNetServerHandler.sendPacket(packet);
      
              }
              catch(Exception e)
              {
                  System.err.println("Error sending packet tab " + e);
              }
          }
      }
      

      Résultat

      Voilà :
      Liste de joueur personnalisé

      Crédits

      Rédaction :

      • SCAREX

      Correction :

      • robin4002

      Creative Commons
      Ce tutoriel de SCAREX 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

      retourRetour vers le sommaire des tutoriels

      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
      • sosoh
        sosoh dernière édition par

        L’image ne marche pas, sinon j’essaye demain 🙂

        Developpeur d'Hogsmod, un mod implémentant le Monde d'Harry Potter dans Minecraft!

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

          @‘sosoh’:

          L’image ne marche pas, sinon j’essaye demain 🙂

          J’arrive pas à la rajouter, problème avec les pièces jointes.

          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
          • robin4002
            robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

            Je vois ça, sinon passe par un hébergeur comme imgur.

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

              Je comprends pas tout le tuto ? Tu entends quoi par un Header et un Footer ? Ils permettent de faire quoi une fois ajoutés ?

              Si je t'ai filé un coup de main n'oublie pas le + / -
              Par contre évite les demandes d'aides en MP, tu sera sympa'

              La JavaDoc c'est comme le PQ, ça sert à ce démerder tous seul. -Victor Hugo- 2017

              Une superbe API pour animer vos super modèles CraftStudio dans Minecraft !

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

                @‘ZeAmateis’:

                Je comprends pas tout le tuto ? Tu entends quoi par un Header et un Footer ? Ils permettent de faire quoi une fois ajoutés ?

                Il permet de rajouter un texte en haut (header) et en bas (footer) de la liste des joueurs lorsque l’on appuie sur TAB. C’est quelque chose de présent sur pas mal de serveurs connus.

                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
                • Ama
                  Ama dernière édition par

                  Ok merci de l’éclairage !

                  Si je t'ai filé un coup de main n'oublie pas le + / -
                  Par contre évite les demandes d'aides en MP, tu sera sympa'

                  La JavaDoc c'est comme le PQ, ça sert à ce démerder tous seul. -Victor Hugo- 2017

                  Une superbe API pour animer vos super modèles CraftStudio dans Minecraft !

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

                    Tu dit TAB ? dit plutôt la touche pour afficher la list des joueurs. Dans mon cas au début je n’ai pas compris car pour afficher la liste des joueurs j’utilise shift.

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

                      @‘Diangle’:

                      Tu dit TAB ? dit plutôt la touche pour afficher la list des joueurs. Dans mon cas au début je n’ai pas compris car pour afficher la liste des joueurs j’utilise shift.

                      Dans les classes de Minecraft cet overlay s’appelle GuiPlayerTabOverlay voilà pourquoi je l’appelle le tab overlay.

                      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
                      • D
                        Degraduck dernière édition par

                        Est-ce que c’est juste en 1.8 ou aussi possible en version antérieur?

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

                          @‘Degraduck’:

                          Est-ce que c’est juste en 1.8 ou aussi possible en version antérieur?

                          Le texte en bas et en haut du Gui a été rajouté par Mojang en 1.8 donc ça ne peut marcher qu’en 1.8.

                          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
                          • D
                            Degraduck dernière édition par

                            Merci de l’information

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

                              Ce tutoriel fonctionne en 1.12 (en modifiant le nom des classes en des fonctions vu qu’elles ont changées) mais je ne doute pas qu’il fonctionne en 1.8 aussi. Je valide ce tutoriel qui est intéressant je trouve. Pour ceux qui veulent, voici le code en 1.12 :

                              
                              @SubscribeEvent
                              public static void playerConnect(PlayerLoggedInEvent event) {
                              if (!event.player.getEntityWorld().isRemote) {
                              SPacketPlayerListHeaderFooter packet = new SPacketPlayerListHeaderFooter();
                              Field header = packet.getClass().getDeclaredFields()[0];
                              header.setAccessible(true);
                              Field footer = packet.getClass().getDeclaredFields()[1];
                              footer.setAccessible(true);
                              try {
                              header.set(packet, new TextComponentString(TextFormatting.RED + "My Header"));
                              footer.set(packet, new TextComponentString(TextFormatting.RED + "My Footer"));
                              } catch (IllegalArgumentException e) {
                              e.printStackTrace();
                              } catch (IllegalAccessException e) {
                              e.printStackTrace();
                              }
                              ((EntityPlayerMP)event.player).connection.sendPacket(packet);
                              }
                              
                              }
                              
                              
                              1 réponse Dernière réponse Répondre Citer 1
                              • F
                                floflolol dernière édition par

                                @‘BrokenSwing’:

                                Ce tutoriel fonctionne en 1.12 (en modifiant le nom des classes en des fonctions vu qu’elles ont changées) mais je ne doute pas qu’il fonctionne en 1.8 aussi. Je valide ce tutoriel qui est intéressant je trouve. Pour ceux qui veulent, voici le code en 1.12 :

                                
                                @SubscribeEvent
                                public static void playerConnect(PlayerLoggedInEvent event) {
                                   if (!event.player.getEntityWorld().isRemote) {
                                       SPacketPlayerListHeaderFooter packet = new SPacketPlayerListHeaderFooter();
                                       Field header = packet.getClass().getDeclaredFields()[0];
                                       header.setAccessible(true);
                                       Field footer = packet.getClass().getDeclaredFields()[1];
                                       footer.setAccessible(true);
                                       try {
                                           header.set(packet, new TextComponentString(TextFormatting.RED + "My Header"));
                                           footer.set(packet, new TextComponentString(TextFormatting.RED + "My Footer"));
                                       } catch (IllegalArgumentException e) {
                                           e.printStackTrace();
                                       } catch (IllegalAccessException e) {
                                           e.printStackTrace();
                                       }
                                       ((EntityPlayerMP)event.player).connection.sendPacket(packet);
                                   }
                                
                                }
                                
                                

                                Cela Ne Fonctionne Pas En 1.9.4 !

                                j’utiliser l’importe

                                import java.lang.reflect.Field;

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

                                  Le seul truc qui peux changer entre les version est SPacketPlayerListHeaderFooter et ((EntityPlayerMP)event.player).connection.sendPacket(packet);

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

                                    @‘BrokenSwing’:

                                    Le seul truc qui peux changer entre les version est SPacketPlayerListHeaderFooter et ((EntityPlayerMP)event.player).connection.sendPacket(packet);

                                    Mais le truc c’est que cela mais aucune, mais aucune erreur (J’ai bien pensé a enlevez le static car j’utilise que les fonctions non-static) !

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

                                      T’as fonction est donc bien appelée ?

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

                                      MINECRAFT FORGE FRANCE © 2018

                                      Powered by NodeBB