Navigation

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

    SOLVED Obtenir tous les joueurs dans une liste.

    1.12.x
    1.12.x
    5
    13
    1675
    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.
    • Cl00e9ment
      Cl00e9ment last edited by robin4002

      Bonjour,
      J’aimerai obtenir, côté Server, une liste contenant tous les joueurs. Pour ce faire, je me suis inspiré du code de l’EntityElderGuardian et ça donne ça :

      private List <EntityPlayerMP>getAllPlayers (){
      
          return Minecraft.getMinecraft().world.getPlayers (EntityPlayerMP.class, new Predicate <EntityPlayerMP>(){
      
              public boolean apply (EntityPlayerMP player){
                  return true; // because I want all players
              }
          });
      }
      

      Le problème c’est que cette méthode me retourne une liste vide. Pouvez-vous m’aider ?
      Merci.

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

        Et

        FMLCommonHandler.instance().getMinecraftServerInstance()
        

        ?

        1 Reply Last reply Reply Quote 1
        • Flow
          Flow last edited by

          Salut,
          on m’avais conseiller de faire comme ceci :

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

          Vois si tu peux adapter pour faire ce que tu souhaites 🙂

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

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

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

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

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

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

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

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

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

                      1 Reply Last reply Reply Quote 1
                      • Cl00e9ment
                        Cl00e9ment last edited by

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

                          Et

                          FMLCommonHandler.instance().getMinecraftServerInstance()
                          

                          ?

                          1 Reply Last reply Reply Quote 1
                          • Cl00e9ment
                            Cl00e9ment last edited by 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 Reply Last reply Reply Quote 0
                            • robin4002
                              robin4002 Administrateurs Rédacteurs Moddeurs confirmés last edited by 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 Reply Last reply Reply Quote 0
                              • Cl00e9ment
                                Cl00e9ment last edited by

                                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 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