MFF

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

    Créer une monture attitude + son

    Planifier Épinglé Verrouillé Déplacé Résolu 1.7.x
    1.7.10
    22 Messages 5 Publieurs 4.7k 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.
    • elias54E Hors-ligne
      elias54 Administrateurs
      dernière édition par

      Si le setBaseValue fonctionne pas, va falloir utiliser les UUID des Attributes… 😕 Et là c’est tout un autre système dont je ne saurais te donner de réponse. (Le zombie a un UUID pour chaque attribute modifiers…)

      Mon site | GitHub

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

        @‘robin4002’:

        Le bon fichier json :

        {
         "moteur": {
           "category": "master",
           "sounds": [
             {
               "name": "moteur",
               "stream": true
             }
           ]
         }
        }
        

        stream si le son est long, sinon false. Le fichier doit être au format ogg et doit se trouver dans le dossier assets/modid/sounds (avec un s).

        Pour la vitesse -> il faut utiliser les attribues.

        Parfait pour le son (je précise pour les futurs moddeurs en herbe qui passent que le json est aussi situé avec les fichiers lang, textures et sounds.)

        Du coup pour la vitesse moi j’ai:

        public void applyEntityAttributes()
            {
                super.applyEntityAttributes();
                this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(3.0D);    
                this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.699999988079071D);
            }  
        

        En mettant .SetBaseValue(6D) par exemple je n’ai aucun changement notable. Je me trompe en essayant d’augmenter la vitesse comme ça?

        Edit: Ah bah je vais chercher de ce côté alors à tâton.

        Edit2: Voici ce que je trouve pour le moment ```java
            private static final UUID sprintingSpeedBoostModifierUUID = UUID.fromString(“662A6B8D-DA3E-4C1C-8813-96EA6097278D”);

        private static final AttributeModifier sprintingSpeedBoostModifier = (new AttributeModifier(sprintingSpeedBoostModifierUUID, “Sprinting speed boost”, 2D, 2)).setSaved(false);

        ```java
        public void applyEntityAttributes()
            {
                super.applyEntityAttributes();
                this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(3.0D);    
                this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.4D);
            }  
        
            public void setSprinting(boolean p_70031_1_)
            {
                super.setSprinting(p_70031_1_);
                IAttributeInstance iattributeinstance = this.getEntityAttribute(SharedMonsterAttributes.movementSpeed);
        
                if (iattributeinstance.getModifier(sprintingSpeedBoostModifierUUID) != null)
                {
                    iattributeinstance.removeModifier(sprintingSpeedBoostModifier);
                }
        
                if (p_70031_1_)
                {
                    iattributeinstance.applyModifier(sprintingSpeedBoostModifier);
                }
            }
        

        Je poursuis sur cette voie ou c’est mal barré?

        1 réponse Dernière réponse Répondre Citer 0
        • elias54E Hors-ligne
          elias54 Administrateurs
          dernière édition par

          Tu peux pas utiliser cet UUID, elle est déjà utilisé par le mob en question. Va falloir trouver celle de ton entité 😕

          Mon site | GitHub

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

            @‘elias54’:

            Tu peux pas utiliser cet UUID, elle est déjà utilisé par le mob en question. Va falloir trouver celle de ton entité 😕

            Et techniquement je dois regarder de quel côté? ça se déclare?
            plonge dans un océan d’ignorance

            1 réponse Dernière réponse Répondre Citer 0
            • elias54E Hors-ligne
              elias54 Administrateurs
              dernière édition par

              @‘Toutoune1008’:

              @‘elias54’:

              Tu peux pas utiliser cet UUID, elle est déjà utilisé par le mob en question. Va falloir trouver celle de ton entité 😕

              Et techniquement je dois regarder de quel côté? ça se déclare?
              plonge dans un océan d’ignorance

              Je comprend les UUID des joueurs mais ceux des mobs c’est un système modifié et utilisé bizarrement par mojang, donc moi même j’ai pas encore compris.

              Mon site | GitHub

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

                Et je pourrais plutôt passer par des effets de potions au pire?
                Créer un event ou un truc du genre qui contournerait l’Attributes…

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

                  Nop les event ne changeront rien. A ma connaissance Forge 1.7 x ne possède pas d’event appelé lorsqu’une entity bouge. La solution de la potion n’est pas si mauvaise, après si le fait de voir les particules te dérange, faudra encore trouver autre chose ^^’

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

                    @‘Julot10085’:

                    Nop les event ne changeront rien. A ma connaissance Forge 1.7 x ne possède pas d’event appelé lorsqu’une entity bouge. La solution de la potion n’est pas si mauvaise, après si le fait de voir les particules te dérange, faudra encore trouver autre chose ^^’

                    D’acc, je dois passer par quelle fonction pour appliquer mon effet de potion à l’entité stp?

                    Edit:

                    Ah oui, petit tracas aussi, mon véhicule se promène par-ci par-là comme un animal basique évidemment, j’ai essayé de trouver quelle fonction fournissait l’IA pour ça ou autre et souvent en modifiant l’animal ne bougeait tout simplement plus du tout (surtout monté) donc si vous avez une piste je suis preneur, merci.

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

                      @‘elias54’:

                      @‘Toutoune1008’:

                      @‘elias54’:

                      Tu peux pas utiliser cet UUID, elle est déjà utilisé par le mob en question. Va falloir trouver celle de ton entité 😕

                      Et techniquement je dois regarder de quel côté? ça se déclare?
                      plonge dans un océan d’ignorance

                      Je comprend les UUID des joueurs mais ceux des mobs c’est un système modifié et utilisé bizarrement par mojang, donc moi même j’ai pas encore compris.

                      Les UUID sont utilisés pour gagner en performance réseau.
                      Lorsqu’on parle d’une entité, le serveur et les clients s’échange un nombre. C’est bien plus performant que de s’échanger une version sérialisée de l’objet 😉

                      –------------------------------------------------------------------------------------
                      Si tu trouves mon intervention pertinente, n'hésite pas a m…

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

                        Bon aux dernières nouvelles j’arrive à faire que le kart arrête de se balader mais il continue à tourner un peu sur lui à chercher à gauche et à droite.

                        Si quelqu’un a une idée pour empêcher ça 😃

                        1 réponse Dernière réponse Répondre Citer 0
                        • elias54E Hors-ligne
                          elias54 Administrateurs
                          dernière édition par

                          @‘Toutoune1008’:

                          Bon aux dernières nouvelles j’arrive à faire que le kart arrête de se balader mais il continue à tourner un peu sur lui à chercher à gauche et à droite.

                          Si quelqu’un a une idée pour empêcher ça 😃

                          motionX = motionY = motionZ = 0.0F; quand il est en idle.

                          Mon site | GitHub

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

                            C’est pas plutôt rotationYaw et rotationPitch, pour qu’il s’arrête de tourner sur lui même ?

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

                              Pour le moment ma classe c’est:

                              public  class EntityKart extends EntityHorse
                              {
                              private int field_110285_bP;
                              private boolean field_110294_bI;
                              
                                  public EntityKart(World model)
                                  {
                                  super(model);
                                  }
                              
                                  protected boolean isMovementCeased()
                                  {
                                      return true;
                                  }
                              
                                  protected boolean isAIEnabled()
                                  {
                                      return false;
                                  }
                              
                                  public void playLivingSound()
                                  {
                                  worldObj.playSoundAtEntity(this, "modhc:klaxon", 1.0F, 1.0F);
                                  }
                              
                              public double getMountedYOffset()
                                  {
                                      return (double)this.height * 0.15D;
                                  }
                              
                                  public void applyEntityAttributes()
                                  {
                                      super.applyEntityAttributes();
                                      this.getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(3.0D);    
                                      this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(10.0D);
                                  }  
                              
                              public boolean canBeSteered()
                                  {
                                      return true;
                                  }
                              
                                  public boolean isHorseSaddled()
                                  {
                                      return true;
                                  }
                              
                              // public boolean isTame()
                              //    {
                              //        return true;
                              //    }
                              
                                  public boolean setTamedBy(EntityPlayer p_110263_1_)
                                  {
                                      this.func_152120_b(p_110263_1_.getUniqueID().toString());
                                      this.setHorseTamed(true);
                                      return true;
                                  }
                              
                                  public boolean isChested()
                                  {
                                      return false;
                                  }
                              
                                  public boolean isEatingHaystack()
                                  {
                                      return false;
                                  }
                              
                                  public boolean isRearing()
                                  {
                                      return false;
                                  }
                              
                                  public boolean func_110205_ce()
                                  {
                                      return false;
                                  }
                              
                                  public boolean getHasReproduced()
                                  {
                                      return false;
                                  }
                              
                                  public boolean allowLeashing()
                                  {
                                      return false;
                                  }
                              
                                  public boolean canBePushed()
                                  {
                                      return true;
                                  }
                              
                                  public boolean attackEntityFrom(DamageSource p_70097_1_, float p_70097_2_)
                                  {
                                      Entity entity = p_70097_1_.getEntity();
                                      return this.riddenByEntity != null && this.riddenByEntity.equals(entity) ? false : super.attackEntityFrom(p_70097_1_, p_70097_2_);
                                  }
                              
                                  protected Item getDropItem()
                                  {
                                      return null;
                                  }
                              
                                  protected float getSoundVolume()
                                  {
                                      return 0.0F;
                                  }
                              
                                  public boolean canBreatheUnderwater()
                                  {
                                      return false;
                                  }
                              
                                  protected int getExperiencePoints(EntityPlayer p_70693_1_)
                                  {
                                          return this.experienceValue = 0;
                                  }
                              
                                  public void openGUI(EntityPlayer p_110199_1_)
                                  {
                                      if (!this.worldObj.isRemote && (this.riddenByEntity == null || this.riddenByEntity == p_110199_1_) && this.isTame())
                                      {
                                      worldObj.playSoundAtEntity(this, "modhc:klaxon", 1.0F, 1.0F);
                                      }
                                  }
                              
                                  public void moveEntityWithHeading(float p_70612_1_, float p_70612_2_)
                                  {
                                      if (this.riddenByEntity != null && this.riddenByEntity instanceof EntityLivingBase && this.isHorseSaddled())
                                      {
                                          this.prevRotationYaw = this.rotationYaw = this.riddenByEntity.rotationYaw;
                                          this.rotationPitch = this.riddenByEntity.rotationPitch * 0.5F;
                                          this.setRotation(this.rotationYaw, this.rotationPitch);
                                          this.rotationYawHead = this.renderYawOffset = this.rotationYaw;
                                          p_70612_1_ = ((EntityLivingBase)this.riddenByEntity).moveStrafing * 0.5F;
                                          p_70612_2_ = ((EntityLivingBase)this.riddenByEntity).moveForward;
                              
                                          if (p_70612_2_ <= 0.0F)
                                          {
                                              p_70612_2_ *= 0.25F;
                                              this.field_110285_bP = 0;
                                          }
                              
                                          if (this.onGround && this.jumpPower == 0.0F && this.isRearing() && !this.field_110294_bI)
                                          {
                                              p_70612_1_ = 0.0F;
                                              p_70612_2_ = 0.0F;
                                          }
                              
                                          if (this.jumpPower > 0.0F && !this.isHorseJumping() && this.onGround)
                                          {
                                              this.motionY = this.getHorseJumpStrength() * (double)this.jumpPower;
                              
                                              if (this.isPotionActive(Potion.jump))
                                              {
                                                  this.motionY += (double)((float)(this.getActivePotionEffect(Potion.jump).getAmplifier() + 1) * 0.1F);
                                              }
                              
                                              this.setHorseJumping(true);
                                              this.isAirBorne = true;
                              
                                              if (p_70612_2_ > 0.0F)
                                              {
                                                  float f2 = MathHelper.sin(this.rotationYaw * (float)Math.PI / 180.0F);
                                                  float f3 = MathHelper.cos(this.rotationYaw * (float)Math.PI / 180.0F);
                                                  this.motionX += (double)(-0.4F * f2 * this.jumpPower);
                                                  this.motionZ += (double)(0.4F * f3 * this.jumpPower);
                                                  this.playSound("mob.horse.jump", 0.0F, 0.0F); //Son au moment du son
                                              }
                              
                                              this.jumpPower = 0.0F;
                                              net.minecraftforge.common.ForgeHooks.onLivingJump(this);
                                          }
                              
                                          this.stepHeight = 1.0F;
                                          this.jumpMovementFactor = this.getAIMoveSpeed() * 0.1F;
                              
                                          if (!this.worldObj.isRemote)
                                          {
                                              this.setAIMoveSpeed((float)this.getEntityAttribute(SharedMonsterAttributes.movementSpeed).getAttributeValue());
                                              super.moveEntityWithHeading(p_70612_1_, p_70612_2_);
                                          }
                              
                                          if (this.onGround)
                                          {
                                              this.jumpPower = 0.0F;
                                              this.setHorseJumping(false);
                                          }
                              
                                          this.prevLimbSwingAmount = this.limbSwingAmount;
                                          double d1 = this.posX - this.prevPosX;
                                          double d0 = this.posZ - this.prevPosZ;
                                          float f4 = MathHelper.sqrt_double(d1 * d1 + d0 * d0) * 4.0F;
                              
                                          if (f4 > 1.0F)
                                          {
                                              f4 = 1.0F;
                                          }
                              
                                          this.limbSwingAmount += (f4 - this.limbSwingAmount) * 0.4F;
                                          this.limbSwing += this.limbSwingAmount;
                                      }
                                      else
                                      {
                                          this.stepHeight = 0.5F;
                                          this.jumpMovementFactor = 0.02F;
                                          super.moveEntityWithHeading(p_70612_1_, p_70612_2_);
                                      }
                                  }
                              
                                  protected void func_145780_a(int p_145780_1_, int p_145780_2_, int p_145780_3_, Block p_145780_4_)
                                  {
                                      Block.SoundType soundtype = p_145780_4_.stepSound;
                              
                                      if (this.worldObj.getBlock(p_145780_1_, p_145780_2_ + 1, p_145780_3_) == Blocks.snow_layer)
                                      {
                                          soundtype = Blocks.snow_layer.stepSound;
                                      }
                              
                                      if (!p_145780_4_.getMaterial().isLiquid())
                                      {
                                          int l = this.getHorseType();
                              
                                          if (this.riddenByEntity != null && l != 1 && l != 2)
                                          {
                                              ++this.field_110285_bP;
                              
                                              if (this.field_110285_bP > 5 && this.field_110285_bP % 3 == 0)
                                              {
                                                  this.playSound("mob.horse.gallop", soundtype.getVolume() * 0.0F, soundtype.getPitch()); //son activé souvent
                              
                                                  if (l == 0 && this.rand.nextInt(10) == 0)
                                                  {
                                                      this.playSound("mob.horse.breathe", soundtype.getVolume() * 0.0F, soundtype.getPitch());
                                                  }
                                              }
                                              else if (this.field_110285_bP <= 5)
                                              {
                                                  this.playSound("mob.horse.wood", soundtype.getVolume() * 0.0F, soundtype.getPitch());
                                              }
                                          }
                                          else if (soundtype == Block.soundTypeWood)
                                          {
                                              this.playSound("mob.horse.wood", soundtype.getVolume() * 0.0F, soundtype.getPitch());
                                          }
                                          else
                                          {
                                              this.playSound("mob.horse.soft", soundtype.getVolume() * 0.0F, soundtype.getPitch());
                                          }
                                      }
                                  }
                              
                                  protected void fall(float p_70069_1_)
                                  {
                                      if (p_70069_1_ > 1.0F)
                                      {
                                      this.playSound("modhc:moteur", 0.4F, 1.0F);
                                      }
                              
                                      int i = MathHelper.ceiling_float_int(p_70069_1_ * 0.5F - 3.0F);
                              
                                      if (i > 0)
                                      {
                                          this.attackEntityFrom(DamageSource.fall, (float)i);
                              
                                          if (this.riddenByEntity != null)
                                          {
                                              this.riddenByEntity.attackEntityFrom(DamageSource.fall, (float)i);
                                          }
                              
                                          Block block = this.worldObj.getBlock(MathHelper.floor_double(this.posX), MathHelper.floor_double(this.posY - 0.2D - (double)this.prevRotationYaw), MathHelper.floor_double(this.posZ));
                              
                                          if (block.getMaterial() != Material.air)
                                          {
                                              Block.SoundType soundtype = block.stepSound;
                                              this.worldObj.playSoundAtEntity(this, soundtype.getStepResourcePath(), soundtype.getVolume() * 0.0F, soundtype.getPitch() * 0.0F);
                                          }
                                      }
                                  }    
                              
                              public boolean interact(EntityPlayer par1EntityPlayer)
                                {
                                    if (super.interact(par1EntityPlayer))
                                    {
                                    worldObj.playSoundAtEntity(this, "modhc:moteur", 1.0F, 1.0F);
                                    par1EntityPlayer.mountEntity(this);
                                    return true;
                                    }
                                    return false;
                                }
                              
                              @Override
                              public EntityAgeable createChild(EntityAgeable p_90011_1_) {
                              return null;
                              }
                              }
                              

                              Donc je dois toucher à quoi où?
                              J’avais tester de toucher le pitch etc, le problème étant que cela empêchait tout mouvement.
                              Où se situe la ligne où mon kart est en idle stp?

                              1 réponse Dernière réponse Répondre Citer 0
                              • elias54E Hors-ligne
                                elias54 Administrateurs
                                dernière édition par

                                C’est dans on living update que je parlais de mettre ce que j’ai cité.

                                tu te débrouille avec une condition après

                                Mon site | GitHub

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

                                  Ouki, merci , je tiendrai au jus si des fois des passants auront besoin de l’info

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

                                    Voilà alors je viens donner des nouvelles.
                                    Pour le fait d’empêcher le mob de tourner, le truc du motionX=…=0.0F; sur un onLivingUpDate avec conditions à modifier, eh bien ça a fonctionné merci.
                                    J’ai réussis à modifier la vitesse de déplacement mais en passant par les attributes via un onSpawnWithEgg.

                                    Maintenant je bute sur le fait de pouvoir tuer l’entité, comme un /butcher ne marche pas, j’ai essayé de passer via Despawn:

                                     protected void despawnEntity()
                                        {
                                        if (ticksExisted > 120)
                                        {
                                        this.setDead();
                                        }
                                        }
                                    

                                    Mais une fois sur serveur ce n’est pas bon, donc maintenant je cherche du côté de l’entityAge.

                                    Edit: Bon au final j’ai trouvé, via onLivingUpDate encore une fois.

                                    1 réponse Dernière réponse Répondre Citer 0
                                    • 1
                                    • 2
                                    • 1 / 2
                                    • Premier message
                                      Dernier message
                                    Design by Woryk
                                    ContactMentions Légales

                                    MINECRAFT FORGE FRANCE © 2024

                                    Powered by NodeBB