mirror of
https://github.com/Motschen/Blur.git
synced 2025-12-15 19:25:09 +01:00
fix: gradient breaking various mod screens
This commit is contained in:
@@ -75,11 +75,13 @@ public class Blur {
|
|||||||
float diagonal = Math.sqrt((float) width*width + height*height);
|
float diagonal = Math.sqrt((float) width*width + height*height);
|
||||||
int smallestDimension = Math.min(width, height);
|
int smallestDimension = Math.min(width, height);
|
||||||
|
|
||||||
|
context.getMatrices().push();
|
||||||
Matrix4f posMatrix = context.getMatrices().peek().getPositionMatrix();
|
Matrix4f posMatrix = context.getMatrices().peek().getPositionMatrix();
|
||||||
posMatrix.rotationZ(Math.toRadians(getRotation()));
|
posMatrix.rotationZ(Math.toRadians(getRotation()));
|
||||||
posMatrix.setTranslation(width / 2f, height / 2f, 0); // Make the gradient's center the pivot point
|
posMatrix.setTranslation(width / 2f, height / 2f, -1000); // Make the gradient's center the pivot point
|
||||||
posMatrix.scale(diagonal / smallestDimension); // Scales the gradient to the maximum diagonal value needed
|
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.fillGradient(-width / 2, -height / 2, width / 2, height / 2, Blur.getBackgroundColor(false), Blur.getBackgroundColor(true)); // Actually draw the gradient
|
||||||
posMatrix.rotationZ(0);
|
posMatrix.rotationZ(0);
|
||||||
|
context.getMatrices().pop();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,13 +1,17 @@
|
|||||||
package eu.midnightdust.blur.mixin;
|
package eu.midnightdust.blur.mixin;
|
||||||
|
|
||||||
|
import com.llamalad7.mixinextras.injector.wrapoperation.Operation;
|
||||||
|
import com.llamalad7.mixinextras.injector.wrapoperation.WrapOperation;
|
||||||
import eu.midnightdust.blur.BlurInfo;
|
import eu.midnightdust.blur.BlurInfo;
|
||||||
import eu.midnightdust.blur.config.BlurConfig;
|
import eu.midnightdust.blur.config.BlurConfig;
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
import net.minecraft.client.gui.DrawContext;
|
import net.minecraft.client.gui.DrawContext;
|
||||||
import net.minecraft.text.Text;
|
import net.minecraft.text.Text;
|
||||||
|
import net.minecraft.util.Identifier;
|
||||||
import org.spongepowered.asm.mixin.Final;
|
import org.spongepowered.asm.mixin.Final;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
|
import org.spongepowered.asm.mixin.Unique;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
|
||||||
@@ -20,10 +24,11 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|||||||
public abstract class MixinScreen {
|
public abstract class MixinScreen {
|
||||||
@Shadow @Final protected Text title;
|
@Shadow @Final protected Text title;
|
||||||
@Shadow protected MinecraftClient client;
|
@Shadow protected MinecraftClient client;
|
||||||
@Shadow public abstract void renderInGameBackground(DrawContext context);
|
|
||||||
@Shadow public int width;
|
@Shadow public int width;
|
||||||
@Shadow public int height;
|
@Shadow public int height;
|
||||||
|
|
||||||
|
@Shadow protected abstract void applyBlur(float delta);
|
||||||
|
|
||||||
@Inject(at = @At("HEAD"), method = "render")
|
@Inject(at = @At("HEAD"), method = "render")
|
||||||
public void blur$processScreenChange(DrawContext context, int mouseX, int mouseY, float delta, CallbackInfo ci) {
|
public void blur$processScreenChange(DrawContext context, int mouseX, int mouseY, float delta, CallbackInfo ci) {
|
||||||
if (!BlurInfo.doTest && BlurInfo.screenChanged) { // After the tests for blur and background color have been completed
|
if (!BlurInfo.doTest && BlurInfo.screenChanged) { // After the tests for blur and background color have been completed
|
||||||
@@ -39,10 +44,6 @@ public abstract class MixinScreen {
|
|||||||
}
|
}
|
||||||
BlurInfo.doTest = false; // Set the test state to completed, as tests will happen in the same tick.
|
BlurInfo.doTest = false; // Set the test state to completed, as tests will happen in the same tick.
|
||||||
}
|
}
|
||||||
@Inject(at = @At("HEAD"), method = "renderInGameBackground")
|
|
||||||
public void blur$getBackgroundEnabled(DrawContext context, CallbackInfo ci) {
|
|
||||||
BlurInfo.screenHasBackground = true; // Test if the screen has a background
|
|
||||||
}
|
|
||||||
@Inject(at = @At("HEAD"), method = "applyBlur", cancellable = true)
|
@Inject(at = @At("HEAD"), method = "applyBlur", cancellable = true)
|
||||||
public void blur$getBlurEnabled(float delta, CallbackInfo ci) {
|
public void blur$getBlurEnabled(float delta, CallbackInfo ci) {
|
||||||
if (BlurConfig.forceDisabledScreens.contains(this.getClass().getCanonicalName())) {
|
if (BlurConfig.forceDisabledScreens.contains(this.getClass().getCanonicalName())) {
|
||||||
@@ -51,21 +52,24 @@ public abstract class MixinScreen {
|
|||||||
if (!BlurConfig.excludedScreens.contains(this.getClass().getCanonicalName()))
|
if (!BlurConfig.excludedScreens.contains(this.getClass().getCanonicalName()))
|
||||||
BlurInfo.screenHasBlur = true; // Test if the screen has blur
|
BlurInfo.screenHasBlur = true; // Test if the screen has blur
|
||||||
}
|
}
|
||||||
|
@WrapOperation(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/Screen;renderBackgroundTexture(Lnet/minecraft/client/gui/DrawContext;Lnet/minecraft/util/Identifier;IIFFII)V"), method = "renderDarkening(Lnet/minecraft/client/gui/DrawContext;IIII)V")
|
||||||
@Inject(at = @At("HEAD"), method = "renderDarkening(Lnet/minecraft/client/gui/DrawContext;IIII)V", cancellable = true)
|
private void blur$applyGradient(DrawContext context, Identifier texture, int x, int y, float u, float v, int width, int height, Operation<Void> original) {
|
||||||
public void blur$applyGradient(DrawContext context, int x, int y, int width, int height, CallbackInfo ci) {
|
if (BlurConfig.useGradient) {
|
||||||
if (BlurConfig.useGradient) { // Replaces the background texture with a gradient
|
blur$renderGradient(context); // Replaces the background texture with a gradient
|
||||||
renderInGameBackground(context);
|
} else original.call(context, texture, x, y, u, v, width, height);
|
||||||
ci.cancel();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Inject(at = @At("HEAD"), method = "renderInGameBackground", cancellable = true)
|
@WrapOperation(at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/DrawContext;fillGradient(IIIIII)V"), method = "renderInGameBackground")
|
||||||
public void blur$rotatedGradient(DrawContext context, CallbackInfo ci) {
|
public void blur$rotatedGradient(DrawContext context, int startX, int startY, int endX, int endY, int colorStart, int colorEnd, Operation<Void> original) {
|
||||||
|
blur$renderGradient(context);
|
||||||
|
}
|
||||||
|
@Unique
|
||||||
|
private void blur$renderGradient(DrawContext context) {
|
||||||
|
BlurInfo.screenHasBackground = true; // Test if the screen has a background
|
||||||
if (BlurConfig.forceEnabledScreens.contains(this.getClass().getCanonicalName()))
|
if (BlurConfig.forceEnabledScreens.contains(this.getClass().getCanonicalName()))
|
||||||
((ScreenAccessor)this).forceApplyBlur(client.getRenderTickCounter().getTickDelta(true));
|
this.applyBlur(client.getRenderTickCounter().getTickDelta(true));
|
||||||
|
|
||||||
Blur.renderRotatedGradient(context, width, height); // Replaces the default gradient with our rotated one
|
Blur.renderRotatedGradient(context, width, height); // Replaces the default gradient with our rotated one
|
||||||
ci.cancel();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,13 +2,13 @@
|
|||||||
org.gradle.jvmargs=-Xmx2G
|
org.gradle.jvmargs=-Xmx2G
|
||||||
org.gradle.parallel=true
|
org.gradle.parallel=true
|
||||||
|
|
||||||
minecraft_version=1.21
|
minecraft_version=1.21.1
|
||||||
supported_versions=1.21.1
|
supported_versions=1.21
|
||||||
yarn_mappings=1.21+build.2
|
yarn_mappings=1.21.1+build.3
|
||||||
enabled_platforms=fabric,neoforge
|
enabled_platforms=fabric,neoforge
|
||||||
|
|
||||||
# Mod Properties
|
# Mod Properties
|
||||||
mod_version=5.0.0
|
mod_version=5.0.0-hotfix.1
|
||||||
maven_group=eu.midnightdust.blur
|
maven_group=eu.midnightdust.blur
|
||||||
archives_base_name=blur
|
archives_base_name=blur
|
||||||
release_type=release
|
release_type=release
|
||||||
@@ -16,12 +16,12 @@ curseforge_id=393563
|
|||||||
modrinth_id=NK39zBp2
|
modrinth_id=NK39zBp2
|
||||||
|
|
||||||
# Modloaders
|
# Modloaders
|
||||||
fabric_loader_version=0.15.11
|
fabric_loader_version=0.16.13
|
||||||
fabric_api_version=0.100.1+1.21
|
fabric_api_version=0.115.4+1.21.1
|
||||||
|
|
||||||
neoforge_version=21.0.143
|
neoforge_version=21.1.153
|
||||||
yarn_mappings_patch_neoforge_version = 1.21+build.4
|
yarn_mappings_patch_neoforge_version = 1.21+build.4
|
||||||
|
|
||||||
# Libraries
|
# Libraries
|
||||||
midnightlib_version = 1.6.3
|
midnightlib_version = 1.6.9+1.21
|
||||||
modmenu_version = 11.0.2
|
modmenu_version = 11.0.2
|
||||||
|
|||||||
Reference in New Issue
Block a user