Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

Posted

Hello,

sadly the old

 

newRecord = new ItemRecord(id, "sound file", false).setUnlocalizedName("record")

 

does not work anymore. Is there a new way to make custom discs?

 

burnner

  • Author

I got my dics back, but there is no sound and I cant figure out where to put the records file. assets/modid/records/ is not really working  :-\

I have same problem...let's hope we or someone else figure this out =/

GOT IT =D

 

Here's how:

 

Extend ItemRecord like...

public class ItemModDisc extends ItemRecord {

	public ItemModDisc(int id, String recordName) {
	super(id, recordName);
	this.setCreativeTab(CreativeTabs.tabMisc);
	this.maxStackSize = 1;
}
// Rest of your ItemRecord code...
}

 

Then to your main class, add your constructor with one change:

modDisc = (new ItemModDisc(modDiscID, "your_modname_lowercased:moddisc")).setUnlocalizedName("moddisc");

 

Put your ogg to the assets/your_modname_lowercased/records and keep the name same as above (so my custom

record is moddisc.ogg and path is then assets/my_mods_name/records/moddisc.ogg

And load it the the soundPoolStreaming (in your sound load event handler) for example like this:

 

event.manager.soundPoolStreaming.addSound("your_modname_lowercased:moddisc.ogg");

 

Note that you don't use folder records in handler because soundPoolStreaming is looking always from /assets/your_modname_lowercased/records

like soundPoolSounds is looking from /assets/your_modname_lowercased/sounds

 

And there it is, your custom record which works just fine =)

 

edit: Little clean up for code because I copy pasted it without removing unneeded lines...

GOT IT =D

 

Here's how:

 

Extend ItemRecord like...

public class ItemModDisc extends ItemRecord {

public final String recordName;

	public ItemModDisc(int id, String recordName) {
	super(id, recordName);
	this.setCreativeTab(CreativeTabs.tabMisc);
	this.maxStackSize = 1;
	this.recordName = "moddisc";
}

 

Then to your main class, add your constructor with one change:

modDisc = (new ItemModDisc(modDiscID, "your_modname_lowercased:moddisc")).setUnlocalizedName("moddisc");

 

Put your ogg to the assets/your_modname_lowercased/records and keep the name same as above (so my custom

record is moddisc.ogg and path is then assets/my_mods_name/records/moddisc.ogg

And load it the the soundPoolStreaming (in your sound load event handler) for example like this:

 

event.manager.soundPoolStreaming.addSound("your_modname_lowercased:moddisc.ogg");

 

Note that you don't use folder records in handler because soundPoolStreaming is looking always from /assets/your_modname_lowercased/records

like soundPoolSounds is looking from /assets/your_modname_lowercased/sounds

 

And there it is, your custom record which works just fine =)

The jukebox accepts the disc, but this text is showing up (Now Playing: C418 - blablabla) and the sound doesn't play. I put the soundfile into /assets/myModid/records/.

↑↑↑↑↑↑↑↑↑↑ Click it please? :3 ↑↑↑↑↑↑↑↑↑↑

You may want to change this:

@SideOnly(Side.CLIENT)

    /**
     * Return the title for this record.
     */
    public String getRecordTitle()
    {
        return "C418 - " + this.recordName;
    }

To whatever it is you want.

 

In your constructor, this is useless:

this.recordName = "moddisc";

because it is already done by the call to super(id, recordName);

 

You can also remove:

public final String recordName;

this field already exists in the parent class.

You may want to change this:

@SideOnly(Side.CLIENT)

