[1.7.10]Entity Montable,contrôlable et volable



  • Bonjour voila 1 semaine que j’essaie de codé une entity qui est montable qui peut se contrôle et qui est volable(on peut la contrôle en l'air)
    J'ai regardé dans le codage de l'horse mais je ne suis pas arrivé voila ce que j'ai fait :
    Quand j’essaie de le bougé se me tp a l'endroit initiale

    Merci de votre aide

    package ed.enderdeath.mod.Entity;
    
    import net.minecraft.entity.Entity;
    import net.minecraft.entity.EntityAgeable;
    import net.minecraft.entity.EntityCreature;
    import net.minecraft.entity.EntityLivingBase;
    import net.minecraft.entity.SharedMonsterAttributes;
    import net.minecraft.entity.monster.EntityMob;
    import net.minecraft.entity.passive.EntityAnimal;
    import net.minecraft.entity.passive.EntityCow;
    import net.minecraft.entity.passive.EntityTameable;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.util.MathHelper;
    import net.minecraft.world.World;
    
    public class DragonRed extends EntityCreature
    {
    
    public DragonRed(World p_i1681_1_) {
    super(p_i1681_1_);
    }
    
           protected void  SharedCreatureAttributes()
           {
               super.applyEntityAttributes();
               this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(10.0D);
               this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.20000000298023224D);
           }
    
    public boolean interact(EntityPlayer entityplayer)
           {
             if(riddenByEntity == null || riddenByEntity == entityplayer)
             {
               entityplayer.mountEntity(this);
               return true;
    
             }
             else
             {
                return false;
              }
           }
    
    public boolean stationary;
    
    protected boolean isMovementCeased()
          {
             return stationary;
          }
    
    public void moveEntity(double d, double d1, double d2)
       {
        if(riddenByEntity != null)
        {
    
        stationary = true;
               motionX += riddenByEntity.motionX*5; // * 0.20000000000000001D;
               motionZ += riddenByEntity.motionZ*5; // * 0.20000000000000001D;
    
               if(isCollidedHorizontally)
               {
                   isJumping = true;
               }
               super.moveEntity(motionX, motionY, motionZ);
        }else
        {
        super.moveEntity(d, d1, d2);
        stationary = true;
        }
       }
    
    public double getMountedYOffset() {
    
    return 0.2D;
    }
    
    public void onUpdate()
    {
         super.onUpdate();
         if (riddenByEntity != null) //check if there is a rider
         {
           //currentTarget = this;
           this.randomYawVelocity = 0; //try not to let the horse control where to look.
           this.rotationYaw = riddenByEntity.rotationYaw;
    
         }
           }
    }
    
    


  • Met une balise java s'il te plaît
    Merci.

    T'es sur que t'a bien copié les fonctions entier, je peux pas vérifier là mais tt à l'heure je regarderais
    Et laisse extends EntityHorse



  • Excuse-moi j'ai pas le temps


  • Administrateurs

    Je l'ai fait entre temps.

    Par contre si tu n'as pas le temps de présenter correctement ton problème, alors moi je n'ai pas le temps de t'aider.
    Désolé mais ça c'est de la mauvaise foi.

    De plus ton code est dégueulasse et il y a des incohérences. Exemple :
    protected void SharedCreatureAttributes()
    -> ne respecte pas la convention Java.
    -> n'est jamais appelé.



  • Merci et Excuse-moi je vais en tenir compte 😉



  • "Dsl" je crois que c'est interdit de parler en langage SMS, écris bien et présentes bien ton problème permet aux autres de te répondre et vite 😉


  • Correcteurs

    Je pense que tu devrais essayer déjà de faire une monture type cheval, avec un comportement basique d'apprivoisement etc. Une monture qui vole, c'est une tout autre histoire il me semble.
    Fouille un maximum dans les classes des créatures apprivoisables et notamment le cheval bien sûr.

    Farfouille aussi beaucoup sur ce forum avant, pas mal de choses concernant les montures ont pu être abordé, à toi de faire le tri et ensuite de venir demander de l'aide pour peaufiner.

    Bon apprentissage à toi



  • Merci je vais essaie de prendre des chose pour le monté,le contrôle et pour volé,je pourrais faire de augmenté le saut de l'entity, de l'augmenté et qui flotte dans les air  :D___Est ce que je peux m'inspiré de l'entity bateau?___j'abandonne…



  • re alors j'ai modifié mon codage pour que sa soit juste une entity terrestre contrôlable mais j'ai plusieurs problèmes 1 mon entity est bloqué sur l'animation sauté 
    2 mon entity ne peux pas jump
    3 j'aimerais modifié le render
    4 il ne peut pas avancé sauf quand je charge et saute

    alors mon code ressemble à sa

    package ed.enderdeath.mod.entity;
    
    import net.minecraft.entity.EntityAgeable;
    import net.minecraft.entity.SharedMonsterAttributes;
    import net.minecraft.entity.passive.EntityHorse;
    import net.minecraft.entity.player.EntityPlayer;
    import net.minecraft.util.StatCollector;
    import net.minecraft.world.World;
    
    public  class EntityDragonDindeSauvage extends EntityHorse
    {
    public EntityDragonDindeSauvage(World model)
    {
    super(model);
    }
    
    public void applyEntityAttributes()
        {
            super.applyEntityAttributes();
            this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(3D);    
            this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.5D);
        }  
    
    public boolean canBeSteered()
        {
            return true;
        }
    
        public boolean isHorseSaddled()
        {
            return true;
        }
    
    public boolean isHorseJumping()
        {
            return true;
        }
    
    public boolean isTame()
        {
            return true;
        }
    
        public boolean isChested()
        {
            return false;
        } 
    
    public boolean interact(EntityPlayer par1EntityPlayer)
      {
          if (super.interact(par1EntityPlayer))
          {
              par1EntityPlayer.mountEntity(this);
              return true;
          }
          for (int i = 0; i < 2; ++i)
          {
              this.worldObj.spawnParticle("largesmoke", this.posX + (this.rand.nextDouble() - 0.5D) * (double)this.width, this.posY + this.rand.nextDouble() * (double)this.height, this.posZ + (this.rand.nextDouble() - 0.5D) * (double)this.width, 0.0D, 0.0D, 0.0D);
          }
          return false;
      }
    
    public boolean jumpRearingCounter()
    {
    return true;
    }
    public boolean jumpPower()
    {
    return true;
    }
    public boolean horsejumping()
    {
    return true;
    }
    public boolean isEatingHaystack()
    {
    return true;
    }
    public boolean isRearing()
    {
    return true;
    }
    @Override
    public EntityAgeable createChild(EntityAgeable p_90011_1_)
    {
    return null;
    }
    
    }
    
    

    Edit je tient à dire que ce codage est assez vieux et un pique un peu les yeux



  • public boolean isHorseJumping()
    {
    return true;
    }
    

    Et tout les autres fonctions où tu as laissé true font que tu as ces problèmes, regarde ce que retourne cette fonction dans EntityHorse.



  • pour le saut c'ets réglé mais j'ai bout à cherché pour le blocage et qui se débloque quand on saute(je sais pas si cette phrase est française ) ni selle du blocage de l'animation



  • Autre petite question comment on peux modifié le saut de l'entity 
    j'ai éssayé sa

    private static final IAttribute horseJumpStrength = (new RangedAttribute("horse.jumpStrength", 1.7D, 0.0D, 4.0D)).setDescription("Jump Strength").setShouldWatch(true);
    public void applyEntityAttributes()
        {
    
            super.applyEntityAttributes();
            this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(9D);    
            this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(1.5D);
            this.getAttributeMap().registerAttribute(horseJumpStrength);
    
        }  
    
    

    Mais l'entity ne spawn méme plus

    Edit:je pense qui me manque quelque chose 
    et autre question on peut modifié le render?



  • Pour le render c'est bon mais pour le amélioré le saut + arrête l'animation du cheval qui saute  et que il faut sauté pour débloqué le cheval pour qui avance quand on le chevauche



  • résolu :3