Merge pull request #133 from Motschen/backport/1.21.1

backport: Blur+ v5.2.2 for 1.21.1
This commit is contained in:
Martin Prokoph
2025-07-15 18:44:25 +02:00
committed by GitHub
19 changed files with 252 additions and 78 deletions

View File

@@ -1,5 +1,3 @@
![Banner art for the mod Blur+](https://i.ibb.co/GM4HVDC/PoBrnNM.png)
Ever thought that the world behind your inventory was just too distracting? Ever thought that the world behind your inventory was just too distracting?
Or that the default Minecraft blur effect is just too boring? Or that the default Minecraft blur effect is just too boring?
Then this mod is just right for you! Then this mod is just right for you!

View File

@@ -3,7 +3,7 @@ import groovy.json.JsonOutput
plugins { plugins {
id "architectury-plugin" version "3.4-SNAPSHOT" 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 "me.shedaniel.unified-publishing" version "0.1.+" apply false
id 'com.github.johnrengelman.shadow' version '8.1.1' apply false id 'com.github.johnrengelman.shadow' version '8.1.1' apply false
} }

View File

@@ -3,6 +3,7 @@ package eu.midnightdust.blur;
import eu.midnightdust.blur.config.BlurConfig; import eu.midnightdust.blur.config.BlurConfig;
import eu.midnightdust.blur.util.RainbowColor; import eu.midnightdust.blur.util.RainbowColor;
import eu.midnightdust.lib.util.MidnightColorUtil; import eu.midnightdust.lib.util.MidnightColorUtil;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.DrawContext;
import org.joml.Math; import org.joml.Math;
import org.joml.Matrix4f; import org.joml.Matrix4f;
@@ -15,12 +16,29 @@ import static eu.midnightdust.blur.util.RainbowColor.hue;
import static eu.midnightdust.blur.util.RainbowColor.hue2; import static eu.midnightdust.blur.util.RainbowColor.hue2;
public class Blur { public class Blur {
public static final String MOD_ID = "blur";
public static void init() { public static void init() {
BlurConfig.init("blur", BlurConfig.class); BlurConfig.init(MOD_ID, BlurConfig.class);
} }
public static boolean doFade = false; public static boolean doFade = false;
public static void onRender() {
if (!BlurInfo.doTest && BlurInfo.screenChanged) { // After the tests for blur and background color have been completed
Blur.onScreenChange();
BlurInfo.screenChanged = false;
}
BlurInfo.doTest = false; // Set the test state to completed, as tests will happen in the same tick.
}
public static void renderFadeout(DrawContext context, int width, int height, MinecraftClient client) {
if (BlurInfo.start >= 0 && !BlurInfo.screenHasBlur && BlurInfo.prevScreenHasBlur) { // Fade out in non-blurred screens
client.gameRenderer.renderBlur(client.getRenderTickCounter().getTickDelta(true));
client.getFramebuffer().beginWrite(false);
if (BlurInfo.prevScreenHasBackground && BlurConfig.useGradient) Blur.renderRotatedGradient(context, width, height);
}
}
public static void onScreenChange() { public static void onScreenChange() {
if (screenHasBlur) { if (screenHasBlur) {
if (doFade) { if (doFade) {
@@ -61,10 +79,10 @@ public class Blur {
int b = (col.getRGB() >> 8) & 0xFF; int b = (col.getRGB() >> 8) & 0xFF;
int g = col.getRGB() & 0xFF; int g = col.getRGB() & 0xFF;
float prog = progress; float prog = progress;
a *= prog; a = (int) (prog * a);
r *= prog; r = (int) (prog * r);
g *= prog; g = (int) (prog * g);
b *= prog; b = (int) (prog * b);
return a << 24 | r << 16 | b << 8 | g; return a << 24 | r << 16 | b << 8 | g;
} }
public static int getRotation() { public static int getRotation() {

View File

@@ -1,9 +1,18 @@
package eu.midnightdust.blur.config; package eu.midnightdust.blur.config;
import com.google.common.collect.Lists; import com.google.common.collect.Lists;
import eu.midnightdust.blur.Blur;
import eu.midnightdust.lib.config.MidnightConfig; import eu.midnightdust.lib.config.MidnightConfig;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.widget.SliderWidget;
import net.minecraft.client.gui.widget.TextIconButtonWidget;
import net.minecraft.client.option.GameOptions;
import net.minecraft.text.Text;
import net.minecraft.util.Identifier;
import java.lang.annotation.Annotation;
import java.util.List; import java.util.List;
import java.util.Objects;
import java.util.function.Function; import java.util.function.Function;
import static java.lang.Math.*; import static java.lang.Math.*;
@@ -14,28 +23,17 @@ public class BlurConfig extends MidnightConfig {
public static final String SCREENS = "screens"; public static final String SCREENS = "screens";
@Entry @Hidden public static int configVersion = 2; @Entry @Hidden public static int configVersion = 2;
@Comment(category = SCREENS, centered = true)
public static Comment _general;
@Entry(category = SCREENS) @Entry(category = SCREENS)
public static boolean blurContainers = true; public static boolean blurContainers = true;
@Entry(category = ANIMATIONS, min = 0, max = 2000, isSlider = true) @Entry(category = SCREENS)
public static int fadeTimeMillis = 300; public static boolean blurTitleScreen = false;
@Entry(category = ANIMATIONS, min = 0, max = 2000, isSlider = true) @Condition(requiredOption = "blurTitleScreen", visibleButLocked = true)
public static int fadeOutTimeMillis = 300; @Entry(category = SCREENS)
@Entry(category = ANIMATIONS) public static boolean darkenTitleScreen = false;
public static BlurConfig.Easing animationCurve = Easing.FLAT; @Comment(category = SCREENS, centered = true)
@Entry(category = STYLE) public static Comment _advanced;
public static boolean useGradient = true;
@Entry(category = STYLE, isColor = true, width = 7, min = 7)
public static String gradientStart = "#000000";
@Entry(category = STYLE, isSlider = true, min = 0, max = 255)
public static int gradientStartAlpha = 75;
@Entry(category = STYLE, isColor = true, width = 7, min = 7)
public static String gradientEnd = "#000000";
@Entry(category = STYLE, isSlider = true, min = 0, max = 255)
public static int gradientEndAlpha = 75;
@Entry(category = STYLE, isSlider = true, min = 0, max = 360)
public static int gradientRotation = 0;
@Entry(category = STYLE)
public static boolean rainbowMode = false;
@Entry(category = SCREENS) // Screens where Blur+ should not apply transition effects (mostly dynamically blurred screens) @Entry(category = SCREENS) // Screens where Blur+ should not apply transition effects (mostly dynamically blurred screens)
public static List<String> excludedScreens = Lists.newArrayList("net.irisshaders.iris.gui.screen.ShaderPackScreen"); public static List<String> excludedScreens = Lists.newArrayList("net.irisshaders.iris.gui.screen.ShaderPackScreen");
@Entry(category = SCREENS) // Screens where the vanilla blur effect should be force enabled @Entry(category = SCREENS) // Screens where the vanilla blur effect should be force enabled
@@ -43,6 +41,37 @@ public class BlurConfig extends MidnightConfig {
@Entry(category = SCREENS) // Screens where the vanilla blur effect should be force disabled @Entry(category = SCREENS) // Screens where the vanilla blur effect should be force disabled
public static List<String> forceDisabledScreens = Lists.newArrayList(); public static List<String> forceDisabledScreens = Lists.newArrayList();
@Comment(category = STYLE, centered = true)
public static Comment _gradient;
@Entry(category = STYLE)
public static boolean useGradient = true;
@Condition(requiredOption = "useGradient", visibleButLocked = true)
@Entry(category = STYLE, isColor = true, width = 7, min = 7)
public static String gradientStart = "#000000";
@Condition(requiredOption = "useGradient", visibleButLocked = true)
@Entry(category = STYLE, isSlider = true, min = 0, max = 255)
public static int gradientStartAlpha = 75;
@Condition(requiredOption = "useGradient", visibleButLocked = true)
@Entry(category = STYLE, isColor = true, width = 7, min = 7)
public static String gradientEnd = "#000000";
@Condition(requiredOption = "useGradient", visibleButLocked = true)
@Entry(category = STYLE, isSlider = true, min = 0, max = 255)
public static int gradientEndAlpha = 75;
@Condition(requiredOption = "useGradient", visibleButLocked = true)
@Entry(category = STYLE, isSlider = true, min = 0, max = 360)
public static int gradientRotation = 0;
@Entry(category = STYLE)
public static boolean rainbowMode = false;
@Comment(category = ANIMATIONS, centered = true)
public static Comment _animations;
@Entry(category = ANIMATIONS, min = 0, max = 2000, isSlider = true)
public static int fadeTimeMillis = 300;
@Entry(category = ANIMATIONS, min = 0, max = 2000, isSlider = true)
public static int fadeOutTimeMillis = 300;
@Entry(category = ANIMATIONS)
public static BlurConfig.Easing animationCurve = Easing.FLAT;
public enum Easing { public enum Easing {
// Based on https://gist.github.com/dev-hydrogen/21a66f83f0386123e0c0acf107254843 // Based on https://gist.github.com/dev-hydrogen/21a66f83f0386123e0c0acf107254843
// Thank you very much! // Thank you very much!
@@ -70,4 +99,51 @@ public class BlurConfig extends MidnightConfig {
return functionOut.apply(x).doubleValue(); return functionOut.apply(x).doubleValue();
} }
} }
private static GameOptions options;
@Override
public void onTabInit(String tabName, MidnightConfigListWidget list, MidnightConfigScreen screen) {
options = MinecraftClient.getInstance().options;
if (Objects.equals(tabName, STYLE)) {
EntryInfo centered = new EntryInfo(null, Blur.MOD_ID);
centered.comment = new Comment(){
@Override
public boolean centered() {
return true;
}
public Class<? extends Annotation> annotationType() {return null;}
public String category() {return "";}
public String name() {return "";}
public String url() {return "";}
public String requiredMod() {return "";}
};
RadiusSliderWidget slider = new RadiusSliderWidget(screen.width - 185, 0, 150, 20);
TextIconButtonWidget resetButton = TextIconButtonWidget.builder(Text.translatable("controls.reset"), (button -> {
options.getMenuBackgroundBlurriness().setValue(5);
screen.updateList();
}), true).texture(Identifier.of("midnightlib","icon/reset"), 12, 12).dimension(20, 20).build();
resetButton.setPosition(screen.width - 205 + 150 + 25, 0);
slider.resetButton = resetButton;
slider.updateMessage();
list.addButton(Lists.newArrayList(), Text.translatable("blur.midnightconfig._blur"), centered);
list.addButton(Lists.newArrayList(slider, resetButton), Text.translatable("blur.midnightconfig.radius"), new EntryInfo(null, Blur.MOD_ID));
}
}
public static class RadiusSliderWidget extends SliderWidget {
TextIconButtonWidget resetButton;
public RadiusSliderWidget(int x, int y, int width, int height) {
super(x, y, width, height, Text.empty(), options.getMenuBackgroundBlurrinessValue() / 20d);
}
public void updateMessage() {
this.setMessage(Text.of(String.valueOf(options.getMenuBackgroundBlurrinessValue())));
if (resetButton != null) resetButton.active = options.getMenuBackgroundBlurrinessValue() != 5;
}
public void applyValue() {
options.getMenuBackgroundBlurriness().setValue(Double.valueOf(this.value * 20).intValue());
}
}
} }

View File

@@ -1,6 +1,8 @@
package eu.midnightdust.blur.mixin; package eu.midnightdust.blur.mixin;
import eu.midnightdust.blur.Blur;
import eu.midnightdust.blur.config.BlurConfig; import eu.midnightdust.blur.config.BlurConfig;
import eu.midnightdust.lib.util.PlatformFunctions;
import net.minecraft.client.gui.DrawContext; import net.minecraft.client.gui.DrawContext;
import net.minecraft.client.gui.screen.Screen; import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.gui.screen.ingame.HandledScreen; import net.minecraft.client.gui.screen.ingame.HandledScreen;
@@ -17,7 +19,11 @@ 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)) @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.) private void blur$renderContainerBlur(DrawContext context, int mouseX, int mouseY, float tickDelta, CallbackInfo ci) { // Applies the blur effect in containers (Inventory, Chest, etc.)
if (BlurConfig.blurContainers) this.applyBlur(delta); if (BlurConfig.blurContainers) this.applyBlur(tickDelta);
}
@Inject(at = @At("HEAD"), method = "render")
public void blur$processScreenChange(DrawContext context, int mouseX, int mouseY, float delta, CallbackInfo ci) {
if (PlatformFunctions.getPlatformName().equals("neoforge")) Blur.onRender();
} }
} }

View File

@@ -26,26 +26,15 @@ public abstract class MixinScreen {
@Shadow protected MinecraftClient client; @Shadow protected MinecraftClient client;
@Shadow public int width; @Shadow public int width;
@Shadow public int height; @Shadow public int height;
@Shadow protected abstract void applyBlur(float delta); @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 Blur.onRender();
Blur.onScreenChange(); Blur.renderFadeout(context, width, height, client);
BlurInfo.screenChanged = false;
}
if (BlurInfo.start >= 0 && !BlurInfo.screenHasBlur && BlurInfo.prevScreenHasBlur) { // Fade out in non-blurred screens
this.client.gameRenderer.renderBlur(delta);
this.client.getFramebuffer().beginWrite(false);
if (BlurInfo.prevScreenHasBackground) Blur.renderRotatedGradient(context, width, height);
}
BlurInfo.doTest = false; // Set the test state to completed, as tests will happen in the same tick.
} }
@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(CallbackInfo ci) {
if (BlurConfig.forceDisabledScreens.contains(this.getClass().getCanonicalName())) { if (BlurConfig.forceDisabledScreens.contains(this.getClass().getCanonicalName())) {
ci.cancel(); return; ci.cancel(); return;
} }
@@ -70,6 +59,5 @@ public abstract class MixinScreen {
this.applyBlur(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
} }
} }

