Résolu jouer un son est détection relâcher click droit pour un item
-
bonjour je suis en 1.12.2 est j’aimerai jouer un son avec un item quand le click droit est activer est quand il est relâcher, comment je peut faire pour jouer un son est et pour détecter quand le click droit est relâcher ? et aussi pour récupère le joueur qui effectuer le click droit.
-
@gugus
bonjour,
vue que j’ai eu énormément de mal a faire un sound sur un click droit je le partage ici comme ca tout le monde peut y avoir accès il y a juste un peut problème au niveau du sound il se lance en répétition quand on garde le click droit enfoncer.pour créer un sound il faut déjà l’enregistrer pour sa j’ai fait une nouvel classe que j’ai nommé SoundsHandler.
public class SoundsHandler { public static SoundEvent ITEMTEST_PUSH; public static void registerSounds(){ ITEMTEST_PUSH = registerSound("itemtest.push"); } private static SoundEvent registerSound(String name){ ResourceLocation location = new ResourceLocation(References.MODID, name); SoundEvent event = new SoundEvent(location); event.setRegistryName(name); ForgeRegistries.SOUND_EVENTS.register(event); return event; } }
!!! il faut bien import le sound en
import net.minecraft.util.SoundEvent;
normalement pas trop de problème ici.
on vas tout enregistrer depuis la classe main ou du RegistryHandler
de cette façon :RegistryHandler :
public class RegistryHandler { public static void initRegistries(){ SoundsHandler.registerSounds(); } }
puis dans les classe main :
@Mod.EventHandler public void preInit(FMLPreInitializationEvent e){ RegistryHandler.initRegistries(); proxy.preInit(); }
ou bien directement dans la classe main :
@Mod.EventHandler public void preInit(FMLPreInitializationEvent e){ public static void initRegistries(){ SoundsHandler.registerSounds(); } }
pour avoir accès au sound on vas dnas les package resource en on vas créer dans ressources.asset.modid un nouveau fichier du nom de sounds.json
{ "itemtest.push": { "category": "item", "sounds": [ { "name": "modid:item/itemtest/push", "stream": true } ] } }
en premier on a le nom de notre sound, puis la category, puis le sound en luis même avec le name qui permet de trouver le sound dans ressource comme pour les item
on vas créer un nouveau package dans ressource du nom de sounds pour implémenter tout nos package comme dans le name de sounds.json . pour ma part les package serons présenter comme sa :
sounds
item
itemtest
le sound doit etre obligatoirement en .ogg avec le bon nom
pour moi se sera :
push.ogg
avec sa on peut deja tester le sond le lui même dans le jeux avec la commance
/playsound
mais pour le metre sur un item par exemple quand on fait un click droit sa me donne :
@Override public ActionResult<ItemStack> onItemRightClick(World worldIn, EntityPlayer playerIn, EnumHand handIn) { worldIn.playSound(playerIn, playerIn.posX, playerIn.posY, playerIn.posZ, SoundsHandler.ITEMTEST_PUSH, SoundCategory.AMBIENT, 1.0F, 1.0F); return super.onItemRightClick(worldIn, playerIn, handIn); }
avec ces ligne le sound se joue constament quand le click reste enfoncer donc attention
( j’ai pas encore trouver comment on fait pour qu’il se joue qu’une foit avec un click long)voila si sa a aider de rien
-
@gugus
bonjour,
vue que j’ai eu énormément de mal a faire un sound sur un click droit je le partage ici comme ca tout le monde peut y avoir accès il y a juste un peut problème au niveau du sound il se lance en répétition quand on garde le click droit enfoncer.pour créer un sound il faut déjà l’enregistrer pour sa j’ai fait une nouvel classe que j’ai nommé SoundsHandler.
public class SoundsHandler { public static SoundEvent ITEMTEST_PUSH; public static void registerSounds(){ ITEMTEST_PUSH = registerSound("itemtest.push"); } private static SoundEvent registerSound(String name){ ResourceLocation location = new ResourceLocation(References.MODID, name); SoundEvent event = new SoundEvent(location); event.setRegistryName(name); ForgeRegistries.SOUND_EVENTS.register(event); return event; } }
!!! il faut bien import le sound en
import net.minecraft.util.SoundEvent;
normalement pas trop de problème ici.
on vas tout enregistrer depuis la classe main ou du RegistryHandler
de cette façon :RegistryHandler :
public class RegistryHandler { public static void initRegistries(){ SoundsHandler.registerSounds(); } }
puis dans les classe main :
@Mod.EventHandler public void preInit(FMLPreInitializationEvent e){ RegistryHandler.initRegistries(); proxy.preInit(); }
ou bien directement dans la classe main :
@Mod.EventHandler public void preInit(FMLPreInitializationEvent e){ public static void initRegistries(){ SoundsHandler.registerSounds(); } }
pour avoir accès au sound on vas dnas les package resource en on vas créer dans ressources.asset.modid un nouveau fichier du nom de sounds.json
{ "itemtest.push": { "category": "item", "sounds": [ { "name": "modid:item/itemtest/push", "stream": true } ] } }
en premier on a le nom de notre sound, puis la category, puis le sound en luis même avec le name qui permet de trouver le sound dans ressource comme pour les item
on vas créer un nouveau package dans ressource du nom de sounds pour implémenter tout nos package comme dans le name de sounds.json . pour ma part les package serons présenter comme sa :
sounds
item
itemtest
le sound doit etre obligatoirement en .ogg avec le bon nom
pour moi se sera :
push.ogg
avec sa on peut deja tester le sond le lui même dans le jeux avec la commance
/playsound
mais pour le metre sur un item par exemple quand on fait un click droit sa me donne :
@Override public ActionResult<ItemStack> onItemRightClick(World worldIn, EntityPlayer playerIn, EnumHand handIn) { worldIn.playSound(playerIn, playerIn.posX, playerIn.posY, playerIn.posZ, SoundsHandler.ITEMTEST_PUSH, SoundCategory.AMBIENT, 1.0F, 1.0F); return super.onItemRightClick(worldIn, playerIn, handIn); }
avec ces ligne le sound se joue constament quand le click reste enfoncer donc attention
( j’ai pas encore trouver comment on fait pour qu’il se joue qu’une foit avec un click long)voila si sa a aider de rien
-
-