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

I made a note block cover of Loki Green Theme from the Loki show by Marvel Studios. I was wanting to implement it into a mod. I went through the steps of making an item and registering a sound, but when I put the item in a jukebox, the sound does not play.
 

public class ModSounds {

    static void register() {
    }

    public static final Lazy<SoundEvent> LOKI_THEME_DISC_LAZY = Lazy.of(() ->
            new SoundEvent(new ResourceLocation(MoreMusicDiscs.MOD_ID, "loki_green_theme")));

    public static final RegistryObject<SoundEvent> LOKI_THEME_DISC =
            Registration.SOUNDS.register("loki_green_theme.disc", LOKI_THEME_DISC_LAZY);
}

^^ the register method is called in my main method
 

{
  "loki_green_theme": {
    "subtitle": "moremusicdiscs.subtitle.loki_green_theme",
    "sounds": [
      {
        "name": "moremusicdiscs:disc/loki_green_theme",
        "stream": true
      }
    ]
  }
}

^^ sounds.json file

image.png.26456213f20a0aeb54622a26c6a7026a.png

^^ package presentation

SOLVED- I made the directory that the sound file was in sounds.disc when I referenced the sound as sounds/disc. I simply had to change the directory to sounds/disc and it worked

Edited by Icefox
Solved

  • Author
15 hours ago, diesieben07 said:
  • Why do you have a separate Lazy object for your SoundEvent? The RegistryObject you get from the DeferredRegister already provides this functionality.
  • Do not put a DeferredRegister and its objects in separate classes. The "empty register method to ensure the class is loaded" is absolutely disgusting.
  • Show the registration of your Item.
    public static final DeferredRegister<Item> ITEMS = DeferredRegister.create(ForgeRegistries.ITEMS, MoreMusicDiscs.MOD_ID);

    public static final RegistryObject<Item> LOKI_THEME_DISC = ITEMS.register("loki_theme_disc", () ->
            new MusicDiscItem(1, () -> ModSounds.LOKI_THEME_DISC_LAZY.get(),
                    new Item.Properties().group(MoreMusicDiscs.DISC_ITEM_GROUP).maxStackSize(1).group(MoreMusicDiscs.DISC_ITEM_GROUP)));

I'm pretty sure I fixed what you mentioned. To be clear, I don't need the static void register event? I did think it was kinda weird in the tutorial I was watching, as static variables are supposed to load when the program starts (I think)

4 hours ago, Icefox said:

as static variables are supposed to load when the program starts (I think)

They are loaded upon the class is being used.

So you need the "static void register event" there if you are doing this way, but it is not recommended 

20 hours ago, diesieben07 said:

The "empty register method to ensure the class is loaded" is absolutely disgusting

 

  • Author
13 minutes ago, diesieben07 said:

Your sound is called "disc/loki_green_theme", but your sounds.json contains a sound called "loki_green_theme".

oops, I assumed that it meant the location of the sound in the assets/sounds folder. Anyway, I changed the sounds event but I'm still getting nothing. Do I maybe have to assign a texture to the item before it can play a sound?

    public static final RegistryObject<SoundEvent> LOKI_THEME_DISC =
            SOUNDS.register("loki_green_theme", () -> new SoundEvent(new ResourceLocation(MoreMusicDiscs.MOD_ID, "loki_green_theme")));

 

  • Author
17 minutes ago, diesieben07 said:

Your sound file is located in assets/moremusicdiscs/sounds.disc/loki_green_theme.ogg. It should be in assets/moremusicdiscs/sounds/disc/loki_green_theme.ogg

This fixed it! Thanks for all the help

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.