From 70e9813002e64f187d534d2eef0e516a0379fb88 Mon Sep 17 00:00:00 2001 From: paulevsGitch Date: Mon, 5 Oct 2020 19:53:16 +0300 Subject: [PATCH] Music fix --- .../mixin/client/MinecraftClientMixin.java | 50 +++++++++++++++++++ .../ru/betterend/registry/EntityRegistry.java | 2 +- .../resources/assets/betterend/sounds.json | 4 +- .../resources/betterend.mixins.client.json | 3 +- 4 files changed, 55 insertions(+), 4 deletions(-) create mode 100644 src/main/java/ru/betterend/mixin/client/MinecraftClientMixin.java diff --git a/src/main/java/ru/betterend/mixin/client/MinecraftClientMixin.java b/src/main/java/ru/betterend/mixin/client/MinecraftClientMixin.java new file mode 100644 index 00000000..f76d24ae --- /dev/null +++ b/src/main/java/ru/betterend/mixin/client/MinecraftClientMixin.java @@ -0,0 +1,50 @@ +package ru.betterend.mixin.client; + +import org.spongepowered.asm.mixin.Final; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.Shadow; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable; + +import net.minecraft.client.MinecraftClient; +import net.minecraft.client.gui.hud.InGameHud; +import net.minecraft.client.gui.screen.CreditsScreen; +import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.network.ClientPlayerEntity; +import net.minecraft.client.sound.MusicType; +import net.minecraft.client.world.ClientWorld; +import net.minecraft.sound.MusicSound; +import net.minecraft.world.World; + +@Mixin(MinecraftClient.class) +public class MinecraftClientMixin { + @Shadow + public ClientPlayerEntity player; + + @Shadow + public Screen currentScreen; + + @Shadow + @Final + public InGameHud inGameHud; + + @Shadow + public ClientWorld world; + + @Inject(method = "getMusicType", at = @At("HEAD"), cancellable = true) + private void getEndMusic(CallbackInfoReturnable info) { + if (!(this.currentScreen instanceof CreditsScreen) && this.player != null) { + if (this.player.world.getRegistryKey() == World.END) { + if (this.inGameHud.getBossBarHud().shouldPlayDragonMusic()) { + info.setReturnValue(MusicType.DRAGON); + } + else { + MusicSound sound = (MusicSound) this.world.getBiomeAccess().method_27344(this.player.getBlockPos()).getMusic().orElse(MusicType.END); + info.setReturnValue(sound); + } + info.cancel(); + } + } + } +} diff --git a/src/main/java/ru/betterend/registry/EntityRegistry.java b/src/main/java/ru/betterend/registry/EntityRegistry.java index d16f4726..e972de5f 100644 --- a/src/main/java/ru/betterend/registry/EntityRegistry.java +++ b/src/main/java/ru/betterend/registry/EntityRegistry.java @@ -14,7 +14,7 @@ import ru.betterend.BetterEnd; import ru.betterend.entity.EntityDragonfly; public class EntityRegistry { - public static final EntityType DRAGONFLY = register("dragonfly", SpawnGroup.CREATURE, 0.6F, 0.5F, EntityDragonfly::new, EntityDragonfly.createMobAttributes()); + public static final EntityType DRAGONFLY = register("dragonfly", SpawnGroup.AMBIENT, 0.6F, 0.5F, EntityDragonfly::new, EntityDragonfly.createMobAttributes()); public static void register() {} diff --git a/src/main/resources/assets/betterend/sounds.json b/src/main/resources/assets/betterend/sounds.json index 7f649869..d5846579 100644 --- a/src/main/resources/assets/betterend/sounds.json +++ b/src/main/resources/assets/betterend/sounds.json @@ -4,12 +4,12 @@ "sounds": [ { "name": "betterend:music/dan_henig_eternal_garden", - "volume": 0.3, + "volume": 0.1, "stream": false }, { "name": "betterend:music/dan_henig_nebular_focus", - "volume": 0.3, + "volume": 0.1, "stream": false } ] diff --git a/src/main/resources/betterend.mixins.client.json b/src/main/resources/betterend.mixins.client.json index 070d942a..58f342fb 100644 --- a/src/main/resources/betterend.mixins.client.json +++ b/src/main/resources/betterend.mixins.client.json @@ -7,7 +7,8 @@ "WorldRendererMixin", "BackgroundRendererMixin", "ClientRecipeBookMixin", - "ClientPlayNetworkHandlerMixin" + "ClientPlayNetworkHandlerMixin", + "MinecraftClientMixin" ], "injectors": { "defaultRequire": 1