Navigation

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

    Crescendo et decrescendo pour un son

    Sans suite
    1.7.10
    3
    6
    1398
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Deleted
      Deleted last edited by

      Salut à tous et à toutes, je cherche à faire un decrescendo lorsque ma musique se lance et un decrescendo quand elle doit s’arrêter cependant cela ne marche pas car la musique se lance avec une valeur mais cette dernière est bien tickée mais on dirait que le son de la musique ne veut pas se modifier

      Voilà mon code, merci d’avance ^^

      
      package mrplaigon.fr.testMod.entity;
      
      import mrplaigon.invictusserver.invictus.common.InvictusMod;
      import mrplaigon.invictusserver.invictus.handler.ItemHandler;
      import net.minecraft.entity.Entity;
      import net.minecraft.entity.EntityLivingBase;
      import net.minecraft.entity.SharedMonsterAttributes;
      import net.minecraft.entity.ai.attributes.IAttributeInstance;
      import net.minecraft.entity.item.EntityXPOrb;
      import net.minecraft.entity.monster.EntityMob;
      import net.minecraft.entity.player.EntityPlayer;
      import net.minecraft.init.Items;
      import net.minecraft.potion.Potion;
      import net.minecraft.potion.PotionEffect;
      import net.minecraft.util.ChatComponentTranslation;
      import net.minecraft.util.DamageSource;
      import net.minecraft.util.MathHelper;
      import net.minecraft.world.EnumDifficulty;
      import net.minecraft.world.World;
      
      public class EntityBoss extends EntityMob
      
      {
      
          //public int deathTicks;
      public short timerReload = 0;
          public float crescendo = 0.0F;
          public float decrescendo = 2.5F;
          public float soundMusicValue;
      
      public EntityBoss(World world) 
      {
      super(world);
      //this.setSize(1.4F, 0.9F);
              this.isImmuneToFire = true;
      }
      
      public void applyEntityAttributes() 
      {
      super.applyEntityAttributes();
      getEntityAttribute(SharedMonsterAttributes.maxHealth).setBaseValue(10.0D);
      getEntityAttribute(SharedMonsterAttributes.attackDamage).setBaseValue(20.0D);
      getEntityAttribute(SharedMonsterAttributes.movementSpeed).setBaseValue(0.25D);
      getEntityAttribute(SharedMonsterAttributes.knockbackResistance).setBaseValue(5.0D);
      }
      
      public boolean attackEntityAsMob(Entity entity)
          {
              if (super.attackEntityAsMob(entity))
              {
                  if (entity instanceof EntityPlayer)
                  {
                          ((EntityPlayer)entity).addPotionEffect(new PotionEffect(Potion.wither.id, 10 * 20, 1));             
                  }
      
                  return true;
              }
              else
              {
                  return false;
              }
          }
      
          /**
           * handles entity death timer, experience orb and particle creation
           */
          public void onDeath(DamageSource damagesource)
          {
      
      if (damagesource.getEntity() instanceof EntityPlayer)
      {
      int j = rand.nextInt(3);
      
      if (j == 0)
      {
      this.dropItem(ItemHandler.invictusCristalRare, 1);
      }
      int k;
      int i = 75000;// 75 = 0.5 level, 150 = 1 level environ, 1500 = 10 level, 150 000 = 10 levels pour 10 personnes au minimum
      
                      while (i > 0)
                      {
                          k = EntityXPOrb.getXPSplit(i);
                          i -= k;
                          this.worldObj.spawnEntityInWorld(new EntityXPOrb(this.worldObj, this.posX, this.posY, this.posZ, k));
                      }
                   stopBossMusic();
      }
          }
      
          public void onLivingUpdate()
          {
          super.onLivingUpdate();
          timerReload++;
          crescendo += 0.1F;
            decrescendo -= 0.1F;
      
            System.out.println("La valeur de crescendo" + crescendo);
      
            if (crescendo >= 2.5F)
            crescendo = 0.1F;
      
            if (decrescendo == 0.0F)
            decrescendo = 2.5F;
      
          if (timerReload <= 1)
          {
          launchBossMusic();
          System.out.println("Music du boss lancee");
          }
          else if (timerReload >= 3500)
          {
          timerReload = 0;
          }
          }
      
          private void launchBossMusic()
          {
          if (this.getHealth() > 0.0F)
               {
                  EntityPlayer entityplayer = this.worldObj.getClosestVulnerablePlayerToEntity(this, 16.0D);
                     if(entityplayer != null && this.canEntityBeSeen(entityplayer))
                     {
                         crescendo = 0.1F;
                         soundMusicValue = crescendo;
                         this.worldObj.playSoundAtEntity(this, "invictus:bossMusic", soundMusicValue, 1.0F);
                     }
               }
           }
          private void stopBossMusic()
          {
          if (this.getHealth() == 0.0F)
           {
              EntityPlayer entityplayer = this.worldObj.getClosestVulnerablePlayerToEntity(this, 16.0D);
                 if(entityplayer != null && this.canEntityBeSeen(entityplayer))
                 {
                timerReload = 0;
                     decrescendo = 2.5F;
                     soundMusicValue = decrescendo;
                 }
           }
          }
      }
      
      
      1 Reply Last reply Reply Quote 0
      • isador
        isador Moddeurs confirmés Modérateurs last edited by

        au pire tu modifie ton fichier audio, c’est chiant mais plus facile

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

          @‘isador34’:

          au pire tu modifie ton fichier audio, c’est chiant mais plus facile

          J’y ai réfléchi mais pour le decrescendo ça n’ira pas car quand il mourra si il est à 1:10 ma musique dure 3 min alors qu’avec du code j’aurai pu baisser le volume même si la musique était au début

          1 Reply Last reply Reply Quote 0
          • isador
            isador Moddeurs confirmés Modérateurs last edited by

            a oue….

            1 Reply Last reply Reply Quote 0
            • jglrxavpok
              jglrxavpok Modérateurs last edited by

              Tu lances la musique au volume max au début et puis tu ne changes pas le son après, ça risque pas de marcher.
              Cependant, je te conseille de regarder la classe SoundManager de MC et SoundSytem de paulsoce, ces deux classes permettent de changer le volume assez facilement

              Sent from my GT-I9000 using Tapatalk 2

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

                Merci xav de ta réponse 🙂
                J’ai beaucoup regardé la class SoundManager car SOundSystem était beaucoup trop gros comme class et m’avait l’air moins abordable que l’autre 
                J’ai trouvé ce topic
                http://www.minecraftforge.net/forum/index.php?topic=18542.0
                Mais avant que j’y revienne, je vais vous dire, j’au essayé la méthode stopSound mais comme l’argument était un ISound et que moi j’ai besoin d’un string j’ai essayé la méthode stop (String string) de la class SoundSystem mais j’ai besoin d’un instance et dès que je la fait toute mon entity bug et ne peut plus spawn avec ce crash report (http://hpics.li/18a4ada) , donc j’ai essaye de faire l’instance autrement comme celle dans la class SoundManager mais j’ai plein de bug au niveau des mots clé private public enfin ça cause plein d’erreur sur ma tentative d’instance.
                J’espère t’avoir bien aidé si tu peux m’en dire + je dis pas non ^^
                Merci d’avance à vous tous

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

                MINECRAFT FORGE FRANCE © 2018

                Powered by NodeBB