Navigation

    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Popular
    • Users
    • Groups

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

    Les events
    1.8
    8
    17
    6638
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • SCAREX
      SCAREX last edited by 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

      1 Reply Last reply Reply Quote 0
      • sosoh
        sosoh last edited by

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

        1 Reply Last reply Reply Quote 0
        • SCAREX
          SCAREX last edited by

          @‘sosoh’:

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

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

          1 Reply Last reply Reply Quote 0
          • robin4002
            robin4002 Administrateurs Rédacteurs Moddeurs confirmés last edited by

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

            1 Reply Last reply Reply Quote 0
            • Ama
              Ama last edited by

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

              1 Reply Last reply Reply Quote 0
              • SCAREX
                SCAREX last edited by

                @‘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.

                1 Reply Last reply Reply Quote 0
                • Ama
                  Ama last edited by

                  Ok merci de l’éclairage !

                  1 Reply Last reply Reply Quote 0
                  • Diangle
                    Diangle last edited by

                    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 Reply Last reply Reply Quote 0
                    • SCAREX
                      SCAREX last edited by

                      @‘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.

                      1 Reply Last reply Reply Quote 0
                      • D
                        Degraduck last edited by

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

                        1 Reply Last reply Reply Quote 0
                        • SCAREX
                          SCAREX last edited by

                          @‘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.

                          1 Reply Last reply Reply Quote 0
                          • D
                            Degraduck last edited by

                            Merci de l’information

                            1 Reply Last reply Reply Quote 0
                            • BrokenSwing
                              BrokenSwing Moddeurs confirmés Rédacteurs last edited by

                              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 Reply Last reply Reply Quote 1
                              • F
                                floflolol last edited by

                                @‘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 Reply Last reply Reply Quote 0
                                • BrokenSwing
                                  BrokenSwing Moddeurs confirmés Rédacteurs last edited by

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

                                  1 Reply Last reply Reply Quote 0
                                  • F
                                    floflolol last edited by

                                    @‘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 Reply Last reply Reply Quote 0
                                    • BrokenSwing
                                      BrokenSwing Moddeurs confirmés Rédacteurs last edited by

                                      T’as fonction est donc bien appelée ?

                                      1 Reply Last reply Reply Quote 0
                                      • 1 / 1
                                      • First post
                                        Last post
                                      Design by Woryk
                                      Contact / Mentions Légales / Faire un don

                                      MINECRAFT FORGE FRANCE © 2018

                                      Powered by NodeBB