Jump to content

Client side only sound.


JB

Recommended Posts

How does one create a sound on the client only?

 

All playSound*() methods I've come across puts the sound in the World. I'm a bit confused as to how the GUI limits the sound to the client only as it also calls the sndManager.playSoundFX(...). Is there a flag somewhere that the SoundManager or something lower down look at to avoid the sound being broadcasted?

I'm back playing!

Link to comment
Share on other sites

Hi

Are you sure that SoundManager.playSoundFX tells the Server to play a sound to other clients?  I don't see any evidence of that in the code, there are no Packet or NetworkHandler imports in the class, and I don't recall seeing any Client->Server packets related to sound generation.

http://greyminecraftcoder.blogspot.com.au/2013/10/packets-from-client-to-server.html

 

-TGG

Link to comment
Share on other sites

Hi

Are you sure that SoundManager.playSoundFX tells the Server to play a sound to other clients?  I don't see any evidence of that in the code, there are no Packet or NetworkHandler imports in the class, and I don't recall seeing any Client->Server packets related to sound generation.

http://greyminecraftcoder.blogspot.com.au/2013/10/packets-from-client-to-server.html

 

-TGG

Hi

Definitely happens when testing it with a server and two separate clients on my pc. Can it have something to do with running two clients and a server on the same machine? I can't really see that being the problem as when I go into the UI and click buttons those clicks doesn't end up on the other client. And those clicks also use this.mc.sndManager.playSoundFX(...); method. Will mock up a small demo when time allows isolating the core code.

 

On a side note the sound generated with playSoundFX() does not have the center balanced as in the code comment. The sound is definitely off-center and also doesn't rotate with my character. This is what made me suspicious about the sound being in the 'world'. This might be completely unrelated but I would have expected a local sound being completely center balanced.

 

 

I'm back playing!

Link to comment
Share on other sites

Hi

 

Can it have something to do with running two clients and a server on the same machine?

Maybe I've misunderstood what you said here - how can you tell which client is making the sound if you only have one set of speakers?  I'd suggest you use two separate clients (on separate PCs) just to make sure there isn't something funny going on.  Also, with two PCs you can insert a breakpoint on one and then step through the code to see which method makes the sound play on the other client.

 

Perplexing...

 

-TGG

 

 

 

 

 

Link to comment
Share on other sites

Hi

 

Can it have something to do with running two clients and a server on the same machine?

Maybe I've misunderstood what you said here - how can you tell which client is making the sound if you only have one set of speakers?  I'd suggest you use two separate clients (on separate PCs) just to make sure there isn't something funny going on.  Also, with two PCs you can insert a breakpoint on one and then step through the code to see which method makes the sound play on the other client.

 

Perplexing...

 

-TGG

Hi

 

I have two test users, foo and bar, really --username foo and bar :). So I just get foo to make noises and drop his volume to zero and get bar to stand next to him. Bar is still able to hear foo's sound effects. I'll still test it on two separate PCs after work, maybe there is something strange going on running all those instances on the same machine.

I'm back playing!

Link to comment
Share on other sites

Hi,

 

Ok so two separate PC have the same effect. Here's an ugly little piece of code that have the same behavior. Maybe I just read the wrong tutorial!

 

@NetworkMod(clientSideRequired = true, serverSideRequired = true)
@Mod(modid = "Scratchpad", name = "Scratchpad", version = "0.1 Nothing")
public class Scratchpad
{
public int _tick;

@Instance("Scratchpad")
public static Scratchpad instance;

@EventHandler
public void load(FMLInitializationEvent event)
{
	MinecraftForge.EVENT_BUS.register(new Scratchpad());
}

public Scratchpad()
{

}

@ForgeSubscribe
public void onLivingUpdateEvent(LivingUpdateEvent event)
{
	_tick++;
	if (_tick % 100 != 0) return;

	if (event.entityLiving instanceof EntityPlayer)
	{
		EntityPlayer player = (EntityPlayer) event.entityLiving;
		if (!player.worldObj.isRemote) return;
		if (!player.username.equalsIgnoreCase("Foo")) return; 

		Minecraft.getMinecraft().sndManager.playSoundFX("mob.sheep.say", 1.0f, 1.0F);
	}
}
}

I'm back playing!

Link to comment
Share on other sites

Wow that is very strange, that stub is very simple.

 

I might give it a go on my PCs here.

 

Does it play on both clients regardless of which client you originate the sound from?  (i.e. the one with the integrated server, and the one without)?

 

