Jump to content

(SOLVED)[1.12.2] Help with PlaySoundEvent


kingdadrules

Recommended Posts

I want to replace vanilla sounds with custom ones in certain circumstances in my mod.

 

The way to do it appears to be to use PlaySoundEvent & return a new sound.

I have set up a custom SoundEvent successfully, but need help with PlaySoundEvent .

My SoundEvent is registered like so:

public class ModSounds {

    public static SoundEvent sword2Use = new SoundEvent(new ResourceLocation(testmod.modId + ":" + "sword2Use")).setRegistryName("sword2Use");   
    public static void register(IForgeRegistry<SoundEvent> registry) {
        registry.registerAll(               
                sword2Use
                );

        }
}

 

My code so far for the PlaySoundEvent Listener:

public class SoundPlays {
	
		@SubscribeEvent(priority=EventPriority.NORMAL, receiveCanceled=true)
		@SideOnly(Side.CLIENT)
		public void soundPlay(PlaySoundEvent event) {			
			EntityPlayer player = Minecraft.getMinecraft().player;
			if (player != null 
			&& player.getHeldItemMainhand().getItem() == ModItems.sword2) 				
			{				
				event.setResultSound(??????);									
			}			
	    }
}

I'm stuck with what to return in ??????, as I don't know how to return a SoundEvent as ISound & can't find any documentation or examples to work off.

 

Any help appreciate.

 

 

Edited by kingdadrules
Link to comment
Share on other sites

Thanks for your advice diesieben07, it definately helped with sorting it & the type hierarchy view will come in very handy.

 

I created my own class implementing ISound, including my custom ResourceLocation & returned this:

MyISound sound =  new MyISound();		
event.setResultSound(sound);				
				

It works fine now. I'm slowly learning!

 

I will look into using the correct method of creating registry entries. I copied the static initializer method from example code at the start of my modding journey & so have used it for registering everything since.

 

 

 

 

 

Link to comment
Share on other sites

I've just come back to this because I afree & realise the way to go is not to write my own implementation.

 

I've looked & looked but I cannot see how to do what I need to do without doing this.

 

I want to be able to return my own custom sound  & also to make some sounds non-fading, which I do in a custom implementation by  returning AttenuationType.LINEAR  from getAttenuationType().

 

Any further help would be welcome & hopefully assist in my minecraft & java learning path.

 

 

 

 

Link to comment
Share on other sites

That was the pointer I needed, I can't understand why I didn't pick this up from my trawling online.

 

ResourceLocation loc = new ResourceLocation(testmod.modId + ":" + "sword2Use");
PositionedSoundRecord MyPSR = new PositionedSoundRecord(loc, SoundCategory.PLAYERS, 1.0f, 1.0f, false, 0, AttenuationType.LINEAR, 
		player.getPosition().getX(), player.getPosition().getY(), player.getPosition().getZ());

event.setResultSound(MyPSR);

 

Has done the trick.

 

Thanks once again for your help & patience.

 

 

 

Link to comment
Share on other sites

  • 2 years later...

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.