• S'inscrire
    • Se connecter
    • Recherche
    • Récent
    • Mots-clés
    • Populaire
    • Utilisateurs
    • Groupes

    L'event sound de Forge

    Les events
    1.6.x
    11
    61
    20888
    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.
    • robin4002
      robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par robin4002

      Vous savez maintenant créer des items et des blocs, mais ça reste basique. N’avez-vous pas envie d’ajouter vos propre son dans votre mods ?
      Nous allons donc voir dans ce tutoriel comment utiliser l’event sound de forge.
      D’ailleurs, contrairement à modloader & audio mod, l’event sound de forge permet de mettre les sons de votre mod à l’intérieur de l’archive de votre mod, ce qui ne compromet pas la facilité de installation de votre mod.

      Dans la classe principale

      Juste avant vos blocs et items et juste après vos configuration, ajoutez cette condition :

      if(event.getSide().isClient())
      {
      }
      

      Elle va vérifie si le side est du type client. En effet, le serveur ne peut pas charger de son, il va cracher si vous lui faite charger des sons avec un NoClassDefFound.
      Dans cette condition, ajoutez :

      MinecraftForge.EVENT_BUS.register(new EventSoundTutorial());
      

      MinecraftForge.EVENT_BUS.register permet d’enregistrer un event bus, il y a de nombreux event, nos les verrons dans d’autres tutoriels.
      EventSoundTutoriel est la classe où je vais gérer le son, créez-la. Dans mon cas je vais la créer dans le package client comme les sons ne sont que gérer par le client, vous n’êtes pas obliger de faire pareil, mais ça permet de mieux s’organiser.

      La classe de l’event sound

      package tutoriel.client;
      
      import net.minecraftforge.client.event.sound.SoundLoadEvent;
      import net.minecraftforge.event.ForgeSubscribe;
      
      public class EventSoundTutorial
      {
          @ForgeSubscribe
          public void onSound(SoundLoadEvent event)
          {
              try
              {
                  event.manager.addSound("modtutoriel:explosion1.ogg");
                  event.manager.addSound("modtutoriel:explosion2.ogg");
                  event.manager.addSound("modtutoriel:explosion3.ogg");
              }
              catch(Exception e)
              {
                  System.out.println("Failed to registry sound");
              }
          }
      }
      

      L’annotation @ForgeSubscribe est très importante, sans elle votre event ne fonctionnera pas, c’est valable pour tout les autres events. Ensuite on essaye d’enregistrer les sons, si ça marche pas dans la console il y aura Failed to registry sound.
      Pour les sons, il faut mettre modid:nom du son. Dans mon cas, j’enregistre 3 sons qui sont en fait qu’un seul. En effet, le fait de finir un son par un nombre permet de gérer un système de random. Lorsque je vais utiliser le son explosion, soit le son 1, soit le 2, soit le 3 va être joué. Vous pouvez enregistrer beaucoup plus que 3 sons avec cette méthode. En revanche si vous ne voulez pas faire de système de random, vos noms de son ne doivent pas se finir par un nombre.

      Les ressources

      Les fichiers de son doivent être au format .ogg, vous pouvez trouver un convertisseur ici : http://media.io/fr/
      Ils doivent être placer dans le dossier forge/mcp/src/minecraft/assets/modid/sound/nomduson.ogg
      Une fois que vous compilerez votre mod, ils devrons être dans votremod.zip/assets/modid/sound/nomduson.ogg
      Comme d’habitude, pas de majuscule au modid.

      Jouer le son

      Vous pouvez jouer des sons dans n’importe quel méthode qui possède world et player ou x, y, z en paramètre.
      Par exemple dans un item, dans la fonction du clic droit :

      public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
      {
          world.playSoundAtEntity(player, "modtutoriel:explosion", 1.0F, 1.0F);
          return stack;
      }
      

      Il faut mettre votre modid:le nom du son sans les nombres après. Le premier 1.0F est le volume du son, et le deuxième est la fréquence.
      Autre exemple avec un bloc :

      public void randomDisplayTick(World world, int x, int y, int z, Random random)
      {
          world.playSoundEffect((double)x + 0.5D, (double)y + 0.5D, (double)z + 0.5D, "modtutoriel:explosion", 1.0F, 1.0F);
      }
      

      Même principe sauf que la nous avons les coordonnées du bloc. les + 0.5D servent à mettre la source du son au centre du bloc.

      rendu final sur github

      1 réponse Dernière réponse Répondre Citer 0
      • kevin_68
        kevin_68 Moddeurs confirmés dernière édition par

        Tutoriel prévu(regarde tutoriels en préparation), ce message serait mieux dans le support en passant.


        Mettez à jours vers la dernière version stable (1.8.9 voir même…

        1 réponse Dernière réponse Répondre Citer 0
        • robin4002
          robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

          Le dossier c’est assets/modid/records
          Et il faut pas utiliser event.manager.addSound mais event.manager.addStreaming

          1 réponse Dernière réponse Répondre Citer 0
          • M
            MrStooby dernière édition par

            Oui je sais qu’il serait mieux dans la rubrique aide mais étant donnée qu’il avait rapport avec les sons, j’ai pensé qu’il aurait été utile ici.
            Si un tuto est prévu, dans ce cas, mon post peut être supprimé. Je peux attendre la sorti du tuto 😉

            1 réponse Dernière réponse Répondre Citer 0
            • bin4r1s
              bin4r1s dernière édition par

              Bonjour,
              J’ai suivi le tuto et créé un item pour jouer un son (une jukebox), mais quand je fais un clic droit, rien ne se passe.
              Pouvez-vous m’aider ?

              Classe principale :

              
              if(event.getSide().isClient())
              {
              MinecraftForge.EVENT_BUS.register(new SoundEvent());
              }
              
              jukeBox1 = (new ItemJukebox1(jukeBox1ID)).setUnlocalizedName("JukeBox1").setTextureName("dragons:jukebox_1");
              GameRegistry.registerItem(jukeBox1, "Jukebox 1", "Dragons");
              
              

              ItemJukebox1 :

              
              package fr.MrBlockTNT.Dragons.item;
              
              import fr.MrBlockTNT.Dragons.core.Dragons;
              import net.minecraft.entity.player.EntityPlayer;
              import net.minecraft.item.Item;
              import net.minecraft.item.ItemStack;
              import net.minecraft.world.World;
              
              public class ItemJukebox1 extends Item
              {
              public ItemJukebox1(int id)
              {
              super(id);
              this.setCreativeTab(Dragons.DragonsTab);
              }
              
              public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player)
              {
              world.playSoundAtEntity(player, "dragons:boss/fire_dragon", 1.0F, 1.0F);
              return stack;
              }
              }
              
              

              SoundEvent :

              
              package fr.MrBlockTNT.Dragons.event;
              
              import net.minecraftforge.client.event.sound.SoundLoadEvent;
              import net.minecraftforge.event.ForgeSubscribe;
              
              public class SoundEvent
              {
              @ForgeSubscribe
              public void onSound(SoundLoadEvent event)
              {
              try
              {
              event.manager.addMusic("dragons:boss/boss_end.ogg");
              event.manager.addMusic("dragons:boss/fire_dragon.ogg");
              event.manager.addMusic("dragons:boss/fire_dragon_second_half.ogg");
              }
              catch(Exception e)
              {
              System.out.println("Failed to registry sound");
              }
              }
              }
              
              

              Mes mods:

              • New Ores
              • More Dragons
              1 réponse Dernière réponse Répondre Citer 0
              • robin4002
                robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

                Pour les musiques utilise world.playRecord(“nom du son”, x, y, z);
                Pour x y et z utilise (int)player.xPos, etc …
                Et le nom du son est plutôt dragons:boss.fire_dragon pour le jouer, pour l’enregistrer celle le /. Par contre j’ai jamais testé avec les / donc si marche pas essaye sans.

                1 réponse Dernière réponse Répondre Citer 0
                • bin4r1s
                  bin4r1s dernière édition par

                  D’accord, merci :)___
                  EDIT : ça marche parfaitement ! Il fallait effectivements changer les “/” en “.” pour l’utilisation de la musique et changer par playRecord :D___
                  Par contre, comment faire jouer le son en boucle ?

                  Mes mods:

                  • New Ores
                  • More Dragons
                  1 réponse Dernière réponse Répondre Citer 0
                  • robin4002
                    robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

                    Pour ça il faudrait jouer la son dans la fonction onUpdate et faire un timer.

                    1 réponse Dernière réponse Répondre Citer 0
                    • bin4r1s
                      bin4r1s dernière édition par

                      Un petit exemple de timer svp 🙂
                      (je ne me suis jamais servi de timer, et tous les tutos que j’ai trouvés son nuls ou mal expliqués :()

                      Mes mods:

                      • New Ores
                      • More Dragons
                      1 réponse Dernière réponse Répondre Citer 0
                      • robin4002
                        robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

                        u_U
                        http://www.minecraftforgefrance.fr/search.php?action=results&sid=fb73a8e87d59b012ecb1ba9efc0addf2&sortby=lastpostℴ=desc

                        1 réponse Dernière réponse Répondre Citer 0
                        • bin4r1s
                          bin4r1s dernière édition par

                          Merci 🙂

                          Mes mods:

                          • New Ores
                          • More Dragons
                          1 réponse Dernière réponse Répondre Citer 0
                          • isador
                            isador Moddeurs confirmés Modérateurs dernière édition par

                            heu moi j’ai suivie exactement le tuto mais j’ai pas de son…

                            mes classe:
                            item: http://pastebin.com/rDyK6Dch
                            main: http://pastebin.com/mzrfMhpU
                            eventsound: http://pastebin.com/jzZKDiQZ

                            1 réponse Dernière réponse Répondre Citer 0
                            • robin4002
                              robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

                              Enlève le 1 dans la fonction pour jouer le son.

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

                                Hello tout le monde j’ai essayé d’appliquer l’event sound de forge à mon mod en suivant ce tutoriel mais étant en 1.7 le code ne marche pas voici ma class :

                                
                                package mods.maxiworldcraft.mineKingdomHeartsmod.common;
                                
                                import cpw.mods.fml.common.eventhandler.SubscribeEvent;
                                import net.minecraftforge.client.event.sound.SoundLoadEvent;
                                
                                public class MineKingdomHeartsEventSound
                                {
                                @SubscribeEvent
                                public void onSound(SoundLoadEvent event)
                                {
                                try
                                {
                                event.manager.addStreaming("modtutoriel:explosion1.ogg");
                                }
                                catch(Exception e)
                                {
                                System.out.println("Failed to registry sound");
                                }
                                }
                                }
                                
                                

                                et étrangement ‘manager’ est barré plz de l’aide

                                EDIT = Il faut juste oublier l’event sound et ne s’occuper que du sound.json
                                Désolé du dérangement

                                1 réponse Dernière réponse Répondre Citer 0
                                • Superloup10
                                  Superloup10 Modérateurs dernière édition par

                                  En 1.7.x, il n’y a plus besoin d’utiliser d’event sounds

                                  Si vous souhaitez me faire un don, il vous suffit de cliquer sur le bouton situé en dessous.

                                  Je suis un membre apprécié et joueur, j'ai déjà obtenu 17 points de réputation.

                                  1 réponse Dernière réponse Répondre Citer 0
                                  • robin4002
                                    robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

                                    http://www.minecraftforgefrance.fr/showthread.php?tid=788#classe11
                                    En attendant le tutoriel pour les sons 1.7

                                    1 réponse Dernière réponse Répondre Citer 0
                                    • Ama
                                      Ama dernière édition par

                                      Bonjour !

                                      Plus tôt que d’ouvrir un post d’aide j’aurais aimé savoir comment on fait pour que le son se répète en boucle ?

                                      C’est pour un block

                                      Si je t'ai filé un coup de main n'oublie pas le + / -
                                      Par contre évite les demandes d'aides en MP, tu sera sympa'

                                      La JavaDoc c'est comme le PQ, ça sert à ce démerder tous seul. -Victor Hugo- 2017

                                      Une superbe API pour animer vos super modèles CraftStudio dans Minecraft !

                                      1 réponse Dernière réponse Répondre Citer 0
                                      • isador
                                        isador Moddeurs confirmés Modérateurs dernière édition par

                                        cela m’interesse aussi

                                        1 réponse Dernière réponse Répondre Citer 0
                                        • robin4002
                                          robin4002 Moddeurs confirmés Rédacteurs Administrateurs dernière édition par

                                          Avec un timer, je vois pas d’autre solution.

                                          1 réponse Dernière réponse Répondre Citer 0
                                          • Ama
                                            Ama dernière édition par

                                            Aurais-tu une base de timer pour cette spécificité ?

                                            Si je t'ai filé un coup de main n'oublie pas le + / -
                                            Par contre évite les demandes d'aides en MP, tu sera sympa'

                                            La JavaDoc c'est comme le PQ, ça sert à ce démerder tous seul. -Victor Hugo- 2017

                                            Une superbe API pour animer vos super modèles CraftStudio dans Minecraft !

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

                                            MINECRAFT FORGE FRANCE © 2018

                                            Powered by NodeBB