• 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

Monture Custom

Sans suite
1.7.10
7
72
14.9k
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.
  • Folgansky
    Folgansky Correcteurs dernière édition par 7 nov. 2015, 19:44

    La méthode en entière même si ça va pas vraiment aider: (beaucoup de répétitions)

    :::

    public boolean itemInteractionForEntity(ItemStack stack, EntityPlayer player, EntityLivingBase entity, World world)
        {
    int metadata = stack.getItemDamage();
    if (!world.isRemote && metadata == 14)
    {
    DataWatcher dw = entity.getDataWatcher();
           if (entity instanceof EntityMoto && dw.getWatchableObjectString(30) == "Moto")
           {
               entity.setDead();
               –stack.stackSize;
               player.inventory.addItemStackToInventory(new ItemStack(Modpg.itemMonture, 1, 0));
               return true;
           }
           else if (entity instanceof EntityMoto && dw.getWatchableObjectString(30) == "Moto1")
           {
               entity.setDead();
               --stack.stackSize;
               player.inventory.addItemStackToInventory(new ItemStack(Modpg.itemMonture, 1, 1));
               return true;
           }
           else if (entity instanceof EntityMoto && dw.getWatchableObjectString(30) == "Moto2")
           {
               entity.setDead();
               --stack.stackSize;
               player.inventory.addItemStackToInventory(new ItemStack(Modpg.itemMonture, 1, 2));
               return true;
           }
           else if (entity instanceof EntityBMX && dw.getWatchableObjectString(30) == "BMX")
           {
               entity.setDead();
               --stack.stackSize;
               player.inventory.addItemStackToInventory(new ItemStack(Modpg.itemMonture, 1, 3));
               return true;
           }
           else if (entity instanceof EntityBMX && dw.getWatchableObjectString(30) == "BMX1")
           {
               entity.setDead();
               --stack.stackSize;
               player.inventory.addItemStackToInventory(new ItemStack(Modpg.itemMonture, 1, 4));
               return true;
           }
           else if (entity instanceof EntityBMX && dw.getWatchableObjectString(30) == "BMX2")
           {
               entity.setDead();
               --stack.stackSize;
               player.inventory.addItemStackToInventory(new ItemStack(Modpg.itemMonture, 1, 5));
               return true;
           }
           else if (entity instanceof EntityBuggy && dw.getWatchableObjectString(30) == "Buggy")
           {
               entity.setDead();
               --stack.stackSize;
               player.inventory.addItemStackToInventory(new ItemStack(Modpg.itemMonture, 1, 6));
               return true;
           }
           else if (entity instanceof EntityBuggy && dw.getWatchableObjectString(30) == "Buggy1")
           {
               entity.setDead();
               --stack.stackSize;
               player.inventory.addItemStackToInventory(new ItemStack(Modpg.itemMonture, 1, 7));
               return true;
           }
           else if (entity instanceof EntityBuggy && dw.getWatchableObjectString(30) == "Buggy2")
           {
               entity.setDead();
               --stack.stackSize;
               player.inventory.addItemStackToInventory(new ItemStack(Modpg.itemMonture, 1, 8));
               return true;
           }
           else if (entity instanceof EntityBaignoire)
           {
               entity.setDead();
               --stack.stackSize;
               player.inventory.addItemStackToInventory(new ItemStack(Modpg.itemMonture, 1, 9));
               return true;
           }
           else if (entity instanceof EntityKart && dw.getWatchableObjectString(30) == "Kart")
           {
               entity.setDead();
               --stack.stackSize;
               player.inventory.addItemStackToInventory(new ItemStack(Modpg.itemMonture, 1, 10));
               return true;
           }
           else if (entity instanceof EntityKart && dw.getWatchableObjectString(30) == "Kart1")
           {
               entity.setDead();
               --stack.stackSize;
               player.inventory.addItemStackToInventory(new ItemStack(Modpg.itemMonture, 1, 11));
               return true;
           }
           else if (entity instanceof EntityKart && dw.getWatchableObjectString(30) == "Kart2")
           {
               entity.setDead();
               --stack.stackSize;
               player.inventory.addItemStackToInventory(new ItemStack(Modpg.itemMonture, 1, 12));
               return true;
           }
           else if (entity instanceof EntityBolide)
           {
               entity.setDead();
               --stack.stackSize;
               player.inventory.addItemStackToInventory(new ItemStack(Modpg.itemMonture, 1, 13));
               return true;
           }    
       else    
       return false;    
    }
    return false;
        }

    :::

    Est-ce que je te mets la classe en entière? La même beaucoup de répétitions c’est pas un truc trop fournis, c’pour ça que je vois pas où ça bloque.

    1 réponse Dernière réponse Répondre Citer 0
    • robin4002
      robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par 7 nov. 2015, 19:52

      Ajoutes au début de la fonction:
      System.out.println(world.isRemote)
      et dit moi ce qu’il y a dans la console.

      1 réponse Dernière réponse Répondre Citer 0
      • Folgansky
        Folgansky Correcteurs dernière édition par 7 nov. 2015, 20:08

        ça ne marque rien par contre j’ai compris à quel moment ça ne faisait plus rien, c’est quand j’ajoute l’argument World:

        public boolean itemInteractionForEntity(ItemStack stack, EntityPlayer player, EntityLivingBase entity, World world)
        

        Alors qu’on m’a conseillé de l’utiliser comme ça

        public boolean itemInteractionForEntity(ItemStack stack, EntityPlayer player, EntityLivingBase entity)
        

        La différence est simple, l’un marche, l’autre non Xd.

        Erreur en java de ma part?

        1 réponse Dernière réponse Répondre Citer 0
        • robin4002
          robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par 7 nov. 2015, 20:17

          Oui en effet, si tu ajoutes un argument ce n’est plus la même fonction. Comme tu n’as pas d’argument world tu peux utiliser player.worldObj.isRemote

          1 réponse Dernière réponse Répondre Citer 0
          • Folgansky
            Folgansky Correcteurs dernière édition par 7 nov. 2015, 20:23

            Je sens que ça va finir par rentrer mais là c’est pas encore ça:

            :::

            public boolean itemInteractionForEntity(ItemStack stack, EntityPlayer player, EntityLivingBase entity)
                {
            int metadata = stack.getItemDamage();
            if (player.worldObj.isRemote && metadata == 14)
            {

            :::

            Alors en ayant fait ça ça me donne toujours deux items mais en plus en déco/reco les entités reviennent.
            J’en déduis juste qu’il n’y a que le côté client qui a été pris en compte… Bref que j’ai pas mis ça comme et où il fallait Xd

            edit: Encore plus n’importe quoi avec “!” devant “player” xD

            1 réponse Dernière réponse Répondre Citer 0
            • robin4002
              robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par 7 nov. 2015, 20:24

              !player.worldObj.isRemote
              et non player.worldObj.isRemote

              1 réponse Dernière réponse Répondre Citer 0
              • Folgansky
                Folgansky Correcteurs dernière édition par 7 nov. 2015, 20:27

                Ah bah c’est ce que j’ai de suite tenté et c’est encore plus bizarre:

                L’entité disparait deco/reco elle a bien disparu, par contre les items:
                 je clique, y’a rien, déco/reco: bim y’en a deux qui sont apparus.
                J’ai supprimé la carte et j’ai en créé une autre au cas où, ça ne change rien.

                1 réponse Dernière réponse Répondre Citer 0
                • Folgansky
                  Folgansky Correcteurs dernière édition par 9 nov. 2015, 21:29

                  Bon visiblement si je mets comme condition que le joueur doit être en train de sneak c’est bon. 
                  Reste le test serveur mais ça devrait être ça 😃

                  1 réponse Dernière réponse Répondre Citer 0
                  • environ 19 jours
                  • Folgansky
                    Folgansky Correcteurs dernière édition par 28 nov. 2015, 15:36

                    Salut, je reviens sur les montures avec un point de détail qui reste quand même quelque chose de visuellement très frappant.
                    Pour que mes montures ne bougent plus quand on n’est pas dessus j’ai fais ça:

                    :::

                    else if (this.riddenByEntity == null)
                        {
                        motionX = motionY = motionZ = 0.0F;
                        }

                    :::

                    Ce qu’il fait que si je quitte le véhicule en l’air, celui-ci reste figé dans les airs, comme si de rien était.
                    Je vois mal la condition qu’il me faut pour, qu’une fois dépourvu de rider, la monture retombe au sol avant de rester immobile.

                    Je souligne le fait que mes véhicules ont le code du cheval et le onUpdate qui va avec donc.

                    1 réponse Dernière réponse Répondre Citer 0
                    • robin4002
                      robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par 28 nov. 2015, 15:40

                        else if (this.riddenByEntity == null)
                         {
                             motionX = motionZ = 0.0F;
                         }

                      Voila, suffit de faire comme ça.

                      1 réponse Dernière réponse Répondre Citer 0
                      • Folgansky
                        Folgansky Correcteurs dernière édition par 28 nov. 2015, 15:48

                        J’ai bien déjà “tenté” ça et la monture reste tout de même figée en l’air.

                        Edit:

                        Ce soucis est réglé, il faut croire que bidouiller le code du cheval c’est pas top.
                        :::

                        public void onUpdate()
                            {
                        super.onUpdate();
                        if (this.riddenByEntity == null)
                            {
                        motionX = motionZ = 0.0F;
                            this.rotationYaw = this.prevRotationYaw;
                            }
                            }

                        :::

                        1 réponse Dernière réponse Répondre Citer 0
                        • environ 2 mois
                        • Folgansky
                          Folgansky Correcteurs dernière édition par 31 janv. 2016, 19:31

                          Me revoici également sur les montures et ce concernant la privatisation de l’entité.

                          De ce que j’ai pu obtenir comme info, je dois faire via datawatcher et nbt, comme il en avait été question pour les textures.

                          Actuellement j’ai ces méthodes:

                          :::

                          public boolean interact(EntityPlayer player)
                            {
                                String str = this.getTagCompound().getString("<id>");
                            if (player.inventory.getCurrentItem() == null && this.riddenByEntity == null && str.equals ("<id>"))
                                {
                                    this.moteur = 200;
                                worldObj.playSoundAtEntity(this, "modpg:moteur", 1.0F, 1.0F);
                                player.mountEntity(this);
                                return true;       
                                }
                                return false;       
                            }
                          public void writeEntityToNBT(NBTTagCompound nbt) {
                          super.writeEntityToNBT(nbt);
                          DataWatcher dw = this.getDataWatcher();
                          nbt.setString("EntityBaignoireTexture", dw.getWatchableObjectString(30));
                          nbt.setInteger("timer", this.timer);
                          nbt.setString("<id>", dw.getWatchableObjectString(31));
                          }
                          public void readEntityFromNBT(NBTTagCompound nbt) {
                          super.readEntityFromNBT(nbt);
                          DataWatcher dw = this.getDataWatcher();
                          dw.updateObject(30, nbt.getString("EntityBaignoireTexture"));
                          dw.updateObject(31, nbt.getString("<id>"));
                          nbt.getInteger("timer");
                          }

                          :::

                          Et dans une classe j’ai la méthode handleConstruction pour faire:
                          :::

                           else if(event.entity instanceof EntityBaignoire)
                            {
                                DataWatcher dw = event.entity.getDataWatcher();
                                dw.addObject(30, "PG Baignoire");
                                dw.addObject(31, "<id>");
                            }

                          :::

                          Mon principal soucis est de récupérer mon nbt dans l’entité car:

                          String str = this.getTagCompound().getString("<id>");
                          

                          Me fait une erreur sur le “.getTagCompound()” (tout naturellement m’as-t-on dis)

                          Je m’en remet à vous à ce sujet.</id></id></id></id></id></id>

                          1 réponse Dernière réponse Répondre Citer 0
                          • SCAREX
                            SCAREX dernière édition par 31 janv. 2016, 19:49

                            EUh, là tu utilises les dataWatcher les nbt en même temps ? Or dataWatcher != nbt

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

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

                            1 réponse Dernière réponse Répondre Citer 0
                            • Folgansky
                              Folgansky Correcteurs dernière édition par 31 janv. 2016, 20:03

                              Bah je calque la façon selon laquelle j’ai dû utiliser les deux (datawatcher et nbt) afin d’appliquer la texture à mon entité (car il y a plusieurs textures pour un même modèle, sujet traité plus en amont dans ce topic).

                              Le résultat espéré c’est que lorsqu’un joueur fait spawn l’entité (avec un item en l’occurrence), l’UUID de ce joueur est stocké grâce au datawatcher +nbt (le fonctionnement de ces outils me dépasse actuellement).

                              Au final, lorsqu’un joueur tentera d’interagir avec l’entité, celle-ci checke si l’id du joueur qui clique est la même que celle enregistrée.

                              <id>permet bien de récupérer l’id du joueur nan?</id>

                              1 réponse Dernière réponse Répondre Citer 0
                              • robin4002
                                robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par 31 janv. 2016, 20:08

                                Pour recup la valeur dans l’entité il faut utiliser le data watcher.

                                Non, l’uuid du joueur c’est player.getGameProfile().getID()

                                1 réponse Dernière réponse Répondre Citer 0
                                • Folgansky
                                  Folgansky Correcteurs dernière édition par 31 janv. 2016, 20:27

                                  D’acc. Du coup j’ai ça pour la condition (qui semble ok):

                                  String str = this.getDataWatcher().getWatchableObjectString(31);
                                  

                                  Par contre je ne comprends pas comment enregistrer l’id du joueur qui créé l’entité.

                                  Ce que tu m’as passé robin ça donne:

                                  UUID uuid = player.getGameProfile().getId();
                                  

                                  A quel endroit je peux me servir de ce “uuid” par rapport aux datawatcher et mes nbt?

                                  Ce n’est pas obligatoirement un string?

                                  1 réponse Dernière réponse Répondre Citer 0
                                  • robin4002
                                    robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par 31 janv. 2016, 20:47

                                    Lors de la création de l’entité, donc dans le constructeur.
                                    Pour avoir un string utilises player.getGameProfile().getId().toString()

                                    1 réponse Dernière réponse Répondre Citer 0
                                    • Folgansky
                                      Folgansky Correcteurs dernière édition par 1 févr. 2016, 08:48

                                      Ouki!
                                      On m’a donné un p’tit coup de pouce sur le ts hier soir.
                                      Qui m’a permis effectivement de passer de l’uuid à un string récupérable.

                                      Merci les gars, le topic sur les montures custom commence à être bien étoffé.

                                      1 réponse Dernière réponse Répondre Citer 0
                                      • environ 2 mois
                                      • Folgansky
                                        Folgansky Correcteurs dernière édition par 29 mars 2016, 16:50

                                        Bonjour/Bonsoir,

                                        Je relance ce topic sur les montures pour vous demander un coup de main concernant une fonctionnalité bien utile pour un véhicule:
                                        -Pouvoir voyager à plusieurs.

                                        Je pense faire une pirouette et ne pas faire une entité qui suivra mon véhicule.
                                        Le joueur doit être dans un véhicule et appuyer sur une touche pour faire spawn une entité qui le suit lui, mais seulement tant qu’il est dans un véhicule. Du coup un second joueur pourra cliquer dessus et s’asseoir dessus et suivra les déplacements du joueur+véhicule.

                                        Ou alors, question: Peut-on faire monter deux joueurs sur le cheval de Minecraft? Si oui, je pourrais me débrouiller pour faire s’asseoir le second gars un peu à côté.

                                        1 réponse Dernière réponse Répondre Citer 0
                                        • Deleted
                                          Deleted dernière édition par 29 mars 2016, 16:54

                                          Je ne pense pas que ce soit trop possible, les deux joueurs risquent de se superposer. Il faudrait que tu réecrives la méthode pour monter une entity 😕

                                          1 réponse Dernière réponse Répondre Citer 0
                                          • 1
                                          • 2
                                          • 3
                                          • 4
                                          • 3 / 4
                                          41 sur 72
                                          • Premier message
                                            41/72
                                            Dernier message
                                          Design by Woryk
                                          Contact / Mentions Légales

                                          MINECRAFT FORGE FRANCE © 2018

                                          Powered by NodeBB