Skip to content

Commit

Permalink
feat: MusicManagerMixin
Browse files Browse the repository at this point in the history
  • Loading branch information
bconlon1 committed Jul 27, 2023
1 parent a21e3d8 commit 15bb986
Show file tree
Hide file tree
Showing 4 changed files with 30 additions and 3 deletions.
2 changes: 1 addition & 1 deletion src/main/java/com/aetherteam/cumulus/Cumulus.java
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
@Mod(Cumulus.MODID)
public class Cumulus {
public static final String MODID = "cumulus_menus";
private static final Logger LOGGER = LogUtils.getLogger();
public static final Logger LOGGER = LogUtils.getLogger();

public static final ResourceKey<Registry<Menu>> MENU_REGISTRY_KEY = ResourceKey.createRegistryKey(new ResourceLocation(Cumulus.MODID, "menu"));

Expand Down
4 changes: 2 additions & 2 deletions src/main/java/com/aetherteam/cumulus/api/MenuHelper.java
Original file line number Diff line number Diff line change
Expand Up @@ -113,14 +113,14 @@ public void clearActiveMenu() {
* @return The active menu's {@link TitleScreen}.
*/
public TitleScreen getActiveScreen() {
return this.getActiveMenu().getScreen();
return this.getActiveMenu() != null ? this.getActiveMenu().getScreen() : null;
}

/**
* @return The active menu's {@link Music}.
*/
public Music getActiveMusic() {
return this.getActiveMenu().getMusic();
return this.getActiveMenu() != null ? this.getActiveMenu().getMusic() : null;
}

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
package com.aetherteam.cumulus.mixin.mixins.client;

import com.aetherteam.cumulus.client.CumulusClient;
import net.minecraft.client.Minecraft;
import net.minecraft.client.sounds.MusicManager;
import net.minecraft.sounds.Music;
import net.minecraft.sounds.Musics;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.ModifyVariable;

@Mixin(MusicManager.class)
public class MusicManagerMixin {
/**
* This mixin modifies the return of {@link Minecraft#getSituationalMusic()} as it is given to the music variable in {@link MusicManager}.
* @param music The original {@link Music} variable.
* @return The modified {@link Music} variable.
*/
@ModifyVariable(method = "Lnet/minecraft/client/sounds/MusicManager;tick()V", at = @At(value = "INVOKE_ASSIGN", target = "Lnet/minecraft/client/Minecraft;getSituationalMusic()Lnet/minecraft/sounds/Music;"))
public Music injected(Music music) {
if (music == Musics.MENU && CumulusClient.MENU_HELPER.getActiveMusic() != null) {
return CumulusClient.MENU_HELPER.getActiveMusic();
}
return music;
}
}
1 change: 1 addition & 0 deletions src/main/resources/cumulus_menus.mixins.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
"defaultRequire": 1
},
"client": [
"client.MusicManagerMixin",
"client.accessor.CreateWorldScreenAccessor",
"client.accessor.GuiComponentAccessor",
"client.accessor.RealmsPlayerScreenAccessor",
Expand Down

0 comments on commit 15bb986

Please sign in to comment.