View File

@@ -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 = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/screen/TitleScreen;renderPanoramaBackground(Lnet/minecraft/client/gui/DrawContext;F)V", shift = At.Shift.AFTER))
private void blur$renderTitleBlur(DrawContext context, int mouseX, int mouseY, float delta, CallbackInfo ci) {
if (BlurConfig.blurTitleScreen) {
Blur.updateProgress(true);
this.applyBlur(delta);
if (BlurConfig.darkenTitleScreen) this.renderDarkening(context);
}
}
}

View File

@@ -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(float delta);
}

View File

@@ -1,8 +1,11 @@
{ {
"blur.midnightconfig.title": "Blur+ Konfiguration", "blur.midnightconfig.title": "Blur+ Konfiguration",
"blur.midnightconfig.category.animations": "Animationen", "blur.midnightconfig.category.animations": "Animationen",
"blur.midnightconfig.category.screens": "Bildschirme",
"blur.midnightconfig.category.style": "Stil", "blur.midnightconfig.category.style": "Stil",
"blur.midnightconfig.blurContainers": "Unschärfe in Containern", "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.fadeTimeMillis": "Überblendzeit (in Millisekunden)",
"blur.midnightconfig.fadeOutTimeMillis": "Ausblendzeit (in Millisekunden)", "blur.midnightconfig.fadeOutTimeMillis": "Ausblendzeit (in Millisekunden)",
"blur.midnightconfig.animationCurve": "Animationskurve", "blur.midnightconfig.animationCurve": "Animationskurve",
@@ -24,5 +27,10 @@
"blur.midnightconfig.gradientStartAlpha": "Farbverlauf-Anfangstransparenz", "blur.midnightconfig.gradientStartAlpha": "Farbverlauf-Anfangstransparenz",
"blur.midnightconfig.gradientEndAlpha": "Farbverlauf-Endstransparenz", "blur.midnightconfig.gradientEndAlpha": "Farbverlauf-Endstransparenz",
"blur.midnightconfig.gradientRotation": "Farbverlauf-Rotation", "blur.midnightconfig.gradientRotation": "Farbverlauf-Rotation",
"blur.midnightconfig.excludedScreens": "Ausgeschlossene Bildschirme" "blur.midnightconfig.excludedScreens": "Ausgeschlossene Bildschirme",
"blur.midnightconfig._general": "⛏ Generell",
"blur.midnightconfig._advanced": "⚒ Fortgeschritten",
"blur.midnightconfig._blur": "▒ Unschärfe",
"blur.midnightconfig._gradient": "\uD83D\uDFE2 Farbverlauf",
"blur.midnightconfig._animations": "\uD83D\uDCFD Animationen"
} }

