Résolu Méthode pour faire jouer un son lorsqu'un bloc est posé
-
Bonjour,
J’ai besoin dans mon mod de faire jouer un son à un bloc lorsqu’il est posé
Précision : le joueur ne peut pas y échapper(donc il l’entend partout dans le jeu), la musique ne s’arrête que quand le bloc est détruit
Problème : j’ai beau tout essayé, je n’arrive pas à stopper le son et à le transformer en musique Minecraft (qu’on entendra partout dans le monde).
Et je n’ai aucun message d’erreur de Forge et mon fichier Nyan.ogg est bien au bon endroit.
Code de ma Classe Principale :
package squix.squixsmods.common; import squix.squixsmods.blocs.NyanBlock; import squix.squixsmods.utils.EventSoundNyan; import net.minecraft.block.Block; import net.minecraftforge.common.MinecraftForge; import cpw.mods.fml.common.Mod; import cpw.mods.fml.common.Mod.EventHandler; import cpw.mods.fml.common.Mod.Instance; import cpw.mods.fml.common.event.FMLInitializationEvent; import cpw.mods.fml.common.event.FMLPostInitializationEvent; import cpw.mods.fml.common.event.FMLPreInitializationEvent; import cpw.mods.fml.common.network.NetworkMod; import cpw.mods.fml.common.registry.GameRegistry; @Mod(modid = "SquixsMods", name = "Squix's Mods", version = "1.0.0") @NetworkMod(clientSideRequired = true, serverSideRequired = false) public class Squixmods { // Blocs public static Block NyanBlock; @Instance("SquixsMods") public static Squixmods instance; @EventHandler public void PreInit(FMLPreInitializationEvent event) { // Configuration if(event.getSide().isClient()) { MinecraftForge.EVENT_BUS.register(new EventSoundNyan()); } // Blocks NyanBlock = new NyanBlock(2000).setHardness(50.0F).setResistance(2000.0F).setStepSound(Block.soundStoneFootstep).setUnlocalizedName("NyanBlock").setTextureName("squixsmods:NyanBlock"); // Items // Achievements } @EventHandler public void Init(FMLInitializationEvent event) { // Registry GameRegistry.registerBlock(NyanBlock, "NyanBlock"); // Mobs // Render // NetWork // Recipe } @EventHandler public void PostInit(FMLPostInitializationEvent event) { // Integration avec les autres mods } }
Code du NyanBlock :
package squix.squixsmods.blocs; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.EntityLivingBase; import net.minecraft.item.ItemStack; import net.minecraft.world.World; public class NyanBlock extends Block { public NyanBlock(int id) { super(id, Material.rock); this.setCreativeTab(CreativeTabs.tabBlock); } public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase living, ItemStack stack) { world.playSoundEffect((double)x + 0.5D, (double)y + 0.5D, (double)z + 0.5D, "squixsmods:Nyan", 1.0F, 1.0F); } }
Code de EventSoundNyan :
package squix.squixsmods.utils; import net.minecraftforge.client.event.sound.SoundLoadEvent; import net.minecraftforge.event.ForgeSubscribe; public class EventSoundNyan { @ForgeSubscribe public void onSound(SoundLoadEvent event) { try { event.manager.addSound("squixsmods:Nyan.ogg"); } catch(Exception e) { System.out.println("Failed to registry sound"); } } }
-
public void breakBlock(World world, int x, int y, int z, int id, int metadata) { world.playSoundEffect((double)x + 0.5D, (double)y + 0.5D, (double)z + 0.5D, null, 0.0F, 0.0F); super.breakBlock(world, x, y, z, id, metadata); }
Normalement ça devrait couper le son lors de la destruction. Le reste je sais pas, je peux juste te dire que si tu veux faire une musique, il faut utiliser event.manager.addMusic et pour le jouer playSound à la place de playSoundEffect.