Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

[1.6.2] Custom Sound (SOLVED)


xerca
 Share

Recommended Posts

Hello.

 

I used to use custom sounds and music in my mod but after the 1.6.x update, I can't make it work anymore.

I have a class which looks like this:

public class ModName_EventSounds {
@ForgeSubscribe
    public void onSound(SoundLoadEvent event)
    {
        try 
        {
            event.manager.soundPoolSounds.addSound("x/sound1.ogg", mod_ModName.class.getResource("/x/sound1.ogg"));
            event.manager.soundPoolSounds.addSound("x/sound2.ogg", mod_ModName.class.getResource("/x/sound2.ogg"));
            .
            .
            .
        }
        catch (Exception e)
        {
            System.err.println(error);
        }
    }
}

 

Then, somewhere else, I have codes like this for playing the sounds:

worldObject.playSoundAtEntity(EntityPlayerObject, "x.sound1", 1.0F, 1.0F);

 

I also have this code in the client proxy for registration:

@Override
public void registerSound() {
	MinecraftForge.EVENT_BUS.register(new ModName_EventSounds());
}

 

It used to work well but now apperently some changes has been done and the "event.manager.soundPoolSounds.addSound" method only takes one string as a parameter. I couldn't find out how this new one is supposed to work, so I ask for your help.

 

Thanks in advance.

Link to comment
Share on other sites

Hi.

 

After getting no help from the forums, I returned to look deeper for it myself and finally got it to work. Although I am not completely sure of this solution, it works and also makes sense. So, I am explaining it here to help other people with the same problem like F3RULLO14.

 

First of all, change the place of your sound files from wherever they are to "assets/mod_name/sound" (you need to create that folder). If they are records, I think they should go into "assets/mod_name/records" but I haven't tested this. Think of the sounds as another asset just like textures.

 

Then, turn your old code into this:

event.manager.addSound("mod_name:sound1.ogg");

(put "addStreaming" instead of "addSound" for a record)

 

The only string parameter inside is supposed to be just like an icon/texture file. Minecraft automatically adds the "sound" directory part, so don't write that.

 

After this is done, your sound should be registered. Playing it is done like this:

WorldObject.playSoundAtEntity(EntityPlayerObject, "mod_name:sound1", 1.0F, 1.0F);

 

"playSoundAtEntity" part is just the same example I used in the first post and presumably any other sound playing function should work the same. The important part is "mod_name:sound1". As expected, this also looks like using an icon for an item or a block. Don't use extensions here (.ogg, .wav, ...).

 

I hope this helps.

Link to comment
Share on other sites

Thank you for coming back here and sharing you're solution!

I haven't tried to do this yet but now you saved me for quite a lot of frustration and struggling.

I'm also going to be using this to create a text I can direct others to for help.

Thank you! :D

If you guys dont get it.. then well ya.. try harder...

Link to comment
Share on other sites

Thank you for coming back here and sharing you're solution!

I haven't tried to do this yet but now you saved me for quite a lot of frustration and struggling.

I'm also going to be using this to create a text I can direct others to for help.

Thank you! :D

Thanks xerca, that worked for me!

 

You are welcome, I'm really glad it is helping others.

Link to comment
Share on other sites