Perhaps you could try putting a breakpoint on one of the clients just before the sound (pause the client thread only, not server thread), then step into the vanilla code line by line and see when the other client goes baa.  Might give a clue.

 

-TGG

 

 

Link to comment
Share on other sites

Wow that is very strange, that stub is very simple.

 

I might give it a go on my PCs here.

 

Does it play on both clients regardless of which client you originate the sound from?  (i.e. the one with the integrated server, and the one without)?

 

Perhaps you could try putting a breakpoint on one of the clients just before the sound (pause the client thread only, not server thread), then step into the vanilla code line by line and see when the other client goes baa.  Might give a clue.

 

-TGG

 

Hi TGG,

Well, that was really 'learning the hard way' for me. The onLivingUpdateEvent() fires on both clients for both Foo & Bar. All sorted now, thanks!

 

 

I'm back playing!

Link to comment
Share on other sites

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.

Announcements



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • CubeHaven is a SMP server with unique features that can't be found on the majority of other servers! Java: MC.CUBEHAVEN.NET Bedrock: MC.CUBEHAVEN.NET:19132 3 different stores: - CubeHaven Store: Our store to purchase using real money. - Bitcoin Store: Store for Bitcoin. Bitcoin can be earned from playing the server. Giving options for players if they want to spend real money or grind to obtain exclusive packages. - Black Market: A hidden store for trading that operates outside our traditional stores, like custom enchantments, exclusive items and more. Some of our features include: Rank Up: Progress through different ranks to unlock new privileges and perks. 📈 Skills: RPG-style skill system that enhances your gaming experience! 🎮 Leaderboards: Compete and shine! Top players are rewarded weekly! 🏆 Random Teleporter: Travel instantly across different worlds with a click! 🌐 Custom World Generation: Beautifully generated world. 🌍 Dungeons: Explore challenging and rewarding dungeons filled with treasures and monsters. 🏰 Kits: Unlock ranks and gain access to various kits. 🛠️ Fishing Tournament: Compete in a friendly fishing tournament! 🎣 Chat Games: Enjoy games right within the chat! 🎲 Minions: Get some help from your loyal minions. 👥 Piñata Party: Enjoy a festive party with Piñatas! 🎉 Quests: Over 1000 quests that you can complete! 📜 Bounty Hunter: Set a bounty on a player's head. 💰 Tags: Displayed on nametags, in the tab list, and in chat. 🏷️ Coinflip: Bet with other players on coin toss outcomes, victory, or defeat! 🟢 Invisible & Glowing Frames: Hide your frames for a cleaner look or apply a glow to it for a beautiful look. 🔲✨[ Player Warp: Set your own warp points for other players to teleport to. 🌟 Display Shop: Create your own shop and sell to other players! 🛒 Item Skins: Customize your items with unique skins. 🎨 Pets: Your cute loyal companion to follow you wherever you go! 🐾 Cosmetics: Enhance the look of your character with beautiful cosmetics! 💄 XP-Bottle: Store your exp safely in a bottle for later use! 🍶 Chest & Inventory Sorting: Keep your items neatly sorted in your inventory or chest! 📦 Glowing: Stand out from other players with a colorful glow! ✨ Player Particles: Over 100 unique particle effects to show off. 🎇 Portable Inventories: Over virtual inventories with ease. 🧳 And a lot more! Become part of our growing community today! Discord: https://cubehaven.net/discord Java: MC.CUBEHAVEN.NET Bedrock: MC.CUBEHAVEN.NET:19132
    • # Problematic frame: # C [libopenal.so+0x9fb4d] It is always the same issue - this refers to the Linux OS - so your system may prevent Java from working   I am not familiar with Linux - check for similar/related issues  
    • Create a new instance and start with Embeddium/Oculus and Valkyrien Skies Try different builds of Embeddium/Valkyrien Skies until you find a working combination - then add the rest of your mods one by one or in groups
    • There are some mods missing Missing or unsupported mandatory dependencies: Mod ID: 'octolib', Requested by: 'ramcompat', Expected range: '[0.1,)', Actual version: '[MISSING]' Mod ID: 'forge', Requested by: 'tfc', Expected range: '[47.1.3,47.1.6),[47.1.81,47.2.0),[47.2.6,)', Actual version: '47.2.0' Mod ID: 'relics', Requested by: 'ramcompat', Expected range: '[0.6.5,)', Actual version: '[MISSING]' Add octolib and relics and update tfc to build 47.2.6
    • Make a test with adding LMFT https://www.curseforge.com/minecraft/mc-mods/lmft
  • Topics

×
×
  • Create New...

Important Information

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