View File

@@ -4,6 +4,8 @@
"blur.midnightconfig.category.style": "Style", "blur.midnightconfig.category.style": "Style",
"blur.midnightconfig.category.screens": "Screens", "blur.midnightconfig.category.screens": "Screens",
"blur.midnightconfig.blurContainers": "Apply Blur to Containers", "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.fadeTimeMillis": "Fade Time (in milliseconds)",
"blur.midnightconfig.fadeOutTimeMillis": "Fade Out Time (in milliseconds)", "blur.midnightconfig.fadeOutTimeMillis": "Fade Out Time (in milliseconds)",
"blur.midnightconfig.animationCurve": "Animation Curve", "blur.midnightconfig.animationCurve": "Animation Curve",
@@ -18,6 +20,7 @@
"blur.midnightconfig.enum.Easing.BACK": "Back", "blur.midnightconfig.enum.Easing.BACK": "Back",
"blur.midnightconfig.enum.Easing.ELASTIC": "Elastic", "blur.midnightconfig.enum.Easing.ELASTIC": "Elastic",
"blur.midnightconfig.radius": "Radius", "blur.midnightconfig.radius": "Radius",
"blur.midnightconfig.radius.label.tooltip": "Mirror of \"Menu Background Blur\" found in Minecraft's Accessibility Settings",
"blur.midnightconfig.rainbowMode": "Rainbow Mode \uD83C\uDF08", "blur.midnightconfig.rainbowMode": "Rainbow Mode \uD83C\uDF08",
"blur.midnightconfig.useGradient": "Gradient as Background", "blur.midnightconfig.useGradient": "Gradient as Background",
"blur.midnightconfig.gradientStart": "Gradient Start Color", "blur.midnightconfig.gradientStart": "Gradient Start Color",
@@ -30,5 +33,10 @@
"blur.midnightconfig.forceEnabledScreens": "Force-enabled Screens", "blur.midnightconfig.forceEnabledScreens": "Force-enabled Screens",
"blur.midnightconfig.forceEnabledScreens.tooltip": "Screens where the vanilla blur effect should be force-enabled\nMight not work 100% of the time", "blur.midnightconfig.forceEnabledScreens.tooltip": "Screens where the vanilla blur effect should be force-enabled\nMight not work 100% of the time",
"blur.midnightconfig.forceDisabledScreens": "Force-disabled Screens", "blur.midnightconfig.forceDisabledScreens": "Force-disabled Screens",
"blur.midnightconfig.forceDisabledScreens.tooltip": "Screens where the vanilla blur effect should be force-disabled" "blur.midnightconfig.forceDisabledScreens.tooltip": "Screens where the vanilla blur effect should be force-disabled",
"blur.midnightconfig._general": "⛏ General",
"blur.midnightconfig._advanced": "⚒ Advanced",
"blur.midnightconfig._blur": "▒ Blur",
"blur.midnightconfig._gradient": "\uD83D\uDFE2 Gradient",
"blur.midnightconfig._animations": "\uD83D\uDCFD Animations"
} }