What am I doing wrong? :(

 

package invizzble.mods.nc.items;

import invizzble.mods.nc.entities.projectiles.EntityStaffODarknessAmmo;
import invizzble.mods.nc.lib.Strings;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

public class ToolStaffODarkness extends Item{
    
    public ToolStaffODarkness (int id){
        super (id );
        this.setUnlocalizedName(Strings.STAFFODARKNESS_NAME);
        this.setMaxStackSize(1);
        this.setCreativeTab(CreativeTabs.tabCombat);
        this.setMaxDamage(19);
    }
    
    @Override
    public ItemStack onItemRightClick(ItemStack par1ItemStack, World par2World,EntityPlayer par3EntityPlayer) {
      if(this.getMaxDamage() > 0)
      {
          par2World.playSoundAtEntity(par3EntityPlayer, "nc:StaffODarkness", 1.0F, 1.0F);
        {
          par2World.spawnEntityInWorld(new EntityStaffODarknessAmmo(par2World, par3EntityPlayer));
        }
        this.DamageItem(par1ItemStack, par3EntityPlayer);
        
      }
      return par1ItemStack;
       
      
    }
    
    public void DamageItem(ItemStack par1ItemStack, EntityLivingBase par2EntityLivingBase){
        par1ItemStack.damageItem(1, par2EntityLivingBase);
    }
    

    
    @SideOnly(Side.CLIENT)
    @Override
    public void registerIcons(IconRegister iconRegister)//updateIcons
    {
     itemIcon = iconRegister.registerIcon("NC:StaffODarkness"); 
     }
    

    

} 

 

package invizzble.mods.nc.events;

import java.net.URL;

import invizzble.mods.nc.NM;
import invizzble.mods.nc.lib.References;
import net.minecraftforge.client.event.sound.SoundLoadEvent;
import net.minecraftforge.event.ForgeSubscribe;

public class SoundRegistering {
    @ForgeSubscribe
    public void onSound(SoundLoadEvent event)
    {
        try
        {
             String [] soundFiles = {
                     "StaffODarkness.wav"
                     };
             for (int i = 0; i < soundFiles.length; i++){
                 event.manager.soundPoolSounds.addSound(soundFiles[i]);
                 System.err.println("NC:Sounds Registered");
             }
       
        }
        catch (Exception e)
        {
            System.err.println("NightmareCraft: Failed to register one or more sounds.");
        }
    }
}

 

package invizzble.mods.nc;

import invizzble.mods.nc.biomes.ModBiomes;
import invizzble.mods.nc.blocks.ModBlocks;
import invizzble.mods.nc.configuration.ConfigurationHandler;
import invizzble.mods.nc.configuration.ServerProxy;
import invizzble.mods.nc.configuration.registers.DimensionRegister;
import invizzble.mods.nc.configuration.registers.EventManager;
import invizzble.mods.nc.configuration.registers.LanguageRegistryBlocks;
import invizzble.mods.nc.configuration.registers.LanguageRegistryCreativetab;
import invizzble.mods.nc.configuration.registers.LanguageRegistryItem;
import invizzble.mods.nc.configuration.registers.LanguageRegistryTools;
import invizzble.mods.nc.core.handlers.FuelHandlerNightmareCraft;
import invizzble.mods.nc.creativetab.CreativeTab;
import invizzble.mods.nc.events.SoundRegistering;
import invizzble.mods.nc.items.ModItems;
import invizzble.mods.nc.items.ModTools;
import invizzble.mods.nc.lib.References;
import invizzble.mods.nc.recipes.ShapedRecipes;
import invizzble.mods.nc.recipes.ShapelessRecipes;

import java.io.File;

import net.minecraft.creativetab.CreativeTabs;
import net.minecraftforge.common.MinecraftForge;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.Mod.Init;
import cpw.mods.fml.common.Mod.PostInit;
import cpw.mods.fml.common.Mod.PreInit;
import cpw.mods.fml.common.SidedProxy;
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=References.MOD_ID, name=References.MOD_NAME, version= References.VERSION)
@NetworkMod(clientSideRequired=true, serverSideRequired=false) 


public class NM {
    
    @SidedProxy(clientSide= "invizzble.mods.nc.configuration.ClientProxy", serverSide= "invizzble.mods.nc.configuration.ServerProxy")
    public static ServerProxy proxy;
    
    
    //creativetab
    public static CreativeTabs tabsNightmareCrafts= new CreativeTab(CreativeTabs.getNextID(), References.MOD_ID);
    
    @PreInit
    public void preInit (FMLPreInitializationEvent event){
        // Initialize the configuration
        ConfigurationHandler.init(new File(event.getModConfigurationDirectory().getAbsolutePath()+File.separator + References.CHANNEL_NAME + References.MOD_ID + ".cfg"));    
        
        //initialize the ModBlocks
        ModBlocks.init();
        
        //initialize the Mod Items
        ModItems.init();
        
        //registers modtools
        ModTools.init();
        
        //registers sound
        if(FMLCommonHandler.instance().getSide().isClient())
        {
         MinecraftForge.EVENT_BUS.register(new SoundRegistering());
        }

    }
    
    @Init
    public void Init(FMLInitializationEvent event){
        
        //Registers names of blocks
       
        LanguageRegistryBlocks.init();
        
       // Registers the names of the Items
        
       LanguageRegistryItem.init();
       
       //fixes the creativetab name bug
       LanguageRegistryCreativetab.init();
       
       //registers the Shapeless Recipes
       ShapelessRecipes.init();
       
       //registers Shaped Recipes
       ShapedRecipes.init();
       
       //registers FuelHandler
       GameRegistry.registerFuelHandler(new FuelHandlerNightmareCraft());
       
       //register CraftingHandler
       //GameRegistry.registerCraftingHandler(new CraftingHandlerNightmareCraft());
       
       //registers events
       EventManager.init();

       //registers tool Language
       LanguageRegistryTools.init();
       
       //registers dimensions
       DimensionRegister.init();
       
       //registers bioemes
       ModBiomes.init();
       
       //registers the server proxy
       proxy.registerRenderThings();
       
       
       
    }
    

