MFF

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

    Obtenir tous les joueurs dans une liste.

    Planifier Épinglé Verrouillé Déplacé Résolu 1.12.x
    1.12.x
    13 Messages 5 Publieurs 2.5k 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.
    • robin4002R Hors-ligne
      robin4002 Moddeurs confirmés Rédacteurs Administrateurs
      dernière édition par

      Salut,
      Utilises ServerUtils.mcServer.getPlayerList().getPlayers()

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

        @‘Fifou_BE’:

        on m’avais conseiller de faire comme ceci :

        String[] playerOnline = FMLServerHandler.instance().getServer().getOnlinePlayerNames(); //Get all players online.
        for(String st : playerOnline)
              {
        
             }
        

        Ça lance un NPE en solo.
        @‘robin4002’:

        Utilises ServerUtils.mcServer.getPlayerList().getPlayers()

        L’IDE ne reconnait pas la classe ServerUtils (il ne me propose pas de l’importer).

        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

          Sachant que donnes des classes de mes mods, un peu normal.

          FMLServerHandler.instance().getServer().getPlayerList().getPlayers()

          Par contre idem ça ne fonctionnera surement pas en solo.
          Si tu as besoin de la liste de joueur en solo, il y a une variable dans le worldclient il me semble.

          1 réponse Dernière réponse Répondre Citer 1
          • Alexandre1156A Hors-ligne
            Alexandre1156
            dernière édition par

            Pour récupérer les joueurs côté Client :

            
            List <entityplayer>players = Minecraft.getMinecraft().world.playerEntities;
            
            

            Une petite astuce : à la place de

            
            new Predicate <entityplayermp>(){
               public boolean apply (EntityPlayerMP player){
                  return true; // because I want all players
               }    
            }
            
            

            tu peux mettre

            
            Predicates.alwaysTrue()
            
            

            ;)</entityplayermp></entityplayer>

            1 réponse Dernière réponse Répondre Citer 1
            • Cl00e9mentC Hors-ligne
              Cl00e9ment
              dernière édition par

              Ok merci pour vos réponses.
              J’ai été retardé par un bug donc je reviendrais vous voir quand ça sera bon.

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

                Utilisez FMLCommonHandler au lieu de FMLServerHandler, vous n’aurez peut-être pas de crash en solo

                1 réponse Dernière réponse Répondre Citer 1
                • Cl00e9mentC Hors-ligne
                  Cl00e9ment
                  dernière édition par

                  Bon, je suis de retour !
                  @‘BrokenSwing’:

                  Utilisez FMLCommonHandler au lieu de FMLServerHandler, vous n’aurez peut-être pas de crash en solo

                  L’instance du FMLCommonHandler ne possède pas de méthode getServer().

                  Je rappelle que je veux obtenir la liste des joueurs côté server mais sur n’importe quel application (server ou client). Du coup j’ai fait comme ça :

                  private List <entityplayermp>getAllPlayers (){
                  
                      if (DBSynchronizer.proxy instanceof ClientProxy){
                          return FMLClientHandler.instance().getServer().getPlayerList().getPlayers();
                      }else{
                          return FMLServerHandler.instance().getServer().getPlayerList().getPlayers();
                      }
                  }
                  

                  Merci pour vos réponses, ça fonctionne parfaitement maintenant !</entityplayermp>

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

                    Et

                    FMLCommonHandler.instance().getMinecraftServerInstance()
                    

                    ?

                    1 réponse Dernière réponse Répondre Citer 1
                    • Cl00e9mentC Hors-ligne
                      Cl00e9ment
                      dernière édition par robin4002

                      @‘BrokenSwing’:

                      Et

                      FMLCommonHandler.instance().getMinecraftServerInstance()
                      

                      ?

                      Ha oui, au temps pour moi !
                      Ça fonctionne tout aussi bien, c’est plus propre et ça m’évite de créer des proxies (dont je n’avais pas besoin auparavant).

                      Merci encore.

                      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 robin4002

                        @‘TheRedColossus’:

                        Bon, je suis de retour !
                        @‘BrokenSwing’:

                        Utilisez FMLCommonHandler au lieu de FMLServerHandler, vous n’aurez peut-être pas de crash en solo

                        L’instance du FMLCommonHandler ne possède pas de méthode getServer().

                        Je rappelle que je veux obtenir la liste des joueurs côté server mais sur n’importe quel application (server ou client). Du coup j’ai fait comme ça :

                        private List <EntityPlayerMP>getAllPlayers (){
                           
                            if (DBSynchronizer.proxy instanceof ClientProxy){
                                return FMLClientHandler.instance().getServer().getPlayerList().getPlayers();
                            }else{
                                return FMLServerHandler.instance().getServer().getPlayerList().getPlayers();
                            }
                        }
                        

                        Merci pour vos réponses, ça fonctionne parfaitement maintenant !

                        Juste une remarque, si tu as vraiment besoin de faire quelque chose du genre pour les proxy, fais une méthode non static get <ce que tu veux>dans le proxy serveur et dans le client, dans le serveur proxy tu implémente le code serveur et dans le client le code client.
                        Ensuite pour faire appelle à la fonction tu passes par ClassePrincipale.proxy.get<ce que tu veux>()
                        Beaucoup plus propre qu’un instanceof comme ça.

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

                          Oui c’est ce que j’avais fait juste après quand je m’étais rendu compte que le instanceof + classes proxies vides c’était vraiment pas propre, mais bon, passer par le FMLCommonHandler c’est encore plus propre.

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

                          MINECRAFT FORGE FRANCE © 2024

                          Powered by NodeBB