MFF

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

    Couper les musiques d'origine

    Planifier Épinglé Verrouillé Déplacé Résolu Anciennes versions
    1.6.x
    35 Messages 3 Publieurs 9.2k 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.
    • AxaurusA Hors-ligne
      Axaurus
      dernière édition par

      Salut
      Merci et désolée de ne pas avoir répondu plus tôt

      Mes erreurs :

      mc
      

      Que je fasse n’importe quoi, c’est le mot d’après qui bug.

      rand
      

      Que je fasse n’importe quoi, c’est nextInt qui bug.

      (new PlayBackgroundMusicEvent(this, soundpoolentry));
      

      Le problème, c’est que les 2 options pour régler cette erreur modifient les sources de Forges.

      Merci d’avance

      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

        Oups, j’ai édité, j’ai supprimé la ligne inutile.
        Tu as bien mit ce code dans ton tickhandler à la place du son actuelle ?

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

          J’ai les même erreurs que tout a l’heure, juste le rand en moins.
          Merci d’avance

          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 peux avoir ton code entier du tick handler ?

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

              package This_is_Halloween;
              
              import java.util.EnumSet;
              
              import net.minecraftforge.client.event.sound.PlayBackgroundMusicEvent;
              import net.minecraftforge.event.ForgeSubscribe;
              import cpw.mods.fml.common.ITickHandler;
              import cpw.mods.fml.common.TickType;
              
              public class ClientTickHandler implements ITickHandler
              {
              @Override
              public void tickStart(EnumSet <ticktype>type, Object… tickData)
              {
              
              }
              @ForgeSubscribe
              public void onSoundPlayed(PlayBackgroundMusicEvent event)
              {
              event.setCanceled(true);
              }
              @Override
              public void tickEnd(EnumSet <ticktype>type, Object... tickData)
              {
              SoundPoolEntry soundpoolentry = mc.sndManager.soundPoolMusic.getRandomSoundFromSoundPool("ta music");
              soundpoolentry = SoundEvent.getResult(new PlayBackgroundMusicEvent(this, soundpoolentry));
              
              if (soundpoolentry != null)
              {
              mc.ticksBeforeMusic = this.rand.nextInt(3060) + 3060;
              mc.sndSystem.backgroundMusic("BgMusic", soundpoolentry.func_110457_b(), soundpoolentry.func_110458_a(), false);
              mc.sndSystem.setVolume("BgMusic", this.options.musicVolume);
              mc.sndSystem.play("BgMusic");
              }
              }
              @Override
              public EnumSet <ticktype>ticks()
              {
              return EnumSet.of(TickType.PLAYER);
              }
              
              @Override
              public String getLabel()
              {
              return "snow tick handler";
              }
              }
              ```</ticktype></ticktype></ticktype>
              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

                J’ai pas dit de supprimer tout l’ancien code o_O
                Juste le code qui jouait le son, donc world.playsound.

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

                  Ok,
                  j’ai des erreurs résolus, mais j’ai toujours options qui bug et

                  (new PlayBackgroundMusicEvent(this, soundpoolentry));
                  

                  Et j’ai aussi une nouvelle erreur :
                  sndSystem

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

                    Je l’ai mis dans TickEnd

                    Vous pensez que c’est à cause de ça?___
                    Ou…. Je crois peut être savoir pourquoi y’a des erreurs, mais là je peux pas coder.
                    Je vous dirai la réponse demain.

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

                      Salut
                      J’ai tester, non je ne vois pas où peut être l’erreur.

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

                        J’ai recréer le code, réessayer, mais ça ne marche toujours pas
                        Un de vous a t-il une idée svp ?

                        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 vois pas, tu pourrais me renvoyez le code que tu as dans ta classe principale + ton tickhandler pour que je puisse denouveau faire des tests en local ?

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

                            ClientTickHandler

                            package This_is_Halloween;
                            
                            import java.util.EnumSet;
                            import java.util.Random;
                            
                            import net.minecraft.block.Block;
                            import net.minecraft.client.Minecraft;
                            import net.minecraft.client.audio.SoundPoolEntry;
                            import net.minecraft.util.MathHelper;
                            import net.minecraft.world.biome.BiomeGenBase;
                            import net.minecraftforge.client.event.sound.PlayBackgroundMusicEvent;
                            import net.minecraftforge.client.event.sound.SoundEvent;
                            import cpw.mods.fml.client.FMLClientHandler;
                            import cpw.mods.fml.common.ITickHandler;
                            import cpw.mods.fml.common.TickType;
                            
                            public class ClientTickHandler implements ITickHandler
                            {
                            
                            @Override
                            public void tickStart(EnumSet <ticktype>type, Object… tickData)
                            {
                            
                            }
                            
                            @Override
                            public void tickEnd(EnumSet <ticktype>type, Object... tickData)
                            {
                            Minecraft mc = FMLClientHandler.instance().getClient();
                            Random rand = mc.theWorld.rand;
                            BiomeGenBase biome = mc.theWorld.getBiomeGenForCoords((int)mc.thePlayer.posX, (int)mc.thePlayer.posZ);
                            
                            if(rand.nextInt(15) > 13)
                            {
                            System.out.println(biome.getFloatTemperature());
                            int i = MathHelper.floor_double(mc.thePlayer.posX);
                            int k = MathHelper.floor_double(mc.thePlayer.posZ);
                            int k1 = i + rand.nextInt(10) - rand.nextInt(10);
                            int l1 = k + rand.nextInt(10) - rand.nextInt(10);
                            int i2 = mc.theWorld.getPrecipitationHeight(k1, l1);
                            int j2 = mc.theWorld.getBlockId(k1, i2 - 1, l1);
                            float f1 = rand.nextFloat();
                            float f2 = rand.nextFloat();
                            double d0 = (double)((float)k1 + f1);
                            double d1 = (double)((float)i2 + 0.1F) - Block.blocksList[j2].getBlockBoundsMinY();
                            double d2 = (double)((float)l1 + f2);
                            boolean biomeneige = biome.getFloatTemperature() == 0.05F || biome.getFloatTemperature() == 0.0F;
                            if(mc.theWorld.isRaining() && biomeneige)
                            {
                            if(d1 > mc.thePlayer.posY + 1.0D && mc.theWorld.getPrecipitationHeight(MathHelper.floor_double(mc.thePlayer.posX), MathHelper.floor_double(mc.thePlayer.posZ)) > MathHelper.floor_double(mc.thePlayer.posY))
                            {
                            SoundPoolEntry soundpoolentry = mc.sndManager.soundPoolMusic.getRandomSoundFromSoundPool("ta music");
                            soundpoolentry = SoundEvent.getResult(new PlayBackgroundMusicEvent(this, soundpoolentry));
                            
                            if (soundpoolentry != null)
                            {
                            mc.ticksBeforeMusic = this.rand.nextInt(3060) + 3060;
                            mc.sndSystem.backgroundMusic("BgMusic", soundpoolentry.func_110457_b(), soundpoolentry.func_110458_a(), false);
                            mc.sndSystem.setVolume("BgMusic", this.options.musicVolume);
                            mc.sndSystem.play("BgMusic");
                            }}
                            else
                            {
                            SoundPoolEntry soundpoolentry = mc.sndManager.soundPoolMusic.getRandomSoundFromSoundPool("ta music");
                            soundpoolentry = SoundEvent.getResult(new PlayBackgroundMusicEvent(this, soundpoolentry));
                            
                            if (soundpoolentry != null)
                            {
                            mc.ticksBeforeMusic = this.rand.nextInt(3060) + 3060;
                            mc.sndSystem.backgroundMusic("BgMusic", soundpoolentry.func_110457_b(), soundpoolentry.func_110458_a(), false);
                            mc.sndSystem.setVolume("BgMusic", this.options.musicVolume);
                            mc.sndSystem.play("BgMusic");
                            }}
                            }
                            }
                            }
                            
                            @Override
                            public EnumSet <ticktype>ticks()
                            {
                            return EnumSet.of(TickType.PLAYER);
                            }
                            
                            @Override
                            public String getLabel()
                            {
                            return "snow tick handler";
                            }
                            
                            }
                            

                            Classe principale(dans la méthode load) :

                            TickRegistry.registerTickHandler(new ClientTickHandler(), Side.CLIENT);
                            ```</ticktype></ticktype></ticktype>
                            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

                              Le tick handler :

                              package tutoriel.common;
                              
                              import java.util.EnumSet;
                              import java.util.Random;
                              
                              import net.minecraft.block.Block;
                              import net.minecraft.client.Minecraft;
                              import net.minecraft.client.audio.SoundPoolEntry;
                              import net.minecraft.client.settings.GameSettings;
                              import net.minecraft.util.MathHelper;
                              import net.minecraft.world.biome.BiomeGenBase;
                              import net.minecraftforge.client.event.sound.PlayBackgroundMusicEvent;
                              import net.minecraftforge.client.event.sound.SoundEvent;
                              import cpw.mods.fml.client.FMLClientHandler;
                              import cpw.mods.fml.common.ITickHandler;
                              import cpw.mods.fml.common.TickType;
                              
                              public class ClientTickHandler implements ITickHandler
                              {
                              public int timer = 3060;
                              
                              @Override
                              public void tickStart(EnumSet <ticktype>type, Object… tickData)
                              {
                              
                              }
                              
                              @Override
                              public void tickEnd(EnumSet <ticktype>type, Object... tickData)
                              {
                              Minecraft mc = FMLClientHandler.instance().getClient();
                              Random rand = mc.theWorld.rand;
                              BiomeGenBase biome = mc.theWorld.getBiomeGenForCoords((int)mc.thePlayer.posX, (int)mc.thePlayer.posZ);
                              
                              if(rand.nextInt(15) > 13)
                              {
                              System.out.println(biome.getFloatTemperature());
                              int i = MathHelper.floor_double(mc.thePlayer.posX);
                              int k = MathHelper.floor_double(mc.thePlayer.posZ);
                              int k1 = i + rand.nextInt(10) - rand.nextInt(10);
                              int l1 = k + rand.nextInt(10) - rand.nextInt(10);
                              int i2 = mc.theWorld.getPrecipitationHeight(k1, l1);
                              int j2 = mc.theWorld.getBlockId(k1, i2 - 1, l1);
                              float f1 = rand.nextFloat();
                              float f2 = rand.nextFloat();
                              double d0 = (double)((float)k1 + f1);
                              double d1 = (double)((float)i2 + 0.1F) - Block.blocksList[j2].getBlockBoundsMinY();
                              double d2 = (double)((float)l1 + f2);
                              boolean biomeneige = biome.getFloatTemperature() == 0.05F || biome.getFloatTemperature() == 0.0F;
                              if(mc.theWorld.isRaining() && biomeneige)
                              {
                              System.out.println(timer);
                              if(timer == 3060)
                              {
                              if(d1 > mc.thePlayer.posY + 1.0D && mc.theWorld.getPrecipitationHeight(MathHelper.floor_double(mc.thePlayer.posX), MathHelper.floor_double(mc.thePlayer.posZ)) > MathHelper.floor_double(mc.thePlayer.posY))
                              {
                              SoundPoolEntry soundpoolentry = mc.sndManager.soundPoolMusic.getRandomSoundFromSoundPool("modtutoriel:test");
                              soundpoolentry = SoundEvent.getResult(new PlayBackgroundMusicEvent(mc.sndManager, soundpoolentry));
                              
                              if(soundpoolentry != null)
                              {
                              mc.sndManager.sndSystem.backgroundMusic("BgMusic", soundpoolentry.func_110457_b(), soundpoolentry.func_110458_a(), false);
                              mc.sndManager.sndSystem.setVolume("BgMusic", 1.0F);
                              mc.sndManager.sndSystem.play("BgMusic");
                              }
                              }
                              else
                              {
                              SoundPoolEntry soundpoolentry = mc.sndManager.soundPoolMusic.getRandomSoundFromSoundPool("modtutoriel:test");
                              soundpoolentry = SoundEvent.getResult(new PlayBackgroundMusicEvent(mc.sndManager, soundpoolentry));
                              
                              if(soundpoolentry != null)
                              {
                              mc.sndManager.sndSystem.backgroundMusic("BgMusic", soundpoolentry.func_110457_b(), soundpoolentry.func_110458_a(), false);
                              mc.sndManager.sndSystem.setVolume("BgMusic", 1.0F);
                              mc.sndManager.sndSystem.play("BgMusic");
                              }
                              }
                              timer = 0;
                              }
                              else
                              {
                              timer++;
                              }
                              }
                              }
                              }
                              
                              @Override
                              public EnumSet <ticktype>ticks()
                              {
                              return EnumSet.of(TickType.PLAYER);
                              }
                              
                              @Override
                              public String getLabel()
                              {
                              return "snow tick handler";
                              }
                              
                              }
                              

                              À ajouter dans l’event sound :

                              event.manager.addMusic("modtutoriel:test.ogg");
                              

                              Et le son dans /assets/modtutoriel/music/test.ogg

                              Testé & approuvé :p</ticktype></ticktype></ticktype>

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

                                Merci
                                Mais est-ce que je dois laissez ça ? :

                                @ForgeSubscribe
                                public void onSoundPlayed(PlayBackgroundMusicEvent event)
                                {
                                event.setCanceled(true);
                                }
                                
                                

                                J’ai aussi mis Le MUSIC_INTERVAL à 1 juste pour tester.

                                Et si je laisse le code, Minecraft crash, et si je l’enlève, ça joue aussi les autres musiques.
                                Merci d’ava,ce

                                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

                                  Enleve, on peut pas Cancel la music apparemment. J’ai vraiment pas d’idée pour la musique, il faudra modifier
                                  private int ticksBeforeMusic; dans net.minecraft.client.audio.SoundManager, le problème c’est que la variable est private 😕
                                  Au pire, il faudrait voir avec la réflexion si c’est possible.

                                  Ha sinon, remplace ça :
                                  mc.sndManager.sndSystem.setVolume(“BgMusic”, 1.0F);
                                  par ça :
                                  mc.sndManager.sndSystem.setVolume(“BgMusic”, mc.gameSettings.musicVolume);
                                  Comme ça le son sera prit dans les options 🙂

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

                                    Mais comment je fais pour enlever les musiques originaux, alors ?___
                                    Peut être en utilisant les reflections avec le fichier des musiques, mais je ne sais pas où il se trouve. Et j’ai chercher partout.

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

                                      Personne ?

                                      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

                                        Après

                                        if(timer == 3060)
                                        {
                                        

                                        Ajoute ce code :

                                        mc.sndManager.sndSystem.stop("BgMusic");
                                        ObfuscationReflectionHelper.setPrivateValue(SoundManager.class, mc.sndManager, 3060, "ticksBeforeMusic", "");
                                        

                                        Le premier devrait stoper la musique en cours, j’ai pas eu l’occasion de tester. Le deuxième change la valeur ticksBeforeMusic sur 3060, donc ça laisse le temps à ta musique de ce jouer sans qu’une autre vienne pas dessus. J’ai vérifie avec le System.out.prinln, ça marche, la valeur est bien modifié.

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

                                          Salut
                                          Merci, mais ça ne marche pas
                                          Voilà mon code :

                                          package This_is_Halloween;
                                          
                                          import java.util.EnumSet;
                                          import java.util.Random;
                                          
                                          import net.minecraft.block.Block;
                                          import net.minecraft.client.Minecraft;
                                          import net.minecraft.client.audio.SoundManager;
                                          import net.minecraft.client.audio.SoundPoolEntry;
                                          import net.minecraft.client.settings.GameSettings;
                                          import net.minecraft.util.MathHelper;
                                          import net.minecraft.world.biome.BiomeGenBase;
                                          import net.minecraftforge.client.event.sound.PlayBackgroundMusicEvent;
                                          import net.minecraftforge.client.event.sound.SoundEvent;
                                          import cpw.mods.fml.client.FMLClientHandler;
                                          import cpw.mods.fml.common.ITickHandler;
                                          import cpw.mods.fml.common.ObfuscationReflectionHelper;
                                          import cpw.mods.fml.common.TickType;
                                          
                                          public class ClientTickHandler implements ITickHandler
                                          {
                                          public int timer = 3060;
                                          
                                          @Override
                                          public void tickStart(EnumSet <ticktype>type, Object… tickData)
                                          {
                                          
                                          }
                                          
                                          @Override
                                          public void tickEnd(EnumSet <ticktype>type, Object... tickData)
                                          {
                                          Minecraft mc = FMLClientHandler.instance().getClient();
                                          Random rand = mc.theWorld.rand;
                                          BiomeGenBase biome = mc.theWorld.getBiomeGenForCoords((int)mc.thePlayer.posX, (int)mc.thePlayer.posZ);
                                          
                                          if(rand.nextInt(15) > 13)
                                          {
                                          System.out.println(biome.getFloatTemperature());
                                          int i = MathHelper.floor_double(mc.thePlayer.posX);
                                          int k = MathHelper.floor_double(mc.thePlayer.posZ);
                                          int k1 = i + rand.nextInt(10) - rand.nextInt(10);
                                          int l1 = k + rand.nextInt(10) - rand.nextInt(10);
                                          int i2 = mc.theWorld.getPrecipitationHeight(k1, l1);
                                          int j2 = mc.theWorld.getBlockId(k1, i2 - 1, l1);
                                          float f1 = rand.nextFloat();
                                          float f2 = rand.nextFloat();
                                          double d0 = (double)((float)k1 + f1);
                                          double d1 = (double)((float)i2 + 0.1F) - Block.blocksList[j2].getBlockBoundsMinY();
                                          double d2 = (double)((float)l1 + f2);
                                          boolean biomeneige = biome.getFloatTemperature() == 0.05F || biome.getFloatTemperature() == 0.0F;
                                          if(mc.theWorld.isRaining() && biomeneige)
                                          {
                                          System.out.println(timer);
                                          if(timer == 3060)
                                          {
                                          mc.sndManager.sndSystem.stop("BgMusic");
                                          ObfuscationReflectionHelper.setPrivateValue(SoundManager.class, mc.sndManager, 3060, "ticksBeforeMusic", "");
                                          if(d1 > mc.thePlayer.posY + 1.0D && mc.theWorld.getPrecipitationHeight(MathHelper.floor_double(mc.thePlayer.posX), MathHelper.floor_double(mc.thePlayer.posZ)) > MathHelper.floor_double(mc.thePlayer.posY))
                                          {
                                          SoundPoolEntry soundpoolentry = mc.sndManager.soundPoolMusic.getRandomSoundFromSoundPool("halloween:music");
                                          soundpoolentry = SoundEvent.getResult(new PlayBackgroundMusicEvent(mc.sndManager, soundpoolentry));
                                          
                                          if(soundpoolentry != null)
                                          {
                                          mc.sndManager.sndSystem.backgroundMusic("BgMusic", soundpoolentry.func_110457_b(), soundpoolentry.func_110458_a(), false);
                                          mc.sndManager.sndSystem.setVolume("BgMusic", 1.0F);
                                          mc.sndManager.sndSystem.play("BgMusic");
                                          System.out.println("ca marche :)");
                                          }
                                          
                                          }
                                          else
                                          {
                                          SoundPoolEntry soundpoolentry = mc.sndManager.soundPoolMusic.getRandomSoundFromSoundPool("halloween:music");
                                          soundpoolentry = SoundEvent.getResult(new PlayBackgroundMusicEvent(mc.sndManager, soundpoolentry));
                                          
                                          if(soundpoolentry != null)
                                          {
                                          mc.sndManager.sndSystem.backgroundMusic("BgMusic", soundpoolentry.func_110457_b(), soundpoolentry.func_110458_a(), false);
                                          mc.sndManager.sndSystem.setVolume("BgMusic", 1.0F);
                                          mc.sndManager.sndSystem.play("BgMusic");
                                          }
                                          }
                                          timer = 0;
                                          }
                                          else
                                          {
                                          timer++;
                                          }
                                          }
                                          }
                                          }
                                          
                                          @Override
                                          public EnumSet <ticktype>ticks()
                                          {
                                          return EnumSet.of(TickType.PLAYER);
                                          }
                                          
                                          @Override
                                          public String getLabel()
                                          {
                                          return "snow tick handler";
                                          }
                                          
                                          }
                                          

                                          J’ai donc mis le code pour que ça affiche des mots dans la console, mais ça ne marche pas
                                          Ce qui veut dire que quelque chose dans le code bug.</ticktype></ticktype></ticktype>

                                          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

                                            Le son ne se joue plus du tout ?

                                            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