• 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

Extended Entity Properties

Les entités
1.7.2
21
127
33.6k
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.
  • bin4r1s
    bin4r1s dernière édition par 23 janv. 2015, 17:27

    Bonjour,
    J’ai un problème : Quand je rejoint le monde, je me fais éjecter avec un beau message, je cite : “A fatal error has occured, this connection is terminated” (Littéralement : “Une erreur fatale est survenue, cette connection est terminée”). Je regarde la console d’eclipse, qui m’indique que j’ai un NPE dans la fonction loadNBTData, sur mes "getShort(“gnagnagna”). POur voir si c’est bien l’origine du problème, je les retire, mais là ( la même chose, sauf que mes classes ne figurent plus dans le log) :

    io.netty.handler.codec.DecoderException: java.lang.NullPointerException
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:99) ~[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 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.internal.FMLProxyPacket.processPacket(FMLProxyPacket.java:86) [FMLProxyPacket.class:?]
    at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241) [NetworkManager.class:?]
    at net.minecraft.client.Minecraft.runTick(Minecraft.java:2141) [Minecraft.class:?]
    at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1028) [Minecraft.class:?]
    at net.minecraft.client.Minecraft.run(Minecraft.java:951) [Minecraft.class:?]
    at net.minecraft.client.main.Main.main(Main.java:164) [Main.class:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_11]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_11]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_11]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_11]
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.11.jar:?]
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.11.jar:?]
    at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:78) [start/:?]
    at GradleStart.main(GradleStart.java:45) [start/:?]
    Caused by: java.lang.NullPointerException
    at io.netty.buffer.AbstractByteBuf.readBytes(AbstractByteBuf.java:676) ~[AbstractByteBuf.class:?]
    at fr.MrBlockTNT.Dragons.network.PacketData$01.fromBytes(PacketData$01.java:34) ~[PacketData$01.class:?]
    at cpw.mods.fml.common.network.simpleimpl.SimpleIndexedCodec.decodeInto(SimpleIndexedCodec.java:17) ~[SimpleIndexedCodec.class:?]
    at cpw.mods.fml.common.network.simpleimpl.SimpleIndexedCodec.decodeInto(SimpleIndexedCodec.java:7) ~[SimpleIndexedCodec.class:?]
    at cpw.mods.fml.common.network.FMLIndexedMessageToMessageCodec.decode(FMLIndexedMessageToMessageCodec.java:77) ~[FMLIndexedMessageToMessageCodec.class:?]
    at cpw.mods.fml.common.network.FMLIndexedMessageToMessageCodec.decode(FMLIndexedMessageToMessageCodec.java:17) ~[FMLIndexedMessageToMessageCodec.class:?]
    at io.netty.handler.codec.MessageToMessageCodec$2.decode(MessageToMessageCodec.java:81) ~[MessageToMessageCodec$2.class:?]
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:89) ~[MessageToMessageDecoder.class:?]
    … 19 more
    [18:17:38] [Client thread/ERROR] [FML]: There was a critical exception handling a packet on channel dragons:CHANNEL_1
    io.netty.handler.codec.DecoderException: java.lang.NullPointerException
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:99) ~[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 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.internal.FMLProxyPacket.processPacket(FMLProxyPacket.java:86) [FMLProxyPacket.class:?]
    at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:241) [NetworkManager.class:?]
    at net.minecraft.client.Minecraft.runTick(Minecraft.java:2141) [Minecraft.class:?]
    at net.minecraft.client.Minecraft.runGameLoop(Minecraft.java:1028) [Minecraft.class:?]
    at net.minecraft.client.Minecraft.run(Minecraft.java:951) [Minecraft.class:?]
    at net.minecraft.client.main.Main.main(Main.java:164) [Main.class:?]
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_11]
    at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_11]
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_11]
    at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_11]
    at net.minecraft.launchwrapper.Launch.launch(Launch.java:135) [launchwrapper-1.11.jar:?]
    at net.minecraft.launchwrapper.Launch.main(Launch.java:28) [launchwrapper-1.11.jar:?]
    at net.minecraftforge.gradle.GradleStartCommon.launch(GradleStartCommon.java:78) [start/:?]
    at GradleStart.main(GradleStart.java:45) [start/:?]
    Caused by: java.lang.NullPointerException
    at io.netty.buffer.AbstractByteBuf.readBytes(AbstractByteBuf.java:676) ~[AbstractByteBuf.class:?]
    at fr.MrBlockTNT.Dragons.network.PacketData$01.fromBytes(PacketData$01.java:34) ~[PacketData$01.class:?]
    at cpw.mods.fml.common.network.simpleimpl.SimpleIndexedCodec.decodeInto(SimpleIndexedCodec.java:17) ~[SimpleIndexedCodec.class:?]
    at cpw.mods.fml.common.network.simpleimpl.SimpleIndexedCodec.decodeInto(SimpleIndexedCodec.java:7) ~[SimpleIndexedCodec.class:?]
    at cpw.mods.fml.common.network.FMLIndexedMessageToMessageCodec.decode(FMLIndexedMessageToMessageCodec.java:77) ~[FMLIndexedMessageToMessageCodec.class:?]
    at cpw.mods.fml.common.network.FMLIndexedMessageToMessageCodec.decode(FMLIndexedMessageToMessageCodec.java:17) ~[FMLIndexedMessageToMessageCodec.class:?]
    at io.netty.handler.codec.MessageToMessageCodec$2.decode(MessageToMessageCodec.java:81) ~[MessageToMessageCodec$2.class:?]
    at io.netty.handler.codec.MessageToMessageDecoder.channelRead(MessageToMessageDecoder.java:89) ~[MessageToMessageDecoder.class:?]
    … 19 more
    [18:17:38] [Server thread/INFO]: Player730 lost connection: TextComponent{text='Disconnected', siblings=[], style=Style{hasParent=false, color=null, bold=null, italic=null, underlined=null, obfuscated=null, clickEvent=null, hoverEvent=null}}
    [18:17:38] [Server thread/INFO]: Player730 left the game
    [18:17:38] [Server thread/INFO]: Stopping singleplayer server as player logged out

    Pouvez-vous m’éclairer sur l’origine possible de cette erreur ? (A mon avis c’est tout bête mais ça fait un petit peu que je cherche)
    Je précise aussi que je suis en 1.7.10 mais ça ne doit rien changer de ce côté (enfin je pense).

    Code intéressant de PlayerData.java :

    @Override
    public void loadNBTData(NBTTagCompound nbt) 
    {
    NBTTagCompound properties = (NBTTagCompound) nbt.getTag(DATA_NAME);
    this.mana = properties.getShort("Mana");
    this.playerMaxMana = properties.getShort("MaxMana");
    this.spell_levels = properties.getByteArray("Spell_Levels");
    }

    Mes mods:

    • New Ores
    • More Dragons
    1 réponse Dernière réponse Répondre Citer 0
    • robin4002
      robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par 23 janv. 2015, 17:32

      NBTTagCompound properties = (NBTTagCompound) nbt.getTag(DATA_NAME);
      System.out.println(properties == null)
      Si il t’indique true dans la console c’est que nbt.getTag(DATA_NAME) est null, et donc que tu as un problème au niveau des tags nbt.

      1 réponse Dernière réponse Répondre Citer 0
      • bin4r1s
        bin4r1s dernière édition par 23 janv. 2015, 18:07

        Retourne false, mais j’ai trouvé d’ou vient le bug :
        Je voulais envoyer (packet) un tableau de byte, mais je ne trouvais pas (sur internet) comment récupérer alors j’ai tenté des choses hasardeuses :

        @Override
            public void fromBytes(ByteBuf buf) 
            {
                mana = buf.readShort();
                playerMaxMana = buf.readShort();
                buf.readBytes(levels); // ICI
            }

        Donc si quelqu’un sait comment faire…

        Mes mods:

        • New Ores
        • More Dragons
        1 réponse Dernière réponse Répondre Citer 0
        • robin4002
          robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par 23 janv. 2015, 19:50

          Pour envoyer un tableau il faut passer par des boucles for.
          Dans un premier temps tu envoie la taille du tableau :

          buf.writeInt(tonTableau.length);
          

          puis tu écris toutes les valeurs :

          for(int i = 0; i > tonTableau.length;i++)
          {
                buf.writeByte(tonTableau*);
          }

          Et pour le lire de l’autre côté tu l’initialises et tu fais une boucle for en fonction de sa taille :

          int size = buf.readInt();
          tonTableau = new Byte;
          for(int i = 0; i > size;i++)
          {
                tonTableau* = buf.readByte();
          }
          1 réponse Dernière réponse Répondre Citer 0
          • RedRelay
            RedRelay Moddeurs confirmés dernière édition par 23 janv. 2015, 23:24

            Pourquoi ne pas passer par un NBTTagList ?
            Si c’est un tableau d’entier, il y a aussi une méthode pour écrire directement un tableau d’entier.

            –------------------------------------------------------------------------------------
            Si tu trouves mon intervention pertinente, n'hésite pas a m…

            1 réponse Dernière réponse Répondre Citer 0
            • bin4r1s
              bin4r1s dernière édition par 24 janv. 2015, 09:25

              Merci maintenant ça marche, mais ça fait laguer mon ordi O_O et en plus, à chaque fois que j’utilise mon item, la console me sort :

              
              [10:26:01] [Client thread/ERROR] [FML]: Detected ongoing potential memory leak. 100 packets have leaked. Top offenders
              
              [10:26:01] [Client thread/ERROR] [FML]: dragons:CHANNEL_1 : 100
              [10:26:05] [Client thread/ERROR] [FML]: Detected ongoing potential memory leak. 200 packets have leaked. Top offenders
              [10:26:05] [Client thread/ERROR] [FML]: dragons:CHANNEL_1 : 200
              [10:26:08] [Client thread/ERROR] [FML]: Detected ongoing potential memory leak. 300 packets have leaked. Top offenders
              [10:26:08] [Client thread/ERROR] [FML]: dragons:CHANNEL_1 : 300
              [10:26:11] [Client thread/ERROR] [FML]: Detected ongoing potential memory leak. 400 packets have leaked. Top offenders
              [10:26:11] [Client thread/ERROR] [FML]: dragons:CHANNEL_1 : 400
              [10:26:13] [Client thread/ERROR] [FML]: Detected ongoing potential memory leak. 500 packets have leaked. Top offenders
              [10:26:13] [Client thread/ERROR] [FML]: dragons:CHANNEL_1 : 500
              [10:26:16] [Client thread/ERROR] [FML]: Detected ongoing potential memory leak. 600 packets have leaked. Top offenders
              [10:26:16] [Client thread/ERROR] [FML]: dragons:CHANNEL_1 : 600
              
              

              Mes mods:

              • New Ores
              • More Dragons
              1 réponse Dernière réponse Répondre Citer 0
              • robin4002
                robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par 24 janv. 2015, 17:33

                Oula, envoie tout ton code, visiblement tu as des paquets qui se perdent.

                1 réponse Dernière réponse Répondre Citer 0
                • bin4r1s
                  bin4r1s dernière édition par 24 janv. 2015, 20:01

                  PlayerData.java (le code intéressant) :

                  public final void sync() 
                  {
                      PacketData$01 packet = new PacketData$01(this.mana, this.playerMaxMana, this.spell_levels, this.mana_regen_ticks);
                     Dragons.network.sendToServer(packet);
                      if (!player.worldObj.isRemote) 
                      {
                          EntityPlayerMP player1 = (EntityPlayerMP) player;
                          Dragons.network.sendTo(packet, player1);
                      }
                  }

                  PacketData$01.java :

                  package fr.MrBlockTNT.Dragons.network;
                  import fr.MrBlockTNT.Dragons.event.PlayerData;
                  import io.netty.buffer.ByteBuf;
                  import net.minecraft.client.Minecraft;
                  import net.minecraft.client.network.NetHandlerPlayClient;
                  import net.minecraft.entity.player.EntityPlayer;
                  import net.minecraft.network.NetHandlerPlayServer;
                  import cpw.mods.fml.common.network.simpleimpl.IMessage;
                  import cpw.mods.fml.common.network.simpleimpl.IMessageHandler;
                  import cpw.mods.fml.common.network.simpleimpl.MessageContext;
                  import cpw.mods.fml.relauncher.Side;
                  import cpw.mods.fml.relauncher.SideOnly;
                  public class PacketData$01 implements IMessage
                  {
                  private short mana, playerMaxMana;
                  private int regen_ticks;
                  private byte[] levels;
                      public PacketData$01() { }
                      public PacketData$01(short mana, short playerMaxMana, byte[] levels, int r_ticks) 
                      {
                          this.mana = mana;
                          this.playerMaxMana = playerMaxMana;
                          this.levels = levels;
                          this.regen_ticks = r_ticks;
                      }
                      @Override
                      public void fromBytes(ByteBuf buf) 
                      {
                          mana = buf.readShort();
                          playerMaxMana = buf.readShort();
                          byte size = buf.readByte();
                          levels = new byte;
                          for(int i = 0; i < size; i++)
                          levels* = buf.readByte();
                          regen_ticks = buf.readInt();
                      }
                      @Override
                      public void toBytes(ByteBuf buf) 
                      {
                      buf.writeShort(mana);
                      buf.writeShort(playerMaxMana);
                      buf.writeByte(levels.length);
                      for(int i = 0; i < levels.length; i++)
                      buf.writeByte(levels*);
                      buf.writeInt(regen_ticks);
                      }
                      public static class Handler implements IMessageHandler <packetdata$01, imessage="">{
                          @Override
                          public IMessage onMessage(PacketData$01 message, MessageContext ctx) 
                          {
                          if(ctx.netHandler instanceof NetHandlerPlayServer)
                          {
                          PlayerData dat = PlayerData.get(getClientPlayer());
                          dat.update(message.mana, message.playerMaxMana, message.levels, message.regen_ticks);
                          }
                          else if(ctx.netHandler instanceof NetHandlerPlayClient)
                          {
                          PlayerData dat = PlayerData.get(getClientPlayer());
                          dat.update(message.mana, message.playerMaxMana, message.levels, message.regen_ticks);
                          }
                              return null;
                          }
                          @SideOnly(Side.CLIENT)
                          public EntityPlayer getClientPlayer()
                          {
                          return Minecraft.getMinecraft().thePlayer;
                          }
                      }
                  }
                  ```</packetdata$01,>

                  Mes mods:

                  • New Ores
                  • More Dragons
                  1 réponse Dernière réponse Répondre Citer 0
                  • robin4002
                    robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par 24 janv. 2015, 22:24

                    if(ctx.netHandler instanceof NetHandlerPlayServer)
                    {
                    PlayerData dat = PlayerData.get(getClientPlayer());

                    ??!!??

                    Et autre problème, le nom de la classe. Mettre un $ dans le nom est une très mauvaise idée.

                    1 réponse Dernière réponse Répondre Citer 0
                    • bin4r1s
                      bin4r1s dernière édition par 25 janv. 2015, 09:30

                      En fait, je ne voyais pas trop comment récupérer le joueur pour le côté serveur 😞 mais je viens de me rendre compte que c’est complètement c** stupide puisque le serveur ne pourra pas le récupérer (SideOnly). Une idée ? (J’avais aussi pensé à envoyer l’entity player mais il semblerait que je ne puisse pas (et puis ça serai trop lourd…)).

                      Sinon pour le nom je voulais un séparateur entre le nom du packet et son index x)

                      Mes mods:

                      • New Ores
                      • More Dragons
                      1 réponse Dernière réponse Répondre Citer 0
                      • robin4002
                        robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par 25 janv. 2015, 11:33

                        PlayerData dat = PlayerData.get(((NetHandlerPlayServer)netHandler).playerEntity);

                        Le $ est utilisé pour les noms des classes lorsque tu utilise des sous classe.
                        Par exemple si tu fais :

                        public class BlaBla
                        {
                             public static class AutreClasse
                             {
                             }
                        }

                        Lors de la compilation ça va créer deux fichiers .class :
                        BlaBla.class
                        BlaBla$AutreClasse.class

                        Donc c’est très déconseillé de mettre des $ dans le nom de la classe, ça risque de créer des problèmes avec ça.

                        1 réponse Dernière réponse Répondre Citer 0
                        • bin4r1s
                          bin4r1s dernière édition par 25 janv. 2015, 12:58

                          Ah d’accord, merci 🙂 je vais changer ça.

                          EDIT :
                          Ah ben en fait je perds toujours des packets 😞 . Nouveau code :

                          @Override
                          public IMessage onMessage(PacketData_01 message, MessageContext ctx) 
                          {
                                   if(ctx.netHandler instanceof NetHandlerPlayServer)
                                  {
                                           PlayerData dat = PlayerData.get(((NetHandlerPlayServer)ctx.netHandler).playerEntity);
                                           dat.update(message.mana, message.playerMaxMana, message.levels, message.regen_ticks);
                                  }
                                  else if(ctx.netHandler instanceof NetHandlerPlayClient)
                                  {
                                           PlayerData dat = PlayerData.get(getClientPlayer());
                                           dat.update(message.mana, message.playerMaxMana, message.levels, message.regen_ticks);
                                  }
                                  return null;
                          }

                          Mes mods:

                          • New Ores
                          • More Dragons
                          1 réponse Dernière réponse Répondre Citer 0
                          • bin4r1s
                            bin4r1s dernière édition par 26 janv. 2015, 17:46

                            Up, help svp  😞

                            Mes mods:

                            • New Ores
                            • More Dragons
                            1 réponse Dernière réponse Répondre Citer 0
                            • robin4002
                              robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par 26 janv. 2015, 18:33

                              Ta fonction dat.update fait quoi ?

                              1 réponse Dernière réponse Répondre Citer 0
                              • bin4r1s
                                bin4r1s dernière édition par 26 janv. 2015, 18:51

                                Elle met juste à jour les propriétés du joueur.

                                Mes mods:

                                • New Ores
                                • More Dragons
                                1 réponse Dernière réponse Répondre Citer 0
                                • robin4002
                                  robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par 26 janv. 2015, 18:58

                                  Un copier/coller de la fonction aurait été utile. Car je suspecte que tu renvoie un paquet à chaque fois, enfin je ne vois pas d’autres explications.

                                  1 réponse Dernière réponse Répondre Citer 0
                                  • bin4r1s
                                    bin4r1s dernière édition par 26 janv. 2015, 19:04

                                    public void update(short mana, short playerMaxMana, byte[] levels, int regen)
                                    {
                                           this.mana = mana;
                                           this.playerMaxMana = playerMaxMana;
                                           this.spell_levels = levels;
                                           this.mana_regen_ticks = regen;
                                    }

                                    En effet ta théorie sur le fait que je renvoie le packet à chaque fois n’est pas impossible. Je check ça.

                                    EDIT : Rien trouvé 😞 (Enfin intelligible pour moi)

                                    Code (peut-être auras-tu plus de chance 🙂 ) :
                                    PlayerData.java
                                    PacketData_01.java
                                    CommonProxy.java

                                    Il y a quelques erreurs dans un constructeur et la méthode update notamment car je suis en train de mettre en place quelque chose.

                                    Mes mods:

                                    • New Ores
                                    • More Dragons
                                    1 réponse Dernière réponse Répondre Citer 0
                                    • bin4r1s
                                      bin4r1s dernière édition par 28 janv. 2015, 11:05

                                      Up 😢

                                      Mes mods:

                                      • New Ores
                                      • More Dragons
                                      1 réponse Dernière réponse Répondre Citer 0
                                      • robin4002
                                        robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par 28 janv. 2015, 17:16

                                        Je ne vois pas d’erreur non plus 😕
                                        Sinon envoie un zip de ton dossier src, je vais faire des tests en local.

                                        1 réponse Dernière réponse Répondre Citer 0
                                        • bin4r1s
                                          bin4r1s dernière édition par 31 janv. 2015, 08:58

                                          Regarde tes MPs

                                          Mes mods:

                                          • New Ores
                                          • More Dragons
                                          1 réponse Dernière réponse Répondre Citer 0
                                          • 1
                                          • 2
                                          • 3
                                          • 4
                                          • 5
                                          • 6
                                          • 7
                                          • 4 / 7
                                          72 sur 127
                                          • Premier message
                                            72/127
                                            Dernier message
                                          Design by Woryk
                                          Contact / Mentions Légales

                                          MINECRAFT FORGE FRANCE © 2018

                                          Powered by NodeBB