    @PostInit
    public void PostInit(FMLPostInitializationEvent event){
        
    }
    
    


}


    


 

help please :(

Link to comment
Share on other sites

Hi.

 

After getting no help from the forums, I returned to look deeper for it myself and finally got it to work. Although I am not completely sure of this solution, it works and also makes sense. So, I am explaining it here to help other people with the same problem like F3RULLO14.

 

First of all, change the place of your sound files from wherever they are to "assets/mod_name/sound" (you need to create that folder). If they are records, I think they should go into "assets/mod_name/records" but I haven't tested this. Think of the sounds as another asset just like textures.

 

Then, turn your old code into this:

event.manager.addSound("mod_name:sound1.ogg");

(put "addStreaming" instead of "addSound" for a record)

 

The only string parameter inside is supposed to be just like an icon/texture file. Minecraft automatically adds the "sound" directory part, so don't write that.

 

After this is done, your sound should be registered. Playing it is done like this:

WorldObject.playSoundAtEntity(EntityPlayerObject, "mod_name:sound1", 1.0F, 1.0F);

 

"playSoundAtEntity" part is just the same example I used in the first post and presumably any other sound playing function should work the same. The important part is "mod_name:sound1". As expected, this also looks like using an icon for an item or a block. Don't use extensions here (.ogg, .wav, ...).

 

I hope this helps.

 

 

Thank you so much man! Thank you! Ive been messing around with it all morning and couldnt figure it out!

Link to comment
Share on other sites

What am I doing wrong? :(

 

event.manager.soundPoolSounds.addSound(soundFiles[i]);

 

Change that line to...

 

event.manager.soundPoolSounds.addSound("nc:"+soundFiles[i]); 

 

 

Also, make sure everywhere you use your mod id, it's in lower-case, it tends to fail otherwise.

Link to comment
Share on other sites

May I also note that, in addition to registering a singular sound using "MOD_ID:soundname.ogg",

it is also possible to use randomized sounds using

event.manager.soundPoolSounds.addSound(MOD_ID+randomSound1);
event.manager.soundPoolSounds.addSound(MOD_ID+randomSound2);
event.manager.soundPoolSounds.addSound(MOD_ID+randomSound3);

where randomSound1, randomSound2, randomSound3, etc. are (different) files in assets/MOD_ID/sound/

and then play them using

playSoundAtEntity(Entity, "mod_name:randomSound", float, float);

which plays one of the above registered number-terminated sounds, at random, each call.

 

Just thought I'd mention it for completeness' sake.

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
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.

 Share



  • Recently Browsing

    No registered users viewing this page.

  • Posts

    • As title says. Already had to get some work arounds to get java working, and I don't have the ability to upgrade to windows 10.
    • I am having an issue running a server with my mod. I know that I am reaching across sides somewhere in my Mod, but could not find where this error is occurring in my mod. The crash report that I have attached below mentioned that it involved the LocalPlayer. However, when I searched my mod for LocalPlayer, I only found one case in the event that I have attached below. Can you find where I errored?   Crash Report: ---- Minecraft Crash Report ---- // I bet Cylons wouldn't have this problem. Time: 1/17/22, 8:10 PM Description: Mod loading error has occurred java.lang.Exception: Mod Loading has failed at net.minecraftforge.logging.CrashReportExtender.dumpModLoadingCrashReport(CrashReportExtender.java:69) ~[forge-1.18-38.0.17_mapped_official_1.18-recomp.jar%2376%2382!:?] {re:classloading} at net.minecraftforge.server.loading.ServerModLoader.load(ServerModLoader.java:53) ~[forge-1.18-38.0.17_mapped_official_1.18-recomp.jar%2376%2382!:?] {re:classloading} at net.minecraft.server.Main.main(Main.java:104) ~[forge-1.18-38.0.17_mapped_official_1.18-recomp.jar%2377!:?] {re:classloading} at jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?] {} at jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?] {} at jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?] {} at java.lang.reflect.Method.invoke(Method.java:568) ~[?:?] {} at net.minecraftforge.fml.loading.targets.ForgeServerUserdevLaunchHandler.lambda$launchService$0(ForgeServerUserdevLaunchHandler.java:16) ~[fmlloader-1.18-38.0.17.jar%230!:?] {} at cpw.mods.modlauncher.LaunchServiceHandlerDecorator.launch(LaunchServiceHandlerDecorator.java:37) [modlauncher-9.0.24.jar%2310!:?] {} at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:53) [modlauncher-9.0.24.jar%2310!:?] {} at cpw.mods.modlauncher.LaunchServiceHandler.launch(LaunchServiceHandler.java:71) [modlauncher-9.0.24.jar%2310!:?] {} at cpw.mods.modlauncher.Launcher.run(Launcher.java:106) [modlauncher-9.0.24.jar%2310!:?] {} at cpw.mods.modlauncher.Launcher.main(Launcher.java:77) [modlauncher-9.0.24.jar%2310!:?] {} at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:26) [modlauncher-9.0.24.jar%2310!:?] {} at cpw.mods.modlauncher.BootstrapLaunchConsumer.accept(BootstrapLaunchConsumer.java:23) [modlauncher-9.0.24.jar%2310!:?] {} at cpw.mods.bootstraplauncher.BootstrapLauncher.main(BootstrapLauncher.java:90) [bootstraplauncher-0.1.17.jar:?] {} A detailed walkthrough of the error, its code path and all known details is as follows: --------------------------------------------------------------------------------------- -- Head -- Thread: main Stacktrace: at net.minecraftforge.fml.loading.RuntimeDistCleaner.processClassWithFlags(RuntimeDistCleaner.java:71) ~[fmlloader-1.18-38.0.17.jar%230!:1.0] {} -- MOD examplemod -- Details: Mod File: main Failure message: Example Mod (examplemod) has failed to load correctly java.lang.RuntimeException: Attempted to load class net/minecraft/client/player/LocalPlayer for invalid dist DEDICATED_SERVER Mod Version: 3.0 Mod Issue URL: NOT PROVIDED Exception message: java.lang.RuntimeException: Attempted to load class net/minecraft/client/player/LocalPlayer for invalid dist DEDICATED_SERVER Stacktrace: at net.minecraftforge.fml.loading.RuntimeDistCleaner.processClassWithFlags(RuntimeDistCleaner.java:71) ~[fmlloader-1.18-38.0.17.jar:1.0] {} at cpw.mods.modlauncher.LaunchPluginHandler.offerClassNodeToPlugins(LaunchPluginHandler.java:88) ~[modlauncher-9.0.7.jar:?] {} at cpw.mods.modlauncher.ClassTransformer.transform(ClassTransformer.java:120) ~[modlauncher-9.0.7.jar:?] {} at cpw.mods.modlauncher.TransformingClassLoader.maybeTransformClassBytes(TransformingClassLoader.java:50) ~[modlauncher-9.0.7.jar:?] {} at cpw.mods.cl.ModuleClassLoader.readerToClass(ModuleClassLoader.java:110) ~[securejarhandler-0.9.54.jar:?] {} at cpw.mods.cl.ModuleClassLoader.lambda$findClass$16(ModuleClassLoader.java:213) ~[securejarhandler-0.9.54.jar:?] {} at cpw.mods.cl.ModuleClassLoader.loadFromModule(ModuleClassLoader.java:223) ~[securejarhandler-0.9.54.jar:?] {} at cpw.mods.cl.ModuleClassLoader.findClass(ModuleClassLoader.java:213) ~[securejarhandler-0.9.54.jar:?] {} at cpw.mods.cl.ModuleClassLoader.loadClass(ModuleClassLoader.java:130) ~[securejarhandler-0.9.54.jar:?] {} at java.lang.ClassLoader.loadClass(ClassLoader.java:520) ~[?:?] {} at java.lang.Class.forName0(Native Method) ~[?:?] {} at java.lang.Class.forName(Class.java:467) ~[?:?] {} at net.minecraftforge.fml.javafmlmod.AutomaticEventSubscriber.lambda$inject$6(AutomaticEventSubscriber.java:75) ~[javafmllanguage-1.18-38.0.17.jar%2378!:?] {} at java.util.ArrayList.forEach(ArrayList.java:1511) ~[?:?] {} at net.minecraftforge.fml.javafmlmod.AutomaticEventSubscriber.inject(AutomaticEventSubscriber.java:62) ~[javafmllanguage-1.18-38.0.17.jar%2378!:?] {} at net.minecraftforge.fml.javafmlmod.FMLModContainer.constructMod(FMLModContainer.java:91) ~[javafmllanguage-1.18-38.0.17.jar%2378!:?] {} at net.minecraftforge.fml.ModContainer.lambda$buildTransitionHandler$4(ModContainer.java:120) ~[fmlcore-1.18-38.0.17.jar%2380!:?] {} at java.util.concurrent.CompletableFuture$AsyncRun.run(CompletableFuture.java:1804) ~[?:?] {} at java.util.concurrent.CompletableFuture$AsyncRun.exec(CompletableFuture.java:1796) ~[?:?] {} at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:373) ~[?:?] {} at java.util.concurrent.ForkJoinPool$WorkQueue.topLevelExec(ForkJoinPool.java:1182) ~[?:?] {} at java.util.concurrent.ForkJoinPool.scan(ForkJoinPool.java:1655) ~[?:?] {} at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1622) ~[?:?] {} at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:165) ~[?:?] {} -- System Details -- Details: Minecraft Version: 1.18 Minecraft Version ID: 1.18 Operating System: Windows 10 (amd64) version 10.0 Java Version: 17.0.1, Eclipse Adoptium Java VM Version: OpenJDK 64-Bit Server VM (mixed mode, sharing), Eclipse Adoptium Memory: 320780752 bytes (305 MiB) / 1127219200 bytes (1075 MiB) up to 2122317824 bytes (2024 MiB) CPUs: 4 Processor Vendor: GenuineIntel Processor Name: Intel(R) Core(TM) i3-7020U CPU @ 2.30GHz Identifier: Intel64 Family 6 Model 142 Stepping 9 Microarchitecture: Amber Lake Frequency (GHz): 2.30 Number of physical packages: 1 Number of physical CPUs: 2 Number of logical CPUs: 4 Graphics card #0 name: Intel(R) HD Graphics 620 Graphics card #0 vendor: Intel Corporation (0x8086) Graphics card #0 VRAM (MB): 1024.00 Graphics card #0 deviceId: 0x5921 Graphics card #0 versionInfo: DriverVersion=27.20.100.9664 Memory slot #0 capacity (MB): 8192.00 Memory slot #0 clockSpeed (GHz): 2.67 Memory slot #0 type: DDR4 Virtual memory max (MB): 16427.04 Virtual memory used (MB): 10800.33 Swap memory total (MB): 8334.11 Swap memory used (MB): 434.15 JVM Flags: 1 total; -XX:+ShowCodeDetailsInExceptionMessages ModLauncher: 9.0.24+9.0.24+main.7be9f01d ModLauncher launch target: forgeserveruserdev ModLauncher naming: mcp ModLauncher services: mixin PLUGINSERVICE eventbus PLUGINSERVICE object_holder_definalize PLUGINSERVICE runtime_enum_extender PLUGINSERVICE capability_token_subclass PLUGINSERVICE accesstransformer PLUGINSERVICE runtimedistcleaner PLUGINSERVICE mixin TRANSFORMATIONSERVICE fml TRANSFORMATIONSERVICE FML Language Providers: minecraft@1.0 javafml@null Mod List: forge-1.18-38.0.17_mapped_official_1.18-recomp.jar|Minecraft |minecraft |1.18 |COMMON_SET|Manifest: a1:d4:5e:04:4f:d3:d6:e0:7b:37:97:cf:77:b0:de:ad:4a:47:ce:8c:96:49:5f:0a:cf:8c:ae:b2:6d:4b:8a:3f main |Example Mod |examplemod |3.0 |ERROR |Manifest: NOSIGNATURE |Forge |forge |38.0.17 |COMMON_SET|Manifest: NOSIGNATURE Crash Report UUID: a2d945ef-ef76-4bb1-ac09-f2b263e52519 FML: 38.0 Forge: net.minecraftforge:38.0.17 Mod Event with LocalPlayer: @SubscribeEvent public static void renderGameOverlay(RenderGameOverlayEvent.Post event) { if(!(Thread.currentThread().getThreadGroup() == SidedThreadGroups.SERVER)) { Minecraft mc = Minecraft.getInstance(); LocalPlayer player = mc.player; if (mc.gameMode.canHurtPlayer() && event.getType() == RenderGameOverlayEvent.ElementType.ALL) { ModRender renderer = new ModRender(Minecraft.getInstance()); renderer.renderToolbars(Minecraft.getInstance(), player); } } }  
    • That's because redstone doesn't use tile entities. It's all handled by blockstates. There's no way to achieve what you want as far as I know.
  • Topics

  • Who's Online (See full list)

×
×
  • Create New...

Important Information

By using this site, you agree to our Privacy Policy.