View File

@@ -0,0 +1,41 @@
{
"blur.midnightconfig.title": "Configuración de Blur+",
"blur.midnightconfig.category.animations": "Animaciones",
"blur.midnightconfig.category.style": "Estilo",
"blur.midnightconfig.category.screens": "Pantallas",
"blur.midnightconfig.blurContainers": "Aplicar Desenfoque a Contenedores",
"blur.midnightconfig.fadeTimeMillis": "Tiempo de Aparición (en milisegundos)",
"blur.midnightconfig.fadeOutTimeMillis": "Tiempo de Desaparición (en milisegundos)",
"blur.midnightconfig.animationCurve": "Curva de Animación",
"blur.midnightconfig.enum.Easing.FLAT": "Plano",
"blur.midnightconfig.enum.Easing.SINE": "Seno",
"blur.midnightconfig.enum.Easing.QUAD": "Cuadrática",
"blur.midnightconfig.enum.Easing.CUBIC": "Cúbica",
"blur.midnightconfig.enum.Easing.QUART": "Cuártica",
"blur.midnightconfig.enum.Easing.QUINT": "Quíntica",
"blur.midnightconfig.enum.Easing.EXPO": "Exponencial",
"blur.midnightconfig.enum.Easing.CIRC": "Circular",
"blur.midnightconfig.enum.Easing.BACK": "Retroceso",
"blur.midnightconfig.enum.Easing.ELASTIC": "Elástica",
"blur.midnightconfig.radius": "Radio",
"blur.midnightconfig.rainbowMode": "Modo Arcoíris \ud83c\udf08",
"blur.midnightconfig.useGradient": "Usar Gradiente como Fondo",
"blur.midnightconfig.gradientStart": "Color Inicial del Gradiente",
"blur.midnightconfig.gradientEnd": "Color Final del Gradiente",
"blur.midnightconfig.gradientStartAlpha": "Transparencia Inicial del Gradiente",
"blur.midnightconfig.gradientEndAlpha": "Transparencia Final del Gradiente",
"blur.midnightconfig.gradientRotation": "Rotación del Gradiente",
"blur.midnightconfig.excludedScreens": "Pantallas Excluidas",
"blur.midnightconfig.excludedScreens.tooltip": "Pantallas donde Blur+ no debería animar",
"blur.midnightconfig.forceEnabledScreens": "Pantallas con Blur Forzado",
"blur.midnightconfig.forceEnabledScreens.tooltip": "Pantallas donde el desenfoque vanilla debería forzarse habilitado\nPuede que no funcione siempre al 100%",
"blur.midnightconfig.forceDisabledScreens": "Pantallas con Blur Deshabilitado",
"blur.midnightconfig.forceDisabledScreens.tooltip": "Pantallas donde el desenfoque vanilla debería forzarse deshabilitado"
}

