Navigation

    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Popular
    • Users
    • Groups

    SOLVED Pop/depop d'une entité via deco/reco player

    1.7.x
    1.7.10
    5
    17
    1861
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Kujaroth
      Kujaroth last edited by

      Salut !

      J’aimerai faire en sorte que quand le joueur deco, l’entité qui lui est liée (Clap-Trap) “déconnecte” lui aussi, puis qu’il réaparait a ça position lors de la reco du joueur.

      Je sais déja que la détection de deco/reco se fait via event forge, le soucis reste l’entité…

      Je présume que je dois enregistrer la pos x,y,z de l’entité, qui servira pour la position de reconnexion, mais comment dois-je procédé ?

      si j’utilise la commande despawnEntity(), elle perd les propriété accumulé et ce qu’elle a d’équipe. Ce qui risque d’être assez problématique.

      Est ce possible déjà ? Si oui, quel piste a suivre ? Je dois stocker tout dans un packet ?

      Merci.

      EDIT :

      Sinon, est ce qu’une téléportation + invincible dans une zone suffit ? A la deco, l’entité va dans un endroit precis en invincible et a la reco elle reviens a ça place en vulnérable.

      Qu’elle serai le mieux ?

      1 Reply Last reply Reply Quote 0
      • Folgansky
        Folgansky Correcteurs last edited by

        Et si tu faisais un item qui permettrait de stocker l’entité dans l’inventaire du joueur?

        1 Reply Last reply Reply Quote 0
        • robin4002
          robin4002 Administrateurs Rédacteurs Moddeurs confirmés last edited by

          Faudrait mettre toutes les données de l’entité dans le tag nbt du joueur.

          1 Reply Last reply Reply Quote 0
          • Kujaroth
            Kujaroth last edited by

            "Et si tu faisais un item qui permettrait de stocker l’entité dans l’inventaire du joueur? "

            Ouai, mais si le mec déco, il perd sont clap trap ^^’

            "Faudrait mettre toutes les données de l’entité dans le tag nbt du joueur. "

            Ok, voici le code sur mon entité :

            @Override
            public void writeToNBT(NBTTagCompound compound)
            {
            super.writeToNBT(compound);
            
            DataWatcher dw = this.getDataWatcher();
            
            compound.setString("playerID", this.playerID);
            compound.setString("playerName", this.playerName);
            compound.setString("otherID", this.otherID);
            compound.setInteger("color", dw.getWatchableObjectInt(20));
            compound.setInteger("etat", dw.getWatchableObjectInt(21));
            compound.setBoolean("owner", this.owner);
            
            }
            @Override
            public void readFromNBT(NBTTagCompound compound)
            {
            super.readFromNBT(compound);
            
            DataWatcher dw = this.getDataWatcher();
            
            this.playerID = compound.getString("playerID");
            this.playerName = compound.getString("playerName");
            this.otherID = compound.getString("otherID");
            dw.updateObject(20, compound.getInteger("color"));
            dw.updateObject(21, compound.getInteger("etat"));
            this.owner = compound.getBoolean("owner");
            }
            

            Dois-je faire ça ici, ou créer une classe qui permet de transférer tout ça ?

            (Je debute avec les nbt)

            1 Reply Last reply Reply Quote 0
            • Folgansky
              Folgansky Correcteurs last edited by

              Ah désolé, un clap-trap je ne connais pas.

              De mon côté j’ai un item pour faire spawn l’entité et un autre pour tuer l’entité et récupérer l’item qui sert à le faire spawn.
              Ma façon de stocker après c’est adapté à mon utilisation, bref je laisse faire ceux qui en savent plus long que moi 😃

              1 Reply Last reply Reply Quote 0
              • Deleted
                Deleted last edited by

                robin te conseille de mettre tous les tag NBT actuels de ton entity dans celui du joueur, donc regarde le tuto des ExtProp, ça t’aidera !

                1 Reply Last reply Reply Quote 0
                • Ama
                  Ama last edited by

                  Dois y avoir plus simple

                  genre elle doit être tamed donc elle est liée au joueur,

                  donc simplement, tu la rend invisible et invulnérable à tout (quand le joueur déco) puis inversement dans le joueur est présent/reconnecté

                  1 Reply Last reply Reply Quote 0
                  • Kujaroth
                    Kujaroth last edited by

                    donc un truc du genre

                    si tamed et proprio n’est pas la

                    • invulnerable
                    • invincible

                    et ce, dans le mob. Plus qu’a chercher le “proprio n’est pas la”

                    1 Reply Last reply Reply Quote 0
                    • Deleted
                      Deleted last edited by

                      Bah pour voir si une entity n’est pas dans le monde (Joueur ou pas), c’est facile tu regardes si elle est null ^^
                      Du mois je pense, c’est ce que j’aurai fait…

                      1 Reply Last reply Reply Quote 0
                      • Kujaroth
                        Kujaroth last edited by

                        Ouai, pas faux…

                        
                        if (!worldObj.isRemote && playerID != null)
                        {
                        if (worldObj.getPlayerEntityByName(playerName) != null)
                        {
                        this.setInvisible(false);
                        System.out.println("la");
                        
                        }
                        else
                        {
                        this.setInvisible(true);
                        System.out.println("pas la");
                        }
                        }
                        

                        Et le tour est joué ! ^^’…

                        1 Reply Last reply Reply Quote 0
                        • Deleted
                          Deleted last edited by

                          Et n’oublie pas de le rendre invulnérable avec setInvulnerable, je crois 😉

                          1 Reply Last reply Reply Quote 0
                          • Kujaroth
                            Kujaroth last edited by

                            Je n’ai pas trouver pour le mettre invulnérable malheureusement, setInvulnerable n’existe pas, seulement isInvulnerable. d’après mes recherche, c’est bien chiant a faire… Mais bon… Faut vraiment etre chanceux pour trouver une cible invisible 😕

                            1 Reply Last reply Reply Quote 0
                            • Deleted
                              Deleted last edited by

                              Tu peux toujours override la méthode attackEntityFrom et faire un truc comme ça

                              
                              @Override
                              public boolean attackEntityFrom(DamageSource damagSource, float ammount)
                              if(entity.isInvisible)//Ou un truc du genre
                              return false
                              else
                              return super.attackEntityFrom(damageSource, ammount);
                              
                              
                              1 Reply Last reply Reply Quote 0
                              • Kujaroth
                                Kujaroth last edited by

                                Ok, merci, j’ai integré le code, on verra bien s’il est bon pendant mes test multi 😃

                                1 Reply Last reply Reply Quote 0
                                • Deleted
                                  Deleted last edited by

                                  Bah normalement y a pas de raisons que sa ne marche pas ^^’
                                  Mais ton isInvulnerable ne marche pas ?! C est bizarre….Au pire si aucune de ces deux solutions marche pas, tu as toujours l event LivingAttackEvent, qui reste une bonne solution 😉

                                  1 Reply Last reply Reply Quote 0
                                  • Kujaroth
                                    Kujaroth last edited by

                                    isInvulnerable ne peux pas marcher, vue que la fonction pour le rendre invincible n’a été appeler nul part 😃

                                    Mais je pense que ton code marchera 😃

                                    1 Reply Last reply Reply Quote 0
                                    • Deleted
                                      Deleted last edited by

                                      Pourtant si on regarde le message #10 on voit que tu appelles bien la methode setinvisible
                                      Apres sers toi de la methode onLivingpdate pour check si ton entity est invisible, si oui tu passes a true isInvulnerable. Mais encore une fois c est une solution parmis tant d autres 🙂

                                      1 Reply Last reply Reply Quote 0
                                      • 1 / 1
                                      • First post
                                        Last post
                                      Design by Woryk
                                      Contact / Mentions Légales / Faire un don

                                      MINECRAFT FORGE FRANCE © 2018

                                      Powered by NodeBB