From f7465ee08efae9923045e1ad695b08561c444cb8 Mon Sep 17 00:00:00 2001 From: Martin Prokoph Date: Sat, 25 Jan 2025 18:53:32 +0100 Subject: [PATCH] feat: title screen blur - Also fix config changes not being saved --- .../midnightdust/blur/config/BlurConfig.java | 5 ++++ .../blur/mixin/MixinTitleScreen.java | 28 +++++++++++++++++++ .../resources/assets/blur/lang/de_de.json | 2 ++ .../resources/assets/blur/lang/en_us.json | 2 ++ common/src/main/resources/blur.mixins.json | 1 + gradle.properties | 2 +- 6 files changed, 39 insertions(+), 1 deletion(-) create mode 100644 common/src/main/java/eu/midnightdust/blur/mixin/MixinTitleScreen.java diff --git a/common/src/main/java/eu/midnightdust/blur/config/BlurConfig.java b/common/src/main/java/eu/midnightdust/blur/config/BlurConfig.java index bb8ca52..936a730 100644 --- a/common/src/main/java/eu/midnightdust/blur/config/BlurConfig.java +++ b/common/src/main/java/eu/midnightdust/blur/config/BlurConfig.java @@ -17,6 +17,10 @@ public class BlurConfig extends MidnightConfig { @Entry(category = SCREENS) public static boolean blurContainers = true; + @Entry(category = SCREENS) + public static boolean blurTitleScreen = false; + @Entry(category = SCREENS) + public static boolean darkenTitleScreen = false; @Entry(category = ANIMATIONS, min = 0, max = 2000, isSlider = true) public static int fadeTimeMillis = 300; @Entry(category = ANIMATIONS, min = 0, max = 2000, isSlider = true) @@ -48,6 +52,7 @@ public class BlurConfig extends MidnightConfig { @Override public void writeChanges(String modid) { + super.writeChanges(modid); MinecraftClient.getInstance().options.getMenuBackgroundBlurriness().setValue(radius); } diff --git a/common/src/main/java/eu/midnightdust/blur/mixin/MixinTitleScreen.java b/common/src/main/java/eu/midnightdust/blur/mixin/MixinTitleScreen.java new file mode 100644 index 0000000..5d6447e --- /dev/null +++ b/common/src/main/java/eu/midnightdust/blur/mixin/MixinTitleScreen.java @@ -0,0 +1,28 @@ +package eu.midnightdust.blur.mixin; + +import eu.midnightdust.blur.Blur; +import eu.midnightdust.blur.config.BlurConfig; +import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.gui.screen.TitleScreen; +import net.minecraft.text.Text; +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.callback.CallbackInfo; + +@Mixin(TitleScreen.class) +public abstract class MixinTitleScreen extends Screen { + protected MixinTitleScreen(Text title) { + super(title); + } + + @Inject(method = "renderPanoramaBackground", at = @At("TAIL")) + private void blur$renderTitleBlur(DrawContext context, float delta, CallbackInfo ci) { // Applies the blur effect in containers (Inventory, Chest, etc.) + if (BlurConfig.blurTitleScreen) { + Blur.updateProgress(true); + this.applyBlur(); + if (BlurConfig.darkenTitleScreen) this.renderDarkening(context); + } + } +} diff --git a/common/src/main/resources/assets/blur/lang/de_de.json b/common/src/main/resources/assets/blur/lang/de_de.json index 290a84e..d823d78 100644 --- a/common/src/main/resources/assets/blur/lang/de_de.json +++ b/common/src/main/resources/assets/blur/lang/de_de.json @@ -3,6 +3,8 @@ "blur.midnightconfig.category.animations": "Animationen", "blur.midnightconfig.category.style": "Stil", "blur.midnightconfig.blurContainers": "Unschärfe in Containern", + "blur.midnightconfig.blurTitleScreen": "Unschärfe im Titelbildschirm", + "blur.midnightconfig.darkenTitleScreen": "Abgedunkelter Titelhintergrund", "blur.midnightconfig.fadeTimeMillis": "Überblendzeit (in Millisekunden)", "blur.midnightconfig.fadeOutTimeMillis": "Ausblendzeit (in Millisekunden)", "blur.midnightconfig.animationCurve": "Animationskurve", diff --git a/common/src/main/resources/assets/blur/lang/en_us.json b/common/src/main/resources/assets/blur/lang/en_us.json index 40962b9..898155b 100755 --- a/common/src/main/resources/assets/blur/lang/en_us.json +++ b/common/src/main/resources/assets/blur/lang/en_us.json @@ -4,6 +4,8 @@ "blur.midnightconfig.category.style": "Style", "blur.midnightconfig.category.screens": "Screens", "blur.midnightconfig.blurContainers": "Apply Blur to Containers", + "blur.midnightconfig.blurTitleScreen": "Apply Blur to Title Screen", + "blur.midnightconfig.darkenTitleScreen": "Darken Title Screen Background", "blur.midnightconfig.fadeTimeMillis": "Fade Time (in milliseconds)", "blur.midnightconfig.fadeOutTimeMillis": "Fade Out Time (in milliseconds)", "blur.midnightconfig.animationCurve": "Animation Curve", diff --git a/common/src/main/resources/blur.mixins.json b/common/src/main/resources/blur.mixins.json index b13ca67..4fa8729 100644 --- a/common/src/main/resources/blur.mixins.json +++ b/common/src/main/resources/blur.mixins.json @@ -12,6 +12,7 @@ "MixinMidnightSliderWidget", "MixinMinecraftClient", "MixinScreen", + "MixinTitleScreen", "ScreenAccessor" ], "injectors": { diff --git a/gradle.properties b/gradle.properties index b97c181..ad9f136 100755 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ yarn_mappings=1.21.4+build.1 enabled_platforms=fabric,neoforge # Mod Properties -mod_version=5.1.0 +mod_version=5.1.1 maven_group=eu.midnightdust.blur archives_base_name=blur release_type=release