View File

@@ -4,13 +4,13 @@
"package": "eu.midnightdust.blur.mixin", "package": "eu.midnightdust.blur.mixin",
"compatibilityLevel": "JAVA_21", "compatibilityLevel": "JAVA_21",
"client": [ "client": [
"MixinScreen", "MixinGameOptions",
"ScreenAccessor",
"MixinHandledScreen",
"MixinMinecraftClient",
"MixinGameRenderer", "MixinGameRenderer",
"MixinHandledScreen",
"MixinInGameHud", "MixinInGameHud",
"MixinGameOptions" "MixinMinecraftClient",
"MixinScreen",
"MixinTitleScreen"
], ],
"injectors": { "injectors": {
"defaultRequire": 1 "defaultRequire": 1

View File

@@ -83,7 +83,8 @@ unifiedPublishing {
curseforge { curseforge {
token = CURSEFORGE_TOKEN token = CURSEFORGE_TOKEN
id = rootProject.curseforge_id id = rootProject.curseforge_id
gameVersions.addAll "Java 21", project.minecraft_version, project.supported_versions gameVersions.addAll "Java 21", project.minecraft_version
if (project.supported_versions != "") gameVersions.addAll project.supported_versions
} }
} }
@@ -93,7 +94,8 @@ unifiedPublishing {
token = MODRINTH_TOKEN token = MODRINTH_TOKEN
id = rootProject.modrinth_id id = rootProject.modrinth_id
version = "$rootProject.version-$project.name" version = "$rootProject.version-$project.name"
gameVersions.addAll project.minecraft_version, project.supported_versions gameVersions.addAll project.minecraft_version
if (project.supported_versions != "") gameVersions.addAll project.supported_versions
} }
} }
} }

