Problème load sound main menu



  • Salut
    J'essaie de lancer une musique depuis mon menu principal avec cette méthode :
    Minecraft.getMinecraft().getSoundHandler().playSound(PositionedSoundRecord.func_147673_a(new ResourceLocation(Battlefront2Mod.MODID + ":mainMenuTheme")));
    Le problème est que le jeu freeze durant 10 secondes avant de la lancer. Mettre cette ligne dans un thread à part ou pas, ne change rien. Alors j'ai réfléchi, je me suis dit pourquoi ne pas utiliser une lib telle que slick util, pour load ma musique, puisque aucune autre méthode de MC n'existe pour satisfaire ma demande 😕
    J'ai donc installé la lib et tout, j'ai remplacé la ligne précédente par cellle ci :
    Audio oggEffect = AudioLoader.getAudio("OGG", ResourceLoader.getResourceAsStream("res/mainMenuTheme.ogg"));

    J'ai crée ensuite un dossier res dans src/main.java mais là voici le crash report que j'obtiens :

    [19:36:35] [Thread-11/INFO] [STDOUT/]: [org.newdawn.slick.util.DefaultLogSystem:info:60]: Sat Feb 20 19:36:35 CET 2016 INFO:Initialising sounds..
    [19:36:35] [Thread-11/INFO] [STDOUT/]: [org.newdawn.slick.util.DefaultLogSystem:error:42]: Sat Feb 20 19:36:35 CET 2016 ERROR:Sound initialisation failure.
    [19:36:35] [Thread-11/INFO] [STDOUT/]: [org.newdawn.slick.util.DefaultLogSystem:error:32]: Sat Feb 20 19:36:35 CET 2016 ERROR:Only one OpenAL context may be instantiated at any one time.
    [19:36:35] [Thread-11/INFO] [STDOUT/]: [java.lang.Throwable$WrappedPrintStream:println:-1]: java.lang.IllegalStateException: Only one OpenAL context may be instantiated at any one time.
    [19:36:35] [Thread-11/INFO] [STDOUT/]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at org.lwjgl.openal.AL.create(AL.java:113)
    [19:36:35] [Thread-11/INFO] [STDOUT/]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at org.lwjgl.openal.AL.create(AL.java:102)
    [19:36:35] [Thread-11/INFO] [STDOUT/]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at org.lwjgl.openal.AL.create(AL.java:201)
    [19:36:35] [Thread-11/INFO] [STDOUT/]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at org.newdawn.slick.openal.SoundStore$1.run(SoundStore.java:295)
    [19:36:35] [Thread-11/INFO] [STDOUT/]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at java.security.AccessController.doPrivileged(Native Method)
    [19:36:35] [Thread-11/INFO] [STDOUT/]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at org.newdawn.slick.openal.SoundStore.init(SoundStore.java:292)
    [19:36:35] [Thread-11/INFO] [STDOUT/]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at org.newdawn.slick.openal.AudioLoader.init(AudioLoader.java:33)
    [19:36:35] [Thread-11/INFO] [STDOUT/]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at org.newdawn.slick.openal.AudioLoader.getAudio(AudioLoader.java:48)
    [19:36:35] [Thread-11/INFO] [STDOUT/]: [java.lang.Throwable$WrappedPrintStream:println:-1]: at fr.plaigon.battlefront2.client.gui.GuiMainMenu$1.run(GuiMainMenu.java:136)
    

    Je ne vois pas comment faire en sorte de n'utliser que le contexte OpenAL de MC pour mon son, apparemment avec cette méthode j'en crée un deuxième, d'où ce crash report, si j'ai bien tout compris 🙂
    Merci d'avance


  • Administrateurs

    Salut,
    Tu as mit quoi dans ton fichier sounds.json (je parle du cas du son avec la méthode de minecraft) ?



  • {    
        "mainMenuTheme" : {
    
    "category" : "neutral",
    
    "sounds" : [
    
    "mainMenuTheme"
    ]
     }
    }
    

  • Administrateurs

    ->

    {
    "mainMenuTheme" : {
    "category" : "neutral",
    "sounds" : [
    {
    "name": "mainMenuTheme",
    "stream": true
    }
    ]
    }
    }
    

    stream:true obligatoire pour les long sons, sinon ça freeze.



  • Ok merci ça marche nikel, et juste saurais me dire pourquoi j'avais ce crash report d'afficher avec slick util ?


  • Administrateurs

    Car il créé une nouvelle instance d'openal alors qu'on ne peut pas en faire plus d'une.