Jouer un son après qu'il soit finis
-
Salut
J’ai un problème pour mon son quand il neige (quoi ?!! Encore ? )
En fait, j’aimerai que ce son ce joue une fois qu’il a finit de jouer, sans mettre de timer
Mon code :package This_is_Christmas; import java.util.EnumSet; import java.util.Random; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; import net.minecraft.util.MathHelper; import net.minecraft.world.biome.BiomeGenBase; import cpw.mods.fml.client.FMLClientHandler; import cpw.mods.fml.common.ITickHandler; import cpw.mods.fml.common.TickType; public class ClientTickHandler implements ITickHandler { Minecraft instance = Minecraft.getMinecraft(); // Vieille méthode, je sais pas si elle marche encore boolean isPlaying = instance.sndManager.sndSystem.playing("christmas:snow.ogg"); @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); System.out.println(isPlaying); if(isPlaying = false) { 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)) { mc.theWorld.playSound(mc.thePlayer.posX, mc.thePlayer.posY, mc.thePlayer.posZ, "christmas:snow", 0.1F, 0.5F, false); } else { mc.theWorld.playSound(mc.thePlayer.posX, mc.thePlayer.posY, mc.thePlayer.posZ, "christmas:snow", 0.2F, 1.0F, false); } } } } @Override public EnumSet <ticktype>ticks() { return EnumSet.of(TickType.PLAYER); } @Override public String getLabel() { // TODO Auto-generated method stub return null; } }
Mais j’ai ajouter :
boolean isPlaying = instance.sndManager.sndSystem.playing("christmas:snow.ogg"); if(isPlaying = false)
Donc logiquement, ça joue le son uniquement quand il n’y en as pas. Mais non, ça ne fait rien
Du coup, j’ai cru que ça as une autre logique, et j’ai essayer de mettre true à la place de false : ça joue le son à chaque fois.Donc si vous avez une petite idée
Merci d’avance</ticktype></ticktype></ticktype>
-
Mets deux “=” quand tu veux vérifier une condition ^^
-
ou juste if(!isPlaying)
Et sinon tu es sur du .ogg ? -
J’ai essayer vos deux solutions, et aucune ne marche
Sinon, oui je suis sur du .ogg -
Cela peut paraître stupide mais je te conseille lors de ta conversion .mp3 en .ogg ou .wav en .ogg ou autre peu importe d’utiliser Audacity car Format Factory (si tu l’utilise) fait des siennes ! Voilà pour “l’astuce” ^^
Cette astuce est obsolète si le son est déjà en .ogg bien-sûr !
-
@‘Axaurus’:
J’ai essayer vos deux solutions, et aucune ne marche
Sinon, oui je suis sur du .oggNon, je parlais de :
boolean isPlaying = instance.sndManager.sndSystem.playing("christmas:snow%(#FF0000)[.ogg]");
J’ai oublié l’accent sur le u de sûr.
Je pense que c’est plutôtboolean isPlaying = instance.sndManager.sndSystem.playing("christmas:snow");
puisque dans le jeu, le nom sans le .ogg.
-
Non, désolée ça ne marche pas
J’ai mis :boolean isPlaying = instance.sndManager.sndSystem.playing("christmas:snow");
et
if(!isPlaying)
Et c’est pareil : ça joue le son comme avant(ça se lance à chaque fois)
-
Au pire utilise les event sound de forge.
-
Un petit System.out.println de isPlaying ne ferai pas de mal
-
@‘robin4002’:
Au pire utilise les event sound de forge.
Je ne vois pas c’est quelle event
@‘TheCreeper999’:
Un petit System.out.println de isPlaying ne ferai pas de mal
Je l’ai déjà fait, et à chaque fois ça me marque false, comme si le son ne se jouait jamais, alors qu’il se joue
-
Ha en effet, j’ai parlé trop vite, il y a que un event pour sound play, mais pas pour sound stop.
-
???
Désolée "d’être " un boulet, mais je ne trouve pas -
Je disais juste qu’il n’y a pas d’event pour quand le son arrête d’être joué, contrairement à ce que je croyais.
Du coup je vois pas de solution