• 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.
  • BlackDrag00n
    BlackDrag00n dernière édition par 15 juin 2014, 12:37

    Je me permet d’ajouter une correction à faire :

    J’ai trouver, en faite il y a beaucoup d’erreur dans le tuto lié au type de variable de “Money” :
    @Gugu42:

    Maintenant, nous allons ajouter un identifiant à la propriété, ainsi que les variables qu’elle utilisera. Dans notre cas, le joueur cible, de l’argent, et une limite d’argent.

    public final static String EXT_PROP_NAME = "ExtPropTuto";
    private final EntityPlayer player;
    public long money;
    public long maxMoney;

    L’utilisation d’un long permet un stockage de grande taille pour votre argent. Si vous ne comptez pas atteindre plus de 2.147.483.647 d’argent, utilisez un int.

    Au début du tuto on nous demande de mettre un long si on veut pouvoir utiliser une grosse capacité de stockage de d’argent.

    Mais dans le reste du tuto on vois quasiment que le type “int” sur les variable de “Money” et “maxMoney”.

    Soit je modifie les type “int” en “long” mais un autre problème ce pose a ce niveau du tuto :

    @Override
    public void writeData(ByteBuf buffer) throws IOException
    {
    buffer.writeInt(maxSoif);
    buffer.writeInt(Soif);
    }

    Ici il faut remplacer par des type “Long” :

    @Override
    public void writeData(ByteBuf buffer) throws IOException
    {
    buffer.writeLong(maxSoif);
    buffer.writeLong(Soif);
    }

    Voilà je rajoute ceci en réponse au tuto pour penser à le modifier 😉

    1 réponse Dernière réponse Répondre Citer 0
    • BlackDrag00n
      BlackDrag00n dernière édition par 15 juin 2014, 19:12

      Je viens de voir qu’il n’y a pas que à ce niveau là qu’il y a des problèmes entres le type de variable “Int” et “Long”.

      Faites bien attention à tous le tuto, car toutes les variables sont déclarer en type “Int” alors que la déclaration des variables ont étés faites en “Long”

      1 réponse Dernière réponse Répondre Citer 0
      • Gugu
        Gugu dernière édition par 17 juin 2014, 09:33

        @‘BlackDrag00n’:

        Je viens de voir qu’il n’y a pas que à ce niveau là qu’il y a des problèmes entres le type de variable “Int” et “Long”.

        Faites bien attention à tous le tuto, car toutes les variables sont déclarer en type “Int” alors que la déclaration des variables ont étés faites en “Long”

        J’ai écrit 95% du tutoriel sur le forum directement, avec le code en mémoire, donc il se peut que j’ai fait des erreurs. Je corrige ça 😄

        "If you have a comprehensive explanation for everything then it decreases uncertainty and anxiety and reduces your cognitive load. And if you can use that simplifying algorithm to put yourself on the side of moral virtue then you’re constantly a good person with a minimum of effort."
        ― Jordan B. Peterson

        1 réponse Dernière réponse Répondre Citer 0
        • BlackDrag00n
          BlackDrag00n dernière édition par 17 juin 2014, 11:26

          @‘Gugu42’:

          @‘BlackDrag00n’:

          Je viens de voir qu’il n’y a pas que à ce niveau là qu’il y a des problèmes entres le type de variable “Int” et “Long”.

          Faites bien attention à tous le tuto, car toutes les variables sont déclarer en type “Int” alors que la déclaration des variables ont étés faites en “Long”

          J’ai écrit 95% du tutoriel sur le forum directement, avec le code en mémoire, donc il se peut que j’ai fait des erreurs. Je corrige ça 😄

          Pas de problème t’inquiète pas je ne t’engueulerai te “gronderai” pas (pourtant a la demande de robin4002) LoL

          Je sais a qu’elle point c’est pas évident de fournir des tutoriels 😉

          1 réponse Dernière réponse Répondre Citer 0
          • BlackDrag00n
            BlackDrag00n dernière édition par 20 juin 2014, 11:58

            Peux tu nous fournir ta classe “Fr_mod.java” ?

            1 réponse Dernière réponse Répondre Citer 0
            • BlackDrag00n
              BlackDrag00n dernière édition par 20 juin 2014, 12:06

              @‘mindany2’:

              Ok mais il y a rien de spécial concernant cette classe mise à part les deux lignes envoyés

              Pourtant dans ton erreur on vois :

              at lmac.sonic.Fr_mod.<clinit>(Fr_mod.java:51)
              

              Tu as mis quoi comme “modid” dans “@Mod” ?


              Tu as une erreur ici aussi :

              @Instance("Fr_mod ")
              

              Un espace en trop après “Fr_mod” 😉 sa serai plutôt :

              @Instance("Fr_mod")
              ```</clinit>
              1 réponse Dernière réponse Répondre Citer 0
              • robin4002
                robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par 20 juin 2014, 12:09

                Ton modid c’est bien Fr_mod ?
                Car si oui, ton instance est fausse, tu as un espace juste après.

                1 réponse Dernière réponse Répondre Citer 0
                • BlackDrag00n
                  BlackDrag00n dernière édition par 20 juin 2014, 12:09

                  oui c’est ce que je disais robin4002 😉

                  1 réponse Dernière réponse Répondre Citer 0
                  • BlackDrag00n
                    BlackDrag00n dernière édition par 20 juin 2014, 12:34

                    @‘BlackDrag00n’:

                    Tu as mis quoi comme “modid” dans “@Mod” ?

                    Peux tu répondre à la question stp ?

                    1 réponse Dernière réponse Répondre Citer 0
                    • BlackDrag00n
                      BlackDrag00n dernière édition par 20 juin 2014, 12:53

                      Je ne comprend pas tu dit qu’avec ceci du crash :

                      public static final FFMTPacketHandler rcModPacketHandler = new FFMTPacketHandler("fr.lmac.packet", "Fr_mod");
                      

                      Mais après tu dis que tu ne crash pas avec :

                      public static final FFMTPacketHandler rcModPacketHandler = new FFMTPacketHandler("fr.lmac.packet", "Fr_mod");
                      

                      Hors ces deux lignes sont identiques 😕

                      A mon avis ta voulu dire ceci :

                      public static final FFMTPacketHandler rcModPacketHandler = new FFMTPacketHandler("fr.lmac.packet", "Fr_mod", "Fr_mod");
                      

                      Mais cette dernière ligne te faire crash ou pas du coup ?

                      1 réponse Dernière réponse Répondre Citer 0
                      • BlackDrag00n
                        BlackDrag00n dernière édition par 20 juin 2014, 13:16

                        @‘robin4002’:

                        Il y a eu des changements récemment dans FFMT libs, j’ai refais le système de paquet car l’ancien provoquait des fuites de mémoire.
                        Tu peux regarder sur nanotech mod comment l’utiliser :
                        https://github.com/FFMT/nanotech_mod/blob/master/common/fr/mcnanotech/kevin_68/nanotechmod/main/core/NanotechMod.java#L61
                        https://github.com/FFMT/nanotech_mod/tree/master/common/fr/mcnanotech/kevin_68/nanotechmod/main/network/packet

                        Voici ce que robin ma répondu sur ce problème je te laisse un peu chercher 🙂

                        1 réponse Dernière réponse Répondre Citer 0
                        • mindany2
                          mindany2 dernière édition par 20 juin 2014, 13:27

                          Effectivement en utilisant

                          public static final PacketManager rcModPacketHandler = new PacketManager("fr.lmac.packet", "Fr_Mod", "Fr_Mod");
                          ``` J'avais du changé mon packet mais je ne vois pas où est le problème ._.

                          ^^

                          1 réponse Dernière réponse Répondre Citer 0
                          • BlackDrag00n
                            BlackDrag00n dernière édition par 20 juin 2014, 13:30

                            Déjà tu n’utilise plus “FFMTPacketHandler” mais “PacketManager”.

                            Ensuite aujourd’hui dans ton mod tu as quoi comme package (car je ne te suis plus), ça :

                            lmac.sonic.packet
                            

                            ou, ça :

                            fr.lmac.packet
                            
                            1 réponse Dernière réponse Répondre Citer 0
                            • mindany2
                              mindany2 dernière édition par 20 juin 2014, 13:41

                              J’ai un petit problème, j’utilise

                              public static final PacketManager rcModPacketHandler = new PacketManager("fr.lmac.packet", "Fr_mod", "Fr_mod");
                              ``` mais l'information ne change pas :s
                              Savez vous d'où viens le problème ?
                              ```java
                              public class Fr_mod {
                              @Instance("Fr_mod")
                              public static Fr_mod instance;
                              @SidedProxy(clientSide = "fr.lmac.proxy.ClientProxy", serverSide = "fr.lmac.proxy.CommonProxy")
                              public static CommonProxy proxy;
                              public static final PacketManager rcModPacketHandler = new PacketManager("fr.lmac.packet", "Fr_mod", "Fr_mod");
                              @EventHandler
                              public void initConfig(FMLPreInitializationEvent event)
                              {
                              }
                              @EventHandler
                              public void load(FMLInitializationEvent event)
                              {
                              FMLCommonHandler.instance().bus().register(new PlayerTracker());
                              MinecraftForge.EVENT_BUS.register(new PlayerTracker());
                              }
                              @EventHandler
                              public void afterLoad(FMLPostInitializationEvent event)
                              {
                              }
                              }
                              public class PacketFr extends FFMTPacket
                              {
                              public boolean DoubleJump;
                              public PacketFr(){
                              }
                              public PacketFr(boolean DoubleJump){
                              this.DoubleJump = DoubleJump;
                              }
                              @Override
                              public void writeData(ByteBuf buffer) throws IOException {
                              buffer.writeBoolean(DoubleJump);
                              }
                              @Override
                              public void readData(ByteBuf buffer) {
                              this.DoubleJump = buffer.readBoolean();
                              }
                              @Override
                              public void handleClientSide(EntityPlayer player) {
                              ExtendedEntityPropFr props = ExtendedEntityPropFr
                              .get(player);
                              props.DoubleJump = this.DoubleJump;
                              }
                              @Override
                              public void handleServerSide(EntityPlayer player) {
                              ExtendedEntityPropFr props = ExtendedEntityPropFr
                              .get(player);
                              props.DoubleJump = this.DoubleJump;
                              }
                              }
                              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();
                              }
                              }
                              @SideOnly(Side.CLIENT)
                              int timer;
                              boolean jumpLast = false;
                              @SideOnly(Side.CLIENT)
                              @SubscribeEvent
                              public void onTickPlayer(TickEvent.PlayerTickEvent event)
                              {
                              if(event.player.getCommandSenderName() == Minecraft.getMinecraft().thePlayer.getCommandSenderName())
                              {
                              EntityPlayerSP player = Minecraft.getMinecraft().thePlayer;
                              ExtendedEntityPropFr prop = new ExtendedEntityPropFr(player);
                              if(player.worldObj.getGameRules().getGameRuleBooleanValue("enableRing")){
                              if(player.movementInput.jump)
                              {
                              if(!jumpLast)
                              {
                              jumpLast = true;
                              }
                              else if(timer > 2)
                              {
                              prop.setDoubleJump(true);
                              jumpLast = false;
                              }
                              timer = 0;
                              }
                              else{
                              prop.setDoubleJump(false);
                              }
                              if(jumpLast)
                              {
                              timer ++;
                              if(timer > 20)
                              {
                              jumpLast = false;
                              timer = 0;
                              }
                              }
                              }
                              }
                              }

                              Normalement c’est bon sauf si je me suis encore gourré

                              ^^

                              1 réponse Dernière réponse Répondre Citer 0
                              • BlackDrag00n
                                BlackDrag00n dernière édition par 20 juin 2014, 14:06

                                Dans ta classe "ExtendedEntityPropFr " tu indique un packet et des imports suivant :

                                package lmac.sonic;
                                import lmac.sonic.packet.PacketSonic;
                                import lmac.sonic.proxy.CommonProxy;

                                En théorie sa devrait être :

                                package fr.lmac;
                                import fr.lmac.packet.PacketSonic;
                                import fr.lmac.proxy.CommonProxy;

                                Si tu essaye de cacher ton projet laisse tomber, je sais que tu prépare un mod “Sonic” avec le système de double saut ^^, donc sa serai bien que l’on passe à ton problème 😉 car on tourne en boucle a chaque copie que tu fait et que tu remplace des valeurs, il y a des erreurs différentes :p___Bon j’ai vu que tu as crée ton mod dans la section en développement, maintenant ton problème est reglé ou pas ?

                                Si non peut tu vérifier ces points suivant :

                                @Mod(modid = "Sonic_Mod", […]
                                @Instance("Sonic_Mod")
                                
                                public static final PacketManagerrcModPacketHandler = new PacketManager("lmac.sonic.packet", "Sonic_Mod", "Sonic_Mod");
                                

                                Et que le “PacketSonic.java” se trouve bien dans ton package “lmac.sonic.packet” ?

                                1 réponse Dernière réponse Répondre Citer 0
                                • mindany2
                                  mindany2 dernière édition par 21 juin 2014, 13:47

                                  (24h avant un double post ^^')
                                  Les packages changent rien au problème de tout façon prendre ceux que j’ai mis dans les balises codes ou un autre
                                  Je vais enlevé tout mes post qui ne concerne pas ce problème (où on tournait autour du pot) afin de laisser ce topic propre

                                  Sinon tu as une idée du problème ^^ ?

                                  ^^

                                  1 réponse Dernière réponse Répondre Citer 0
                                  • BlackDrag00n
                                    BlackDrag00n dernière édition par 22 juin 2014, 09:23

                                    bah sa change rien au fait qu’on a besoin de voir tes scripts pour voir l’erreur qu’y a pu s’y mettre pour t’aider a la résoudre, car si tu as bien suivi le tuto sa devrait marche (j’ai récemment fait le tuto et j’ai pas eu de problème).


                                    Dans ta méthode :

                                    public void onTickPlayer(TickEvent.PlayerTickEvent event)
                                    

                                    Essai de Modifier pas ça :

                                    if(!jumpLast)
                                    {
                                    jumpLast = true;
                                    System.out.println("Jump : TRUE");
                                    System.out.println("Jump Prop : "+ExtendedEntityPropFr.get(mc.thePlayer).DoubleJump);
                                    }
                                    else if(timer > 2)
                                    {
                                    prop.setDoubleJump(true);
                                    jumpLast = false;
                                    System.out.println("Jump : FALSE");
                                    System.out.println("Jump Prop : "+ExtendedEntityPropFr.get(mc.thePlayer).DoubleJump);
                                    }

                                    Cela va permettre d’afficher dans la console si la valeur “jumpLast” est égale à “true” ou “false” et donc de vérifier qu’il voit bien le double saut, l’autre ligne va permettre d’aller récupérer la valeur dans le “ExtendedEntityProp” et de savoir si elle a bien été enregistrer ou non.

                                    1 réponse Dernière réponse Répondre Citer 0
                                    • mindany2
                                      mindany2 dernière édition par 22 juin 2014, 10:38

                                      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
                                      • BlackDrag00n
                                        BlackDrag00n dernière édition par 22 juin 2014, 10:41

                                        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
                                        • mindany2
                                          mindany2 dernière édition par 22 juin 2014, 10:46

                                          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
                                          • 1
                                          • 2
                                          • 3
                                          • 4
                                          • 5
                                          • 6
                                          • 7
                                          • 2 / 7
                                          27 sur 127
                                          • Premier message
                                            27/127
                                            Dernier message
                                          Design by Woryk
                                          Contact / Mentions Légales

                                          MINECRAFT FORGE FRANCE © 2018

                                          Powered by NodeBB