From 7d207e8197302def4759b41089400aaad88c0234 Mon Sep 17 00:00:00 2001 From: Martin Prokoph Date: Tue, 17 Jun 2025 19:13:41 +0200 Subject: [PATCH] port: Chase the Skies (1.21.6) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Surprising amount of changes – even more surprised I got this working so fast :) --- build.gradle | 2 +- .../src/main/java/eu/midnightdust/blur/Blur.java | 12 ++++++------ .../blur/mixin/MixinGameOptions.java | 2 +- .../blur/mixin/MixinGameRenderer.java | 11 +++++++---- .../blur/mixin/MixinHandledScreen.java | 2 +- .../midnightdust/blur/mixin/MixinInGameHud.java | 2 +- .../eu/midnightdust/blur/mixin/MixinScreen.java | 4 ++-- .../blur/mixin/MixinTitleScreen.java | 6 +++--- .../midnightdust/blur/mixin/ScreenAccessor.java | 11 ----------- common/src/main/resources/blur.mixins.json | 3 +-- gradle.properties | 16 ++++++++-------- gradle/wrapper/gradle-wrapper.properties | 2 +- 12 files changed, 32 insertions(+), 41 deletions(-) delete mode 100644 common/src/main/java/eu/midnightdust/blur/mixin/ScreenAccessor.java diff --git a/build.gradle b/build.gradle index a3292bb..35ec41f 100755 --- a/build.gradle +++ b/build.gradle @@ -3,7 +3,7 @@ import groovy.json.JsonOutput plugins { id "architectury-plugin" version "3.4-SNAPSHOT" - id "dev.architectury.loom" version "1.7-SNAPSHOT" apply false + id "dev.architectury.loom" version "1.10-SNAPSHOT" apply false id "me.shedaniel.unified-publishing" version "0.1.+" apply false id 'com.github.johnrengelman.shadow' version '8.1.1' apply false } diff --git a/common/src/main/java/eu/midnightdust/blur/Blur.java b/common/src/main/java/eu/midnightdust/blur/Blur.java index d144cd1..8f0acba 100644 --- a/common/src/main/java/eu/midnightdust/blur/Blur.java +++ b/common/src/main/java/eu/midnightdust/blur/Blur.java @@ -6,7 +6,7 @@ import eu.midnightdust.lib.util.MidnightColorUtil; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.DrawContext; import org.joml.Math; -import org.joml.Matrix4f; +import org.joml.Matrix3x2f; import java.awt.Color; import java.lang.Double; @@ -92,12 +92,12 @@ public class Blur { float diagonal = Math.sqrt((float) width*width + height*height); int smallestDimension = Math.min(width, height); - context.getMatrices().push(); - Matrix4f posMatrix = context.getMatrices().peek().getPositionMatrix(); - posMatrix.rotationZ(Math.toRadians(getRotation())); - posMatrix.setTranslation(width / 2f, height / 2f, -1000); // Make the gradient's center the pivot point + context.getMatrices().pushMatrix(); + Matrix3x2f posMatrix = context.getMatrices(); + posMatrix.rotate(Math.toRadians(getRotation())); + posMatrix.setTranslation(width / 2f, height / 2f); // Make the gradient's center the pivot point posMatrix.scale(diagonal / smallestDimension); // Scales the gradient to the maximum diagonal value needed context.fillGradient(-width / 2, -height / 2, width / 2, height / 2, Blur.getBackgroundColor(false), Blur.getBackgroundColor(true)); // Actually draw the gradient - context.getMatrices().pop(); + context.getMatrices().popMatrix(); } } diff --git a/common/src/main/java/eu/midnightdust/blur/mixin/MixinGameOptions.java b/common/src/main/java/eu/midnightdust/blur/mixin/MixinGameOptions.java index ec7720e..19d54f7 100644 --- a/common/src/main/java/eu/midnightdust/blur/mixin/MixinGameOptions.java +++ b/common/src/main/java/eu/midnightdust/blur/mixin/MixinGameOptions.java @@ -13,7 +13,7 @@ public abstract class MixinGameOptions { @Shadow @Final private SimpleOption menuBackgroundBlurriness; @Shadow @Final private SimpleOption chatLineSpacing; - @Redirect(method = "", at = @At(value = "NEW", target = "net/minecraft/client/option/SimpleOption$ValidatingIntSliderCallbacks", ordinal = 2)) + @Redirect(method = "", at = @At(value = "NEW", target = "net/minecraft/client/option/SimpleOption$ValidatingIntSliderCallbacks", ordinal = 3)) private SimpleOption.ValidatingIntSliderCallbacks blur$increaseMaxBlurriness(int minInclusive, int maxInclusive) { if (this.menuBackgroundBlurriness == null && this.chatLineSpacing != null) return new SimpleOption.ValidatingIntSliderCallbacks(minInclusive, 20); diff --git a/common/src/main/java/eu/midnightdust/blur/mixin/MixinGameRenderer.java b/common/src/main/java/eu/midnightdust/blur/mixin/MixinGameRenderer.java index b6c969b..c6f1004 100644 --- a/common/src/main/java/eu/midnightdust/blur/mixin/MixinGameRenderer.java +++ b/common/src/main/java/eu/midnightdust/blur/mixin/MixinGameRenderer.java @@ -1,18 +1,21 @@ package eu.midnightdust.blur.mixin; +import com.llamalad7.mixinextras.injector.wrapoperation.Operation; +import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation; import eu.midnightdust.blur.Blur; import eu.midnightdust.blur.BlurInfo; +import net.minecraft.client.option.GameOptions; import net.minecraft.client.render.GameRenderer; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; -import org.spongepowered.asm.mixin.injection.ModifyVariable; @Mixin(GameRenderer.class) public class MixinGameRenderer { - @ModifyVariable(method = "renderBlur", at = @At("STORE"), ordinal = 0) - private float blur$modifyRadius(float radius) { // Modify the radius based on the animation progress + @WrapOperation(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/option/GameOptions;getMenuBackgroundBlurrinessValue()I")) + private int blur$modifyRadius(GameOptions instance, Operation original) { + int radius = instance.getMenuBackgroundBlurrinessValue(); if (!BlurInfo.screenChanged && BlurInfo.start >= 0) // Only update the progress after all tests have been completed Blur.updateProgress(BlurInfo.screenHasBlur); - return radius * BlurInfo.progress; + return (int) (radius * BlurInfo.progress); } } diff --git a/common/src/main/java/eu/midnightdust/blur/mixin/MixinHandledScreen.java b/common/src/main/java/eu/midnightdust/blur/mixin/MixinHandledScreen.java index 4e73fc7..53599c0 100644 --- a/common/src/main/java/eu/midnightdust/blur/mixin/MixinHandledScreen.java +++ b/common/src/main/java/eu/midnightdust/blur/mixin/MixinHandledScreen.java @@ -20,7 +20,7 @@ public class MixinHandledScreen extends Screen { @Inject(method = "renderBackground", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/ingame/HandledScreen;drawBackground(Lnet/minecraft/client/gui/DrawContext;FII)V", shift = At.Shift.BEFORE)) private void blur$renderContainerBlur(DrawContext context, int mouseX, int mouseY, float delta, CallbackInfo ci) { // Applies the blur effect in containers (Inventory, Chest, etc.) - if (BlurConfig.blurContainers) this.applyBlur(); + if (BlurConfig.blurContainers) this.applyBlur(context); } @Inject(at = @At("HEAD"), method = "render") public void blur$processScreenChange(DrawContext context, int mouseX, int mouseY, float delta, CallbackInfo ci) { diff --git a/common/src/main/java/eu/midnightdust/blur/mixin/MixinInGameHud.java b/common/src/main/java/eu/midnightdust/blur/mixin/MixinInGameHud.java index f94e155..9202257 100644 --- a/common/src/main/java/eu/midnightdust/blur/mixin/MixinInGameHud.java +++ b/common/src/main/java/eu/midnightdust/blur/mixin/MixinInGameHud.java @@ -22,7 +22,7 @@ public class MixinInGameHud { if (client.currentScreen == null && client.world != null && BlurInfo.start >= 0 && BlurInfo.prevScreenHasBlur) { BlurInfo.doTest = false; BlurInfo.screenChanged = false; - this.client.gameRenderer.renderBlur(); + context.applyBlur(); if (BlurInfo.prevScreenHasBackground) Blur.renderRotatedGradient(context, client.getWindow().getScaledWidth(), client.getWindow().getScaledHeight()); } diff --git a/common/src/main/java/eu/midnightdust/blur/mixin/MixinScreen.java b/common/src/main/java/eu/midnightdust/blur/mixin/MixinScreen.java index 9a872e2..60bf8fa 100755 --- a/common/src/main/java/eu/midnightdust/blur/mixin/MixinScreen.java +++ b/common/src/main/java/eu/midnightdust/blur/mixin/MixinScreen.java @@ -26,7 +26,7 @@ public abstract class MixinScreen { @Shadow protected MinecraftClient client; @Shadow public int width; @Shadow public int height; - @Shadow protected abstract void applyBlur(); + @Shadow protected abstract void applyBlur(DrawContext context); @Inject(at = @At("HEAD"), method = "render") public void blur$processScreenChange(DrawContext context, int mouseX, int mouseY, float delta, CallbackInfo ci) { @@ -58,7 +58,7 @@ public abstract class MixinScreen { private void blur$renderGradient(DrawContext context) { BlurInfo.screenHasBackground = true; // Test if the screen has a background if (BlurConfig.forceEnabledScreens.contains(this.getClass().getCanonicalName())) - this.applyBlur(); + this.applyBlur(context); Blur.renderRotatedGradient(context, width, height); // Replaces the default gradient with our rotated one } diff --git a/common/src/main/java/eu/midnightdust/blur/mixin/MixinTitleScreen.java b/common/src/main/java/eu/midnightdust/blur/mixin/MixinTitleScreen.java index 5d6447e..00d37bf 100644 --- a/common/src/main/java/eu/midnightdust/blur/mixin/MixinTitleScreen.java +++ b/common/src/main/java/eu/midnightdust/blur/mixin/MixinTitleScreen.java @@ -17,11 +17,11 @@ public abstract class MixinTitleScreen extends Screen { 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.) + @Inject(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/TitleScreen;renderPanoramaBackground(Lnet/minecraft/client/gui/DrawContext;F)V")) + private void blur$renderTitleBlur(DrawContext context, int mouseX, int mouseY, float deltaTicks, CallbackInfo ci) { if (BlurConfig.blurTitleScreen) { Blur.updateProgress(true); - this.applyBlur(); + this.applyBlur(context); if (BlurConfig.darkenTitleScreen) this.renderDarkening(context); } } diff --git a/common/src/main/java/eu/midnightdust/blur/mixin/ScreenAccessor.java b/common/src/main/java/eu/midnightdust/blur/mixin/ScreenAccessor.java deleted file mode 100644 index ae04baf..0000000 --- a/common/src/main/java/eu/midnightdust/blur/mixin/ScreenAccessor.java +++ /dev/null @@ -1,11 +0,0 @@ -package eu.midnightdust.blur.mixin; - -import net.minecraft.client.gui.screen.Screen; -import org.spongepowered.asm.mixin.Mixin; -import org.spongepowered.asm.mixin.gen.Invoker; - -@Mixin(Screen.class) -public interface ScreenAccessor { - @Invoker("applyBlur") - void forceApplyBlur(); -} diff --git a/common/src/main/resources/blur.mixins.json b/common/src/main/resources/blur.mixins.json index f06f431..f583583 100644 --- a/common/src/main/resources/blur.mixins.json +++ b/common/src/main/resources/blur.mixins.json @@ -10,8 +10,7 @@ "MixinInGameHud", "MixinMinecraftClient", "MixinScreen", - "MixinTitleScreen", - "ScreenAccessor" + "MixinTitleScreen" ], "injectors": { "defaultRequire": 1 diff --git a/gradle.properties b/gradle.properties index 90754a7..d7ebdc2 100755 --- a/gradle.properties +++ b/gradle.properties @@ -2,13 +2,13 @@ org.gradle.jvmargs=-Xmx2G org.gradle.parallel=true -minecraft_version=1.21.4 -supported_versions=1.21.5 -yarn_mappings=1.21.4+build.1 +minecraft_version=1.21.6 +supported_versions= +yarn_mappings=1.21.6+build.1 enabled_platforms=fabric,neoforge # Mod Properties -mod_version=5.2.1 +mod_version=5.2.2 maven_group=eu.midnightdust.blur archives_base_name=blur release_type=release @@ -16,12 +16,12 @@ curseforge_id=393563 modrinth_id=NK39zBp2 # Modloaders -fabric_loader_version=0.16.9 -fabric_api_version=0.111.0+1.21.4 +fabric_loader_version=0.16.14 +fabric_api_version=0.127.0+1.21.6 -neoforge_version=21.4.10-beta +neoforge_version=21.6.0-beta yarn_mappings_patch_neoforge_version = 1.21+build.4 # Libraries -midnightlib_version = 1.7.3+1.21.4 +midnightlib_version = 1.7.4+1.21.6 modmenu_version = 11.0.2 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index e4a5f61..e0246c0 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.9-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.14.2-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME