PlanetTeamSpeak Posted August 30, 2017 Share Posted August 30, 2017 (edited) I have made a class implementing ISound, but when I try to play it with Minecraft.getMinecraft().getSoundHandler().playSound(new EasterEgg()), nothing happens not even an error in the console saying the sound doesn't exist. EasterEgg.java: package com.ptsmods.morecommands.miscellaneous; import net.minecraft.client.Minecraft; import net.minecraft.client.audio.ISound; import net.minecraft.client.audio.Sound; import net.minecraft.client.audio.SoundEventAccessor; import net.minecraft.client.audio.SoundHandler; import net.minecraft.util.ResourceLocation; import net.minecraft.util.SoundCategory; public class EasterEgg implements ISound { private ResourceLocation location; private SoundEventAccessor soundEvent; private Sound sound; public EasterEgg() { location = new ResourceLocation("morecommands:easteregg"); try { createAccessor(Minecraft.getMinecraft().getSoundHandler()); } catch (Throwable e) {} } @Override public ResourceLocation getSoundLocation() { return location; } @Override public SoundEventAccessor createAccessor(SoundHandler handler) { soundEvent = handler.getAccessor(location); if (soundEvent == null) sound = SoundHandler.MISSING_SOUND; else sound = soundEvent.cloneEntry(); return soundEvent; } @Override public Sound getSound() { return sound; } @Override public SoundCategory getCategory() { return SoundCategory.PLAYERS; } @Override public boolean canRepeat() { return true; } @Override public int getRepeatDelay() { return 10; } @Override public float getVolume() { return 100; } @Override public float getPitch() { return 0; } @Override public float getXPosF() { return 0; } @Override public float getYPosF() { return 0; } @Override public float getZPosF() { return 0; } @Override public AttenuationType getAttenuationType() { return AttenuationType.LINEAR; } } Sounds.json: { "easteregg": { "category": "players", "sounds": [ { "name": "morecommands:easteregg", "stream": true } ] } } Edited August 30, 2017 by PlanetTeamSpeak Quote Link to comment Share on other sites More sharing options...
SuperHB Posted August 30, 2017 Share Posted August 30, 2017 I'm guessing this is for 1.11 (I'm not sure if 1.12 is different) Did you register your sound with GameRegistry? 1 Quote MobDrops http://www.planetminecraft.com/mod/125-mobdrops/ Link to comment Share on other sites More sharing options...
PlanetTeamSpeak Posted August 30, 2017 Author Share Posted August 30, 2017 (edited) I was able to play the sound without registering it, but somehow it broke, do you have any clues on how to register sounds though? I couldn't find how to do it in 1.12 Edit: The mod is actually meant for 1.11 up until 1.12.1, it's just commands so it works on all version mentioned. Edited August 30, 2017 by PlanetTeamSpeak Quote Link to comment Share on other sites More sharing options...
SuperHB Posted August 30, 2017 Share Posted August 30, 2017 (edited) I've never worked with 1.12 before. But are you calling playSound on client side? you can also try just calling the sound like so. ResourceLocation local = new ResourceLocation("morecommands:easteregg"); SoundEvent event = new SoundEvent(local); Minecraft.getMinecraft().getSoundHandler().playSound(new PositionedSoundRecord(event, SoundCategory.BLOCKS, 1.0f, 1.0f, new BlockPos(0, 0, 0))); Edited August 30, 2017 by SuperHB Quote MobDrops http://www.planetminecraft.com/mod/125-mobdrops/ Link to comment Share on other sites More sharing options...
PlanetTeamSpeak Posted August 30, 2017 Author Share Posted August 30, 2017 It's still not working, same as before, not doing anything. And yes, I am sure I am calling it on the client side. Quote Link to comment Share on other sites More sharing options...
SuperHB Posted August 30, 2017 Share Posted August 30, 2017 (edited) Doing some research, this is how you would register sounds in 1.12: https://github.com/Choonster-Minecraft-Mods/TestMod3/blob/2cb7b67adf7ab41e066c3308ac898224b2891752/src/main/java/choonster/testmod3/init/ModSoundEvents.java I'm pretty sure you have to call the registry from preInit (maybe) but it doesn't seem to be from the example. Based on the example linked, I'm guessing you will have to call the registered soundevent like so Minecraft.getMinecraft().getSoundHandler().playSound(new PositionedSoundRecord(ModSoundEvents.RECORD_SOLARIS, SoundCategory.BLOCKS, 1.0f, 1.0f, playerPos)); Hope this helps. If it doesn't, then my help ends here as I haven't worked with 1.12 yet. Edited August 30, 2017 by SuperHB Quote MobDrops http://www.planetminecraft.com/mod/125-mobdrops/ Link to comment Share on other sites More sharing options...
Choonster Posted August 31, 2017 Share Posted August 31, 2017 13 hours ago, SuperHB said: I'm pretty sure you have to call the registry from preInit (maybe) but it doesn't seem to be from the example. You don't. That code uses registry events, which Forge fires when each registry is ready to receive registrations. Quote Please don't PM me to ask for help. Asking your question in a public thread preserves it for people who are having the same problem in the future. Link to comment Share on other sites More sharing options...
PlanetTeamSpeak Posted August 31, 2017 Author Share Posted August 31, 2017 I got it all working now, thanks! Quote Link to comment Share on other sites More sharing options...
Recommended Posts
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.