View File

@@ -1,7 +1,7 @@
{ {
"schemaVersion": 1, "schemaVersion": 1,
"id": "blur", "id": "blur",
"name": "Blur+ (Fabric)", "name": "Blur+",
"version": "$version", "version": "$version",
"environment": "client", "environment": "client",
"license": "MIT", "license": "MIT",
@@ -22,7 +22,9 @@
"authors": [ "authors": [
"Motschen", "Motschen",
"tterrag1098", "tterrag1098",
"Pyrofab", "Pyrofab"
],
"contributors": [
"backryun", "backryun",
"byquanton" "byquanton"
], ],
@@ -31,6 +33,7 @@
"blur.mixins.json" "blur.mixins.json"
], ],
"depends": { "depends": {
"minecraft": ">=1.20.5" "minecraft": ">=1.21",
"midnightlib": ">=1.7.5"
} }
} }

View File

@@ -8,7 +8,7 @@ yarn_mappings=1.21.1+build.3
enabled_platforms=fabric,neoforge enabled_platforms=fabric,neoforge
# Mod Properties # Mod Properties
mod_version=5.0.0-hotfix.1 mod_version=5.2.2+1.21.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
@@ -19,9 +19,9 @@ modrinth_id=NK39zBp2
fabric_loader_version=0.16.13 fabric_loader_version=0.16.13
fabric_api_version=0.115.4+1.21.1 fabric_api_version=0.115.4+1.21.1
neoforge_version=21.1.153 neoforge_version=21.1.192
yarn_mappings_patch_neoforge_version = 1.21+build.4 yarn_mappings_patch_neoforge_version = 1.21+build.4
# Libraries # Libraries
midnightlib_version = 1.6.9+1.21 midnightlib_version = 1.7.5+1.21.1
modmenu_version = 11.0.2 modmenu_version = 11.0.2

