MFF

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

    Minecraft et les threads

    Planifier Épinglé Verrouillé Déplacé Résolu 1.11.x
    1.11.x
    5 Messages 4 Publieurs 1.1k 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.
    • Cl00e9mentC Hors-ligne
      Cl00e9ment
      dernière édition par

      Bonsoir,

      Je cherche un event qui est déclenché sur le client lorsqu’il rejoint le server et un autre quand il le quitte.
      Pour ça, pas de problème, il y a par exemple : ClientConnectedToServerEvent et c’est ce que j’ai utilisé :

      @SubscribeEvent
      public void onClientJoin (ClientConnectedToServerEvent event){
           ClientDatabase.onClientJoin ();
      }
      

      Donc tout va bien… excepté le fait que cette méthode n’est pas appelée sur le Client thread mais sur le thread Netty Client IO. :troll: (nan sérieusement, j’ai vraiment l’impression que Minecraft me troll).
      Mais du coup comment je fait pour appeler ClientDatabase.onClientJoin (); (ClientDatabase est un objet que j’ai créé) sur le Client thread ?

      Existe-t-il un event similaire mais qui est déclanché sur le Client thread ? (J’en doute vu que j’ai scruter avec espérance la liste des events.)
      Puis-je appeler ClientDatabase.onClientJoin (); depuis le thread Netty Client IO sur le Client thread ? (Je ne pense pas que Java permette de faire ça.)
      Puis-je envoyer un packet depuis le thread Netty Client IO sur le Client thread ? (Un packet client à client me parait bizarre et encore faudrait-il récupérer le EntityPlayerMP pour pouvoir l’envoyer.)

      Bref, je m’en remet à vous car là je ne vois aucune solution.
      Ha, et au passage, c’est quoi le thread Netty Client IO ? À quoi il sert ?

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

        Salut, pour ce genre de problème, il faut utiliser les Tasks. Coté client ça donne ça :

        Minecraft.getMinecraft().addScheduledTask(new Runnable()
        {
            @Override public void run()
            {
                ClientDatabase.onClientJoin ();
            }
        });
        
        1 réponse Dernière réponse Répondre Citer 1
        • AymericRedA Hors-ligne
          AymericRed
          dernière édition par

          Ce qu’a donné LeBossMax2 est la solution, mais pourquoi tu ne peux pas appeler cette fonction à partir d’un autre thread que celui client ? J’ai pas compris X)

          Sinon tous les thread netty servent à la réception et l’envoi des packets.

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

            Il est globalement mieux de passer par le thread de mc plutôt que celui de netty pour faire les actions.
            Il y a des situations où le faire dans le thread de netty cause des erreurs.

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

              Merci pour l’aide, ça fonctionne plutôt bien !

              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