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

    Problème de protocole

    Sans suite
    1.7.10
    2
    2
    1514
    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.
    • Patatoufet
      Patatoufet dernière édition par

      Coucou le monde, voilà j’ai crée pour mon menu personnalisé un système de connexion inclus directement dans celui-ci :

      Tout fonctionne bien… Quand on se connecte à une partie solo juste avant sinon on a droit à un magnifique NullPointerExeption :

      :::

      [22:46:21] [Netty Client IO #1/ERROR] [FML]: NetworkDispatcher exception
      
      java.lang.NullPointerException
              at cpw.mods.fml.client.FMLClientHandler.waitForPlayClient(FMLClientHandler.java:844) ~[FMLClientHandler.class:?]
              at cpw.mods.fml.common.FMLCommonHandler.waitForPlayClient(FMLCommonHandler.java:585) ~[FMLCommonHandler.class:?]
              at cpw.mods.fml.common.network.handshake.NetworkDispatcher.clientListenForServerHandshake(NetworkDispatcher.java:154) [NetworkDispatcher.class:?]
              at cpw.mods.fml.common.network.handshake.FMLHandshakeClientState$1.accept(FMLHandshakeClientState.java:33) ~[FMLHandshakeClientState$1.class:?]
              at cpw.mods.fml.common.network.handshake.FMLHandshakeClientState$1.accept(FMLHandshakeClientState.java:27) ~[FMLHandshakeClientState$1.class:?]
              at cpw.mods.fml.common.network.handshake.HandshakeMessageHandler.channelRead0(HandshakeMessageHandler.java:27) ~[HandshakeMessageHandler.class:?]
              at cpw.mods.fml.common.network.handshake.HandshakeMessageHandler.channelRead0(HandshakeMessageHandler.java:9) ~[HandshakeMessageHandler.class:?]
              at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:98) ~[SimpleChannelInboundHandler.class:?]
              at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) ~[DefaultChannelHandlerContext.class:?]
              at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) ~[DefaultChannelHandlerContext.class:?]
              at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) ~[MessageToMessageDecoder.class:?]
              at io.netty.handler.codec.MessageToMessageCodec.channelRead(MessageToMessageCodec.java:111) ~[MessageToMessageCodec.class:?]
              at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) ~[DefaultChannelHandlerContext.class:?]
              at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) ~[DefaultChannelHandlerContext.class:?]
              at cpw.mods.fml.common.network.handshake.ChannelRegistrationHandler.channelRead0(ChannelRegistrationHandler.java:32) ~[ChannelRegistrationHandler.class:?]
              at cpw.mods.fml.common.network.handshake.ChannelRegistrationHandler.channelRead0(ChannelRegistrationHandler.java:15) ~[ChannelRegistrationHandler.class:?]
              at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:98) ~[SimpleChannelInboundHandler.class:?]
              at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?]
              at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?]
              at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:785) ~[DefaultChannelPipeline.class:?]
              at io.netty.channel.embedded.EmbeddedChannel.writeInbound(EmbeddedChannel.java:169) ~[EmbeddedChannel.class:?]
              at cpw.mods.fml.common.network.handshake.NetworkDispatcher.handleClientSideCustomPacket(NetworkDispatcher.java:257) ~[NetworkDispatcher.class:?]
              at cpw.mods.fml.common.network.handshake.NetworkDispatcher.channelRead0(NetworkDispatcher.java:185) ~[NetworkDispatcher.class:?]
              at cpw.mods.fml.common.network.handshake.NetworkDispatcher.channelRead0(NetworkDispatcher.java:43) ~[NetworkDispatcher.class:?]
              at io.netty.channel.SimpleChannelInboundHandler.channelRead(SimpleChannelInboundHandler.java:98) ~[SimpleChannelInboundHandler.class:?]
              at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?]
              at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?]
              at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:173) [ByteToMessageDecoder.class:?]
              at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?]
              at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?]
              at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:173) [ByteToMessageDecoder.class:?]
              at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?]
              at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?]
              at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:103) [MessageToMessageDecoder.class:?]
              at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?]
              at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?]
              at io.netty.handler.timeout.ReadTimeoutHandler.channelRead(ReadTimeoutHandler.java:149) [ReadTimeoutHandler.class:?]
              at io.netty.channel.DefaultChannelHandlerContext.invokeChannelRead(DefaultChannelHandlerContext.java:337) [DefaultChannelHandlerContext.class:?]
              at io.netty.channel.DefaultChannelHandlerContext.fireChannelRead(DefaultChannelHandlerContext.java:323) [DefaultChannelHandlerContext.class:?]
              at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:785) [DefaultChannelPipeline.class:?]
              at io.netty.channel.nio.AbstractNioByteChannel$NioByteUnsafe.read(AbstractNioByteChannel.java:100) [AbstractNioByteChannel$NioByteUnsafe.class:?]
              at io.netty.channel.nio.NioEventLoop.processSelectedKey(NioEventLoop.java:480) [NioEventLoop.class:?]
              at io.netty.channel.nio.NioEventLoop.processSelectedKeysOptimized(NioEventLoop.java:447) [NioEventLoop.class:?]
              at io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:341) [NioEventLoop.class:?]
              at io.netty.util.concurrent.SingleThreadEventExecutor$2.run(SingleThreadEventExecutor.java:101) [SingleThreadEventExecutor$2.class:?]
              at java.lang.Thread.run(Unknown Source) [?:1.7.0_65]
      

      :::

      Je suppose (grandement) que le problème vient d’un protocole qui retourne NULL à un moment donné mais pourquoi le faire que quand on c’est pas connecté à une partie solo juste avant ?! Voici mon code qui gère tout ça :

      private void initiateServerConnection()
      
          {
              this.isConnecting = true;
              ((GuiShunayteButton) this.buttonList.get(1)).setVisible(false);
              ((GuiShunayteButton) this.buttonList.get(2)).setVisible(false);
              ((GuiShunayteButton) this.buttonList.get(3)).setVisible(false);
              ((GuiShunayteButton) this.buttonList.get(5)).setVisible(false);
      
              ((GuiShunayteButton) this.buttonList.get(0)).setButtonName(I18n.format("menu.connect.connecting", new Object[0]));
      
              ServerAddress serveraddress = ServerAddress.func_78860_a(server.serverIP);
              mc.loadWorld((WorldClient)null);
              mc.setServerData(server);
              this.connectToServer(serveraddress.getIP(), serveraddress.getPort());
              ((GuiShunayteButton) this.buttonList.get(6)).setVisible(true);
          }
      
          private void connectToServer(final String p_146367_1_, final int p_146367_2_)
          {
              logger.info("Connecting to " + p_146367_1_ + ", " + p_146367_2_);
              (new Thread("Server Connector #" + field_146372_a.incrementAndGet())
              {
                  public void run()
                  {
      
                      InetAddress inetaddress = null;
      
                      try
                      {
                          if (GuiShunayteMainMenu.this.field_146373_h)
                          {
                              return;
                          }
      
                          inetaddress = InetAddress.getByName(p_146367_1_);
      
                          GuiShunayteMainMenu.this.field_146371_g = NetworkManager.provideLanClient(inetaddress, p_146367_2_);
                          GuiShunayteMainMenu.this.field_146371_g.setNetHandler(new NetHandlerLoginClient(GuiShunayteMainMenu.this.field_146371_g, GuiShunayteMainMenu.this.mc, GuiShunayteMainMenu.this.screen));
      
                          GuiShunayteMainMenu.this.field_146371_g.scheduleOutboundPacket(new C00Handshake(5, p_146367_1_, p_146367_2_, EnumConnectionState.LOGIN), new GenericFutureListener[0]);
                          GuiShunayteMainMenu.this.field_146371_g.scheduleOutboundPacket(new C00PacketLoginStart(GuiShunayteMainMenu.this.mc.getSession().func_148256_e()), new GenericFutureListener[0]);
      
                      }
                      catch (UnknownHostException unknownhostexception)
                      {
                          if (GuiShunayteMainMenu.this.field_146373_h)
                          {
                              return;
                          }
      
                          GuiShunayteMainMenu.logger.error("Couldn\'t connect to server", unknownhostexception);
                          GuiShunayteMainMenu.this.mc.displayGuiScreen(new GuiDisconnected(GuiShunayteMainMenu.this.screen, "connect.failed", new ChatComponentTranslation("disconnect.genericReason", new Object[] {"Unknown host"})));
                      }
                      catch (Exception exception)
                      {
                          if (GuiShunayteMainMenu.this.field_146373_h)
                          {
                              return;
                          }
      
                          GuiShunayteMainMenu.logger.error("Couldn\'t connect to server", exception);
                          String s = exception.toString();
      
                          if (inetaddress != null)
                          {
                              String s1 = inetaddress.toString() + ":" + p_146367_2_;
                              s = s.replaceAll(s1, "");
                          }
      
                          GuiShunayteMainMenu.this.mc.displayGuiScreen(new GuiDisconnected(GuiShunayteMainMenu.this.screen, "connect.failed", new ChatComponentTranslation("disconnect.genericReason", new Object[] {s})));
                      }
                  }
              }).start();
          }
      

      Merci d’avance 😃

      1 réponse Dernière réponse Répondre Citer 0
      • SCAREX
        SCAREX dernière édition par

        Essaie plutôt çà pour te connecter à un serveur :

        
        FMLClientHandler.instance().connectToServerAtStartup(adress, port);
        
        

        Ton code devrait ressembler à çà :

        
        private void initiateServerConnection()
        
        {
        this.isConnecting = true;
        ((GuiShunayteButton) this.buttonList.get(1)).setVisible(false);
        ((GuiShunayteButton) this.buttonList.get(2)).setVisible(false);
        ((GuiShunayteButton) this.buttonList.get(3)).setVisible(false);
        ((GuiShunayteButton) this.buttonList.get(5)).setVisible(false);
        
        ((GuiShunayteButton) this.buttonList.get(0)).setButtonName(I18n.format("menu.connect.connecting", new Object[0]));
        
        FMLClientHandler.instance().connectToServerAtStartup(adress, port);
        ((GuiShunayteButton) this.buttonList.get(6)).setVisible(true);
        }
        
        

        Site web contenant mes scripts : http://SCAREXgaming.github.io

        Pas de demandes de support par MP ni par skype SVP.
        Je n'accepte sur skype que l…

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

        MINECRAFT FORGE FRANCE © 2018

        Powered by NodeBB