View File

@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists 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 networkTimeout=10000
validateDistributionUrl=true validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME zipStoreBase=GRADLE_USER_HOME

View File

@@ -96,7 +96,8 @@ unifiedPublishing {
curseforge { curseforge {
token = CURSEFORGE_TOKEN token = CURSEFORGE_TOKEN
id = rootProject.curseforge_id id = rootProject.curseforge_id
gameVersions.addAll "Java 21", project.minecraft_version, project.supported_versions gameVersions.addAll "Java 21", project.minecraft_version
if (project.supported_versions != "") gameVersions.addAll project.supported_versions
} }
} }
@@ -106,7 +107,8 @@ unifiedPublishing {
token = MODRINTH_TOKEN token = MODRINTH_TOKEN
id = rootProject.modrinth_id id = rootProject.modrinth_id
version = "$rootProject.version-$project.name" version = "$rootProject.version-$project.name"
gameVersions.addAll project.minecraft_version, project.supported_versions gameVersions.addAll project.minecraft_version
if (project.supported_versions != "") gameVersions.addAll project.supported_versions
} }
} }
} }

View File

@@ -8,13 +8,13 @@ import net.neoforged.fml.common.EventBusSubscriber;
import net.neoforged.fml.common.Mod; import net.neoforged.fml.common.Mod;
import net.neoforged.neoforge.client.event.ClientTickEvent; import net.neoforged.neoforge.client.event.ClientTickEvent;
@Mod(value = "blur", dist = Dist.CLIENT) @Mod(value = Blur.MOD_ID, dist = Dist.CLIENT)
public class BlurNeoForge { public class BlurNeoForge {
public BlurNeoForge() { public BlurNeoForge() {
Blur.init(); Blur.init();
} }
@EventBusSubscriber(modid = "blur", bus = EventBusSubscriber.Bus.GAME, value = Dist.CLIENT) @EventBusSubscriber(modid = Blur.MOD_ID, value = Dist.CLIENT)
public static class ClientGameEvents { public static class ClientGameEvents {
@SubscribeEvent @SubscribeEvent
public static void endClientTick(ClientTickEvent.Post event) { public static void endClientTick(ClientTickEvent.Post event) {

View File

@@ -26,6 +26,13 @@ side = "CLIENT"
[[dependencies.blur]] [[dependencies.blur]]
modId = "minecraft" modId = "minecraft"
mandatory = true mandatory = true
versionRange = "[1.21,)" versionRange = "[1.21,1.21.1]"
ordering = "NONE"
side = "CLIENT"
[[dependencies.blur]]
modId = "midnightlib"
mandatory = true
versionRange = "[1.7.5,)"
ordering = "NONE" ordering = "NONE"
side = "CLIENT" side = "CLIENT"