MFF

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

    Extended Entity Properties

    Planifier Épinglé Verrouillé Déplacé Les entités
    1.7.2
    127 Messages 21 Publieurs 39.8k Vues 5 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.
    • mindany2M Hors-ligne
      mindany2
      dernière édition par

      Avant d’utiliser cette méthode pour l’enregistrement des données ça marchait 😛
      Donc effectivement ça ne marche pas, il y a bien false lors du double jump

      Jump : FALSE
      Jump Prop : false
      Jump : TRUE
      Jump Prop : false

      PS. I know 😛

      ^^

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

        donc apparemment tu aurais un problème avec le :

        prop.setDoubleJump(true);
        

        Tu peux me donner la méthode de “setDoubleJump” dans “ExtendedEntityPropFr.java”

        Et juste pour information personnel, tu as placé ou la méthode “onPlayerTick”

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

          Tiens

          public void setDoubleJump(boolean newDoubleJump) {
          this.DoubleJump = newDoubleJump;
          this.sync();
          }
          

          Dans une classe que j’ai enregistrer avec

          FMLCommonHandler.instance().bus().register(new PlayerTracker());
          MinecraftForge.EVENT_BUS.register(new PlayerTracker());
          
          ``` dans ma classe principale
          
          PS.Je sais que j'ai un problème avec mon set ou ma synchro sinon je serais pas là :p
          PS2.Je t'ai déjà donné la classe entière (donc avec le set) dans mes anciens message :D

          ^^

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

            cela ma l’air correct et ta méthode “sync”, peut tu l’a donner ?

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

              @‘mindany2’:

              
              public class ExtendedEntityPropFr implements IExtendedEntityProperties {
              
              public final static String EXT_PROP_NAME = "ExtPropFr";
              
              private final EntityPlayer player;
              
              public boolean DoubleJump;
              
              public ExtendedEntityPropFr(EntityPlayer player) {
              this.player = player;
              this.DoubleJump = false;
              
              }
              
              @Override
              public void saveNBTData(NBTTagCompound compound) {
              
              NBTTagCompound properties = new NBTTagCompound();
              
              properties.setBoolean("DoubleJump", this.DoubleJump);
              
              compound.setTag(EXT_PROP_NAME, properties);
              
              }
              
              @Override
              public void loadNBTData(NBTTagCompound compound) {
              NBTTagCompound properties = (NBTTagCompound) compound.getTag(EXT_PROP_NAME);
              this.DoubleJump = properties.getBoolean("DoubleJump");
              
              }
              
              @Override
              public void init(Entity entity, World world) {
              // TODO Auto-generated method stub
              
              }
              
              public static final void register(EntityPlayer player) {
              player.registerExtendedProperties(ExtendedEntityPropFr.EXT_PROP_NAME,
              new ExtendedEntityPropFr(player));
              }
              
              public static final ExtendedEntityPropFr get(EntityPlayer player) {
              return (ExtendedEntityPropFr) player.getExtendedProperties(EXT_PROP_NAME);
              }
              
              public final void sync() {
              PacketFr packetFr = new PacketFr(this.DoubleJump);
              Fr_mod.rcModPacketHandler.sendToServer(packetFr);
              
              if (!player.worldObj.isRemote) {
              EntityPlayerMP player1 = (EntityPlayerMP) player;
              //Ici, même chose que précédemment, sauf que le packet est envoyé au player.
              Fr_mod.rcModPacketHandler.sendTo(packetFr, player1);
              
              }
              }
              private static String getSaveKey(EntityPlayer player) {
              return player.getDisplayName() + ":" + EXT_PROP_NAME;
              }
              
              public static void saveProxyData(EntityPlayer player) {
              ExtendedEntityPropFr playerData = ExtendedEntityPropFr.get(player);
              NBTTagCompound savedData = new NBTTagCompound();
              
              playerData.saveNBTData(savedData);
              CommonProxy.storeEntityData(getSaveKey(player), savedData);
              }
              
              public static void loadProxyData(EntityPlayer player) {
              ExtendedEntityPropFr playerData = ExtendedEntityPropFr .get(player);
              NBTTagCompound savedData = CommonProxy.getEntityData(getSaveKey(player));
              
              if (savedData != null) {
              playerData.loadNBTData(savedData);
              }
              playerData.sync();
              }
              
              public boolean getDoubleJump() {
              return this.DoubleJump;
              }
              
              public void setDoubleJump(boolean newDoubleJump) {
              this.DoubleJump = newDoubleJump;
              this.sync();
              }
              
              }
              
              

              Voigna ^^

              ^^

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

                Je ne vois rien d’étrange tout a l’air correct dans le codage.

                Après je pense qu’il faut attendre des codeurs un peu plus expérimenter dans le codage minecraft, car moi actuellement je suis bloquer dans le “onPlayerTick” il veut pas me le prendre en compte …

                donc je n’en suis pas a ton niveau ou tu cherche à enregistrer les valeurs mais ton problème viens d’ici, je pense au sync() principalement, du au test que l’on a fait avec les string out mais c’est peut être pas ta faute c’est peut être un problème dans le tuto.

                Je n’est jamais utiliser cette méthode encore… je découvre 😛

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

                  Ok j’attendrais que quelqu’un d’autre passe 😛
                  Niveau onPlayerTick t’a bien mis
                  " @SideOnly(Side.CLIENT)
                  @SubscribeEvent"

                  ^^

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

                    ouep je suis en train de crée une réponse sur mon poste et je te donne le lien sa sera mieux pour éviter de mélanger les problèmes 😉


                    Voilà si tu veux jeter un œil au codage où tenter de comprendre mon problème je te donne “le lien” ou j’ai poster mon problème 🙂

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

                      Bonjour, j’ai suivi le tutoriel a la lettre, et pourtant j’ai une erreur dans la classe du common proxy

                      
                      public class CommonProxy
                      {
                      
                      private static final Map <string, nbttagcompound="">extendedEntityData = new HashMap<string, nbttagcompound="">();
                      
                      public void registerRender ()
                      {
                      
                      System.out.println("Méthode du serveur");
                      
                      }
                      
                      public static void storeEntityData(String saveKey, NBTTagCompound savedData) {
                      
                      extendedEntityData.put(name, compound);
                      }
                      
                      public static NBTTagCompound getEntityData(String saveKey) {
                      return extendedEntityData.remove(name);
                      }
                      
                      }
                      
                      

                      Chez moi j’ai une erreur sur “name” et “compound”. Si je les déclare dans la classe du CommonProxy, le jeu plante quand je fais clic droit avec l’item.
                      Quelqu’un aurait-il une idée ?</string,></string,>

                      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

                        public static void storeEntityData(String name, NBTTagCompound compound)
                        {
                        extendedEntityData.put(name, compound);
                        }
                        
                        1 réponse Dernière réponse Répondre Citer 0
                        • D Hors-ligne
                          Dezta
                          dernière édition par

                          Merci beaucoup ! C’était surement une erreur de recopiage (je retape tout a la main pour mémorisé 🙂 ).
                          Mais même si j’arrive maintenant a compilé, j’ai un autre crash, lorsque je fait le clic droit avec l’item pour testé.
                          Voici les logs,mais je ne sais pas quel partie du code il faudrait que je poste.
                          A priori, ça va vient plutôt de l’item ou de l’extented entity ?

                          net.minecraft.util.ReportedException: Ticking memory connection
                          at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:198) ~[NetworkSystem.class:?]
                          at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:720) ~[MinecraftServer.class:?]
                          at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:608) ~[MinecraftServer.class:?]
                          at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118) ~[IntegratedServer.class:?]
                          at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:482) [MinecraftServer.class:?]
                          at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:746) [MinecraftServer$2.class:?]
                          Caused by: java.lang.NullPointerException
                          at com.minefus.principal.ItemExtentedEntity.onItemRightClick(ItemExtentedEntity.java:25) ~[ItemExtentedEntity.class:?]
                          at net.minecraft.item.ItemStack.useItemRightClick(ItemStack.java:165) ~[ItemStack.class:?]
                          at net.minecraft.server.management.ItemInWorldManager.tryUseItem(ItemInWorldManager.java:341) ~[ItemInWorldManager.class:?]
                          at net.minecraft.network.NetHandlerPlayServer.processPlayerBlockPlacement(NetHandlerPlayServer.java:572) ~[NetHandlerPlayServer.class:?]
                          at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:74) ~[C08PacketPlayerBlockPlacement.class:?]
                          at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:122) ~[C08PacketPlayerBlockPlacement.class:?]
                          at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:232) ~[NetworkManager.class:?]
                          at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182) ~[NetworkSystem.class:?]
                          … 5 more
                          [16:19:29] [Server thread/ERROR]: This crash report has been saved to: D:\Minefus Projet\MCP 1.7.2\eclipse.\crash-reports\crash-2014-07-10_16.19.29-server.txt
                          [16:19:29] [Server thread/INFO]: Stopping server
                          [16:19:29] [Server thread/INFO]: Saving players
                          [16:19:29] [Server thread/INFO]: Saving worlds
                          [16:19:29] [Server thread/INFO]: Saving chunks for level ‘New World’/Overworld
                          –-- Minecraft Crash Report ----
                          // My bad.

                          Time: 10/07/14 16:19
                          Description: Ticking memory connection

                          java.lang.NullPointerException: Ticking memory connection
                          at com.minefus.principal.ItemExtentedEntity.onItemRightClick(ItemExtentedEntity.java:25)
                          at net.minecraft.item.ItemStack.useItemRightClick(ItemStack.java:165)
                          at net.minecraft.server.management.ItemInWorldManager.tryUseItem(ItemInWorldManager.java:341)
                          at net.minecraft.network.NetHandlerPlayServer.processPlayerBlockPlacement(NetHandlerPlayServer.java:572)
                          at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:74)
                          at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:122)
                          at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:232)
                          at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182)
                          at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:720)
                          at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:608)
                          at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118)
                          at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:482)
                          at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:746)

                          A detailed walkthrough of the error, its code path and all known details is as follows:

                          – Head –
                          Stacktrace:
                          at com.minefus.principal.ItemExtentedEntity.onItemRightClick(ItemExtentedEntity.java:25)
                          at net.minecraft.item.ItemStack.useItemRightClick(ItemStack.java:165)
                          at net.minecraft.server.management.ItemInWorldManager.tryUseItem(ItemInWorldManager.java:341)
                          at net.minecraft.network.NetHandlerPlayServer.processPlayerBlockPlacement(NetHandlerPlayServer.java:572)
                          at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:74)
                          at net.minecraft.network.play.client.C08PacketPlayerBlockPlacement.processPacket(C08PacketPlayerBlockPlacement.java:122)
                          at net.minecraft.network.NetworkManager.processReceivedPackets(NetworkManager.java:232)

                          – Ticking connection –
                          Details:
                          Connection: net.minecraft.network.NetworkManager@2b4beaa5
                          Stacktrace:
                          at net.minecraft.network.NetworkSystem.networkTick(NetworkSystem.java:182)
                          at net.minecraft.server.MinecraftServer.updateTimeLightAndEntities(MinecraftServer.java:720)
                          at net.minecraft.server.MinecraftServer.tick(MinecraftServer.java:608)
                          at net.minecraft.server.integrated.IntegratedServer.tick(IntegratedServer.java:118)
                          at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:482)
                          at net.minecraft.server.MinecraftServer$2.run(MinecraftServer.java:746)

                          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

                            at com.minefus.principal.ItemExtentedEntity.onItemRightClick(ItemExtentedEntity.jav?a:25)
                            Ligne 25 de ton item ? (+ toutes la classes).

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

                              Voici les 3 classes en rapport avec l’item (l’extented entity, l’item et les paquets)
                              Merci de m’accorder du temps !

                              package com.minefus.principal;
                              import net.minecraft.creativetab.CreativeTabs;
                              import net.minecraft.entity.player.EntityPlayer;
                              import net.minecraft.item.Item;
                              import net.minecraft.item.ItemStack;
                              import net.minecraft.world.World;
                              
                              public class ItemExtentedEntity extends Item
                              {
                              
                              public ItemExtentedEntity()
                              {
                              this.setCreativeTab(CreativeTabs.tabTools);
                              }
                              @Override
                              public ItemStack onItemRightClick(ItemStack itemstack, World world,
                              EntityPlayer player)
                              {
                              if (!world.isRemote)
                              {
                              
                              PlayerExtendedEntity props = PlayerExtendedEntity.get(player);
                              
                              if (props.att(6))
                              {
                              System.out
                              .println("Squalala, nous sommes partis!");
                              }
                              else
                              {
                              System.out
                              .println("Pas d'argent ! Je suis triste !");
                              }
                              }
                              return itemstack;
                              }
                              
                              }
                              
                              package com.minefus.principal;
                              import com.minefus.commonproxy.CommonProxy;
                              
                              import net.minecraft.entity.Entity;
                              import net.minecraft.entity.player.EntityPlayer;
                              import net.minecraft.entity.player.EntityPlayerMP;
                              import net.minecraft.nbt.NBTTagCompound;
                              import net.minecraft.network.Packet;
                              import net.minecraft.world.World;
                              import net.minecraftforge.common.IExtendedEntityProperties;
                              
                              public class PlayerExtendedEntity implements IExtendedEntityProperties
                              
                              {
                              
                              public final static String EXT_PROP_NAME = "ExtendedPlayer" ;
                              
                              private final EntityPlayer player;
                              
                              public long experience ;
                              public short classe ;
                              public short pointsort ;
                              public short pointniveau ;
                              public short niveau;
                              
                              public PlayerExtendedEntity (EntityPlayer player)
                              
                              {
                              this.player = player;
                              
                              this.experience = 0 ;
                              this.classe = 10 ;
                              this.pointsort = 0 ;
                              this.pointniveau = 0 ;
                              this.niveau = 1 ;
                              }
                              
                              public static final void register(EntityPlayer player)
                              { player.registerExtendedProperties(PlayerExtendedEntity.EXT_PROP_NAME, new PlayerExtendedEntity(player)); }
                              
                              public static final PlayerExtendedEntity get (EntityPlayer player)
                              { return (PlayerExtendedEntity) player.getExtendedProperties(EXT_PROP_NAME);}
                              
                              public final void sync()
                              
                              {
                              PaquetPlayer paquetPlayer = new PaquetPlayer ( this.experience,this.classe,this.pointsort,this.pointniveau,this.niveau );
                              
                              if (!player.worldObj.isRemote) {
                              EntityPlayerMP player1 = (EntityPlayerMP) player;
                              }
                              
                              }
                              
                              private static String getSaveKey(EntityPlayer player)
                              {
                              return player.getDisplayName() + ":" + EXT_PROP_NAME;
                              }
                              
                              @Override
                              public void saveNBTData(NBTTagCompound compound)
                              {
                              NBTTagCompound properties = new NBTTagCompound();
                              properties.setLong("Experience",this.experience) ;
                              properties.setShort("Classe",this.classe) ;
                              properties.setShort("PointSort",this.pointsort) ;
                              properties.setShort("PointNiveau",this.pointniveau) ;
                              properties.setShort("Niveau",this.niveau) ;
                              }
                              
                              @Override
                              public void loadNBTData(NBTTagCompound compound)
                              {
                              NBTTagCompound properties = (NBTTagCompound) compound .getTag(EXT_PROP_NAME);
                              this.experience = properties.getLong("Experience") ;
                              this.classe = properties.getShort("Classe") ;
                              this.pointsort = properties.getShort("PointSort") ;
                              this.pointniveau = properties.getShort("PointNiveau") ;
                              this.niveau = properties.getShort("Niveau") ;
                              }
                              
                              public static void saveProxyData(EntityPlayer player)
                              
                              {
                              PlayerExtendedEntity playerData = PlayerExtendedEntity.get(player);
                              NBTTagCompound savedData = new NBTTagCompound();
                              
                              playerData.saveNBTData(savedData);
                              CommonProxy.storeEntityData(getSaveKey(player), savedData);
                              }
                              
                              public static void loadProxyData(EntityPlayer player)
                              {
                              PlayerExtendedEntity playerData = PlayerExtendedEntity.get(player);
                              NBTTagCompound savedData = CommonProxy
                              .getEntityData(getSaveKey(player));
                              
                              if (savedData != null)
                              {
                              playerData.loadNBTData(savedData);
                              }
                              playerData.sync();
                              }
                              
                              @Override
                              public void init(Entity entity, World world)
                              
                              {
                              // TODO Auto-generated method stub
                              
                              }
                              
                              public boolean att( long amount) {
                              
                              boolean sufficient = amount <= this.classe;
                              
                              if (sufficient)
                              
                              {
                              this.classe-= amount;
                              this.sync();
                              }
                              else
                              {
                              return false;
                              }
                              
                              return sufficient;
                              
                              }
                              
                              }
                              
                              
                              
                              package com.minefus.principal;
                              import io.netty.channel.ChannelHandlerContext;
                              
                              import java.io.IOException;
                              
                              import net.minecraft.entity.player.EntityPlayer;
                              import net.minecraft.network.PacketBuffer;
                              import fr.minecraftforgefrance.ffmtlibs.network.AbstractPacket;
                              
                              public class PaquetPlayer extends AbstractPacket {
                              
                              private short classe, pointsort, pointniveau, niveau ;
                              private long experience ;
                              
                              public PaquetPlayer ()
                              
                              {}
                              
                              public PaquetPlayer(long experience ,short classe ,short pointsort ,short pointniveau,short niveau)
                              
                              {
                              this.experience = experience ;
                              this.classe = classe ;
                              this.pointsort = pointsort ;
                              this.pointniveau = pointniveau ;
                              this.niveau = niveau ;
                              }
                              @Override
                              public void encodeInto(ChannelHandlerContext ctx, PacketBuffer buffer)
                              throws IOException
                              {
                              buffer.writeLong(experience);
                              buffer.writeShort(classe);
                              buffer.writeShort(pointsort);
                              buffer.writeShort(pointniveau);
                              buffer.writeShort(niveau);
                              
                              }
                              
                              @Override
                              public void decodeInto(ChannelHandlerContext ctx, PacketBuffer buffer)
                              throws IOException
                              {
                              
                              this.experience = buffer.readLong();
                              this.classe= buffer.readShort();
                              this.pointsort = buffer.readShort();
                              this.pointniveau = buffer.readShort();
                              this.niveau = buffer.readShort();
                              
                              }
                              
                              @Override
                              public void handleClientSide(EntityPlayer player) {
                              
                              PlayerExtendedEntity props = PlayerExtendedEntity
                              .get(player);
                              
                              props.experience = this.experience;
                              props.classe = this.classe;
                              props.pointsort = this.pointsort;
                              props.pointniveau = this.pointniveau;
                              props.niveau = this.niveau;
                              }
                              
                              @Override
                              public void handleServerSide(EntityPlayer player) {
                              
                              PlayerExtendedEntity props = PlayerExtendedEntity
                              .get(player);
                              
                              props.experience = this.experience;
                              props.classe = this.classe;
                              props.pointsort = this.pointsort;
                              props.pointniveau = this.pointniveau;
                              props.niveau = this.niveau;
                              
                              }
                              
                              }
                              
                              
                              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

                                props semble être null, tu n’as pas enregistrés ton custom entity properties ou les event qui le fond.

                                1 réponse Dernière réponse Répondre Citer 1
                                • D Hors-ligne
                                  Dezta
                                  dernière édition par

                                  A oui, enfaite j’avais oublier de créer la classe EventHanddler… ^^ Forcement ça marche un peu moins bien sans.

                                  Par contre, j’ai exactement les même erreurs dans les logs, même ligne, même classe, donc je pence que ça doit venir de autre part. Vu que j’ai fait quelques corrections de méthodes qui mettaient des erreurs partout a cause de la classe Event qui manquait et que j’ai ajouté une jauge de mana, je te repost tousa :

                                  Donc l’Extented Enity Properties :

                                  
                                  package com.minefus.principal;
                                  import com.minefus.commonproxy.CommonProxy;
                                  
                                  import net.minecraft.entity.Entity;
                                  import net.minecraft.entity.player.EntityPlayer;
                                  import net.minecraft.entity.player.EntityPlayerMP;
                                  import net.minecraft.nbt.NBTTagCompound;
                                  import net.minecraft.network.Packet;
                                  import net.minecraft.world.World;
                                  import net.minecraftforge.common.IExtendedEntityProperties;
                                  
                                  public class PlayerExtendedEntity implements IExtendedEntityProperties
                                  
                                  {
                                  
                                  public final static String EXT_PROP_NAME = "ExtendedPlayer" ;
                                  
                                  private final EntityPlayer player;
                                  
                                  public short manaMax ;
                                  public short mana ;
                                  public long experience ;
                                  public short classe ;
                                  public short pointsort ;
                                  public short pointniveau ;
                                  public short niveau;
                                  
                                  public PlayerExtendedEntity (EntityPlayer player)
                                  
                                  {
                                  this.player = player;
                                  this.mana = 12;
                                  this.manaMax = 12;
                                  this.experience = 0 ;
                                  this.classe = 0 ;
                                  this.pointsort = 0 ;
                                  this.pointniveau = 0 ;
                                  this.niveau = 1 ;
                                  }
                                  
                                  public static final void register(EntityPlayer player)
                                  { player.registerExtendedProperties(PlayerExtendedEntity.EXT_PROP_NAME, new PlayerExtendedEntity(player)); }
                                  
                                  public static final PlayerExtendedEntity get (EntityPlayer player)
                                  { return (PlayerExtendedEntity) player.getExtendedProperties(EXT_PROP_NAME);}
                                  
                                  public final void sync()
                                  
                                  {
                                  PaquetPlayer paquetPlayer = new PaquetPlayer (this.mana, this.manaMax, this.experience,this.classe,this.pointsort,this.pointniveau,this.niveau );
                                  
                                  if (!player.worldObj.isRemote) {
                                  EntityPlayerMP player1 = (EntityPlayerMP) player;
                                  }
                                  
                                  }
                                  
                                  private static String getSaveKey(EntityPlayer player)
                                  {
                                  return player.getDisplayName() + ":" + EXT_PROP_NAME;
                                  }
                                  
                                  @Override
                                  public void saveNBTData(NBTTagCompound compound)
                                  {
                                  NBTTagCompound properties = new NBTTagCompound();
                                  properties.setShort("Mana",this.mana) ;
                                  properties.setShort("ManaMax",this.manaMax) ;
                                  properties.setLong("Experience",this.experience) ;
                                  properties.setShort("Classe",this.classe) ;
                                  properties.setShort("PointSort",this.pointsort) ;
                                  properties.setShort("PointNiveau",this.pointniveau) ;
                                  properties.setShort("Niveau",this.niveau) ;
                                  }
                                  
                                  @Override
                                  public void loadNBTData(NBTTagCompound compound)
                                  {
                                  NBTTagCompound properties = (NBTTagCompound) compound .getTag(EXT_PROP_NAME);
                                  this.mana = properties.getShort("Mana") ;
                                  this.manaMax = properties.getShort("ManaMax") ;
                                  this.experience = properties.getLong("Experience") ;
                                  this.classe = properties.getShort("Classe") ;
                                  this.pointsort = properties.getShort("PointSort") ;
                                  this.pointniveau = properties.getShort("PointNiveau") ;
                                  this.niveau = properties.getShort("Niveau") ;
                                  }
                                  
                                  public static void saveProxyData(EntityPlayer player)
                                  
                                  {
                                  PlayerExtendedEntity playerData = PlayerExtendedEntity.get(player);
                                  NBTTagCompound savedData = new NBTTagCompound();
                                  
                                  playerData.saveNBTData(savedData);
                                  CommonProxy.storeEntityData(getSaveKey(player), savedData);
                                  }
                                  
                                  public static void loadProxyData(EntityPlayer player)
                                  {
                                  PlayerExtendedEntity playerData = PlayerExtendedEntity.get(player);
                                  NBTTagCompound savedData = CommonProxy
                                  .getEntityData(getSaveKey(player));
                                  
                                  if (savedData != null)
                                  {
                                  playerData.loadNBTData(savedData);
                                  }
                                  playerData.sync();
                                  }
                                  
                                  @Override
                                  public void init(Entity entity, World world)
                                  
                                  {
                                  // TODO Auto-generated method stub
                                  
                                  }
                                  
                                  public boolean att( long amount) {
                                  
                                  boolean sufficient = amount <= this.mana;
                                  
                                  if (sufficient)
                                  
                                  {
                                  this.mana -= amount;
                                  this.sync();
                                  }
                                  else
                                  {
                                  return false;
                                  }
                                  
                                  return sufficient;
                                  
                                  }
                                  
                                  }
                                  
                                  

                                  L’Item :

                                  package com.minefus.principal;
                                  import net.minecraft.creativetab.CreativeTabs;
                                  import net.minecraft.entity.player.EntityPlayer;
                                  import net.minecraft.item.Item;
                                  import net.minecraft.item.ItemStack;
                                  import net.minecraft.world.World;
                                  
                                  public class ItemExtentedEntity extends Item
                                  {
                                  
                                  public ItemExtentedEntity()
                                  {
                                  this.setCreativeTab(CreativeTabs.tabTools);
                                  }
                                  @Override
                                  public ItemStack onItemRightClick(ItemStack itemstack, World world,
                                  EntityPlayer player)
                                  {
                                  if (!world.isRemote)
                                  {
                                  
                                  PlayerExtendedEntity props = PlayerExtendedEntity.get(player);
                                  
                                  if (props.att(6))
                                  {
                                  System.out
                                  .println("Squalala, nous sommes partis!");
                                  }
                                  else
                                  {
                                  System.out
                                  .println("Pas d'argent ! Je suis triste !");
                                  }
                                  }
                                  return itemstack;
                                  }
                                  
                                  }
                                  

                                  Les Events pour l’entity:

                                  package com.minefus.principal;
                                  
                                  import com.minefus.commonproxy.CommonProxy;
                                  
                                  import net.minecraft.entity.player.EntityPlayer;
                                  import net.minecraft.nbt.NBTTagCompound;
                                  import net.minecraftforge.event.entity.EntityEvent.EntityConstructing;
                                  import net.minecraftforge.event.entity.EntityJoinWorldEvent;
                                  import net.minecraftforge.event.entity.living.LivingDeathEvent;
                                  import cpw.mods.fml.common.eventhandler.SubscribeEvent;
                                  
                                  public class EntityEventHandler
                                  {
                                  
                                  @SubscribeEvent
                                  public void onEntityConstructing(EntityConstructing event)
                                  {
                                  
                                  if (event.entity instanceof EntityPlayer && PlayerExtendedEntity.get((EntityPlayer) event.entity) == null)
                                  
                                  PlayerExtendedEntity.register((EntityPlayer) event.entity);
                                  System.out.println("une entité a rejoint le monde");
                                  }
                                  
                                  @SubscribeEvent
                                  public void onLivingDeathEvent(LivingDeathEvent event)
                                  {
                                  
                                  if (!event.entity.worldObj.isRemote && event.entity instanceof EntityPlayer)
                                  
                                  {
                                  NBTTagCompound playerData = new NBTTagCompound();
                                  ((PlayerExtendedEntity) (event.entity.getExtendedProperties(PlayerExtendedEntity.EXT_PROP_NAME))).saveNBTData(playerData);
                                  CommonProxy.storeEntityData(((EntityPlayer) event.entity).getDisplayName(), playerData);
                                  PlayerExtendedEntity.saveProxyData((EntityPlayer) event.entity);
                                  }
                                  
                                  else {}
                                  }
                                  
                                  @SubscribeEvent
                                  public void onEntityJoinWorld(EntityJoinWorldEvent event)
                                  {
                                  if (!event.entity.worldObj.isRemote && event.entity instanceof EntityPlayer)
                                  {
                                  NBTTagCompound playerData = CommonProxy.getEntityData(((EntityPlayer) event.entity).getDisplayName());
                                  
                                  if (playerData != null)
                                  {
                                  ((PlayerExtendedEntity) (event.entity.getExtendedProperties(PlayerExtendedEntity.EXT_PROP_NAME))).loadNBTData(playerData);
                                  }
                                  
                                  ((PlayerExtendedEntity) (event.entity.getExtendedProperties(PlayerExtendedEntity.EXT_PROP_NAME))).sync();
                                  }
                                  }
                                  
                                  }
                                  
                                  

                                  PaquetPlayer :

                                  package com.minefus.principal;
                                  import io.netty.channel.ChannelHandlerContext;
                                  
                                  import java.io.IOException;
                                  
                                  import net.minecraft.entity.player.EntityPlayer;
                                  import net.minecraft.network.PacketBuffer;
                                  import fr.minecraftforgefrance.ffmtlibs.network.AbstractPacket;
                                  
                                  public class PaquetPlayer extends AbstractPacket {
                                  
                                  private short mana, manaMax, classe, pointsort, pointniveau, niveau ;
                                  private long experience ;
                                  
                                  public PaquetPlayer ()
                                  
                                  {}
                                  
                                  public PaquetPlayer(short mana, short manaMax ,long experience ,short classe ,short pointsort ,short pointniveau,short niveau)
                                  
                                  {
                                  this.mana = mana;
                                  this.manaMax = manaMax;
                                  this.experience = experience ;
                                  this.classe = classe ;
                                  this.pointsort = pointsort ;
                                  this.pointniveau = pointniveau ;
                                  this.niveau = niveau ;
                                  }
                                  @Override
                                  public void encodeInto(ChannelHandlerContext ctx, PacketBuffer buffer)
                                  throws IOException
                                  {
                                  buffer.writeLong(experience);
                                  buffer.writeShort(mana);
                                  buffer.writeShort(manaMax);
                                  buffer.writeShort(classe);
                                  buffer.writeShort(pointsort);
                                  buffer.writeShort(pointniveau);
                                  buffer.writeShort(niveau);
                                  
                                  }
                                  
                                  @Override
                                  public void decodeInto(ChannelHandlerContext ctx, PacketBuffer buffer)
                                  throws IOException
                                  {
                                  
                                  this.mana = buffer.readShort();
                                  this.manaMax = buffer.readShort();
                                  this.experience = buffer.readLong();
                                  this.classe= buffer.readShort();
                                  this.pointsort = buffer.readShort();
                                  this.pointniveau = buffer.readShort();
                                  this.niveau = buffer.readShort();
                                  
                                  }
                                  
                                  @Override
                                  public void handleClientSide(EntityPlayer player) {
                                  
                                  PlayerExtendedEntity props = PlayerExtendedEntity
                                  .get(player);
                                  
                                  props.mana = this.mana;
                                  props.manaMax = this.manaMax;
                                  props.experience = this.experience;
                                  props.classe = this.classe;
                                  props.pointsort = this.pointsort;
                                  props.pointniveau = this.pointniveau;
                                  props.niveau = this.niveau;
                                  }
                                  
                                  @Override
                                  public void handleServerSide(EntityPlayer player) {
                                  
                                  PlayerExtendedEntity props = PlayerExtendedEntity
                                  .get(player);
                                  
                                  props.mana = this.mana;
                                  props.manaMax = this.manaMax;
                                  props.experience = this.experience;
                                  props.classe = this.classe;
                                  props.pointsort = this.pointsort;
                                  props.pointniveau = this.pointniveau;
                                  props.niveau = this.niveau;
                                  
                                  }
                                  
                                  }
                                  
                                  

                                  Au passage, comment tu fait pour savoir que props est nul ?

                                  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

                                    Car l’erreur est un NullPointerException, qu’il te donne la ligne et qu’il n’y a pas d’autre objet qui peut être null sur cette ligne.
                                    Tu as enregistrés la classe d’event avec MinecraftForge.EVENT_BUS.register(new EntityEventHandler()) dans ta classe principale ?

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

                                      Hallelujah ! Soit béni mon frère ! Ça marche !

                                      Je n’avais déclaré que l’une des 2 catégorie d’event forge, j’ai rajouté celle qui manquait:

                                      FMLCommonHandler.instance().bus().register(new EntityEventHandler());
                                      MinecraftForge.EVENT_BUS.register(new EntityEventHandler());
                                      

                                      Merci beaucoup !

                                      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

                                        FMLCommonHandler.instance().bus().register(new EntityEventHandler()); n’est pas nécessaire ici, c’est pour les event de fml, or tu n’as pas d’event fml dans la classe 😉

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

                                          A ok, j’avais inversé les 2, je ne savais pas lequel enlevé, voila c’est dit .

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

                                            Salut  🙂 ,
                                            J’ai toujours un problème avec les Extended Entity Properties, j’ai revu plusieurs fois mon code mais les packets n’ont pas l’air de se transmettre peut importe ce que je fais les données restent toujours à 0
                                            Si vous avez une petite idée ^^ :
                                            PacketSonic :

                                            ​public class PacketSonic
                                            extends FFMTPacket
                                            {
                                            
                                            public int Descendre;
                                            public boolean DoubleJump;
                                            public long Ring;
                                            
                                            public PacketSonic(){
                                            
                                            }
                                            
                                            public PacketSonic(int Descendre, boolean DoubleJump, long Ring){
                                            this.Descendre = Descendre;
                                            this.DoubleJump = DoubleJump;
                                            this.Ring = Ring;
                                            }
                                            
                                            @Override
                                            public void writeData(ByteBuf buffer) throws IOException {
                                            buffer.writeInt(Descendre);
                                            buffer.writeBoolean(DoubleJump);
                                            buffer.writeLong(Ring);
                                            
                                            }
                                            
                                            @Override
                                            public void readData(ByteBuf buffer) {
                                            this.Descendre = buffer.readInt();
                                            this.DoubleJump = buffer.readBoolean();
                                            this.Ring = buffer.readLong();
                                            
                                            }
                                            
                                            @Override
                                            public void handleClientSide(EntityPlayer player) {
                                            ExtendedEntityPropSonic props = ExtendedEntityPropSonic
                                            .get(player);
                                            props.Descendre = this.Descendre;
                                            props.DoubleJump = this.DoubleJump;
                                            props.Ring = this.Ring;
                                            }
                                            
                                            @Override
                                            public void handleServerSide(EntityPlayer player) {
                                            ExtendedEntityPropSonic props = ExtendedEntityPropSonic
                                            .get(player);
                                            props.Descendre = this.Descendre;
                                            props.DoubleJump = this.DoubleJump;
                                            props.Ring = this.Ring;
                                            }
                                            
                                            }
                                            

                                            ExtendedEntityPropSonic :

                                            ​ public final static String EXT_PROP_NAME = "ExtPropSonic";
                                            
                                            private final EntityPlayer player;
                                            
                                            public int Descendre;
                                            public boolean DoubleJump;
                                            public long Ring;
                                            
                                            public ExtendedEntityPropSonic(EntityPlayer player) {
                                            this.player = player;
                                            this.Descendre = 0;
                                            this.DoubleJump = false;
                                            this.Ring = 0;
                                            
                                            }
                                            
                                            @Override
                                            public void saveNBTData(NBTTagCompound compound) {
                                            
                                            NBTTagCompound properties = new NBTTagCompound();
                                            
                                            properties.setInteger("Descendre", this.Descendre);
                                            properties.setBoolean("DoubleJump", this.DoubleJump);
                                            properties.setLong("Ring", this.Ring);
                                            
                                            compound.setTag(EXT_PROP_NAME, properties);
                                            
                                            }
                                            
                                            @Override
                                            public void loadNBTData(NBTTagCompound compound) {
                                            NBTTagCompound properties = (NBTTagCompound) compound.getTag(EXT_PROP_NAME);
                                            this.Descendre = properties.getInteger("Descendre");
                                            this.DoubleJump = properties.getBoolean("DoubleJump");
                                            this.Ring = properties.getLong("Ring");
                                            
                                            }
                                            
                                            @Override
                                            public void init(Entity entity, World world) {
                                            // TODO Auto-generated method stub
                                            
                                            }
                                            
                                            public static final void register(EntityPlayer player) {
                                            player.registerExtendedProperties(ExtendedEntityPropSonic.EXT_PROP_NAME,
                                            new ExtendedEntityPropSonic(player));
                                            }
                                            
                                            public static final ExtendedEntityPropSonic get(EntityPlayer player) {
                                            return (ExtendedEntityPropSonic) player.getExtendedProperties(EXT_PROP_NAME);
                                            }
                                            
                                            public final void sync() {
                                            PacketSonic packetSonic = new PacketSonic(this.Descendre, this.DoubleJump, this.Ring);
                                            Sonic_mod.rcModPacketHandler.sendToServer(packetSonic);
                                            
                                            if (!player.worldObj.isRemote) {
                                            EntityPlayerMP player1 = (EntityPlayerMP) player;
                                            Sonic_mod.rcModPacketHandler.sendTo(packetSonic, player1);
                                            }
                                            }
                                            private static String getSaveKey(EntityPlayer player) {
                                            return player.getDisplayName() + ":" + EXT_PROP_NAME;
                                            }
                                            
                                            public static void saveProxyData(EntityPlayer player) {
                                            ExtendedEntityPropSonic playerData = ExtendedEntityPropSonic.get(player);
                                            NBTTagCompound savedData = new NBTTagCompound();
                                            
                                            playerData.saveNBTData(savedData);
                                            CommonProxy.storeEntityData(getSaveKey(player), savedData);
                                            }
                                            
                                            public static void loadProxyData(EntityPlayer player) {
                                            ExtendedEntityPropSonic playerData = ExtendedEntityPropSonic.get(player);
                                            NBTTagCompound savedData = CommonProxy.getEntityData(getSaveKey(player));
                                            
                                            if (savedData != null) {
                                            playerData.loadNBTData(savedData);
                                            }
                                            playerData.sync();
                                            }
                                            
                                            public long getRing() {
                                            return this.Ring;
                                            }
                                            
                                            public void setRing(long newRing) {
                                            this.Ring = newRing;
                                            this.sync();
                                            
                                            }
                                            
                                            public int getDescendre() {
                                            return this.Descendre;
                                            }
                                            
                                            public void setDescendre(int newDescendre) {
                                            this.Descendre = newDescendre;
                                            this.sync();
                                            }
                                            
                                            public boolean getDoubleJump() {
                                            return this.DoubleJump;
                                            }
                                            
                                            public void setDoubleJump(boolean newDoubleJump) {
                                            this.DoubleJump = newDoubleJump;
                                            this.sync();
                                            }
                                            

                                            Une partie de ma classe event :

                                            ​ /** Register data*/
                                            @SubscribeEvent
                                            public void onEntityConstructing(EntityConstructing event) {
                                            
                                            if (event.entity instanceof EntityPlayer
                                            && ExtendedEntityPropSonic.get((EntityPlayer) event.entity) == null)
                                            {
                                            ExtendedEntityPropSonic.register((EntityPlayer) event.entity);
                                            System.out.println("une entité a rejoint le monde");
                                            }
                                            }
                                            @SubscribeEvent
                                            public void onEntityJoinWorld(EntityJoinWorldEvent event) {
                                            if (!event.entity.worldObj.isRemote
                                            && event.entity instanceof EntityPlayer) {
                                            NBTTagCompound playerData = CommonProxy
                                            .getEntityData(((EntityPlayer) event.entity)
                                            .getDisplayName());
                                            if (playerData != null) {
                                            ((ExtendedEntityPropSonic) (event.entity
                                            .getExtendedProperties(ExtendedEntityPropSonic.EXT_PROP_NAME)))
                                            .loadNBTData(playerData);
                                            }
                                            
                                            ((ExtendedEntityPropSonic) (event.entity
                                            .getExtendedProperties(ExtendedEntityPropSonic.EXT_PROP_NAME)))
                                            .sync();
                                            }
                                            }
                                            }
                                            

                                            Je pense avoir tout mis
                                            Merci d’avance ^^’

                                            ^^

                                            1 réponse Dernière réponse Répondre Citer 0
                                            • 1
                                            • 2
                                            • 3
                                            • 4
                                            • 5
                                            • 6
                                            • 7
                                            • 2 / 7
                                            • Premier message
                                              Dernier message
                                            Design by Woryk
                                            ContactMentions Légales

                                            MINECRAFT FORGE FRANCE © 2024

                                            Powered by NodeBB