MFF

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

    Monture Custom

    Planifier Épinglé Verrouillé Déplacé Sans suite
    1.7.10
    72 Messages 7 Publieurs 16.3k Vues 1 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.
    • robin4002R Hors-ligne
      robin4002 Moddeurs confirmés Rédacteurs Administrateurs
      dernière édition par

         @Override
         public String getCommandSenderName()
         {
             return this.dataWatcher.getWatchableObjectString(30);
         }
      

      Ce n’est pas mieux comme ça non ? Car ton code actuel ça revient à faire if(true) … c’est pour ça que j’ai dit que ça fait usine à gaz.
      Le @Override n’est pas nécessaire, mais il est pratique car si la fonction change de nom ou disparaît dans une future mise à jour tu aura une erreur. Alors que sans le @Override si la fonction change de nom ou disparaît ça va cesser de fonctionner sans qu’il n’y ait d’erreur.

      1 réponse Dernière réponse Répondre Citer 0
      • FolganskyF Hors-ligne
        Folgansky Correcteurs
        dernière édition par

        Ah ouais… Je n’y étais pas même à la fin =')

        Le truc du Override ça me rappelle un technicien Microsoft qui disait un truc genre: 
        “Cette erreur je ne sais pas par quoi elle est causée alors je vais juste faire sauter le message d’erreur et personne ne se plaindra plus.”

        Merci en tout cas.

        1 réponse Dernière réponse Répondre Citer 0
        • FolganskyF Hors-ligne
          Folgansky Correcteurs
          dernière édition par

          Re, les gens, je me heurte actuellement à un défi concernant les montures custom:

          La position du joueur sur la monture. J’aimerais savoir comment modifier ce paramètre.
          En regardant la classe du BlockBed je n’ai rien compris, pour être franc x]

          Concrètement j’aimerais faire la moto de Tron et donc il faudrait “allonger” le joueur dessus.
          Suivant les possibilités que ce paramètre offre d’autres modèles seront envisagés évidemment.

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

            Si tu ne trouves vraiment pas dans la classe du lit, tu peux toujours te servir de l’event RenderPlayerEvent qui te permettra d’avoir une instance de la classe ModelPlayer et ainsi en fonction d’un boolean stocké dans le tag du joueur (ExtendedEntityProperties, tuto du gugu42), tu pourras faire varier les angles x, y et z de chacune des shapde du joueur, de sorte à ce qu’il soit allongé.
            Pose-moi des questions si tu n’as pas tout compris, hein ! ^^’

            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

              Je suis presque sur qu’il y a une variable du genre riddingYcoord pour gérer la hauteur du joueur qui monte l’entité.

              1 réponse Dernière réponse Répondre Citer 0
              • FolganskyF Hors-ligne
                Folgansky Correcteurs
                dernière édition par

                @‘robin4002’:

                Je suis presque sur qu’il y a une variable du genre riddingYcoord pour gérer la hauteur du joueur qui monte l’entité.

                Pour la hauteur du joueur c’est très simple comme la monture est un “cheval”  donc avec:

                public double getMountedYOffset()
                    {
                        return (double)this.height + 0.35D;
                    } 
                

                Comme le suggère Julot, je veux modifier plus encore la position du joueur.
                Maintenant ce que tu m’indiques Julot va me demander bien plus de travail que je ne pensais (comprendre et assimiler le tuto de Gugu, qui demande également de mettre un pied dans les packets).

                Alors merci pour les infos, je m’y pencherai seulement dans quelques temps, mon serveur va bientôt ouvrir, je cherchais un défi pour me détendre à côté de tout ça, mais là la barre est trop haute.

                Petite question qui me vient dans tout ça, le fait que mes montures soient extends EntityHorse ne va pas créer des problèmes quant à la modification de la position du joueur à votre avis? (c’est peut-être pas évident comme question, mais évitera qu’on se rende tous compte que mon code est horrible et que j’aurais dû créer la monture en partant d’un simple “extends entity”)

                Je sais qu’à un moment donné j’avais modifié la position “assise” pour debout et les montures ne répondaient plus du tout comme prévu.

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

                  Il est toujours mieux de partir d’un EntityAnimal plutôt que EntityHorse car Mojang code avec les pieds

                  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
                  • FolganskyF Hors-ligne
                    Folgansky Correcteurs
                    dernière édition par

                    Alors suite à la réponse de @Julot10085 sur le sujet Item qui a un cooldown je me suis dis que je pourrais peut-être “enfin” mettre un cooldown sur le klaxon de mes véhicules (ça spam bien les oreilles sinon).

                    Donc toujours sur ma base “extends EntityHorse” j’ai essayé d’appliquer les bouts de codes en suivant les indications d’Eclipse pour l’adapter, je pense que je n’ai pas bien régler les TagCompound, en tout cas ça ne crash pas.

                    Là où avant quand je voulais ouvrir l’inventaire de la monture ça ne produisait que le son du klaxon (sans GUI), maintenant ça ouvre le GUI du cheval, donc j’aimerais votre avis svp.
                    Le fonctionnement souhaité serait de pouvoir klaxonner seulement toutes les X secondes.

                    :::

                    private Object stackTagCompound;
                    

                    :::

                    :::

                    public void onLivingUpdate()
                        {
                    {
                    if(this.hasTagCompound())//Si ton item n'a pas de tag alors on ne fait rien
                    {
                    if(((NBTTagCompound) this.stackTagCompound).getInteger("timer") > 0)//si ton timer est supérieur à 0 (après un clic droit logiquement)
                    {
                    ((NBTTagCompound) this.stackTagCompound).setInteger("timer", (int) (((NBTTagCompound) this.stackTagCompound).getInteger("timer") + 1));//On l'incrémente de 1 à chaque tick
                    }
                    if(((NBTTagCompound) this.stackTagCompound).getInteger("timer") >= (int) (6*20))//Remplace 6 par le nombre de secondes du timer souhaité
                    {
                    ((NBTTagCompound) this.stackTagCompound).setInteger("timer", 0);//On remet à 0 si le timer est arrivé à la limite souhaitée
                    }
                    }
                    if(this.ticksExisted>=12000 && this.riddenByEntity == null)
                    {
                    this.setDead();
                    }
                    else if (this.riddenByEntity == null)
                        {
                        motionX = motionY = motionZ = 0.0F;
                        }
                        else
                        {
                        super.onLivingUpdate();
                               this.worldObj.theProfiler.startSection("looting");
                    
                               if (!this.worldObj.isRemote && this.canPickUpLoot() && !this.dead && this.worldObj.getGameRules().getGameRuleBooleanValue("mobGriefing"))
                               {//[… la suite est du code du cheval]
                    

                    :::

                    :::

                        public void openGUI(EntityPlayer p_110199_1_, World world)
                        {
                        if (!this.worldObj.isRemote && (this.riddenByEntity == null || this.riddenByEntity == p_110199_1_) && this.isTame() && p_110199_1_.inventory.getCurrentItem() == null)
                            {
                        if(!this.hasTagCompound())//Même condition, si ton item n'a pas de tag on lui en ajoute avec l'int timer en +
                        {
                        this.setTagCompound(new NBTTagCompound());
                        ((NBTTagCompound) this.stackTagCompound).setInteger("timer", 0);
                        }
                        if(((NBTTagCompound) this.stackTagCompound).getInteger("timer") == 0)
                        {        
                                worldObj.playSoundAtEntity(this, "modpg:klaxon", 0.5F, 0.5F);
                                ((NBTTagCompound) this.stackTagCompound).setInteger("timer", 1);//On le met à 1 pour pouvoir rentrer dans la condition de onUpdate()
                        }
                        else
                        {
                        if(world.isRemote)
                        p_110199_1_.addChatComponentMessage(new ChatComponentTranslation("Attends encore un peu si tu veux re-klaxonner."));//On indique au joueur via ce message si le timer n'est pas encore arrivé à la limite souhaitée
                        }
                        }
                        }
                    

                    :::

                    :::

                       private boolean hasTagCompound()
                       {
                    return false;
                       }
                    
                       private void setTagCompound(NBTTagCompound nbtTagCompound)
                       {
                    }
                    

                    :::


                    :::

                        public void openGUI(EntityPlayer p_110199_1_)
                        {
                            if (!this.worldObj.isRemote && (this.riddenByEntity == null || this.riddenByEntity == p_110199_1_) && this.isTame() && p_110199_1_.inventory.getCurrentItem() == null)
                            {
                            worldObj.playSoundAtEntity(this, "modpg:sonnette", 0.5F, 0.5F);
                            }
                        }
                    

                    :::

                    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

                      Du grand n’importe quoi x)
                      Est-ce que tu as la moindre idée de ce que tu es en train de faire ?
                      Tes fonctions hasTagCompound et setTagCompound ne fond absolument rien. Elle ne servent non plus à rien, car comme tu es dans une entité tu as déjà une instance par entité (contrairement au item qui ont une instance unique).
                      Donc pas besoin de tag nbt, tu peux simplement ajouter une variable timer dans ton entité.

                      1 réponse Dernière réponse Répondre Citer 0
                      • BrokenSwingB Hors-ligne
                        BrokenSwing Moddeurs confirmés Rédacteurs
                        dernière édition par

                        Quand tu dis ajout demandé, ça veut dire que eclipse tu demande de créer la fonction ?

                        1 réponse Dernière réponse Répondre Citer 0
                        • FolganskyF Hors-ligne
                          Folgansky Correcteurs
                          dernière édition par

                          Eh beh tu vois, c’est en faisant n’importe quoi qu’on … obtient de le merde. (Mais ça pourra être mis dans les fails des faux espoirs)

                          Je note pour la variable, juste je peux déclarer ça comment?

                          Pour la condition, je dois bien faire comme Julot c’est à dire mettre le timer à 0 de base et qu’ouvrir le GUI fasse +1 (enfin incrémenter) jusqu’à atteindre le maximum voulu pour ensuite être remis à 0. Je me trompe?

                          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

                            Déclarer une variable, c’est du java c’est pas compliqué …

                            private int timer = 0;
                            

                            Ensuite dans la fonction onUpdate :

                            if(this.timer > 0)
                            {
                                this.timer --;
                            }
                            

                            et pour finir dans la fonction où tu joues ton son :

                            if(this.timer == 0)
                            {
                               // fonction pour jouer le son
                               this.timer = <insère ici="" le="" nombre="" de="" tick="" que="" tu="" veux="" avant="" pouvoir="" rejouer="" son="">;
                            }
                            else
                            {
                               // afficher le message comme quoi il faut attendre la fin du timer
                            }
                            

                            Franchement il n’y a rien de compliqué là dedans, c’est juste un peu de Java et de la logique.</insère>

                            1 réponse Dernière réponse Répondre Citer 0
                            • FolganskyF Hors-ligne
                              Folgansky Correcteurs
                              dernière édition par

                              Merci bien.

                              Je demandais surtout le “int”, la logique ce n’est pas le soucis (mais c’est sympa d’avoir pris la peine de tout rédiger).

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

                                Du coup t’y arriveras ? Il faut enregistrer les NBT de ton entity de cette manière :

                                
                                public void writeEntityToNBT(NBTTagCompound compound)
                                {
                                super.writeEntityToNBT(compound);
                                compound.setInteger("timer", this.timer);
                                }
                                
                                public void readEntityFromNBT(NBTTagCompound compound)
                                {
                                super.readEntityFromNBT(compound);
                                compound.getInteger("timer");
                                }
                                
                                
                                1 réponse Dernière réponse Répondre Citer 0
                                • FolganskyF Hors-ligne
                                  Folgansky Correcteurs
                                  dernière édition par

                                  Oui, “tout” fonctionne.

                                  Je n’ai pas mis de message pendant le cooldown, ça m’a évité un obstacle au passage.

                                  Je vous remercie les gars.
                                  A la prochaine.

                                  1 réponse Dernière réponse Répondre Citer 0
                                  • FolganskyF Hors-ligne
                                    Folgansky Correcteurs
                                    dernière édition par

                                    Bien le bonsoir, bien le bonjour,

                                    Je reviens ce soir pour explorer une nouvelle nécessité des montures custom: les récupérer.

                                    Grâce à votre aide j’ai un item par monture me permettant de poser chaque monture différente suivant un metadata de l’item.

                                    Ce qu’il faudrait que je fasse c’est un item qui en cliquant sur une monture la tue, give l’item qui permet de faire spawn la monture et puis consomme l’item.

                                    J’aurai donc besoin de votre aide concernant la façon de détecter l’entité sur laquelle on clique et la manière de give un item du mod à un joueur.

                                    Je vous joins la classe des :::

                                    public class ItemMonture extends Item
                                    {
                                    public static String[] type = new String[]{"ItemMonture1", "ItemMonture2", "ItemMonture3", "ItemMonture4", "ItemMonture5", "ItemMonture6", "ItemMonture7", "ItemMonture8", "ItemMonture9", "ItemMonture10", "ItemMonture11", "ItemMonture12", "ItemMonture13", "ItemMonture14", "Recycleur"};
                                    public IIcon[] iconArray = new IIcon[type.length];
                                    
                                    public ItemMonture()
                                    {
                                    super();
                                    this.setHasSubtypes(true); 
                                    }
                                    
                                    public int getMaxItemUseDuration(ItemStack stack)
                                       {
                                           return 1;
                                       }
                                    
                                    @Override
                                    public boolean onItemUse(ItemStack stack, EntityPlayer player, World world, int x, int y, int z, int side, float hitX, float hitY, float hitZ)
                                    {
                                    int metadata = stack.getItemDamage();
                                    if(metadata == 0)
                                    {
                                    EntityMoto e = new EntityMoto(world);
                                      if(!world.isRemote)
                                          {
                                       e.setPosition(x, y + 1.0F, z);
                                       world.spawnEntityInWorld(e);
                                       stack.stackSize–;
                                       DataWatcher dw = e.getDataWatcher();
                                       dw.updateObject(30, "Moto");
                                          }
                                          return true;
                                    }
                                    else if(metadata == 1)
                                    {
                                    EntityMoto e = new EntityMoto(world);
                                      if(!world.isRemote)
                                          {
                                       e.setPosition(x, y + 1.0F, z);
                                       world.spawnEntityInWorld(e);
                                       stack.stackSize--;
                                       DataWatcher dw = e.getDataWatcher();
                                       dw.updateObject(30, "Moto1");
                                          }
                                          return true;
                                    }
                                    else if(metadata == 2)
                                    {
                                    EntityMoto e = new EntityMoto(world);
                                      if(!world.isRemote)
                                          {
                                       e.setPosition(x, y + 1.0F, z);
                                       world.spawnEntityInWorld(e);
                                       stack.stackSize--;
                                       DataWatcher dw = e.getDataWatcher();
                                       dw.updateObject(30, "Moto2");
                                          }
                                          return true;
                                    }
                                    else if (metadata == 3)
                                        {
                                        EntityBMX e = new EntityBMX(world);
                                        if(!world.isRemote)
                                            {
                                        e.setPosition(x, y + 1.0F, z);
                                        world.spawnEntityInWorld(e);
                                        stack.stackSize--;
                                        DataWatcher dw = e.getDataWatcher();
                                        dw.updateObject(30, "BMX");
                                            }
                                                return true;
                                        }
                                    else if (metadata == 4)
                                        {
                                        EntityBMX e = new EntityBMX(world);
                                        if(!world.isRemote)
                                            {
                                        e.setPosition(x, y + 1.0F, z);
                                        world.spawnEntityInWorld(e);
                                        stack.stackSize--;
                                        DataWatcher dw = e.getDataWatcher();
                                        dw.updateObject(30, "BMX1");
                                            }
                                                return true;
                                        }
                                    else if (metadata == 5)
                                        {
                                        EntityBMX e = new EntityBMX(world);
                                        if(!world.isRemote)
                                            {
                                        e.setPosition(x, y + 1.0F, z);
                                        world.spawnEntityInWorld(e);
                                        stack.stackSize--;
                                        DataWatcher dw = e.getDataWatcher();
                                        dw.updateObject(30, "BMX2");
                                            }
                                                return true;
                                        }
                                    else if (metadata == 6)
                                        {
                                        EntityBuggy e = new EntityBuggy(world);
                                        if(!world.isRemote)
                                            {
                                        e.setPosition(x, y + 1.0F, z);
                                        world.spawnEntityInWorld(e);
                                        stack.stackSize--;
                                        DataWatcher dw = e.getDataWatcher();
                                        dw.updateObject(30, "Buggy");
                                            }
                                                return true;
                                        }
                                    else if (metadata == 7)
                                        {
                                        EntityBuggy e = new EntityBuggy(world);
                                        if(!world.isRemote)
                                            {
                                        e.setPosition(x, y + 1.0F, z);
                                        world.spawnEntityInWorld(e);
                                        stack.stackSize--;
                                        DataWatcher dw = e.getDataWatcher();
                                        dw.updateObject(30, "Buggy1");
                                            }
                                                return true;
                                        }
                                    else if (metadata == 8)
                                        {
                                        EntityBuggy e = new EntityBuggy(world);
                                        if(!world.isRemote)
                                            {
                                        e.setPosition(x, y + 1.0F, z);
                                        world.spawnEntityInWorld(e);
                                        stack.stackSize--;
                                        DataWatcher dw = e.getDataWatcher();
                                        dw.updateObject(30, "Buggy2");
                                            }
                                                return true;
                                        }
                                        else if (metadata == 9)
                                        {
                                        EntityBaignoire e = new EntityBaignoire(world);
                                        if(!world.isRemote)
                                            {
                                        e.setPosition(x, y + 1.0F, z);
                                        world.spawnEntityInWorld(e);
                                        stack.stackSize--;
                                        DataWatcher dw = e.getDataWatcher();
                                        dw.updateObject(30, "Baignoire");
                                            }
                                                return true;
                                        }
                                        else if (metadata == 10)
                                        {
                                        EntityKart e = new EntityKart(world);
                                        if(!world.isRemote)
                                            {
                                        e.setPosition(x, y + 1.0F, z);
                                        world.spawnEntityInWorld(e);
                                        stack.stackSize--;
                                        DataWatcher dw = e.getDataWatcher();
                                        dw.updateObject(30, "Kart");
                                            }
                                                return true;
                                        }
                                        else if (metadata == 11)
                                        {
                                        EntityKart e = new EntityKart(world);
                                        if(!world.isRemote)
                                            {
                                        e.setPosition(x, y + 1.0F, z);
                                        world.spawnEntityInWorld(e);
                                        stack.stackSize--;
                                        DataWatcher dw = e.getDataWatcher();
                                        dw.updateObject(30, "Kart1");
                                            }
                                                return true;
                                        }
                                        else if (metadata == 12)
                                        {
                                        EntityKart e = new EntityKart(world);
                                        if(!world.isRemote)
                                            {
                                        e.setPosition(x, y + 1.0F, z);
                                        world.spawnEntityInWorld(e);
                                        stack.stackSize--;
                                        DataWatcher dw = e.getDataWatcher();
                                        dw.updateObject(30, "Kart2");
                                            }
                                                return true;
                                        }
                                        else if (metadata == 13)
                                        {
                                        EntityBolide e = new EntityBolide(world);
                                        if(!world.isRemote)
                                            {
                                        e.setPosition(x, y + 1.0F, z);
                                        world.spawnEntityInWorld(e);
                                        stack.stackSize--;
                                        DataWatcher dw = e.getDataWatcher();
                                        dw.updateObject(30, "Bolide");
                                            }
                                                return true;
                                        }
                                        else if (metadata == 14)
                                        {
                                    
                                        }
                                    return false;
                                    }
                                    
                                        public int getMetadata(int metadata)
                                    {
                                    return metadata;
                                    }
                                    
                                        public String getUnlocalizedName(ItemStack stack)
                                        {
                                            int metadata = stack.getItemDamage();
                                    
                                            if(metadata > type.length || metadata < 0)
                                            {
                                            metadata = 0;
                                            }
                                    
                                            return super.getUnlocalizedName() + "." + type[metadata];
                                        }
                                    
                                    @SuppressWarnings({ "rawtypes", "unchecked" })
                                    public void getSubItems(Item item, CreativeTabs tabs, List list)
                                        {
                                        for(int i = 0; i < type.length; i++)
                                        {
                                            list.add(new ItemStack(item, 1, i));
                                        }
                                        }
                                    
                                        public void registerIcons(IIconRegister iconRegister)
                                        {
                                        for(int i = 0; i < type.length; i++)
                                            this.iconArray* = iconRegister.registerIcon(Modpg.MODID + ":" + type*);
                                        }
                                    
                                        public IIcon getIcon(int side, int metadata)
                                        {
                                        if(metadata >= 0 && metadata < type.length)
                                        {
                                        return this.iconArray[metadata];
                                        }
                                            return this.iconArray[0];
                                        }
                                    
                                        public IIcon getIconFromDamage(int metadata)
                                    {
                                    return metadata < type.length && metadata >= 0 ? iconArray[metadata] : iconArray[0];
                                    }
                                    }
                                    

                                    :::

                                    Du coup j’aimerais utiliser un item de metadata 14 pour faire le “recycleur”.

                                    :::

                                    
                                    else if (metadata == 14)
                                        {
                                        //if (La monture sur laquelle je clique est un Kart de type Kart2 && (La monture sur laquelle je clique).riddenByEntity == null)
                                        //{
                                        //    (La monture sur laquelle je clique).setDead;
                                        //    give l'itemMonture de metadata 12;
                                        //    stack.stackSize–;
                                        //}
                                    
                                        //if (La monture sur laquelle je clique est une moto de type moto1 && (La monture sur laquelle je clique).riddenByEntity == null)
                                        //{
                                        //    (La monture sur laquelle je clique).setDead;
                                        //    give l'itemMonture de metadata 1;
                                        //    stack.stackSize--;
                                        //}
                                        //   return true,
                                        }
                                    
                                    

                                    :::

                                    Voilà où j’en suis rendu =')

                                    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

                                      La fonction onItemUse n’est que appelé quand tu fais un clic droit sur un bloc.
                                      Donc il va falloir passer par onRightClick + un player.rayTrace (qui n’est que côté client donc paquet). La fonction rayTrace te renvoies un MovingObjectPosition et avec lui tu peux savoir s’il y a une entité ou pas et obtenir son instance. Un petit if(mop.hitEntity instanceof TonEntity) et c’est bon.

                                      EDIT : d’après ce post : http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods/modification-development/2426102-alternatives-to-player-raytrace?comment=6 il existe autre chose que player.rayTrace pour avoir un MovingObjectPosition.

                                      1 réponse Dernière réponse Répondre Citer 0
                                      • FolganskyF Hors-ligne
                                        Folgansky Correcteurs
                                        dernière édition par

                                        Ok, alors chui loin du compte.

                                        De ce que j’ai pu comprendre et voir j’ai ça:

                                        :::

                                            public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
                                            {
                                            int metadata = stack.getItemDamage();
                                            Vec3 look = player.getLookVec();
                                            float f = 200.0F;
                                            Vec3 start = new Vec3(player.posX, player.posY + player.getEyeHeight(), player.posZ);
                                            Vec3 end = new Vec3(player.posX + look.xCoord * f, player.posY + player.getEyeHeight() + look.yCoord * f, player.posZ + look.zCoord * f);
                                            MovingObjectPosition mop = world.rayTraceBlocks(start, end);
                                        
                                            if(metadata == 14)
                                            {
                                            if(mop.entityHit instanceof EntityBolide && mop.entityHit.riddenByEntity == null)
                                        {
                                            {
                                        //        mop.entityHit.setDead();
                                        //        give l'itemMonture de metadata 1;
                                               stack.stackSize–;
                                            }
                                        }
                                                return stack;
                                            }
                                            }
                                        

                                        :::

                                        En fait j’ai juste trouvé que c’était entityHit et pas hitEntity…

                                        J’ai une erreur sur les vecteurs (truc auquel je ne comprends pas tant que ça), ça me marque comme quoi le constructeur Vec3(double, double, double) n’est pas visible.

                                        Edit: Après ne serait-il pas plus simple de checker si il n’y a pas une entité à 2/3 blocs du joueur qui serait une entité récupérable?

                                        L’histoire de côté client ou serveur avec les paquets ou non me découragent un peu ^^’

                                        1 réponse Dernière réponse Répondre Citer 0
                                        • FolganskyF Hors-ligne
                                          Folgansky Correcteurs
                                          dernière édition par

                                          Bon comme je ne sais pas trop quoi faire pour récupérer un “mop” j’ai un peu trifouillé ce qui y touchait et je suis tombé sur une archive parlant des potions dont la méthode
                                          onImpact récupère un mop.

                                          Celui là, c’est par-ici, Il est frais mon poisson.

                                          Bref, passons l’heure,

                                          L’idée serait d’utiliser une potion à impact qui, si elle touche mon entité précise, fait ce que je lui demande (c’est à dire buter l’entité et récupérer un certain item qui en fait sert à la refaire spawn, même si techniquement c’est une toute autre entité).

                                          Est-ce concevable selon vous ce type de potion dans mon cas?

                                          1 réponse Dernière réponse Répondre Citer 0
                                          • BrokenSwingB Hors-ligne
                                            BrokenSwing Moddeurs confirmés Rédacteurs
                                            dernière édition par

                                            Pour ce qui est du fait que le constructeur Vec3 qui n’existe pas, il suffit de faire un CTRL+CLIC sur Vec3 pour entrer dans la classe et voir qu’il faut utiliser

                                            Vec3.createVectorHelper(double, double, double);
                                            

                                            Ce qui retourne une instance de Vec3.

                                            Ce que te propose c’est ça :

                                            
                                            public boolean itemInteractionForEntity(ItemStack stack, EntityPlayer player, EntityLivingBase entity)
                                            {
                                            if (entity instanceof EntityCreeper)
                                            {
                                            entity.setDead();
                                            –stack.stackSize;
                                            player.inventory.addItemStackToInventory(new ItemStack(Items.baked_potato));
                                            return true;
                                            }
                                            else
                                            {
                                            return false;
                                            }
                                            }
                                            
                                            
                                            1 réponse Dernière réponse Répondre Citer 2
                                            • 1
                                            • 2
                                            • 3
                                            • 4
                                            • 2 / 4
                                            • Premier message
                                              Dernier message
                                            Design by Woryk
                                            ContactMentions Légales

                                            MINECRAFT FORGE FRANCE © 2024

                                            Powered by NodeBB