burnner Posted July 23, 2013 Posted July 23, 2013 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 Quote
burnner Posted July 23, 2013 Author Posted July 23, 2013 nope: "The constructor ItemRecord(int, String) is not visible" Quote
burnner Posted July 26, 2013 Author Posted July 26, 2013 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 Quote
vilu Posted July 27, 2013 Posted July 27, 2013 I have same problem...let's hope we or someone else figure this out =/ Quote
burnner Posted July 27, 2013 Author Posted July 27, 2013 Lol well it's weird that no one can help Quote
vilu Posted July 29, 2013 Posted July 29, 2013 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... Quote
Squawkers13 Posted August 1, 2013 Posted August 1, 2013 What method is soundpoolSounds? (ie MinecraftForge.soundPoolSounds?) Quote
bl4ckscor3 Posted August 1, 2013 Posted August 1, 2013 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/. Quote http://i.imgur.com/kPfhwnJ.png[/img] ↑↑↑↑↑↑↑↑↑↑ Click it please? :3 ↑↑↑↑↑↑↑↑↑↑
GotoLink Posted August 2, 2013 Posted August 2, 2013 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. Quote
bl4ckscor3 Posted August 2, 2013 Posted August 2, 2013 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 Quote http://i.imgur.com/kPfhwnJ.png[/img] ↑↑↑↑↑↑↑↑↑↑ Click it please? :3 ↑↑↑↑↑↑↑↑↑↑
vilu Posted August 2, 2013 Posted August 2, 2013 I really think your mod directory should be lowercased... Quote
bl4ckscor3 Posted August 2, 2013 Posted August 2, 2013 It is lower cased. Quote http://i.imgur.com/kPfhwnJ.png[/img] ↑↑↑↑↑↑↑↑↑↑ Click it please? :3 ↑↑↑↑↑↑↑↑↑↑
vilu Posted August 2, 2013 Posted August 2, 2013 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? Quote
bl4ckscor3 Posted August 2, 2013 Posted August 2, 2013 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. Quote http://i.imgur.com/kPfhwnJ.png[/img] ↑↑↑↑↑↑↑↑↑↑ Click it please? :3 ↑↑↑↑↑↑↑↑↑↑
vilu Posted August 2, 2013 Posted August 2, 2013 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.. Quote
bl4ckscor3 Posted August 2, 2013 Posted August 2, 2013 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); Quote http://i.imgur.com/kPfhwnJ.png[/img] ↑↑↑↑↑↑↑↑↑↑ Click it please? :3 ↑↑↑↑↑↑↑↑↑↑
vilu Posted August 2, 2013 Posted August 2, 2013 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) ..? Quote
bl4ckscor3 Posted August 2, 2013 Posted August 2, 2013 Yes I did so. Quote http://i.imgur.com/kPfhwnJ.png[/img] ↑↑↑↑↑↑↑↑↑↑ Click it please? :3 ↑↑↑↑↑↑↑↑↑↑
vilu Posted August 2, 2013 Posted August 2, 2013 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.. Quote
bl4ckscor3 Posted August 2, 2013 Posted August 2, 2013 Still doesn't work Quote http://i.imgur.com/kPfhwnJ.png[/img] ↑↑↑↑↑↑↑↑↑↑ Click it please? :3 ↑↑↑↑↑↑↑↑↑↑
vilu Posted August 2, 2013 Posted August 2, 2013 mm....can you show me your extended ItemRecord? Quote
bl4ckscor3 Posted August 2, 2013 Posted August 2, 2013 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"); } } Quote http://i.imgur.com/kPfhwnJ.png[/img] ↑↑↑↑↑↑↑↑↑↑ Click it please? :3 ↑↑↑↑↑↑↑↑↑↑
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.