    /**
     * Return the title for this record.
     */
    public String getRecordTitle()
    {
        return "C418 - " + this.recordName;
    }

To whatever it is you want.

 

In your constructor, this is useless:

this.recordName = "moddisc";

because it is already done by the call to super(id, recordName);

 

You can also remove:

public final String recordName;

this field already exists in the parent class.

Thank you! The name is fixed now. But what about the sound not playing? I put the file into the right directory :/

↑↑↑↑↑↑↑↑↑↑ Click it please? :3 ↑↑↑↑↑↑↑↑↑↑

Ok then.. double check your directory structure because you won't get any error message to the console if Minecraft

doesn't find your music file. Oh and another thing, I haven't tested any other formats than .ogg so I'm not sure about

other formats..

 

Edit: Hey...can I see your soundloader because the problem could be there?

Registering of the SoundLoader in PreInit:

MinecraftForge.EVENT_BUS.register(new SoundHandler());

 

SoundHandler.java:

package MoreDimensions.handler;

import net.minecraft.client.audio.SoundManager;
import net.minecraftforge.client.event.sound.SoundLoadEvent;
import net.minecraftforge.event.ForgeSubscribe;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import MoreDimensions.MoreDimensions;

public class SoundLoader 
{
@SideOnly(Side.CLIENT)
@ForgeSubscribe
public void onSoundsLoaded(SoundLoadEvent event)
{
	SoundManager manager = event.manager;

	manager.soundPoolSounds.addSound(MoreDimensions.modid + ":KsTBeats - Explosive.ogg");
	manager.soundPoolSounds.addSound(MoreDimensions.modid + ":KsTBeats - Frequenz.ogg");
	manager.soundPoolSounds.addSound(MoreDimensions.modid + ":KsTBeats - Recent.ogg");
	manager.soundPoolSounds.addSound(MoreDimensions.modid + ":KsTBeats - Rising Again.ogg");
	manager.soundPoolSounds.addSound(MoreDimensions.modid + ":KsTBeats - Watching.ogg");
}
}

My modid is moredimensions and my folder structure is \assets\moredimensions\records\KsTBeats - Explosive.ogg and the other ones.

 

EDIT: I tried mp3 and it didn't work either.

↑↑↑↑↑↑↑↑↑↑ Click it please? :3 ↑↑↑↑↑↑↑↑↑↑

Couple things that could effect..

 

MinecraftForge.EVENT_BUS.register(new SoundHandler()); so Class name (compilation unit) should be also

SoundHandler (see your SoundHandler.java, line: public class SoundLoader )

 

Music discs should be loaded to soundPoolStreaming, not to the soundPoolSounds. You see, soundPoolSounds gets

sounds from the directory /assets/modid/sounds/file.ogg and soundPoolStreaming from /assets/modid/records/file.ogg

 

Also, I wouldn't recommend to use spaces in filenames..

I renamed SoundHandler to SoundLoader while I made this post so a couple things are messed up, but everything is called SoundLoader. I changed everything to soundPoolStraming and to explosive instead of KsTBeats - Explosvie as well as the file name, and it still doesn't work. This is my init part btw:

explosiveDisc = new Explosive(explosiveDiscID, modid + ":explosive").setUnlocalizedName("explosiveDisc").setCreativeTab(moreDimensionsSound);

↑↑↑↑↑↑↑↑↑↑ Click it please? :3 ↑↑↑↑↑↑↑↑↑↑

Did you also remember to change

 

manager.soundPoolSounds.addSound(MoreDimensions.modid + ":KsTBeats - Explosive.ogg");    to

 

manager.soundPoolStreaming.addSound(MoreDimensions.modid + ":KsTBeats - Explosive.ogg");

(or manager.soundPoolStreaming.addSound(MoreDimensions.modid + ":explosive.ogg"); if you changed everything to lowercased)

 

..?

I'm running out of ideas...the only thing you haven't change is the way you use your sound loader.

So try remove line SoundManager manager = event.manager because you don't need it. Just use:

 

              @ForgeSubscribe

public void onSoundsLoaded(SoundLoadEvent event)

{

                      event.manager.soundPoolStreaming.addSound(MoreDimensions.modid + ":explosive.ogg");

                      //and so on...

              }

 

...to load your music disc.

 

edit: And by the way...I'm registering my items in load, and sounds in preinit...just to let you know..

mm....can you show me your extended ItemRecord?

package MoreDimensions.music;

import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.item.EnumRarity;
import net.minecraft.item.ItemRecord;
import net.minecraft.item.ItemStack;
import MoreDimensions.MoreDimensions;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;

public class Explosive extends ItemRecord
{	
    public Explosive(int id, String recordName)
    {
        super(id, recordName);
        this.maxStackSize = 1;
    }

    @SideOnly(Side.CLIENT)
    public String getRecordTitle()
    {
        return "KsTBeats - Explosive";
    }

    @SideOnly(Side.CLIENT)
    public EnumRarity getRarity(ItemStack par1ItemStack)
    {
        return EnumRarity.rare;
    }
    
    @SideOnly(Side.CLIENT)
    public void registerIcons(IconRegister reg)
    {
    	this.itemIcon = reg.registerIcon(MoreDimensions.modid + ":record_explosive");
    }
}

↑↑↑↑↑↑↑↑↑↑ Click it please? :3 ↑↑↑↑↑↑↑↑↑↑

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

Important Information

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.