From 639140d372f2221b157cede5f29d77f23cbd46c6 Mon Sep 17 00:00:00 2001 From: Xenthio Date: Sun, 29 Sep 2024 17:27:29 +1000 Subject: [PATCH 1/3] Classic Background rotation --- .../gui_background/PanoramaRendererMixin.java | 29 +++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 common/src/main/java/mod/adrenix/nostalgic/mixin/tweak/candy/gui_background/PanoramaRendererMixin.java diff --git a/common/src/main/java/mod/adrenix/nostalgic/mixin/tweak/candy/gui_background/PanoramaRendererMixin.java b/common/src/main/java/mod/adrenix/nostalgic/mixin/tweak/candy/gui_background/PanoramaRendererMixin.java new file mode 100644 index 000000000..00c6ad2e1 --- /dev/null +++ b/common/src/main/java/mod/adrenix/nostalgic/mixin/tweak/candy/gui_background/PanoramaRendererMixin.java @@ -0,0 +1,29 @@ +package mod.adrenix.nostalgic.mixin.tweak.candy.gui_background; + + +import mod.adrenix.nostalgic.util.client.timer.PartialTick; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.CubeMap; +import net.minecraft.client.renderer.PanoramaRenderer; +import org.spongepowered.asm.mixin.Mixin; +import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.ModifyArg; + +@Mixin(PanoramaRenderer.class) +public abstract class PanoramaRendererMixin +{ + private float time; + @ModifyArg( + method = "render", + at = @At( + value = "INVOKE", + target = "Lnet/minecraft/client/renderer/CubeMap;render(Lnet/minecraft/client/Minecraft;FFF)V" + ), + index = 1 + ) + private float nt_panorama_renderer$DoPanoramaBob(float bob) + { + time += PartialTick.realtime(); + return (float)(Math.sin(time/400.0f) * 25.0f + 20.0f); + } +} \ No newline at end of file From e66fc55ab2e464730b0bd78dfa571cbe488aff28 Mon Sep 17 00:00:00 2001 From: Xenthio Date: Sun, 29 Sep 2024 18:13:26 +1000 Subject: [PATCH 2/3] Old menu panorama rotation and gradients. --- .../nostalgic/config/ClientConfig.java | 2 ++ .../gui_background/PanoramaRendererMixin.java | 29 +++++++++++++++++-- .../nostalgic/tweak/config/CandyTweak.java | 2 ++ .../assets/nostalgic_tweaks/lang/en_us.json | 4 +++ .../resources/mixin.nostalgic_tweaks.json | 1 + 5 files changed, 35 insertions(+), 3 deletions(-) diff --git a/common/src/main/java/mod/adrenix/nostalgic/config/ClientConfig.java b/common/src/main/java/mod/adrenix/nostalgic/config/ClientConfig.java index d8d7eca6d..883472eda 100644 --- a/common/src/main/java/mod/adrenix/nostalgic/config/ClientConfig.java +++ b/common/src/main/java/mod/adrenix/nostalgic/config/ClientConfig.java @@ -414,6 +414,8 @@ public static class EyeCandy public boolean overrideTitleScreen = CandyTweak.OVERRIDE_TITLE_SCREEN.register("overrideTitleScreen"); public boolean oldTitleBackground = CandyTweak.OLD_TITLE_BACKGROUND.register("oldTitleBackground"); public boolean uncapTitleFPS = CandyTweak.UNCAP_TITLE_FPS.register("uncapTitleFPS"); + public boolean oldPanoramaRotation = CandyTweak.OLD_PANORAMA_ROTATION.register("oldPanoramaRotation"); + public boolean oldPanoramaBlur = CandyTweak.OLD_PANORAMA_BLUR.register("oldPanoramaBlur"); // Title Screen Logo diff --git a/common/src/main/java/mod/adrenix/nostalgic/mixin/tweak/candy/gui_background/PanoramaRendererMixin.java b/common/src/main/java/mod/adrenix/nostalgic/mixin/tweak/candy/gui_background/PanoramaRendererMixin.java index 00c6ad2e1..665fa87c9 100644 --- a/common/src/main/java/mod/adrenix/nostalgic/mixin/tweak/candy/gui_background/PanoramaRendererMixin.java +++ b/common/src/main/java/mod/adrenix/nostalgic/mixin/tweak/candy/gui_background/PanoramaRendererMixin.java @@ -1,13 +1,17 @@ package mod.adrenix.nostalgic.mixin.tweak.candy.gui_background; +import mod.adrenix.nostalgic.tweak.config.CandyTweak; import mod.adrenix.nostalgic.util.client.timer.PartialTick; import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.renderer.CubeMap; import net.minecraft.client.renderer.PanoramaRenderer; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; +import org.spongepowered.asm.mixin.injection.Inject; import org.spongepowered.asm.mixin.injection.ModifyArg; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(PanoramaRenderer.class) public abstract class PanoramaRendererMixin @@ -21,9 +25,28 @@ public abstract class PanoramaRendererMixin ), index = 1 ) - private float nt_panorama_renderer$DoPanoramaBob(float bob) + private float nt_panorama_renderer$DoPanoramaOverride(float bob) { - time += PartialTick.realtime(); - return (float)(Math.sin(time/400.0f) * 25.0f + 20.0f); + if (CandyTweak.OLD_PANORAMA_ROTATION.get()) { + time += PartialTick.realtime(); + return (float)(Math.sin(time/400.0f) * 25.0f + 20.0f); + } + return bob; + } + @Inject( + method = "render", + at = @At("TAIL") + ) + private void nt_panorama_renderer$DoBlurAndGradient(GuiGraphics guiGraphics, int width, int height, float fade, float partialTick, CallbackInfo ci) { + if (CandyTweak.OLD_PANORAMA_BLUR.get()) { + // Seemingly no way to control the blur, so just do it four times, cant hurt performance too much + we get to reuse minecraft code instead of inventing our own + Minecraft.getInstance().gameRenderer.processBlurEffect(partialTick); + Minecraft.getInstance().gameRenderer.processBlurEffect(partialTick); + Minecraft.getInstance().gameRenderer.processBlurEffect(partialTick); + Minecraft.getInstance().gameRenderer.processBlurEffect(partialTick); + Minecraft.getInstance().getMainRenderTarget().bindWrite(false); + guiGraphics.fillGradient(0, 0, width, height, -2130706433, 16777215); + guiGraphics.fillGradient(0, 0, width, height, 0, Integer.MIN_VALUE); + } } } \ No newline at end of file diff --git a/common/src/main/java/mod/adrenix/nostalgic/tweak/config/CandyTweak.java b/common/src/main/java/mod/adrenix/nostalgic/tweak/config/CandyTweak.java index e20ab7f04..a390ce936 100644 --- a/common/src/main/java/mod/adrenix/nostalgic/tweak/config/CandyTweak.java +++ b/common/src/main/java/mod/adrenix/nostalgic/tweak/config/CandyTweak.java @@ -255,6 +255,8 @@ public interface CandyTweak TweakFlag OVERRIDE_TITLE_SCREEN = TweakFlag.client(true, CandyGroup.INTERFACE_TITLE).build(); TweakFlag OLD_TITLE_BACKGROUND = TweakFlag.client(true, CandyGroup.INTERFACE_TITLE).build(); TweakFlag UNCAP_TITLE_FPS = TweakFlag.client(true, CandyGroup.INTERFACE_TITLE).build(); + TweakFlag OLD_PANORAMA_ROTATION = TweakFlag.client(false, CandyGroup.INTERFACE_TITLE).build(); + TweakFlag OLD_PANORAMA_BLUR = TweakFlag.client(false, CandyGroup.INTERFACE_TITLE).build(); // Title Screen Logo diff --git a/common/src/main/resources/assets/nostalgic_tweaks/lang/en_us.json b/common/src/main/resources/assets/nostalgic_tweaks/lang/en_us.json index 2df19e8e1..220dcf816 100644 --- a/common/src/main/resources/assets/nostalgic_tweaks/lang/en_us.json +++ b/common/src/main/resources/assets/nostalgic_tweaks/lang/en_us.json @@ -1026,6 +1026,10 @@ "gui.nostalgic_tweaks.config.eyeCandy.titleTopRightDebugText.info": "Add memory debug text to the top-right corner.", "gui.nostalgic_tweaks.config.eyeCandy.oldTitleBackground": "Old Dirt Background", "gui.nostalgic_tweaks.config.eyeCandy.oldTitleBackground.info": "Bring back the old dirt background for the title screen.", + "gui.nostalgic_tweaks.config.eyeCandy.oldPanoramaRotation": "Old Panorama Rotation", + "gui.nostalgic_tweaks.config.eyeCandy.oldPanoramaRotation.info": "Bring back the old rotation used for the background for the title screen.", + "gui.nostalgic_tweaks.config.eyeCandy.oldPanoramaBlur": "Old Panorama Blur", + "gui.nostalgic_tweaks.config.eyeCandy.oldPanoramaBlur.info": "Bring back the old blur and gradient used for the background for the title screen.", "gui.nostalgic_tweaks.config.eyeCandy.oldAlphaLogo": "Old Alpha Logo", "gui.nostalgic_tweaks.config.eyeCandy.oldAlphaLogo.info": "Bring back the old§a alpha§r animated Minecraft logo on the title screen. If§c disabled§r, the resource pack logo will be used.", "gui.nostalgic_tweaks.config.eyeCandy.oldAlphaLogo.search": "Falling, Minecraft", diff --git a/common/src/main/resources/mixin.nostalgic_tweaks.json b/common/src/main/resources/mixin.nostalgic_tweaks.json index abdd749c8..16aab9c88 100644 --- a/common/src/main/resources/mixin.nostalgic_tweaks.json +++ b/common/src/main/resources/mixin.nostalgic_tweaks.json @@ -67,6 +67,7 @@ "candy.gui_background.AbstractSelectionListMixin", "candy.gui_background.GenericMessageScreenMixin", "candy.gui_background.ScreenMixin", + "candy.gui_background.PanoramaRendererMixin", "candy.inventory_screen.InventoryArmorSlotMixin", "candy.inventory_screen.InventoryScreenMixin", "candy.inventory_screen.InventoryShieldSlotMixin", From 2f9970d9c9c78519911fe050fa04be3bd15c6511 Mon Sep 17 00:00:00 2001 From: Xenthio Date: Mon, 30 Sep 2024 09:23:07 +1000 Subject: [PATCH 3/3] do the blur better, scale with screen size too --- .../gui_background/PanoramaRendererMixin.java | 17 ++++++++++++----- .../resources/nostalgic_tweaks.accesswidener | 3 +++ 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/common/src/main/java/mod/adrenix/nostalgic/mixin/tweak/candy/gui_background/PanoramaRendererMixin.java b/common/src/main/java/mod/adrenix/nostalgic/mixin/tweak/candy/gui_background/PanoramaRendererMixin.java index 665fa87c9..230ce4639 100644 --- a/common/src/main/java/mod/adrenix/nostalgic/mixin/tweak/candy/gui_background/PanoramaRendererMixin.java +++ b/common/src/main/java/mod/adrenix/nostalgic/mixin/tweak/candy/gui_background/PanoramaRendererMixin.java @@ -6,8 +6,13 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.gui.GuiGraphics; import net.minecraft.client.renderer.CubeMap; +import net.minecraft.client.renderer.GameRenderer; import net.minecraft.client.renderer.PanoramaRenderer; +import net.minecraft.client.renderer.PostChain; +import org.jetbrains.annotations.Nullable; +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.ModifyArg; @@ -16,6 +21,7 @@ @Mixin(PanoramaRenderer.class) public abstract class PanoramaRendererMixin { + @Shadow @Final private Minecraft minecraft; private float time; @ModifyArg( method = "render", @@ -39,11 +45,12 @@ public abstract class PanoramaRendererMixin ) private void nt_panorama_renderer$DoBlurAndGradient(GuiGraphics guiGraphics, int width, int height, float fade, float partialTick, CallbackInfo ci) { if (CandyTweak.OLD_PANORAMA_BLUR.get()) { - // Seemingly no way to control the blur, so just do it four times, cant hurt performance too much + we get to reuse minecraft code instead of inventing our own - Minecraft.getInstance().gameRenderer.processBlurEffect(partialTick); - Minecraft.getInstance().gameRenderer.processBlurEffect(partialTick); - Minecraft.getInstance().gameRenderer.processBlurEffect(partialTick); - Minecraft.getInstance().gameRenderer.processBlurEffect(partialTick); + if (minecraft.gameRenderer.blurEffect != null) { + // This doesn't scale with screen size by default. + float scale = ((float)minecraft.getWindow().getHeight() / 480f); + minecraft.gameRenderer.blurEffect.setUniform("Radius", 5f * scale); + minecraft.gameRenderer.blurEffect.process(partialTick); + } Minecraft.getInstance().getMainRenderTarget().bindWrite(false); guiGraphics.fillGradient(0, 0, width, height, -2130706433, 16777215); guiGraphics.fillGradient(0, 0, width, height, 0, Integer.MIN_VALUE); diff --git a/common/src/main/resources/nostalgic_tweaks.accesswidener b/common/src/main/resources/nostalgic_tweaks.accesswidener index 1b4c26650..81cd8f84a 100644 --- a/common/src/main/resources/nostalgic_tweaks.accesswidener +++ b/common/src/main/resources/nostalgic_tweaks.accesswidener @@ -1,5 +1,8 @@ accessWidener v2 named +# Game Renderer +accessible field net/minecraft/client/renderer/GameRenderer blurEffect Lnet/minecraft/client/renderer/PostChain; + # Fog Renderer accessible class net/minecraft/client/renderer/FogRenderer$MobEffectFogFunction