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

Résolu Minecraft et les threads

1.11.x
1.11.x
4
5
1.0k
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.
  • Cl00e9ment
    Cl00e9ment dernière édition par 20 mai 2017, 19:58

    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
    • LeBossMax2
      LeBossMax2 dernière édition par 20 mai 2017, 20:02

      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
      • AymericRed
        AymericRed dernière édition par 20 mai 2017, 21:24

        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
        • robin4002
          robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par 20 mai 2017, 21:27

          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
          • Cl00e9ment
            Cl00e9ment dernière édition par 21 mai 2017, 15:40

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

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

            MINECRAFT FORGE FRANCE © 2018

            Powered by NodeBB